@Override public QueryCacheStrategy getCacheStrategy() { return mdDelegate.getCacheStrategy(); }
public QueryMetadata getMetaData(EntityResolver resolver) { QueryMetadata md = query.getMetaData(resolver); QueryMetadataWrapper wrappedMd = new QueryMetadataWrapper(md); if (QueryCacheStrategy.LOCAL_CACHE == md.getCacheStrategy()) { wrappedMd.override(QueryMetadata.CACHE_STRATEGY_PROPERTY, QueryCacheStrategy.LOCAL_CACHE_REFRESH); } else if (QueryCacheStrategy.SHARED_CACHE == md.getCacheStrategy()) { wrappedMd.override(QueryMetadata.CACHE_STRATEGY_PROPERTY, QueryCacheStrategy.SHARED_CACHE_REFRESH); } return wrappedMd; }
@Override public QueryMetadata getMetaData(EntityResolver resolver) { QueryMetadata base = overrideMetadata != null ? overrideMetadata : super.getMetaData(resolver); QueryMetadataWrapper wrapper = new QueryMetadataWrapper(base); // override cache policy, forcing refresh if needed if (forceNoCache) { QueryCacheStrategy strategy = base.getCacheStrategy(); if (QueryCacheStrategy.LOCAL_CACHE == strategy) { wrapper.override(QueryMetadata.CACHE_STRATEGY_PROPERTY, QueryCacheStrategy.LOCAL_CACHE_REFRESH); } else if (QueryCacheStrategy.SHARED_CACHE == strategy) { wrapper.override(QueryMetadata.CACHE_STRATEGY_PROPERTY, QueryCacheStrategy.SHARED_CACHE_REFRESH); } } // override cache key to include parameters if (parameters != null && !parameters.isEmpty() && replacementQuery instanceof NamedQuery && base.getCacheKey() != null) { // TODO: andrus, 3/29/2006 this is taken from SelectQuery...probably need a // central place for converting parameters to a cache key StringBuilder buffer = new StringBuilder(name); if (parameters != null && !parameters.isEmpty()) { buffer.append(parameters.hashCode()); } wrapper.override(QueryMetadataWrapper.CACHE_KEY_PROPERTY, buffer.toString()); } return wrapper; }
boolean cache = QueryCacheStrategy.LOCAL_CACHE == metadata.getCacheStrategy(); boolean cacheOrCacheRefresh = cache || QueryCacheStrategy.LOCAL_CACHE_REFRESH == metadata.getCacheStrategy();
private final boolean interceptSharedCache() { if (metadata.getCacheKey() == null) { return !DONE; } boolean cache = QueryCacheStrategy.SHARED_CACHE == metadata.getCacheStrategy(); boolean cacheOrCacheRefresh = cache || QueryCacheStrategy.SHARED_CACHE_REFRESH == metadata.getCacheStrategy(); if (!cacheOrCacheRefresh) { return !DONE; } QueryCache queryCache = domain.getQueryCache(); QueryCacheEntryFactory factory = getCacheObjectFactory(); if (cache) { List cachedResults = queryCache.get(metadata, factory); // response may already be initialized by the factory above ... it // is null if // there was a preexisting cache entry if (response == null) { response = new ListResponse(cachedResults); } if (cachedResults instanceof ListWithPrefetches) { this.prefetchResultsByPath = ((ListWithPrefetches) cachedResults).getPrefetchResultsByPath(); } } else { // on cache-refresh request, fetch without blocking and fill the // cache queryCache.put(metadata, factory.createObject()); } return DONE; }
/** * Copies values of another QueryMetadata object to this object. */ void copyFromInfo(QueryMetadata info) { this.lastEntityResolver = null; this.lastRoot = null; this.classDescriptor = null; this.dbEntity = null; this.dataMap = null; this.fetchingDataRows = info.isFetchingDataRows(); this.fetchLimit = info.getFetchLimit(); this.pageSize = info.getPageSize(); this.cacheStrategy = info.getCacheStrategy(); this.cacheKey = info.getCacheKey(); this.cacheGroup = info.getCacheGroup(); this.resultSetMapping = info.getResultSetMapping(); setPrefetchTree(info.getPrefetchTree()); }
QueryCacheStrategy cacheStrategy = query.getMetaData(resolver).getCacheStrategy(); if (QueryCacheStrategy.LOCAL_CACHE == cacheStrategy) { cacheStrategyOverride = QueryCacheStrategy.LOCAL_CACHE_REFRESH;