diff --git a/Backend/tools-services/pom.xml b/Backend/tools-services/pom.xml
index 6e02cfc..af5a89e 100644
--- a/Backend/tools-services/pom.xml
+++ b/Backend/tools-services/pom.xml
@@ -74,16 +74,6 @@
gson
${gson.version}
-
- com.fasterxml.jackson.core
- jackson-core
- ${jackson.version}
-
-
- com.fasterxml.jackson.core
- jackson-databind
- ${jackson.version}
-
diff --git a/Backend/tools-services/src/main/java/com/r11/tools/SparkApplication.java b/Backend/tools-services/src/main/java/com/r11/tools/SparkApplication.java
index 4e8512c..affcebb 100644
--- a/Backend/tools-services/src/main/java/com/r11/tools/SparkApplication.java
+++ b/Backend/tools-services/src/main/java/com/r11/tools/SparkApplication.java
@@ -1,5 +1,7 @@
package com.r11.tools;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
import com.r11.tools.controller.JsonController;
import com.r11.tools.controller.ProcessorInfoController;
import com.r11.tools.controller.XPathController;
@@ -25,11 +27,16 @@ public class SparkApplication {
Logger logger = LogManager.getLogger(SparkApplication.class);
+ Gson gson = new GsonBuilder()
+ .disableHtmlEscaping()
+ .setPrettyPrinting()
+ .create();
+
RestControllerRegistry registry = new RestControllerRegistry();
registry.registerController(new ProcessorInfoController(logger));
- registry.registerController(new XsdController(logger));
- registry.registerController(new XPathController(logger));
- registry.registerController(new XsltController(logger));
+ registry.registerController(new XsdController(gson, logger));
+ registry.registerController(new XPathController(gson, logger));
+ registry.registerController(new XsltController(gson, logger));
registry.registerController(new JsonController());
registry.register();
diff --git a/Backend/tools-services/src/main/java/com/r11/tools/controller/XPathController.java b/Backend/tools-services/src/main/java/com/r11/tools/controller/XPathController.java
index 84dc235..adf6364 100644
--- a/Backend/tools-services/src/main/java/com/r11/tools/controller/XPathController.java
+++ b/Backend/tools-services/src/main/java/com/r11/tools/controller/XPathController.java
@@ -1,15 +1,13 @@
package com.r11.tools.controller;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
import com.r11.tools.controller.internal.GlobalControllerManifest;
import com.r11.tools.controller.internal.HandlerType;
import com.r11.tools.controller.internal.RestController;
import com.r11.tools.controller.internal.ScopedControllerManifest;
import com.r11.tools.xml.Saxon;
import com.r11.tools.xml.Xalan;
-import java.util.HashMap;
-import java.util.Map;
import org.apache.logging.log4j.Logger;
import spark.Request;
import spark.Response;
@@ -17,36 +15,37 @@ import spark.Response;
@GlobalControllerManifest
public class XPathController implements RestController {
+ private final Gson gson;
private final Logger logger;
- public XPathController(Logger logger) {
+ public XPathController(Gson gson, Logger logger) {
+ this.gson = gson;
this.logger = logger;
}
@ScopedControllerManifest(method = HandlerType.POST, path = "/xpath")
- public void transform(Request request, Response response) throws JsonProcessingException {
+ public void transform(Request request, Response response) {
String body = request.body();
- ObjectMapper mapper = new ObjectMapper();
- Map requestMap = new HashMap<>();
- Map responseMap = new HashMap<>();
+
+ JsonObject requestJson;
try {
- requestMap = mapper.readValue(body, Map.class);
- } catch (JsonProcessingException ex) {
- this.logger.error("Request JSON error. " + ex);
- responseMap.put("result", ex.getMessage());
- responseMap.put("processor", "N/A");
- responseMap.put("status", "ERR");
- responseMap.put("time", "N/A");
+ requestJson = this.gson.fromJson(body, JsonObject.class);
+ } catch (Exception e) {
+ JsonObject responseJson = new JsonObject();
+ responseJson.addProperty("result", e.getMessage());
+ responseJson.addProperty("processor", "N/A");
+ responseJson.addProperty("status", "ERR");
+ responseJson.addProperty("time", "N/A");
+
response.status(400);
- response.body(mapper.writeValueAsString(responseMap));
+ response.body(this.gson.toJson(responseJson));
return;
}
- String data = requestMap.get("data");
- String query = requestMap.get("process");
- String processor = requestMap.get("processor");
- String version = requestMap.get("version");
-
+ String data = requestJson.get("data").getAsString();
+ String query = requestJson.get("process").getAsString();
+ String processor = requestJson.get("processor").getAsString();
+ String version = requestJson.get("version").getAsString();
String tmp = "";
long timeStart;
@@ -57,45 +56,64 @@ public class XPathController implements RestController {
return;
}
+ JsonObject responseJson = new JsonObject();
switch (processor) {
case "saxon":
response.header("processor", "Saxon " + Saxon.getVersion() + " " + version + " over s9api");
timeStart = System.currentTimeMillis();
+
try {
tmp = Saxon.processXPath(data, query, version).trim();
- responseMap.put("result", tmp);
- responseMap.put("status", "OK");
+
+ response.status(200);
+
+ responseJson.addProperty("result", tmp);
+ responseJson.addProperty("status", "OK");
} catch (Exception ex) {
this.logger.error("Error on processing XPath using Saxon. " + ex);
- responseMap.put("result", ex.getMessage());
- responseMap.put("status", "ERR");
+
response.status(400);
+
+ responseJson.addProperty("result", ex.getMessage());
+ responseJson.addProperty("status", "ERR");
}
+
duration = System.currentTimeMillis() - timeStart;
this.logger.info("Request" + body + " processed in " + duration + " ms.");
- responseMap.put("processor", "Saxon " + Saxon.getVersion() + " " + version + " over s9api");
- responseMap.put("time", "" + duration);
- response.body(mapper.writeValueAsString(responseMap));
+
+ responseJson.addProperty("processor", "Saxon " + Saxon.getVersion() + " " + version + " over s9api");
+ responseJson.addProperty("time", duration);
+
+ response.body(this.gson.toJson(responseJson));
return;
case "xalan":
response.header("processor", Xalan.getVersion());
timeStart = System.currentTimeMillis();
+
try {
tmp = Xalan.processXPath(data, query).trim();
- responseMap.put("result", tmp);
- responseMap.put("status", "OK");
+
+ response.status(200);
+
+ responseJson.addProperty("result", tmp);
+ responseJson.addProperty("status", "OK");
} catch (Exception ex) {
this.logger.error("Error on processing XPath using Xalan. " + ex);
- responseMap.put("result", ex.getMessage());
- responseMap.put("status", "ERR");
+
response.status(400);
+
+ responseJson.addProperty("result", ex.getMessage());
+ responseJson.addProperty("status", "ERR");
}
+
duration = System.currentTimeMillis() - timeStart;
this.logger.info("Request: " + body + " processed in " + duration + " ms.");
- responseMap.put("processor", Xalan.getVersion());
- responseMap.put("time", Long.toString(duration));
- response.body(mapper.writeValueAsString(responseMap));
+
+ responseJson.addProperty("processor", Xalan.getVersion());
+ responseJson.addProperty("time", duration);
+
+ response.body(this.gson.toJson(responseJson));
return;
default:
response.body("saxon, xalan");
diff --git a/Backend/tools-services/src/main/java/com/r11/tools/controller/XsdController.java b/Backend/tools-services/src/main/java/com/r11/tools/controller/XsdController.java
index 5e29f8a..9cc8443 100644
--- a/Backend/tools-services/src/main/java/com/r11/tools/controller/XsdController.java
+++ b/Backend/tools-services/src/main/java/com/r11/tools/controller/XsdController.java
@@ -1,14 +1,12 @@
package com.r11.tools.controller;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
import com.r11.tools.controller.internal.GlobalControllerManifest;
import com.r11.tools.controller.internal.HandlerType;
import com.r11.tools.controller.internal.RestController;
import com.r11.tools.controller.internal.ScopedControllerManifest;
import com.r11.tools.xml.Xalan;
-import java.util.HashMap;
-import java.util.Map;
import org.apache.logging.log4j.Logger;
import spark.Request;
import spark.Response;
@@ -16,55 +14,65 @@ import spark.Response;
@GlobalControllerManifest
public class XsdController implements RestController {
+ private final Gson gson;
private final Logger logger;
- public XsdController(Logger logger) {
+ public XsdController(Gson gson, Logger logger) {
+ this.gson = gson;
this.logger = logger;
}
@ScopedControllerManifest(method = HandlerType.POST, path = "/xsd")
- public Response transform(Request req, Response resp) throws JsonProcessingException {
- String body = req.body();
-
- ObjectMapper mapper = new ObjectMapper();
- Map requestMap = new HashMap<>();
- Map responseMap = new HashMap<>();
+ public Response transform(Request request, Response response) {
+ String body = request.body();
+ JsonObject requestJson;
try {
- requestMap = mapper.readValue(body, Map.class);
- } catch (JsonProcessingException ex) {
- this.logger.error("Request JSON error. " + ex);
- responseMap.put("result", ex.getMessage());
- responseMap.put("processor", "N/A");
- responseMap.put("status", "ERR");
- responseMap.put("time", "N/A");
- resp.status(400);
- resp.body(mapper.writeValueAsString(responseMap));
- return resp;
+ requestJson = this.gson.fromJson(body, JsonObject.class);
+ } catch (Exception e) {
+ JsonObject responseJson = new JsonObject();
+ responseJson.addProperty("result", e.getMessage());
+ responseJson.addProperty("processor", "N/A");
+ responseJson.addProperty("status", "ERR");
+ responseJson.addProperty("time", "N/A");
+
+ response.status(400);
+ response.body(this.gson.toJson(responseJson));
+ return response;
}
- String data = requestMap.get("data");
- String xsd = requestMap.get("process");
+ String data = requestJson.get("data").getAsString();
+ String xsd = requestJson.get("process").getAsString();
+
+ response.header("processor", Xalan.getVersion());
- resp.header("processor", Xalan.getVersion());
long timeStart = System.currentTimeMillis();
String tmp;
+
+ JsonObject responseJson = new JsonObject();
try {
tmp = Xalan.validate(data, xsd).trim();
- responseMap.put("result", tmp);
- responseMap.put("status", "OK");
+
+ response.status(200);
+
+ responseJson.addProperty("result", tmp);
+ responseJson.addProperty("status", "OK");
} catch (Exception ex) {
this.logger.error("Error on validation against XSD using Xalan. " + ex);
- responseMap.put("result", ex.getMessage());
- responseMap.put("status", "ERR");
- resp.status(400);
+
+ response.status(400);
+
+ responseJson.addProperty("result", ex.getMessage());
+ responseJson.addProperty("status", "ERR");
}
long duration = System.currentTimeMillis() - timeStart;
this.logger.info("Request: " + body + " processed in " + duration + " ms.");
- responseMap.put("processor", Xalan.getVersion());
- responseMap.put("time", "" + duration);
- resp.body(mapper.writeValueAsString(responseMap));
- return resp;
+
+ responseJson.addProperty("processor", Xalan.getVersion());
+ responseJson.addProperty("time", duration);
+
+ response.body(this.gson.toJson(responseJson));
+ return response;
}
}
diff --git a/Backend/tools-services/src/main/java/com/r11/tools/controller/XsltController.java b/Backend/tools-services/src/main/java/com/r11/tools/controller/XsltController.java
index 56d3bff..343740a 100644
--- a/Backend/tools-services/src/main/java/com/r11/tools/controller/XsltController.java
+++ b/Backend/tools-services/src/main/java/com/r11/tools/controller/XsltController.java
@@ -1,17 +1,13 @@
package com.r11.tools.controller;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
import com.r11.tools.controller.internal.GlobalControllerManifest;
import com.r11.tools.controller.internal.HandlerType;
import com.r11.tools.controller.internal.RestController;
import com.r11.tools.controller.internal.ScopedControllerManifest;
import com.r11.tools.xml.Saxon;
import com.r11.tools.xml.Xalan;
-import java.util.HashMap;
-import java.util.Map;
import org.apache.logging.log4j.Logger;
import spark.Request;
import spark.Response;
@@ -19,35 +15,37 @@ import spark.Response;
@GlobalControllerManifest
public class XsltController implements RestController {
+ private final Gson gson;
private final Logger logger;
- public XsltController(Logger logger) {
+ public XsltController(Gson gson, Logger logger) {
+ this.gson = gson;
this.logger = logger;
}
@ScopedControllerManifest(method = HandlerType.POST, path = "/xslt")
- public void transform(Request request, Response response) throws JsonProcessingException {
+ public void transform(Request request, Response response) {
String body = request.body();
- ObjectMapper mapper = new ObjectMapper();
- Map requestMap = new HashMap<>();
- Map responseMap = new HashMap<>();
+
+ JsonObject requestJson;
try {
- requestMap = mapper.readValue(body, Map.class);
- } catch (JsonMappingException | JsonParseException ex) {
- this.logger.error("Request JSON error. " + ex);
- responseMap.put("result", ex.getMessage());
- responseMap.put("processor", "N/A");
- responseMap.put("status", "ERR");
- responseMap.put("time", "N/A");
+ requestJson = this.gson.fromJson(body, JsonObject.class);
+ } catch (Exception e) {
+ JsonObject responseJson = new JsonObject();
+ responseJson.addProperty("result", e.getMessage());
+ responseJson.addProperty("processor", "N/A");
+ responseJson.addProperty("status", "ERR");
+ responseJson.addProperty("time", "N/A");
+
response.status(400);
- response.body(mapper.writeValueAsString(responseMap));
+ response.body(this.gson.toJson(responseJson));
return;
}
- String data = requestMap.get("data");
- String query = requestMap.get("process");
- String processor = requestMap.get("processor");
- String version = requestMap.get("version");
+ String data = requestJson.get("data").getAsString();
+ String query = requestJson.get("process").getAsString();
+ String processor = requestJson.get("processor").getAsString();
+ String version = requestJson.get("version").getAsString();
if (processor == null) {
response.body("saxon, xalan");
@@ -57,45 +55,61 @@ public class XsltController implements RestController {
String tmp;
long timeStart;
long duration;
+
+ JsonObject responseJson = new JsonObject();
switch (processor) {
case "saxon":
timeStart = System.currentTimeMillis();
try {
tmp = Saxon.processXSLT(data, query);
- responseMap.put("result", tmp);
- responseMap.put("status", "OK");
+
+ response.status(200);
+
+ responseJson.addProperty("result", tmp);
+ responseJson.addProperty("status", "OK");
} catch (Exception ex) {
this.logger.error("Error on processing XSLT using Saxon. " + ex);
- responseMap.put("result", ex.getMessage());
- responseMap.put("status", "ERR");
+
response.status(400);
+
+ responseJson.addProperty("result", ex.getMessage());
+ responseJson.addProperty("status", "ERR");
}
duration = System.currentTimeMillis() - timeStart;
this.logger.info("Request: " + body + " processed in " + duration + " ms.");
- responseMap.put("processor", "Saxon " + Saxon.getVersion() + " " + version);
- responseMap.put("time", Long.toString(duration));
- response.body(mapper.writeValueAsString(responseMap));
+
+ responseJson.addProperty("processor", "Saxon " + Saxon.getVersion() + " " + version);
+ responseJson.addProperty("time", duration);
+
+ response.body(this.gson.toJson(responseJson));
return;
case "xalan":
timeStart = System.currentTimeMillis();
try {
tmp = Xalan.processXSLT(data, query);
- responseMap.put("result", tmp);
- responseMap.put("status", "OK");
+
+ response.status(200);
+
+ responseJson.addProperty("result", tmp);
+ responseJson.addProperty("status", "OK");
} catch (Exception ex) {
this.logger.error("Error on processing XSLT using Xalan. " + ex);
- responseMap.put("result", ex.getMessage());
- responseMap.put("status", "ERR");
+
response.status(400);
+
+ responseJson.addProperty("result", ex.getMessage());
+ responseJson.addProperty("status", "ERR");
}
duration = System.currentTimeMillis() - timeStart;
this.logger.info("Request: " + body + " processed in " + duration + " ms.");
- responseMap.put("processor", Xalan.getVersion());
- responseMap.put("time", Long.toString(duration));
- response.body(mapper.writeValueAsString(responseMap));
+
+ responseJson.addProperty("processor", Xalan.getVersion());
+ responseJson.addProperty("time", duration);
+
+ response.body(this.gson.toJson(responseJson));
return;
default: