From 5e4d8b51f342bd565aa9c2fb26c7a1d53d55aaf4 Mon Sep 17 00:00:00 2001 From: Adam Bem Date: Thu, 26 Oct 2023 09:31:06 +0200 Subject: [PATCH] Merged XSLT controller --- .../java/com/r11/tools/SparkApplication.java | 5 +- .../r11/tools/controller/XmlController.java | 54 +++++++++++++++++++ 2 files changed, 57 insertions(+), 2 deletions(-) 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 d17b867..35b38ae 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 @@ -40,11 +40,12 @@ public class SparkApplication { RestControllerRegistry registry = new RestControllerRegistry(); registry.registerController(new ProcessorInfoController(logger, saxon, xalan)); - registry.registerController(new XsdController(gson, logger, xalan)); + registry.registerController(new XmlController(gson, logger, saxon, xalan)); - registry.registerController(new XsltController(gson, logger, saxon, xalan)); registry.registerController(new JsonController(gson, jsongson, logger)); + //registry.registerController(new XsltController(gson, logger, saxon, xalan)); + //registry.registerController(new XsdController(gson, logger, xalan)); //registry.registerController(new XQueryController(gson, logger, saxon)); //registry.registerController(new XPathController(gson, logger, saxon, xalan)); registry.register(); diff --git a/Backend/tools-services/src/main/java/com/r11/tools/controller/XmlController.java b/Backend/tools-services/src/main/java/com/r11/tools/controller/XmlController.java index 69b5a0f..28503cb 100644 --- a/Backend/tools-services/src/main/java/com/r11/tools/controller/XmlController.java +++ b/Backend/tools-services/src/main/java/com/r11/tools/controller/XmlController.java @@ -184,6 +184,60 @@ public class XmlController implements RestController { } + @ScopedControllerManifest(method = HandlerType.POST, path = "/xslt") + public void acceptRequestXslt(Request request, Response response) { + XMLRequestBody requestBody; + try { + requestBody = this.gson.fromJson(request.body(), XMLRequestBody.class); + } catch (Exception e) { + XMLResponseBody responseBody = prepareErrorResponse(e.getMessage(), "N/A"); + + response.status(400); + response.body(this.gson.toJson(responseBody)); + return; + } + + if (requestBody.getProcessor() == null) { + nonValidEngineSelectedResponse(response); + return; + } + + switch (requestBody.getProcessor()) { + case "saxon": + processXslt(response, requestBody, saxon); + return; + + case "xalan": + processXslt(response, requestBody, xalan); + return; + + default: + nonValidEngineSelectedResponse(response); + } + } + + private void processXslt(Response response, XMLRequestBody requestBody, XmlEngine engine) { + XMLResponseBody responseBody = null; + long timeStart = System.currentTimeMillis(); + try { + String result = engine.processXSLT(requestBody.getData(), requestBody.getProcess()); + response.status(200); + + long duration = System.currentTimeMillis() - timeStart; + responseBody = new XMLResponseBody(result, "OK", engine.getVersion(), duration); + + this.logger.info("Request (XSLT, " + engine.getVersion() + ") processed in " + duration + " ms."); + } catch (Exception ex) { + responseBody = prepareErrorResponse(ex.getMessage(), engine.getVersion()); + response.status(400); + this.logger.error("Error on processing XSLT using " + engine.getVersion() + ". " + ex); + + } finally { + response.body(this.gson.toJson(responseBody)); + } + + } + private XMLResponseBody prepareErrorResponse(String message, String processor) { return new XMLResponseBody(message, "ERR", processor, -1); }