/** * INTERNAL: * Return the next expiry time. */ public long getExpiryTimeInMillis(CacheKey key) { incrementExpiry(); return this.expiryTime.getTimeInMillis(); }
/** * PUBLIC: * Construct a daily policy that will allow objects to expire at a specific time of day. * Provide the hour, minute, second and millisecond. Objects that make use of this policy * will be set to expire at that exact time every day. */ public DailyCacheInvalidationPolicy(int hour, int minute, int second, int millisecond) { setExpiryTime(hour, minute, second, millisecond); }
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 { Time time = Helper.timeFromString((String)valueToApply); Calendar calendar = Calendar.getInstance(); calendar.setTime(time); readQuery.getQueryResultsCachePolicy().setCacheInvalidationPolicy( new DailyCacheInvalidationPolicy(calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND), 0)); } catch (ConversionException exception) { throw QueryException.queryHintContainedInvalidIntegerValue(QueryHints.QUERY_RESULTS_CACHE_EXPIRY_TIME_OF_DAY, 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);"); } }
classDescriptor.setCacheInvalidationPolicy(new DailyCacheInvalidationPolicy(m_expiryTimeOfDay.processHour(), m_expiryTimeOfDay.processMinute(), m_expiryTimeOfDay.processSecond(), m_expiryTimeOfDay.processMillisecond())); } else { throw ValidationException.cacheExpiryAndExpiryTimeOfDayBothSpecified(javaClass);
/** * INTERNAL: * Return the next expiry time. */ public long getExpiryTimeInMillis(CacheKey key) { incrementExpiry(); return this.expiryTime.getTimeInMillis(); }
/** * PUBLIC: * Construct a daily policy that will allow objects to expire at a specific time of day. * Provide the hour, minute, second and millisecond. Objects that make use of this policy * will be set to expire at that exact time every day. */ public DailyCacheInvalidationPolicy(int hour, int minute, int second, int millisecond) { setExpiryTime(hour, minute, second, millisecond); }
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);"); } }
/** * INTERNAL: * Return the next expiry time. */ public long getExpiryTimeInMillis(CacheKey key) { incrementExpiry(); return this.expiryTime.getTimeInMillis(); }
/** * PUBLIC: * Construct a daily policy that will allow objects to expire at a specific time of day. * Provide the hour, minute, second and millisecond. Objects that make use of this policy * will be set to expire at that exact time every day. */ public DailyCacheInvalidationPolicy(int hour, int minute, int second, int millisecond) { setExpiryTime(hour, minute, second, millisecond); }
/** * PUBLIC: * Set a new expiry time for this object * Provide the hour, minute, second and millisecond. Objects which make use of this policy * will be set to expire at that exact time every day. */ public void setExpiryTime(int hour, int minute, int second, int millisecond) { expiryTime = Calendar.getInstance(); expiryTime.set(Calendar.HOUR_OF_DAY, hour); expiryTime.set(Calendar.MINUTE, minute); expiryTime.set(Calendar.SECOND, second); expiryTime.set(Calendar.MILLISECOND, millisecond); previousExpiry = (Calendar)expiryTime.clone(); previousExpiry.add(Calendar.DAY_OF_YEAR, -1); incrementExpiry(); }
/** * INTERNAL: * Set the expiry time based on a Calendar. Used for setting the expiry time from * deployment XML. */ public void setExpiryTime(Calendar calendar) { setExpiryTime(calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND), calendar.get(Calendar.MILLISECOND)); }
/** * PUBLIC: * Set a new expiry time for this object * Provide the hour, minute, second and millisecond. Objects which make use of this policy * will be set to expire at that exact time every day. */ public void setExpiryTime(int hour, int minute, int second, int millisecond) { expiryTime = Calendar.getInstance(); expiryTime.set(Calendar.HOUR_OF_DAY, hour); expiryTime.set(Calendar.MINUTE, minute); expiryTime.set(Calendar.SECOND, second); expiryTime.set(Calendar.MILLISECOND, millisecond); previousExpiry = (Calendar)expiryTime.clone(); previousExpiry.add(Calendar.DAY_OF_YEAR, -1); incrementExpiry(); }
/** * INTERNAL: * Set the expiry time based on a Calendar. Used for setting the expiry time from * deployment XML. */ public void setExpiryTime(Calendar calendar) { setExpiryTime(calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND), calendar.get(Calendar.MILLISECOND)); } }
/** * PUBLIC: * Set a new expiry time for this object * Provide the hour, minute, second and millisecond. Objects which make use of this policy * will be set to expire at that exact time every day. */ public void setExpiryTime(int hour, int minute, int second, int millisecond) { expiryTime = Calendar.getInstance(); expiryTime.set(Calendar.HOUR_OF_DAY, hour); expiryTime.set(Calendar.MINUTE, minute); expiryTime.set(Calendar.SECOND, second); expiryTime.set(Calendar.MILLISECOND, millisecond); previousExpiry = (Calendar)expiryTime.clone(); previousExpiry.add(Calendar.DAY_OF_YEAR, -1); incrementExpiry(); }
/** * INTERNAL: * Set the expiry time based on a Calendar. Used for setting the expiry time from * deployment XML. */ public void setExpiryTime(Calendar calendar) { setExpiryTime(calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND), calendar.get(Calendar.MILLISECOND)); }
if (readTime < expiryMillis) { incrementExpiry(); return true; } else { incrementExpiry(); return false;
public Object clone() { DailyCacheInvalidationPolicy clone = null; try { clone = (DailyCacheInvalidationPolicy)super.clone(); if (this.expiryTime != null) { clone.setExpiryTime((Calendar)this.expiryTime.clone()); } if (this.previousExpiry != null) { clone.previousExpiry = (Calendar)this.previousExpiry.clone(); } } catch (Exception exception) { throw new InternalError("clone failed"); } return clone; } }
if (readTime < expiryMillis) { incrementExpiry(); return true; } else { incrementExpiry(); return false;