Open jxblum opened 4 years ago
Completed handling for client LOCAL
Regions. See Issue #91, commit and test class.
Completed handling for Cache Data Imports/Exports in conjunction with the @EnableClusterAware
annotation. See Issue #90, commit and test class, and specifically the configuration.
Filed the following Apache Geode JIRA tickets related to these problems:
GEODE-8235 - "Server should not be required to have an available PDX type registry for ClientCache applications."
GEODE-8254 - "JSONFormatter cannot parse JSON Arrays."
GEODE-8255 - "JSONFormatter does not properly generate the @type metadata field."
GEODE-8256 - "The Jackson ObjectMapper used by a PdxInstance does not properly handle Java 8 Types."
GEODE-8257 - " The Jackson ObjectMapper used by a PdxInstance cannot handle typed JSON Objects."
GEODE-8258 - " Cannot implement PdxInstance and store in a Region."
The following things need to be investigated further:
ClientCache
and client LOCALRegion(s)
with no connections (i.e. noPool
defined) to a cluster/server using PDXCurrently Throws:
:(
DONE - Test using
@EnableClusterAware
annotation (this is currently not working because the "Cluster Configuration Push" happens in theSmartLifecycle
phase of container startup and the "Import" happens in theBeanPostProcessor.postProcessAfterInitialization()
callback on theRegion
, which occurs before the push... #sigh)DONE - Test using
@EnableCachingDefinedRegions
annotation (i.e.Regions
created from Spring's Cache Abstraction annotations or JSR-107, JCache API annotations)Test using
@EnableClusterDefinedRegions
annotation (i.e.Regions
created on the client from the serverRegion
definitions)Test export/import with entity having natural id (e.g.
Book.isbn
) that would need to include a@identifier
JSON object metadata field. Possible for POJO stored in theRegion
since we can inspect the object class type, not possible when theRegion
value is aPdxInstance
that did not originate from JSON. In that case, the user must manually make sure the non-JSON generatedPdxInstance
includes a@identifier
PDX field before it is exported to JSON.Add more documentation around features & limitations (gotchas): Java 8 Types, JSR-310 (Time) Types and Jackson 2 vs. 3, etc. Use of multiple Cache Data Importers and ordering using the
@Order
annotation or theOrdered
interface on Cache Data Importer/Exporter bean definitions. Explain the (hidden) use ofPredicate's
to filterRegions
on import and export. Explain the API/SPI for writing extensions, such as Cache Data Importers/Exporters for XML, XLS, SQL DML or other data formats. Explain the types of numeric values: e.g. application domain model class (e.g.Customer
) might define anid
field of typeLong
but the value for the corresponding JSON field (i.e. "id") will be abyte
as processed byJSONFormatter
, thereforeRegion.get(key)
lookups must becustomersRegion.get((byte) 1)
even if the "Customers"Region
is defined asRegion<Long, Customer>
. Also theRegion
entry value will be aPdxInstance
and notCustomer
. ??????