Added basic formatting feature
This commit is contained in:
		| @@ -44,6 +44,7 @@ public class SparkApplication { | ||||
|         registry.registerController(new XmlController(gson, logger, saxon, xalan)); | ||||
|         registry.registerController(new MultipleXMLController(gson,logger, saxon)); | ||||
|         registry.registerController(new JsonController(gson, jsongson, logger)); | ||||
|         registry.registerController(new XmlFormatterController(gson)); | ||||
|  | ||||
|         registry.register(); | ||||
|  | ||||
|   | ||||
| @@ -0,0 +1,47 @@ | ||||
| package com.r11.tools.controller; | ||||
|  | ||||
| import com.google.gson.Gson; | ||||
| 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.controller.internal.XmlJobType; | ||||
| import com.r11.tools.model.XMLRequestBody; | ||||
| import com.r11.tools.model.XMLResponseBody; | ||||
| import com.r11.tools.xml.XmlFormatter; | ||||
| import spark.Request; | ||||
| import spark.Response; | ||||
|  | ||||
| @GlobalControllerManifest | ||||
| public class XmlFormatterController implements RestController { | ||||
|     private final Gson gson; | ||||
|  | ||||
|     public XmlFormatterController(Gson gson) { | ||||
|         this.gson = gson; | ||||
|     } | ||||
|  | ||||
|  | ||||
|     @ScopedControllerManifest(method = HandlerType.POST, path = "/prettify") | ||||
|     public void acceptRequestXslt(Request request, Response response) { | ||||
|         System.out.println("kurwa piwo"); | ||||
|         acceptRequest(request, response); | ||||
|     } | ||||
|     private void acceptRequest(Request request, Response response){ | ||||
|         long timeStart = System.currentTimeMillis(); | ||||
|         long duration; | ||||
|  | ||||
|         XmlFormatter formatter = new XmlFormatter(); | ||||
|         XMLRequestBody requestBody; | ||||
|         try { | ||||
|             requestBody = this.gson.fromJson(request.body(), XMLRequestBody.class); | ||||
|         } catch (Exception e) { | ||||
|             //requestErrorResponse(response, e); | ||||
|             return; | ||||
|         } | ||||
|         String responseString = formatter.formatXML(requestBody.getData()); | ||||
|         duration = System.currentTimeMillis() - timeStart; | ||||
|         XMLResponseBody responseBody = new  XMLResponseBody(responseString,"OK",duration); | ||||
|         response.body(this.gson.toJson(responseBody)); | ||||
|  | ||||
|     } | ||||
| } | ||||
| @@ -4,6 +4,7 @@ import com.google.gson.annotations.SerializedName; | ||||
|  | ||||
| /** | ||||
|  * POJO class used to contain body of XML related requests | ||||
|  * | ||||
|  * @author Adam Bem | ||||
|  */ | ||||
| public class XMLRequestBody { | ||||
| @@ -15,6 +16,8 @@ public class XMLRequestBody { | ||||
|     private String processor; | ||||
|     @SerializedName("version") | ||||
|     private String version; | ||||
|     @SerializedName("pretify") | ||||
|     private String pretif; | ||||
|  | ||||
|     public String getData() { | ||||
|         return data; | ||||
| @@ -31,4 +34,8 @@ public class XMLRequestBody { | ||||
|     public String getVersion() { | ||||
|         return version; | ||||
|     } | ||||
|  | ||||
|     public String getPretif() { | ||||
|         return pretif; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -2,6 +2,7 @@ package com.r11.tools.model; | ||||
|  | ||||
| public class XMLResponseBody { | ||||
|  | ||||
|  | ||||
|     private String result; | ||||
|     private String status; | ||||
|     private String processor; | ||||
| @@ -10,6 +11,11 @@ public class XMLResponseBody { | ||||
|     // Optional | ||||
|     private String type; | ||||
|  | ||||
|     public XMLResponseBody(String result, String status, long duration) { | ||||
|         this.result = result; | ||||
|         this.status = status; | ||||
|         this.duration = duration; | ||||
|     } | ||||
|     public XMLResponseBody(String result, String status, String processor) { | ||||
|         this.result = result; | ||||
|         this.status = status; | ||||
|   | ||||
| @@ -0,0 +1,37 @@ | ||||
| package com.r11.tools.xml; | ||||
|  | ||||
| import org.w3c.dom.Document; | ||||
| import org.xml.sax.InputSource; | ||||
|  | ||||
| import javax.xml.parsers.DocumentBuilder; | ||||
| import javax.xml.parsers.DocumentBuilderFactory; | ||||
| import javax.xml.transform.OutputKeys; | ||||
| import javax.xml.transform.Transformer; | ||||
| import javax.xml.transform.TransformerFactory; | ||||
| import javax.xml.transform.dom.DOMSource; | ||||
| import javax.xml.transform.stream.StreamResult; | ||||
| import java.io.StringReader; | ||||
| import java.io.StringWriter; | ||||
|  | ||||
| public class XmlFormatter { | ||||
|     public String formatXML(String inputXML) { | ||||
|         try { | ||||
|             DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); | ||||
|             factory.setNamespaceAware(true); | ||||
|             DocumentBuilder builder = factory.newDocumentBuilder(); | ||||
|             Document document = builder.parse(new InputSource(new StringReader(inputXML))); | ||||
|  | ||||
|             TransformerFactory transformerFactory = TransformerFactory.newInstance(); | ||||
|             Transformer transformer = transformerFactory.newTransformer(); | ||||
|             transformer.setOutputProperty(OutputKeys.INDENT, "yes"); | ||||
|             transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); | ||||
|  | ||||
|             StringWriter writer = new StringWriter(); | ||||
|             transformer.transform(new DOMSource(document), new StreamResult(writer)); | ||||
|             return writer.toString(); | ||||
|         } catch (Exception e) { | ||||
|             e.printStackTrace(); | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user