Commit Graph

70 Commits

Author SHA1 Message Date
John Blum
22b01985b7 Add Integration Tests for JsonCacheDataImporterExporter asserting the functionality in a client/server topology with a ClientCache.
Resolves gh-67.
2020-05-11 00:04:43 -07:00
John Blum
f40685fb4e Refactor JSONFormatterPdxToJsonConverter to handle missing type metadata in both PdxInstances and in JSON, which is required to reconstitute the Object.
Resolves gh-67.
2020-05-10 13:23:47 -07:00
John Blum
30a84eefdd Add additional Integration Tests for JsonCacheDataImporterExporter class.
Added add test cases covering:

* exportImportWithRegionContainingMixOfObjectsAndPdxInstances
* geodeJsonFormatterCannotHandleTypedJsonObjects
* geodeJsonFormatterCannotRememberPdxInstanceClass

Edit Javadoc.

Resolves gh-67.
2020-05-10 00:26:59 -07:00
John Blum
596ea093ba Add null-safe asType(:Object, :Class) method to cast the given source Object into an instance of the given Class type. 2020-05-09 21:07:05 -07:00
John Blum
9dbd290322 Add Integration Tests for JsonCacheDataImporterExporter.
Resolves gh-67.
2020-05-08 01:45:05 -07:00
John Blum
4d7becad79 Simplify ObjectMapper configuration.
Remove activation of default typing configuration.

Change target Class type for ObjectTypeMetadataMixin (Mixin) to the (converted) source object's Class type.

Remove unnecessary SimpleModule registration including the addition of the custom BigDecimalSerializer, BigIntegerSerializer and TypelessCollectionSerializer objects.

Resolves gh-67.
2020-05-08 01:29:26 -07:00
John Blum
5b5e2e5db8 Add abstract base class implementing the ObjectArrayToJsonConverter interface to encapsulate operation common to all implementations.
The abstract base class provides convert methods to convert arrays, Iterables and Map.values(). Additionally it contains support to configure the ObjectToJsonConverter used to convert individual Objects into JSON.

Resolves gh-67.
2020-05-07 21:26:18 -07:00
John Blum
72443e95af Add ObjectArrayToJsonConverter interface specifying a contract to convert an array of Objects to JSON.
Resolves gh-67.
2020-05-07 21:24:09 -07:00
John Blum
9232180643 Add JsonToPdxConverter interface implementation converting JSON to PDX backed by Apache Geode's o.a.g.pdx.JSONFormatter class and Jackson's ObjectMapper.
Resolves gh-67.
2020-05-06 13:27:49 -07:00
John Blum
7f9b36ec18 Adds ObjectToJsonConverter interface implementation using Jackson to convert an Object to JSON.
Resolves gh-67.
2020-05-06 12:20:52 -07:00
John Blum
e76100af47 Add ObjetToJsonConverter interface implementation to convert an Object or PDX to JSON using Apache Geode's o.a.g.pdx.JSONFormatter class.
This converter extends (is backed by) the JacksonObjectToJsonConverter implementation to fallback on Jackson's ObjectMapper if the Object to convert is not a o.a.g.pdx.PdxInstance.

Resolves gh-67.
2020-05-06 11:45:47 -07:00
John Blum
cb3141f0b7 Add JsonToPdxConverter interface implementation to convert JSON to PDX using Apache Geode's o.a.g.pdx.JSONFormatter class.
Resolves gh-67.
2020-05-06 11:42:06 -07:00
John Blum
9f97a8313d Add conditional logic to handle beans of type ResolvableRegionFactoryBean.
Resolves gh-67.
2020-05-06 11:07:52 -07:00
John Blum
68e7b54c90 Refactor importInto(:Region) to parse and convert JSON containing multiple objects into an array of PdxInstances each stored in the Region.
Edit Javadoc.

Resolves gh-67.
2020-05-06 00:43:03 -07:00
John Blum
e67c383de8 Add JsonToPdxArrayConverter interface and Spring Converter extension specifying a contract to convert JSON into PDX, as an array of PdxInstance objects.
Resolves gh-69.
2020-05-06 00:37:31 -07:00
John Blum
c3b697e759 Complete base implementation of the JSON CacheDataImporterExporter.
Resolves gh-67.
2020-05-05 11:14:04 -07:00
John Blum
8cb59be29c Add JsonToPdxConverter interface specifying a contract to convert JSON to PDX.
The JSON may be expressed as a byte[] or a String.

Resolves gh-67.
2020-05-05 11:14:04 -07:00
John Blum
074fd7f1ed Add java.util.function.Predicate on Region to filter Regions on data import/export.
Add protected getLogger() method returning a SLF4J Logger to log messages and events during data import/export operations.

Format source code.

Resolves gh-67.
2020-05-05 11:14:04 -07:00
John Blum
1b44a80830 Add abstract base class implementation of the CacheDataImporterExporter interface to correctly manage data exports and imports based on application and Environment (context) configuration.
Resolves gh-67.
2020-05-05 11:14:04 -07:00
John Blum
1a19c228be Introduce new CacheDataImporter and CacheDataExporter interfaces to import and export data into and out from a GemFire/Geode cache on startup.
These new interfaces and APIs are intended to be used in SBDG's auto-configuration when the Spring Boot app using Apache Geode starts up in order to load or save data.

Resolves gh-67.
2020-05-05 11:14:04 -07:00
John Blum
46722ea9c4 Add ApplicationContextMembershipListener implementation and extension of MembershipListenerAdapter to adapt the Spring ApplicationContext to handle peer member departed and joined membership events. 2020-04-27 15:16:42 -07:00
John Blum
2deb202c21 Add new AbstractContextLoader implementation and extension to the Spring TestContext Framework to configure and bootstrap the RefreshableAnnotationConfigApplicationContext used in Spring based tests. 2020-04-27 14:18:45 -07:00
John Blum
e8ddc1f744 Introduce new Spring ApplicationContext implementation and extension that is Refreshable and can be configured with Annotations. 2020-04-27 14:18:45 -07:00
John Blum
069ad68016 Add Unit Test demonstrating how to use Mock objects with Spring's Cache Abstraction in a @Cacheable @Service component/bean. 2020-03-20 14:01:28 -07:00
John Blum
8447eaad10 Update Copyright to 2020. 2020-02-19 23:04:23 -08:00
John Blum
1969f89492 Add GeodeLoggingApplicationListener registered with Spring Boot to handle backwards compatibility and existing logging configuration expressed with SDG.
User may configure logging using @ClientCacheApplication(logLevel = INFO), or by annotating their Spring application class with @EnableLogging(logLevel = INFO) or using 1 of SDG's logging configuration properties ['spring.data.gemfire.cache.log-level', 'spring.data.gemfire.logging.level'], therefore, SBDG makes a best attempt to honor those logging configuration settings.

Resolves gh-73.
2020-02-14 15:19:14 -08:00
John Blum
ddafaafe56 Fix tests failures in the Apache Geode, Inline Caching support Integration Tests involving Apache Cassandra due to the DataStax 4.x Driver upgrade in Spring Data Neumann/2.3. 2020-01-22 12:39:12 -08:00
John Blum
0300d0e753 Format source code and optimize imports. 2019-12-09 16:22:50 -08:00
John Blum
25960adc4d Add auto-configuration support for TLS using SSL when deploying Spring Boot ClientCache applications to PCF using PCC that requires secure Sockets.
The TLS/SSL auto-configuration enables and configures the use of the SSL default context provided by the JRE, which the ClientCache instance uses to obtain the required CERT necessary when creating SSL Sockets between the client and PCC servers.

Resolves gh-61.
2019-10-17 15:50:26 -07:00
John Blum
4eff04c517 Refactor Cluster-aware Conditions to be CloudFoundry Environment-aware.
Resolves gh-56.
2019-09-24 00:34:36 -07:00
John Blum
ff3ddaf586 Adds support to properly clean up and 'reset' the ClusterAwareConfiguration.ClusterAwareCondition state on ApplicationContext closed events. 2019-09-12 17:40:08 -07:00
John Blum
c3f19df920 Move ClusterAwareConfiguration.ClusterAwareCondition.reset() to @AfterClass tear down method. 2019-09-12 16:57:48 -07:00
John Blum
7992b3e893 Edit Javadoc. 2019-09-12 01:09:38 -07:00
John Blum
a8e29f7065 Provide ability to reset Cluster-Aware Configuration Condition state. 2019-09-12 01:09:38 -07:00
John Blum
c1d7424de1 Add @EnableClusterAware annotation configuration support allowing developers to seamlessly switch between local and client/server development environments.
Resolves gh-52.
2019-09-12 01:09:38 -07:00
John Blum
69250d1e30 Add capability to find an optional user by name.
Resolves gh-44.
2019-09-10 12:29:32 -07:00
John Blum
8febb7cab4 Mock the SDG o.s.d.g.LocatorFactoryBean. 2019-09-03 14:36:35 -07:00
John Blum
f39f480a1a Format source code; Optimize imports. 2019-09-03 13:01:55 -07:00
John Blum
d16e36a38f Extend o.s.d.g.tests.integration.IntegrationTestsSupport.
Format source code.

Optimize imports.
2019-09-03 13:01:22 -07:00
John Blum
263206a3c0 Add LocatorConfigurer to LocatorApplication configuration class to disable Apache Geode Cluster Configuration.
Add Before and After cleanup() method to remove any Locator runtime files and directories.
2019-09-03 12:50:04 -07:00
John Blum
a16018bcb2 Add support for 'locators' and 'remote-locators' properties configuration on Spring Boot, Apache Geode Locator applications when using the @UseLocators annotation. 2019-09-01 10:58:58 -07:00
John Blum
6c1c7af36d Adapt to API and TestContext behavior changes in Spring Framework 5.2. 2019-08-21 11:56:31 -07:00
John Blum
621982f472 Add functionality to target and extract VCAP environment variable configuration for a specific CloudCache Service Instance in PCF.
Resolves gh-33.
2019-06-28 18:43:27 -07:00
John Blum
6e81c007e6 Add comparable methods to optionally 'find' as well as 'require' a CloudCache Service Instance in PCF.
Resolves gh-33.
2019-06-28 13:03:30 -07:00
John Blum
a8f88dff0a Declare AbstractInlineCachingWithExternalDataSourceIntegrationTests as a proper abstract class. 2019-06-13 01:39:14 -07:00
John Blum
bc1c259fb7 Add Integration Tests testing the Inline Caching support using Apache Cassandra. 2019-06-13 01:32:02 -07:00
John Blum
d3bb6e4b32 Extend AbstractInlineCachingWithExternalDataSourceIntegrationTests. 2019-06-13 01:31:14 -07:00
John Blum
6837ac82c9 Add abstract base class encapsulating functionality and test cases common to all Inline Caching Integration Tests. 2019-06-13 01:30:00 -07:00
John Blum
7b5824f4c7 Add Integration Tests testing the Inline Caching support using a RDBMS (HSQLDB Database). 2019-06-13 00:19:10 -07:00
John Blum
82a3887f89 Add RegionConfigurer to enable Inline Caching capabilities using a SD CrudRepository for an application Region. 2019-06-12 18:06:10 -07:00