From 0cfe4436beb8183cf7641ec1d83f6c502797c16f Mon Sep 17 00:00:00 2001 From: Adam Bem Date: Thu, 26 Oct 2023 09:24:09 +0200 Subject: [PATCH] Merged XSD controller --- .../r11/tools/controller/XmlController.java | 68 ++++++++++++++++--- 1 file changed, 59 insertions(+), 9 deletions(-) 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 3ce2ade..69b5a0f 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 @@ -33,16 +33,7 @@ public class XmlController implements RestController { this.xalan = xalan; } - private XMLResponseBody prepareErrorResponse(String message, String processor) { - return new XMLResponseBody(message, "ERR", processor, -1); - } - private void nonValidEngineSelectedResponse(Response response) { - XMLResponseBody responseBody = - prepareErrorResponse("Valid engines are: saxon, xalan", "N/A"); - response.body(this.gson.toJson(responseBody)); - response.status(400); - } @ScopedControllerManifest(method = HandlerType.POST, path = "/xpath") public void acceptRequestXPath(Request request, Response response) { @@ -142,7 +133,66 @@ public class XmlController implements RestController { finally { response.body(this.gson.toJson(responseBody)); } + } + + @ScopedControllerManifest(method = HandlerType.POST, path = "/xsd") + public void acceptRequestXsd(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; + } + if (requestBody.getProcessor().equalsIgnoreCase("xalan")) + processXsd(response, requestBody, xalan); + else + nonValidEngineSelectedResponse(response); } + private void processXsd(Response response, XMLRequestBody requestBody, XmlEngine engine) { + XMLResponseBody responseBody = null; + try { + long timeStart = System.currentTimeMillis(); + String result = engine.validate(requestBody.getData(), requestBody.getProcess()).trim(); + + response.status(200); + + long duration = System.currentTimeMillis() - timeStart; + responseBody = new XMLResponseBody(result, "OK", engine.getVersion(), duration); + + this.logger.info("Request (XSD, " + engine.getVersion() + ") processed in " + duration + " ms."); + } catch (Exception ex) { + responseBody = prepareErrorResponse(ex.getMessage(), engine.getVersion()); + response.status(400); + + this.logger.error("Error on validation against XSD 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); + } + + private void nonValidEngineSelectedResponse(Response response) { + XMLResponseBody responseBody = + prepareErrorResponse("Valid engines are: saxon, xalan", "N/A"); + response.body(this.gson.toJson(responseBody)); + response.status(400); + } + }