-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathHelloController.java
80 lines (66 loc) · 2.75 KB
/
HelloController.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package com.example.springboot;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import java.io.FileInputStream;
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Source;
import javax.xml.transform.Templates;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMethod;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@RestController
public class HelloController {
Transformer transformer;
DocumentBuilder builder;
private void setTransformer(Source xslInput)
throws TransformerConfigurationException
{
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Templates precompiledTemplates = transformerFactory.newTemplates(xslInput);
transformer = precompiledTemplates.newTransformer();
transformer.reset();
}
HelloController() throws ParserConfigurationException, SAXException {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
builder = documentBuilderFactory.newDocumentBuilder();
try {
setTransformer(new StreamSource(new FileInputStream("default.xsl")));
} catch (Exception e) {
e.printStackTrace();
}
}
@RequestMapping(value = "/setTransformRules", method = RequestMethod.POST, consumes = "text/plain")
public String setRules(@RequestBody String postPayload) {
try {
setTransformer(new StreamSource(new StringReader(postPayload)));
return "Suceess";
} catch (Exception e) {
e.printStackTrace();
}
return "Fail";
}
@RequestMapping(value = "/transform", method = RequestMethod.POST, consumes = "text/plain")
public String transform(@RequestBody String postPayload) {
try {
InputSource xmlInput = new InputSource(new StringReader(postPayload));
Source source = new DOMSource(builder.parse(xmlInput));
StringWriter writer = new StringWriter();
transformer.transform(source, new StreamResult(writer));
return writer.toString();
} catch (Exception e) {
e.printStackTrace();
}
return "Fail";
}
}