/** * INTERNAL: * Return true if this object is set as invalid or has expired. */ public boolean isInvalidated(CacheKey key, long currentTimeMillis) { if (key.getInvalidationState() == CacheKey.CACHE_KEY_INVALID) { return true; } return getExpiryTimeInMillis(key) <= currentTimeMillis; }
protected void addCacheInvalidationPolicyLines(NonreflectiveMethodDefinition method, ClassDescriptor descriptor) { CacheInvalidationPolicy policy = descriptor.getCacheInvalidationPolicy(); if (policy instanceof NoExpiryCacheInvalidationPolicy) { if (policy.shouldUpdateReadTimeOnUpdate()) { method.addLine("// Cache Invalidation Policy"); method.addLine("NoExpiryCacheInvalidationPolicy policy = new NoExpiryCacheInvalidationPolicy();"); method.addLine("policy.setShouldUpdateReadTimeOnUpdate(" + policy.shouldUpdateReadTimeOnUpdate() + ");"); method.addLine("descriptor.setCacheInvalidationPolicy(policy);"); } } else if (policy instanceof TimeToLiveCacheInvalidationPolicy) { method.addLine("// Cache Invalidation Policy"); method.addLine("TimeToLiveCacheInvalidationPolicy policy = new TimeToLiveCacheInvalidationPolicy(" + ((TimeToLiveCacheInvalidationPolicy)policy).getTimeToLive() + ");"); method.addLine("policy.setShouldUpdateReadTimeOnUpdate(" + policy.shouldUpdateReadTimeOnUpdate() + ");"); method.addLine("descriptor.setCacheInvalidationPolicy(policy);"); } else if (policy instanceof DailyCacheInvalidationPolicy) { Calendar calendar = ((DailyCacheInvalidationPolicy)policy).getExpiryTime(); int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); int second = calendar.get(Calendar.SECOND); int millisecond = calendar.get(Calendar.MILLISECOND); method.addLine("// Cache Invalidation Policy"); method.addLine("DailyCacheInvalidationPolicy policy = new DailyCacheInvalidationPolicy(" + hour + ", " + minute + ", " + second + ", " + millisecond + ");"); method.addLine("policy.setShouldUpdateReadTimeOnUpdate(" + policy.shouldUpdateReadTimeOnUpdate() + ");"); method.addLine("descriptor.setCacheInvalidationPolicy(policy);"); } }
DatabaseQuery applyToDatabaseQuery(Object valueToApply, DatabaseQuery query, ClassLoader loader, AbstractSession activeSession) { if (query.isReadQuery()) { ReadQuery readQuery = (ReadQuery)query; if (readQuery.getQueryResultsCachePolicy() == null) { readQuery.cacheQueryResults(); } try { readQuery.getQueryResultsCachePolicy().setCacheInvalidationPolicy( new TimeToLiveCacheInvalidationPolicy(Integer.parseInt((String)valueToApply))); } catch (NumberFormatException exception) { throw QueryException.queryHintContainedInvalidIntegerValue(QueryHints.QUERY_RESULTS_CACHE_EXPIRY, valueToApply, exception); } } else { throw new IllegalArgumentException(ExceptionLocalization.buildMessage("ejb30-wrong-type-for-query-hint",new Object[]{getQueryId(query), name, getPrintValue(valueToApply)})); } return query; } }
protected void addCacheInvalidationPolicyLines(NonreflectiveMethodDefinition method, ClassDescriptor descriptor) { CacheInvalidationPolicy policy = descriptor.getCacheInvalidationPolicy(); if (policy instanceof NoExpiryCacheInvalidationPolicy) { if (policy.shouldUpdateReadTimeOnUpdate()) { method.addLine("// Cache Invalidation Policy"); method.addLine("NoExpiryCacheInvalidationPolicy policy = new NoExpiryCacheInvalidationPolicy();"); method.addLine("policy.setShouldUpdateReadTimeOnUpdate(" + policy.shouldUpdateReadTimeOnUpdate() + ");"); method.addLine("descriptor.setCacheInvalidationPolicy(policy);"); } } else if (policy instanceof TimeToLiveCacheInvalidationPolicy) { method.addLine("// Cache Invalidation Policy"); method.addLine("TimeToLiveCacheInvalidationPolicy policy = new TimeToLiveCacheInvalidationPolicy(" + ((TimeToLiveCacheInvalidationPolicy)policy).getTimeToLive() + ");"); method.addLine("policy.setShouldUpdateReadTimeOnUpdate(" + policy.shouldUpdateReadTimeOnUpdate() + ");"); method.addLine("descriptor.setCacheInvalidationPolicy(policy);"); } else if (policy instanceof DailyCacheInvalidationPolicy) { Calendar calendar = ((DailyCacheInvalidationPolicy)policy).getExpiryTime(); int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); int second = calendar.get(Calendar.SECOND); int millisecond = calendar.get(Calendar.MILLISECOND); method.addLine("// Cache Invalidation Policy"); method.addLine("DailyCacheInvalidationPolicy policy = new DailyCacheInvalidationPolicy(" + hour + ", " + minute + ", " + second + ", " + millisecond + ");"); method.addLine("policy.setShouldUpdateReadTimeOnUpdate(" + policy.shouldUpdateReadTimeOnUpdate() + ");"); method.addLine("descriptor.setCacheInvalidationPolicy(policy);"); } }
DatabaseQuery applyToDatabaseQuery(Object valueToApply, DatabaseQuery query, ClassLoader loader, AbstractSession activeSession) { if (query.isReadQuery()) { if (((ReadQuery)query).getQueryResultsCachePolicy() == null) { ((ReadQuery)query).cacheQueryResults(); } if (((ReadQuery)query).getQueryResultsCachePolicy().getCacheInvalidationPolicy() == null) { ((ReadQuery)query).getQueryResultsCachePolicy().setCacheInvalidationPolicy(new TimeToLiveCacheInvalidationPolicy()); } ((ReadQuery)query).getQueryResultsCachePolicy().getCacheInvalidationPolicy().setIsInvalidationRandomized(((Boolean)valueToApply).booleanValue()); } else { throw new IllegalArgumentException(ExceptionLocalization.buildMessage("ejb30-wrong-type-for-query-hint",new Object[]{getQueryId(query), name, getPrintValue(valueToApply)})); } return query; } }
/** * INTERNAL: * Return true if this object is set as invalid or has expired. */ public boolean isInvalidated(CacheKey key, long currentTimeMillis) { if (key.getInvalidationState() == CacheKey.CACHE_KEY_INVALID) { return true; } return getExpiryTimeInMillis(key) <= currentTimeMillis; }
protected void addCacheInvalidationPolicyLines(NonreflectiveMethodDefinition method, ClassDescriptor descriptor) { CacheInvalidationPolicy policy = descriptor.getCacheInvalidationPolicy(); if (policy instanceof NoExpiryCacheInvalidationPolicy) { if (policy.shouldUpdateReadTimeOnUpdate()) { method.addLine("// Cache Invalidation Policy"); method.addLine("NoExpiryCacheInvalidationPolicy policy = new NoExpiryCacheInvalidationPolicy();"); method.addLine("policy.setShouldUpdateReadTimeOnUpdate(" + policy.shouldUpdateReadTimeOnUpdate() + ");"); method.addLine("descriptor.setCacheInvalidationPolicy(policy);"); } } else if (policy instanceof TimeToLiveCacheInvalidationPolicy) { method.addLine("// Cache Invalidation Policy"); method.addLine("TimeToLiveCacheInvalidationPolicy policy = new TimeToLiveCacheInvalidationPolicy(" + ((TimeToLiveCacheInvalidationPolicy)policy).getTimeToLive() + ");"); method.addLine("policy.setShouldUpdateReadTimeOnUpdate(" + policy.shouldUpdateReadTimeOnUpdate() + ");"); method.addLine("descriptor.setCacheInvalidationPolicy(policy);"); } else if (policy instanceof DailyCacheInvalidationPolicy) { Calendar calendar = ((DailyCacheInvalidationPolicy)policy).getExpiryTime(); int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); int second = calendar.get(Calendar.SECOND); int millisecond = calendar.get(Calendar.MILLISECOND); method.addLine("// Cache Invalidation Policy"); method.addLine("DailyCacheInvalidationPolicy policy = new DailyCacheInvalidationPolicy(" + hour + ", " + minute + ", " + second + ", " + millisecond + ");"); method.addLine("policy.setShouldUpdateReadTimeOnUpdate(" + policy.shouldUpdateReadTimeOnUpdate() + ");"); method.addLine("descriptor.setCacheInvalidationPolicy(policy);"); } }
classDescriptor.setCacheInvalidationPolicy(new TimeToLiveCacheInvalidationPolicy(m_expiry));
/** * INTERNAL: * Return true if this object is set as invalid or has expired. */ public boolean isInvalidated(CacheKey key, long currentTimeMillis) { if (key.getInvalidationState() == CacheKey.CACHE_KEY_INVALID) { return true; } return getExpiryTimeInMillis(key) <= currentTimeMillis; }