Added basic adding param functionality
This commit is contained in:
		| @@ -10,6 +10,8 @@ import org.apache.logging.log4j.Logger; | ||||
| import spark.Request; | ||||
| import spark.Response; | ||||
|  | ||||
| import java.io.StringWriter; | ||||
|  | ||||
| /** | ||||
|  * Controller used to handle XML tools: XPath, XSD validation, XQuery and XSLT | ||||
|  * @author Adam Bem | ||||
| @@ -48,9 +50,14 @@ public class XmlController implements RestController { | ||||
|  | ||||
|     @ScopedControllerManifest(method = HandlerType.POST, path = "/xslt") | ||||
|     public void acceptRequestXslt(Request request, Response response) { | ||||
|         System.out.println("received xslt"); | ||||
|         acceptRequest(request, response, XmlJobType.XSLT); | ||||
|     } | ||||
|  | ||||
|     @ScopedControllerManifest(method = HandlerType.POST, path = "/xslt/param") | ||||
|     public void acceptRequestXsltAddParam(Request request, Response response) { | ||||
|         System.out.println("received param"); | ||||
|         acceptRequest(request, response, XmlJobType.XSLT_PARAM); | ||||
|     } | ||||
|     private void acceptRequest(Request request, Response response, XmlJobType xmlJobType) { | ||||
|         XMLRequestBody requestBody; | ||||
|         try { | ||||
| @@ -60,7 +67,12 @@ public class XmlController implements RestController { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         if (requestBody.getProcessor() == null) { | ||||
|         if (requestBody.getProcessor() == null ) { | ||||
|             if(requestBody.getProcessorData() != null){ | ||||
|                 processRequest(new XmlJob(response, requestBody, xmlJobType)); | ||||
|                 return; | ||||
|             } | ||||
|             System.out.println("getProcessor=null"); | ||||
|             invalidEngineSelectedResponse(response); | ||||
|             return; | ||||
|         } | ||||
| @@ -91,10 +103,9 @@ public class XmlController implements RestController { | ||||
|             responseBody.setDuration(duration); | ||||
|  | ||||
|             xmlJob.getResponse().status(200); | ||||
|  | ||||
|             this.logger.info("Request (" + xmlJob.getXmlJobType() + ", " + | ||||
|            /* this.logger.info("Request (" + xmlJob.getXmlJobType() + ", " + | ||||
|                     xmlJob.getEngine().getVersion() + | ||||
|                     ") processed in " + duration + " ms."); | ||||
|                     ") processed in " + duration + " ms.");*/ | ||||
|  | ||||
|         } catch (Exception ex) { | ||||
|             responseBody = processingErrorResponse(ex, xmlJob); | ||||
| @@ -129,6 +140,13 @@ public class XmlController implements RestController { | ||||
|  | ||||
|         String result = null; | ||||
|         switch (xmlJob.getXmlJobType()) { | ||||
|             case XSLT_PARAM: | ||||
|                 System.out.println("xstl_param"); | ||||
|                 System.out.println(requestBody.getProcessorData()); | ||||
|                 System.out.println(requestBody.getParamName()); | ||||
|                 System.out.println(requestBody.getParamValue()); | ||||
|                 result = addParam(requestBody.getProcessorData(), requestBody.getParamName(), requestBody.getParamValue()); | ||||
|                 break; | ||||
|             case XSLT: | ||||
|                 result = engine.processXSLT(requestBody.getData(), requestBody.getProcessorData()); | ||||
|                 break; | ||||
| @@ -141,7 +159,16 @@ public class XmlController implements RestController { | ||||
|                         requestBody.getVersion()); | ||||
|                 break; | ||||
|         } | ||||
|         return new XMLResponseBody(result, "OK", requestBody.getVersion()); | ||||
|         System.out.println("can we get here?"); | ||||
|         return new XMLResponseBody(result, "OK", requestBody.getProcessorData()); | ||||
|     } | ||||
|  | ||||
|     private String addParam(String processorData, String paramName, String paramValue) { | ||||
|         System.out.println("addParamSaxon"); | ||||
|         processorData= processorData.replace("<xsl:template match=\"/\">", "<xsl:param name=\""+paramName+"\" select=\"'"+paramValue+"'\"/>\n\t\t<xsl:template match=\"/\">"); | ||||
|         StringWriter sw = new StringWriter(); | ||||
|         sw.write(processorData); | ||||
|         return sw.toString(); | ||||
|     } | ||||
|  | ||||
|     private XMLResponseBody processingErrorResponse(Exception ex, XmlJob xmlJob) { | ||||
|   | ||||
| @@ -7,7 +7,7 @@ import spark.Response; | ||||
| public class XmlJob { | ||||
|     private final Response response; | ||||
|     private final XMLRequestBody requestBody; | ||||
|     private final XmlEngine engine; | ||||
|     private XmlEngine engine; | ||||
|     private final XmlJobType xmlJobType; | ||||
|  | ||||
|     public XmlJob(Response response, XMLRequestBody requestBody, XmlEngine engine, XmlJobType xmlJobType) { | ||||
| @@ -16,7 +16,11 @@ public class XmlJob { | ||||
|         this.engine = engine; | ||||
|         this.xmlJobType = xmlJobType; | ||||
|     } | ||||
|  | ||||
|     public XmlJob(Response response, XMLRequestBody requestBody, XmlJobType xmlJobType) { | ||||
|         this.response = response; | ||||
|         this.requestBody = requestBody; | ||||
|         this.xmlJobType = xmlJobType; | ||||
|     } | ||||
|     public Response getResponse() { | ||||
|         return response; | ||||
|     } | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| package com.r11.tools.controller.internal; | ||||
|  | ||||
| public enum XmlJobType { | ||||
|     XPath("XPath"), XSD("XSD"), XQuery("XQuery"), XSLT("XSLT"); | ||||
|     XPath("XPath"), XSD("XSD"), XQuery("XQuery"), XSLT("XSLT"), XSLT_PARAM("XSLT_PARAM"); | ||||
|  | ||||
|     XmlJobType(String type) { | ||||
|     } | ||||
|   | ||||
| @@ -15,19 +15,20 @@ public class XMLRequestBody { | ||||
|     private String processor; | ||||
|     @SerializedName("version") | ||||
|     private String version; | ||||
|     @SerializedName("paramName") | ||||
|     private String paramName; | ||||
|     @SerializedName("paramValue") | ||||
|     private String paramValue; | ||||
|  | ||||
|     public String getData() { | ||||
|         return data; | ||||
|     } | ||||
|  | ||||
|     public String getProcessorData() { | ||||
|         return processorData; | ||||
|     } | ||||
|  | ||||
|     public String getProcessorData() {return processorData;} | ||||
|     public String getParamName() {return paramName;} | ||||
|     public String getParamValue() {return paramValue;} | ||||
|     public String getProcessor() { | ||||
|         return processor; | ||||
|     } | ||||
|  | ||||
|     public String getVersion() { | ||||
|         return version; | ||||
|     } | ||||
|   | ||||
| @@ -9,9 +9,7 @@ public interface XmlEngine { | ||||
|     XPathQueryResult processXPath(String data, String query, String version) throws Exception; | ||||
|     String processXSLT(String data, String transform) throws Exception; | ||||
|     String validate(String data, String xsd) throws Exception; | ||||
|  | ||||
|     String executeXQuery(String data, String xquery, String version) throws Exception; | ||||
|  | ||||
|     public String getVersion(); | ||||
|  | ||||
|     String addParam(String processorData, String paramName, String paramValue) throws Exception; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user