>From Ian Maxon <[email protected]>: Ian Maxon has submitted this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20763?usp=email )
Change subject: [NO ISSUE][GEO] Reuse ObjectMapper instances in geo functions ...................................................................... [NO ISSUE][GEO] Reuse ObjectMapper instances in geo functions - user model changes: no - storage format changes: no - interface changes: no Details : - Refactor PrintTools.geometryToGeoJSON() to use a static ObjectMapper - Refactor AGeometry.toJSON() to use a static ObjectMapper - Avoids creating new ObjectMapper and registering JtsModule on every call - Added right number of args for Parsing Error, 124 Change-Id: Ib4cd841fa40d4fdd5bd350d6167a6737e5ad6767 Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20763 Integration-Tests: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> Reviewed-by: Ian Maxon <[email protected]> --- M asterixdb/asterix-geo/src/main/java/org/apache/asterix/geo/evaluators/functions/STAsGeoJSONDescriptor.java M asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/PrintTools.java M asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AGeometry.java 3 files changed, 27 insertions(+), 19 deletions(-) Approvals: Ian Maxon: Looks good to me, approved Jenkins: Verified; Verified Anon. E. Moose #1000171: diff --git a/asterixdb/asterix-geo/src/main/java/org/apache/asterix/geo/evaluators/functions/STAsGeoJSONDescriptor.java b/asterixdb/asterix-geo/src/main/java/org/apache/asterix/geo/evaluators/functions/STAsGeoJSONDescriptor.java index f5d2217..55fffcb 100644 --- a/asterixdb/asterix-geo/src/main/java/org/apache/asterix/geo/evaluators/functions/STAsGeoJSONDescriptor.java +++ b/asterixdb/asterix-geo/src/main/java/org/apache/asterix/geo/evaluators/functions/STAsGeoJSONDescriptor.java @@ -36,23 +36,22 @@ private static final long serialVersionUID = 1L; public static final IFunctionDescriptorFactory FACTORY = STAsGeoJSONDescriptor::new; private static final Logger LOGGER = LogManager.getLogger(); - private final ObjectMapper mapper; + private static final ObjectMapper GEO_JSON_MAPPER = createObjectMapper(); - public STAsGeoJSONDescriptor() { - mapper = new ObjectMapper(); + private static ObjectMapper createObjectMapper() { + ObjectMapper mapper = new ObjectMapper(); + mapper.registerModule(new JtsModule()); + return mapper; } @Override protected Object evaluateOGCGeometry(Geometry geometry) throws HyracksDataException { - String geoJson = null; try { - mapper.registerModule(new JtsModule()); - geoJson = mapper.writeValueAsString(geometry); + return GEO_JSON_MAPPER.writeValueAsString(geometry); } catch (JsonProcessingException e) { - LOGGER.debug("JSON Processing exception during STAsGeoJSON function"); - throw HyracksDataException.create(ErrorCode.PARSING_ERROR); + LOGGER.debug("JSON Processing exception during STAsGeoJSON function", e); + throw HyracksDataException.create(ErrorCode.PARSING_ERROR, "STAsGeoJSON", e.getMessage()); } - return geoJson; } @Override diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/PrintTools.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/PrintTools.java index 92fb1bb..8c5dfbb 100644 --- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/PrintTools.java +++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/PrintTools.java @@ -47,6 +47,13 @@ private static final GregorianCalendarSystem gCalInstance = GregorianCalendarSystem.getInstance(); private static final long CHRONON_OF_DAY = TimeUnit.DAYS.toMillis(1); + private static final ObjectMapper GEO_JSON_MAPPER = createGeoJsonMapper(); + + private static ObjectMapper createGeoJsonMapper() { + ObjectMapper mapper = new ObjectMapper(); + mapper.registerModule(new JtsModule()); + return mapper; + } public static void printDateString(byte[] b, int s, int l, PrintStream ps) throws HyracksDataException { long chrononTime = getDateChronon(b, s + 1); @@ -517,10 +524,8 @@ if (geometry == null) { return ""; } - ObjectMapper mapper = new ObjectMapper(); - mapper.registerModule(new JtsModule()); try { - return mapper.writeValueAsString(geometry); + return GEO_JSON_MAPPER.writeValueAsString(geometry); } catch (JsonProcessingException e) { return ""; } diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AGeometry.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AGeometry.java index c9d66b4..94b0057 100644 --- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AGeometry.java +++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AGeometry.java @@ -30,6 +30,14 @@ public class AGeometry implements IAObject { + private static final ObjectMapper GEO_JSON_MAPPER = createObjectMapper(); + + private static ObjectMapper createObjectMapper() { + ObjectMapper mapper = new ObjectMapper(); + mapper.registerModule(new JtsModule()); + return mapper; + } + protected Geometry geometry; public AGeometry(Geometry geometry) { @@ -67,15 +75,11 @@ @Override public ObjectNode toJSON() { - ObjectMapper om = new ObjectMapper(); - om.registerModule(new JtsModule()); - ObjectNode json; try { - String geoJson = om.writeValueAsString(geometry); - json = (ObjectNode) om.readTree(geoJson); + String geoJson = GEO_JSON_MAPPER.writeValueAsString(geometry); + return (ObjectNode) GEO_JSON_MAPPER.readTree(geoJson); } catch (IOException e) { - return om.createObjectNode(); + return GEO_JSON_MAPPER.createObjectNode(); } - return json; } } -- To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20763?usp=email To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Change-Id: Ib4cd841fa40d4fdd5bd350d6167a6737e5ad6767 Gerrit-Change-Number: 20763 Gerrit-PatchSet: 2 Gerrit-Owner: Suryaa Charan Shivakumar <[email protected]> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Ian Maxon <[email protected]> Gerrit-Reviewer: Jenkins <[email protected]>
