From 54f54bb0b2cb9480407939d123abc95129c1f6b7 Mon Sep 17 00:00:00 2001
From: Rrutum <71127900+rrutum@users.noreply.github.com>
Date: Mon, 14 Jul 2025 18:52:04 +0530
Subject: [PATCH 1/9] Migrate simple-json to jackson
---
pom.xml | 13 +-
.../java/com/aerospike/load/AsWriterTask.java | 49 +++--
src/main/java/com/aerospike/load/Parser.java | 188 +++++++++---------
.../com/aerospike/load/RelaxedJsonMapper.java | 181 +++++++++++++++++
.../java/com/aerospike/load/DataTypeTest.java | 58 +++---
.../aerospike/load/RelaxedJsonMapperTest.java | 87 ++++++++
6 files changed, 425 insertions(+), 151 deletions(-)
create mode 100644 src/main/java/com/aerospike/load/RelaxedJsonMapper.java
create mode 100644 src/test/java/com/aerospike/load/RelaxedJsonMapperTest.java
diff --git a/pom.xml b/pom.xml
index 2f69d97..08f27b8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -58,11 +58,16 @@
4.13.1
test
-
+
- com.googlecode.json-simple
- json-simple
- 1.1.1
+ com.fasterxml.jackson.core
+ jackson-core
+ 2.15.2
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.15.2
diff --git a/src/main/java/com/aerospike/load/AsWriterTask.java b/src/main/java/com/aerospike/load/AsWriterTask.java
index f4353c4..ad75d87 100644
--- a/src/main/java/com/aerospike/load/AsWriterTask.java
+++ b/src/main/java/com/aerospike/load/AsWriterTask.java
@@ -33,10 +33,9 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.json.simple.JSONArray;
-import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
-import org.json.simple.parser.ParseException;
+import com.fasterxml.jackson.databind.JsonNode;
+import java.io.IOException;
+import java.util.Map;
import com.aerospike.client.AerospikeClient;
import com.aerospike.client.AerospikeException;
@@ -69,7 +68,7 @@ public class AsWriterTask implements Callable {
private Parameters params;
private Counter counters;
- private JSONParser jsonParser;
+ // JSON parsing is now handled by RelaxedJsonMapper
private static Logger log = LogManager.getLogger(AsWriterTask.class);
@@ -229,14 +228,9 @@ private Key getKeyAndBinsFromDataline(List bins) {
+ " Aerospike Bin processing Error: " + ae.getResultCode());
handleProcessLineError(ae);
- } catch (ParseException pe) {
-
- log.error("File: " + Utils.getFileName(this.fileName) + " Line: " + lineNumber + " Parsing Error: " + pe);
- handleProcessLineError(pe);
-
} catch (Exception e) {
- log.error("File: " + Utils.getFileName(this.fileName) + " Line: " + lineNumber + " Unknown Error: " + e);
+ log.error("File: " + Utils.getFileName(this.fileName) + " Line: " + lineNumber + " Error: " + e);
handleProcessLineError(e);
}
@@ -247,7 +241,7 @@ private Key getKeyAndBinsFromDataline(List bins) {
* Validate if number of column in data line are same as provided in config file.
* Throw exception the more columns are present then given.
*/
- private void validateNColumnInDataline() throws ParseException {
+ private void validateNColumnInDataline() throws Exception {
// Throw exception if n_columns(datafile) are more than n_columns(configfile).
int n_column = Integer.parseInt(dsvConfigs.get(Constants.N_COLUMN));
@@ -258,7 +252,7 @@ private void validateNColumnInDataline() throws ParseException {
log.warn("File: " + Utils.getFileName(fileName) + " Line: " + lineNumber
+ " Number of column mismatch:Columns in data file is less than number of column in config file.");
} else {
- throw new ParseException(lineNumber);
+ throw new Exception("Column count mismatch at line " + lineNumber);
}
}
@@ -451,28 +445,31 @@ private Bin createBinForJson(String binName, String binRawValue) {
try {
log.debug(binRawValue);
- if (jsonParser == null) {
- jsonParser = new JSONParser();
- }
-
- Object obj = jsonParser.parse(binRawValue);
+ JsonNode jsonNode = RelaxedJsonMapper.parseJson(binRawValue);
- if (obj instanceof JSONArray) {
- JSONArray jsonArray = (JSONArray) obj;
+ if (jsonNode.isArray()) {
+ List