Class AnnotationBasedExpiration<K,V>
java.lang.Object
org.springframework.data.gemfire.expiration.AnnotationBasedExpiration<K,V>
- All Implemented Interfaces:
CacheCallback,CustomExpiry<K,,V> Declarable,Aware,BeanFactoryAware
public class AnnotationBasedExpiration<K,V>
extends Object
implements BeanFactoryAware, CustomExpiry<K,V>
The
AnnotationBasedExpiration class is an implementation of the CustomExpiry interface
that determines the Time-To-Live (TTL) or Idle-Timeout (TTI) expiration policy of a Region entry
by introspecting the Region entry's class type and reflecting on any Region entries annotated
with SDG's Expiration-based Annotations.- Since:
- 1.7.0
- Author:
- John Blum
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classThe ExpirationMetaData class encapsulates the settings constituting the expiration policy including the expiration timeout and the action performed when expiration occurs. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final AtomicReference<BeanFactory>protected static final AtomicReference<StandardEvaluationContext> -
Constructor Summary
ConstructorsConstructorDescriptionConstructs a new instance of the AnnotationBasedExpiration class with no default expiration policy.AnnotationBasedExpiration(ExpirationAttributes defaultExpirationAttributes) Constructs a new instance ofAnnotationBasedExpirationinitialized with a specific, default expiration policy. -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Called when the Region containing this callback is closed or destroyed, when the Cache is closed, or when a callback is removed from a Region using an AttributesMutator.static <K,V> AnnotationBasedExpiration<K, V> Factory method used to construct an instance ofAnnotationBasedExpirationhaving no defaultExpirationAttributesto process expired annotatedRegionentries using Idle Timeout (TTI) Expiration.static <K,V> AnnotationBasedExpiration<K, V> forIdleTimeout(ExpirationAttributes defaultExpirationAttributes) Factory method used to construct an instance ofAnnotationBasedExpirationinitialized with defaultExpirationAttributesto process expired annotatedRegionentries using Idle Timeout (TTI) expiration.static <K,V> AnnotationBasedExpiration<K, V> Factory method used to construct an instance ofAnnotationBasedExpirationhaving no defaultExpirationAttributesto process expired annotatedRegionentries using Time-To-Live (TTL) Expiration.static <K,V> AnnotationBasedExpiration<K, V> forTimeToLive(ExpirationAttributes defaultExpirationAttributes) Factory method used to construct an instance ofAnnotationBasedExpirationinitialized with defaultExpirationAttributesto process expired annotatedRegionentries using Time-To-Live (TTL) expiration.protected BeanFactoryGets a reference to the SpringBeanFactoryin which thisAnnotationBasedExpirationbean is managed.protected ExpirationAttributesGets the expiration policy used by default when no application domain object specific expiration meta-data has been specified.protected ExpirationgetExpiration(Region.Entry<K, V> entry) Gets the Expiration Annotation meta-data from the Region Entry.getExpirationMetaData(Region.Entry<K, V> entry) Gets custom expiration (Annotation-based) policy meta-data for the givenRegionentry.getExpiry(Region.Entry<K, V> entry) Calculate the expiration for a given entry.protected IdleTimeoutExpirationgetIdleTimeout(Region.Entry<K, V> entry) Gets the IdleTimeoutExpiration Annotation meta-data from the Region Entry.protected TimeToLiveExpirationgetTimeToLive(Region.Entry<K, V> entry) Gets the TimeToLiveExpiration Annotation meta-data from the Region Entry.protected voidInitializes the Spring Expression Language (SpEL)EvaluationContextused to parse property placeholder and SpEL expressions in the Expiration annotation attribute values.protected booleanisExpirationConfigured(Region.Entry<K, V> entry) Determines whether the Region Entry has been annotated with the Expiration Annotation.protected booleanisIdleTimeoutConfigured(Region.Entry<K, V> entry) Determines whether the Region Entry has been annotated with the IdleTimeoutExpiration Annotation.protected booleanisTimeToLiveConfigured(Region.Entry<K, V> entry) Determines whether the Region Entry has been annotated with the TimeToLiveExpiration Annotation.protected ExpirationAttributesnewExpirationAttributes(AnnotationBasedExpiration.ExpirationMetaData expirationMetaData) Constructs a new instance ofExpirationAttributesconfigured with the application domain object specific expiration policy.voidsetBeanFactory(BeanFactory beanFactory) Sets theBeanFactorymanaging thisAnnotationBasedExpirationbean in the Spring context.voidsetDefaultExpirationAttributes(ExpirationAttributes defaultExpirationAttributes) Sets the expiration policy to use by default when no application domain object specific expiration meta-data has been specified.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.geode.cache.Declarable
init, initialize
-
Field Details
-
BEAN_FACTORY_REFERENCE
-
EVALUATION_CONTEXT_REFERENCE
-
-
Constructor Details
-
AnnotationBasedExpiration
public AnnotationBasedExpiration()Constructs a new instance of the AnnotationBasedExpiration class with no default expiration policy. -
AnnotationBasedExpiration
Constructs a new instance ofAnnotationBasedExpirationinitialized with a specific, default expiration policy.- Parameters:
defaultExpirationAttributes- expiration settings used as the default expiration policy.- See Also:
-
-
Method Details
-
forIdleTimeout
Factory method used to construct an instance ofAnnotationBasedExpirationhaving no defaultExpirationAttributesto process expired annotatedRegionentries using Idle Timeout (TTI) Expiration. -
forIdleTimeout
public static <K,V> AnnotationBasedExpiration<K,V> forIdleTimeout(ExpirationAttributes defaultExpirationAttributes) Factory method used to construct an instance ofAnnotationBasedExpirationinitialized with defaultExpirationAttributesto process expired annotatedRegionentries using Idle Timeout (TTI) expiration.- Type Parameters:
K-Classtype of theRegionentry key.V-Classtype of theRegionentry value.- Parameters:
defaultExpirationAttributes-ExpirationAttributesused by default if no expiration policy was specified on theRegion.- Returns:
- an
AnnotationBasedExpirationinstance to process expired annotatedRegionentries using Idle Timeout expiration. - See Also:
-
forTimeToLive
Factory method used to construct an instance ofAnnotationBasedExpirationhaving no defaultExpirationAttributesto process expired annotatedRegionentries using Time-To-Live (TTL) Expiration. -
forTimeToLive
public static <K,V> AnnotationBasedExpiration<K,V> forTimeToLive(ExpirationAttributes defaultExpirationAttributes) Factory method used to construct an instance ofAnnotationBasedExpirationinitialized with defaultExpirationAttributesto process expired annotatedRegionentries using Time-To-Live (TTL) expiration.- Type Parameters:
K-Classtype of theRegionentry key.V-Classtype of theRegionentry value.- Parameters:
defaultExpirationAttributes-ExpirationAttributesused by default if no expiration policy was specified on theRegion.- Returns:
- an
AnnotationBasedExpirationinstance to process expired annotatedRegionentries using Time-To-Live expiration. - See Also:
-
initEvaluationContext
protected void initEvaluationContext()Initializes the Spring Expression Language (SpEL)EvaluationContextused to parse property placeholder and SpEL expressions in the Expiration annotation attribute values. -
setBeanFactory
Sets theBeanFactorymanaging thisAnnotationBasedExpirationbean in the Spring context.- Specified by:
setBeanFactoryin interfaceBeanFactoryAware- Parameters:
beanFactory- the SpringBeanFactoryto which this bean belongs.- Throws:
BeansException- if theBeanFactoryreference cannot be initialized.- See Also:
-
getBeanFactory
Gets a reference to the SpringBeanFactoryin which thisAnnotationBasedExpirationbean is managed.- Returns:
- a reference to the Spring
BeanFactory. - Throws:
IllegalStateException- if theBeanFactoryreference was not properly initialized.- See Also:
-
setDefaultExpirationAttributes
Sets the expiration policy to use by default when no application domain object specific expiration meta-data has been specified.- Parameters:
defaultExpirationAttributes- expiration settings used as the default expiration policy.- See Also:
-
getDefaultExpirationAttributes
Gets the expiration policy used by default when no application domain object specific expiration meta-data has been specified.- Returns:
- an instance of ExpirationAttributes with expiration settings defining the default expiration policy.
- See Also:
-
getExpiry
Calculate the expiration for a given entry. Returning null indicates that the default for theRegionshould be used. The entry parameter should not be used after this method invocation completes.- Specified by:
getExpiryin interfaceCustomExpiry<K,V> - Parameters:
entry- the entry used to determine the appropriate expiration policy.- Returns:
- the expiration configuration to be used or null if the Region's defaults should be used.
- See Also:
-
getExpirationMetaData
protected AnnotationBasedExpiration.ExpirationMetaData getExpirationMetaData(Region.Entry<K, V> entry) Gets custom expiration (Annotation-based) policy meta-data for the givenRegionentry.- Parameters:
entry-Regionentry used as the source of the expiration policy meta-data.- Returns:
AnnotationBasedExpiration.ExpirationMetaDataextracted from theRegionentry or null if the expiration policy meta-data could not be determined from theRegionentry.- See Also:
-
newExpirationAttributes
protected ExpirationAttributes newExpirationAttributes(AnnotationBasedExpiration.ExpirationMetaData expirationMetaData) Constructs a new instance ofExpirationAttributesconfigured with the application domain object specific expiration policy. If the application domain object type has not been annotated with custom expiration meta-data, then the default expiration settings are used.- Parameters:
expirationMetaData- application domain object specific expiration policy meta-data used to construct theExpirationAttributes.- Returns:
- custom
ExpirationAttributesconfigured from the application domain object specific expiration policy or the default expiration settings if the application domain object has not been annotated with custom expiration meta-data. - See Also:
-
isExpirationConfigured
Determines whether the Region Entry has been annotated with the Expiration Annotation.- Parameters:
entry- the Region.Entry to evaluate for the presence of the Expiration Annotation.- Returns:
- a boolean value indicating whether the Region Entry has been annotated with @Expiration.
- See Also:
-
ExpirationisAnnotationPresent(Object, Class)
-
getExpiration
Gets the Expiration Annotation meta-data from the Region Entry.- Parameters:
entry- the Region.Entry from which to extract the Expiration Annotation meta-data.- Returns:
- the Expiration Annotation meta-data for the given Region Entry or
nullif the Region Entry has not been annotated with @Expiration. - See Also:
-
ExpirationgetAnnotation(Object, Class)
-
isIdleTimeoutConfigured
Determines whether the Region Entry has been annotated with the IdleTimeoutExpiration Annotation.- Parameters:
entry- the Region.Entry to evaluate for the presence of the IdleTimeoutExpiration Annotation.- Returns:
- a boolean value indicating whether the Region Entry has been annotated with @IdleTimeoutExpiration.
- See Also:
-
IdleTimeoutExpirationisAnnotationPresent(Object, Class)
-
getIdleTimeout
Gets the IdleTimeoutExpiration Annotation meta-data from the Region Entry.- Parameters:
entry- the Region.Entry from which to extract the IdleTimeoutExpiration Annotation meta-data.- Returns:
- the IdleTimeoutExpiration Annotation meta-data for the given Region Entry or
nullif the Region Entry has not been annotated with @IdleTimeoutExpiration. - See Also:
-
IdleTimeoutExpirationgetAnnotation(Object, Class)
-
isTimeToLiveConfigured
Determines whether the Region Entry has been annotated with the TimeToLiveExpiration Annotation.- Parameters:
entry- the Region.Entry to evaluate for the presence of the TimeToLiveExpiration Annotation.- Returns:
- a boolean value indicating whether the Region Entry has been annotated with @TimeToLiveExpiration.
- See Also:
-
TimeToLiveExpirationisAnnotationPresent(Object, Class)
-
getTimeToLive
Gets the TimeToLiveExpiration Annotation meta-data from the Region Entry.- Parameters:
entry- the Region.Entry from which to extract the TimeToLiveExpiration Annotation meta-data.- Returns:
- the TimeToLiveExpiration Annotation meta-data for the given Region Entry or
nullif the Region Entry has not been annotated with @TimeToLiveExpiration. - See Also:
-
TimeToLiveExpirationgetAnnotation(Object, Class)
-
close
public void close()Called when the Region containing this callback is closed or destroyed, when the Cache is closed, or when a callback is removed from a Region using an AttributesMutator.- Specified by:
closein interfaceCacheCallback
-