Renamed the '<gfe-data:export-snapshot>' and '<gfe-data:import-snapshot>' sub-elements to <gfe-data:snapshot-export>' and '<gfe-data:snapshot-import>' respectively; updated the SnapshotServiceParser to appropriately handle the sub-element name change.
Added a mini chapter in the Spring Data GemFire Reference Guide on how-to use the GemFire SnapshotService support provided by Spring Data GemFire.
Renamed the <gfe-data:snapshot-service> element 'suppress-init-import' attribute to 'suppress-import-on-init'.
Fixed up the JSONRegionAdviceTest class test case failures due to changes in the ..repository.sample.Person application domain object class.
(cherry picked from commit d9245f343050182f570a0ea1bf629f03258667b1)
Signed-off-by: John Blum <jblum@pivotal.io>
Repackaged all GemFire Snapshot Service support classes in Spring Data GemFire under org.springframework.data.gemfire.snapshot.
Moved snapshot application events to ..snapshot.event.
Moved the ComposableSnapshotFilter class to ..snapshot.filter.
(cherry picked from commit 5bf3e8e8132c9cff0c3da33b271bfa4e049968c0)
Signed-off-by: John Blum <jblum@pivotal.io>
Refactored the SnapshotServiceFactoryBean with the addition of a new property (suppressInitImport) to suppress importing on initialization.
Refactored the SnapshotServiceFactoryBean SnapshotServiceAdapter interface's doImport(..) and doExport(..) method signatures to varargs.
Added the ComposableSnapshotFilter class implemeting the SnapshotFilter interface and Composition Design Pattern for composing multiple SnapshotFilters into one using logical operators.
Cleaned up and added addition unit tests.
Completed all integration testing including testing with export and import snapshot application event driven GemFire Cache Region snapshots.
Refactored the SnapshotApplicationEvent into 2 separate ApplicationEvent classes to handle import and exports.
Refactored the SnapshotServiceFactoryBean class to handle import/export SnapshotApplicationEvents in onApplicationEvent(:SnapshotApplicationEvent).
Added integration tests for the archive file handling capabilities of the SnapshotServiceFactoryBean.SnapshotServiceAdapterSupport class.
Added additional unit tests.
(cherry picked from commit 35107aa12dc9d5f133697775c2535c1f9cd3cd87)
Signed-off-by: John Blum <jblum@pivotal.io>
Refactored the ServiceSnapshotFactoryBean class to handle ZIP and JAR files as input sources on GemFire Cache data imports.
Added additional unit tests for SnapshotServiceFactoryBean to improve coverage along with a basic integration test covering import and export.
Fixed bugs in the SnapshotServiceParser and the XSD.
Moved the iterable(:Enumeration) and iterable(:Iterator) methods from the test CollectionUtils class to the 'official' CollectionUtils class.
(cherry picked from commit b47884c88c52b612aff6b8aa01fc0994ac42095c)
Signed-off-by: John Blum <jblum@pivotal.io>
Adding integration tests to test the use of the custom OQL Query Annotation extensions in Repository Query methods against GemFire's actual OQL Query engine.
(cherry picked from commit bdbf101fd7f3e920f28634bb24cd0667855fa1e2)
Signed-off-by: John Blum <jblum@pivotal.io>
Fixed test failures associated with changes to LazyWiringDeclarableSupport passing the ApplicationContext onApplicationEvents (ContextRefreshedEvent) directly rather than the ApplicationContext's ConfigurableListableBeanFactory required by BeanConfigurerSupport.
(cherry picked from commit be6a3aac3e5281fdb2c77ad8b88200c92c0b7883)
Signed-off-by: John Blum <jblum@pivotal.io>
Additional refactoring and added serveral unit tests.
(cherry picked from commit a806f1540e6fc995410671f34382d14389ace90a)
Signed-off-by: John Blum <jblum@pivotal.io>
Added support for SpEL expressions in the @Expiration annotation attributes to offer even more flexibility when configuring Region Entry values, application domain object Expiration policies and settings.
(cherry picked from commit 6e73f52025509d9bf89a3baf25d21201b49728de)
Signed-off-by: John Blum <jblum@pivotal.io>
Added Javadoc comments to the AnnotationBasedExpiration class factory methods: forIdleTimeout() and forTimeToLive(). Also added a section in the Region configuration chapter of the Spring Data GemFire Reference Guide.
(cherry picked from commit 419eb8d8792124d7ad6f2e7e7da12f4013b3a429)
Signed-off-by: John Blum <jblum@pivotal.io>
Refactored the GemfireDataSourcePostProcessorTest class test cases based on the new implementation of the GemfireDataSourcePostProcessor BeanFactoryPostProcessor, which uses the GemFire internal GetRegionsFunction GemFire Function as a fallback when the ListRegionsOnServerFunction has not been registered or is not available. In addition, added 2 integration tests to test a Spring Data GemFire ClientCache connecting to a Spring-configured GemFire Server and non-Spring-configured GemFire Server asserting that client PROXY Region beans are appropriately created in the Spring ApplicationContext.
(cherry picked from commit 52e4be42402ee376df17d7ae036336548b1349c9)
Signed-off-by: John Blum <jblum@pivotal.io>
Removed the SDG XSD schema restriction requiring the use of at least 1 <gfe:locator> of <gfe:server> sub-element on the <gfe:pool> element. Also added a default Locator endpoint on localhost listening on the Locators default port of 10334 when no Locator or Server endpoints were specified, either by way of explicit use of the 'locators' or 'servers' attribute or a corresponding <gfe:locator> or <gfe:server> sub-element.
Added additional test cases to test and cover different combinations of data-policy and persistent attribute settings with explicit RegionFactoryBean and nested RegionAttributesFatoryBean 'bean' definitions in Spring XML configuration meta-data.
Following up to SGF-374 with additional test criteria to assert that a GatewayHub marked as 'persistent' does not need to explicity declare a 'DiskStore', that the GatewayHub will use the 'DEFAULT' DiskStore instead.
Removed the XSD enumeration restriction on the 'scope' attribute of the 'baseReplicatedRegionType' complexType, Region element definition in the SDG XSD allowing the use of property placeholders to specify a GemFire Cache Region's Scope for different distribution patterns. In addition, completely removed the 'scopeType' simpleType element definition in the SDG XSD.
Removed the XSD enumeration restriction on the 'type' attribute of the 'index' element definition inside the SDG XML namespace (XSD) allowing the use of property placeholders to specify the Index types on GemFire Cache Region Indexes.
Removed the XSD enumeration restriction on the 'eviction-type' attribute of the 'subscription-config' sub-element of the 'cache-server' element inside the SDG XML namespace (XSD) allowing the use of property placeholders to specify the Eviction Policy for Client Subscription to GemFire Cache Servers.
Removed the XSD enumeration restriction on the 'result-policy' attribute of the 'interestType' SDG XSD complex-type definition in order to allow users to specify an Interest Policy using concrete values or properly placeholders when registering client Region Interests.
Removed the 'subscriptionPolicyType' XSD simple-type definition and subsequently, all Subscription policy enumeration restrictions on SDG Region elements in the SDG XML namespace (e.g. gfe:partitioned-region) that declare and define a Subscription policy. Renamed SubscriptionType to InterestPolicyType along with the associated test suite class. Renamed the SubscriptionTypeConverter class to InterestPolicyConverter along with the associated test suite class. Created the RegionSubscriptionAttributesNamespaceTest class to test the configuration of Subscription on GemFire Regions in the SDG XML namespace using various settings and property placeholders.
Removed the 'evictionActionType' XSD simple-type definition and subsequently, all EvictionAction enumeration restrictions on all SDG Region element types in the SDG XML namespace (e.g. gfe:partitioned-region) that define and declare an eviction policy and corresponding 'action'. In addition, performed refactoring and cleanup on serveral new SDG enumeration types, like EvictionType and ExpirationActionType, along with the corresponding Converter implementations and bean properties on their respective FactoryBeans (EvictionAttributesFactoryBean and ExpirationAttributesFactoryBean).
Removed the XSD enumeration restriction on the 'type' attribute of the 'evictionType' XSD complex-type definition in the SDG XML namespace schema, which is used by the 'eviction' sub-elements in the LOCAL, PARTITION and REPLICATE Region element schema types. In addition, created the ExpirationAttributesFactoryBean class in the org.springframework.data.gemfire package which serves as a Spring FactoryBean and builder for constructing GemFire EvictionAttributes used in Region configuration. Updated tests to assert and validate the use of property placeholders on both the Eviction 'type' and Expiration 'action' attributes in the Spring Data GemFire XML namespace configuration meta-data.