Awesome! On Mon, Aug 17, 2015 at 3:21 PM, Ignatyev, Konstantin <[email protected]> wrote:
> Done: > https://issues.apache.org/jira/browse/GEODE-225 > > https://issues.apache.org/jira/browse/GEODE-226 > > Konstantin Ignatyev > Enterprise Architect > CDK Global > > t 206.219.8381 | c 425.233.4536 | f 206.269.6789 > [email protected]<mailto:[email protected]?subject=> > cdk.com<http://www.cdkglobal.com> > > > > On Aug 17, 2015, at 3:00 PM, William Markito <[email protected]<mailto: > [email protected]>> wrote: > > Thanks Konstantin! > > Would you mind opening a JIRA about those ? > https://issues.apache.org/jira/browse/GEODE > > > On Mon, Aug 17, 2015 at 2:51 PM, Ignatyev, Konstantin <[email protected] > > > wrote: > > Hi, > > I have been looking at Geode-s code and come across major performance > killer for JSON handling in Geode, namely implementation of > com.gemstone.gemfire.pdx.internal.PdxInstanceImpl#getObject > > as you can see in the snipped below the code creates ObjectMapper every > time it needs to convert PDX instance into JSON. According to docs and > examples on Jackson’s site instances of ObjectMapper should be shared > globally. Creating it for every transaction is quite expensive in terms of > CPU and garbage collection. > > > Another thing is date format, in the JSON land it is pretty much settled > to be ISO 8661 > > > https://weblog.west-wind.com/posts/2014/Jan/06/JavaScript-JSON-Date-Parsing-and-real-Dates > > It would be nice to be able to have Geode’s JSON standard compliant, or > have this configurable. > > public Object getObject() { > if (getPdxType().getNoDomainClass()) { > //In case of Developer Rest APIs, All PdxInstances converted from Json > will have a className =__GEMFIRE_JSON. > //Following code added to convert Json/PdxInstance into the Java > object. > if(this.getClassName().equals("__GEMFIRE_JSON")){ > > //introspect the JSON, does the @type meta-data exist. > String className = extractTypeMetaData(); > > if(StringUtils.hasText(className)) { > try { > ObjectMapper mapper = new ObjectMapper(); > mapper.setDateFormat(new SimpleDateFormat("MM/dd/yyyy")); > > mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); > > > mapper.configure(com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, > true); > String JSON = JSONFormatter.toJSON(this); > Object classInstance = mapper.readValue(JSON, > ClassPathLoader.getLatest().forName(className)); > return classInstance; > }catch(Exception e){ > throw new PdxSerializationException("Could not deserialize as > java class type could not resolved", e); > } > } > } > return this; > } > > Regards, > > Konstantin Ignatyev > > > > > ---------------------------------------------------------------------- > This message and any attachments are intended only for the use of the > addressee and may contain information that is privileged and confidential. > If the reader of the message is not the intended recipient or an authorized > representative of the intended recipient, you are hereby notified that any > dissemination of this communication is strictly prohibited. If you have > received this communication in error, notify the sender immediately by > return email and delete the message and any attachments from your system. > > > > > -- > > William Markito Oliveira > Enterprise Architect > -- For questions about Apache Geode, please write to > *[email protected] > <[email protected]>* > > > ---------------------------------------------------------------------- > This message and any attachments are intended only for the use of the > addressee and may contain information that is privileged and confidential. > If the reader of the message is not the intended recipient or an authorized > representative of the intended recipient, you are hereby notified that any > dissemination of this communication is strictly prohibited. If you have > received this communication in error, notify the sender immediately by > return email and delete the message and any attachments from your system. > -- William Markito Oliveira Enterprise Architect -- For questions about Apache Geode, please write to *[email protected] <[email protected]>*
