Merged XSLT controller
This commit is contained in:
		| @@ -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(); | ||||
|   | ||||
| @@ -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); | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user