>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]>

Reply via email to