spring-boot-data-geode icon indicating copy to clipboard operation
spring-boot-data-geode copied to clipboard

[OPTIONAL] Consider replacing JSONFormatter with a new PdxJsonObjectMapper

Open jxblum opened this issue 5 years ago • 0 comments

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).

jxblum avatar May 13 '20 21:05 jxblum