>From Suryaa Charan Shivakumar <[email protected]>:

Suryaa Charan Shivakumar has uploaded this change for review. ( 
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
---
M asterixdb/NOTICE
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
M hyracks-fullstack/NOTICE
5 files changed, 29 insertions(+), 21 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/63/20763/1

diff --git a/asterixdb/NOTICE b/asterixdb/NOTICE
index 5118782..a44569b 100644
--- a/asterixdb/NOTICE
+++ b/asterixdb/NOTICE
@@ -1,5 +1,5 @@
 Apache AsterixDB
-Copyright 2015-2025 The Apache Software Foundation
+Copyright 2015-2026 The Apache Software Foundation

 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
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;
     }
 }
diff --git a/hyracks-fullstack/NOTICE b/hyracks-fullstack/NOTICE
index 722db88..9050c82 100644
--- a/hyracks-fullstack/NOTICE
+++ b/hyracks-fullstack/NOTICE
@@ -1,5 +1,5 @@
 Apache Hyracks and Algebricks
-Copyright 2015-2025 The Apache Software Foundation
+Copyright 2015-2026 The Apache Software Foundation

 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).

--
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: newchange
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: Ib4cd841fa40d4fdd5bd350d6167a6737e5ad6767
Gerrit-Change-Number: 20763
Gerrit-PatchSet: 1
Gerrit-Owner: Suryaa Charan Shivakumar <[email protected]>

Reply via email to