Currently, the Apache Geode JSONFormatter class (source) and PdxInstance types (e.g. PdxInstanceImpl) has the following problems:
JSONFormatter cannot handle (top-level) JSON arrays
JSONFormatter cannot handle JSON type metadata (when activating Jackson ObjectMapper default typing)
JSONFormatter with PdxInstance(Impl) loses type metadata, id, among other things: Object (using PDX serializer) -> PDX (using JSONFormatter.toJSON(:PdxInstance)) -> JSON (using JSONFormatter.fromJSON(..)) -> PDX (using PdxInstance.getObject()) -> PdxInstance (expect Object here)
PdxInstance.getObject() cannot handle Java 8 types in general (e.g. Optional), JSR-310 (Time) types in particular, and parameter names even though Jackson does
- I suspect Apache Geode will not work with Jackson 3, which is based on Java 8 by default, due to serialization issues
- PDX is not properly extensible (e.g. you cannot "configure" the static
ObjectMapper used by PdxInstanceImpl in the getObject() method, which is blocker issue for many JSON doc types).
Currently, the Apache Geode
JSONFormatterclass (source) andPdxInstancetypes (e.g.PdxInstanceImpl) has the following problems:JSONFormattercannot handle (top-level) JSON arraysJSONFormattercannot handle JSON type metadata (when activating JacksonObjectMapperdefault typing)JSONFormatterwithPdxInstance(Impl)loses type metadata, id, among other things:Object (using PDX serializer) -> PDX (using JSONFormatter.toJSON(:PdxInstance)) -> JSON (using JSONFormatter.fromJSON(..)) -> PDX (using PdxInstance.getObject()) -> PdxInstance (expect Object here)PdxInstance.getObject()cannot handle Java 8 types in general (e.g.Optional), JSR-310 (Time) types in particular, and parameter names even though Jackson doesObjectMapperused byPdxInstanceImplin thegetObject()method, which is blocker issue for many JSON doc types).