1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.ws.wsdl.wsdl11.builder;
18
19 import javax.xml.parsers.DocumentBuilder;
20 import javax.xml.parsers.DocumentBuilderFactory;
21 import javax.xml.transform.Transformer;
22 import javax.xml.transform.TransformerFactory;
23 import javax.xml.transform.dom.DOMResult;
24
25 import org.custommonkey.xmlunit.XMLTestCase;
26 import org.custommonkey.xmlunit.XMLUnit;
27 import org.w3c.dom.Document;
28
29 import org.springframework.core.io.ClassPathResource;
30 import org.springframework.ws.wsdl.wsdl11.Wsdl11Definition;
31 import org.springframework.xml.transform.StringResult;
32
33 public class XsdBasedSoap11Wsdl4jDefinitionBuilderTest extends XMLTestCase {
34
35 private XsdBasedSoap11Wsdl4jDefinitionBuilder builder;
36
37 private Transformer transformer;
38
39 private DocumentBuilder documentBuilder;
40
41 protected void setUp() throws Exception {
42 builder = new XsdBasedSoap11Wsdl4jDefinitionBuilder();
43 builder.setLocationUri("http://localhost:8080/");
44 TransformerFactory transformerFactory = TransformerFactory.newInstance();
45 transformer = transformerFactory.newTransformer();
46 DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
47 documentBuilderFactory.setNamespaceAware(true);
48 documentBuilder = documentBuilderFactory.newDocumentBuilder();
49 XMLUnit.setIgnoreWhitespace(true);
50 }
51
52 public void testNonExistingSchema() throws Exception {
53 try {
54 builder.setSchema(new ClassPathResource("bla"));
55 fail("IllegalArgumentException expected");
56 }
57 catch (IllegalArgumentException ex) {
58
59 }
60 }
61
62 public void testSingle() throws Exception {
63 builder.setSchema(new ClassPathResource("single.xsd", getClass()));
64 builder.setPortTypeName("Order");
65 builder.setTargetNamespace("http://www.springframework.org/spring-ws/single/definitions");
66 builder.afterPropertiesSet();
67
68 buildAll();
69
70 Wsdl11Definition definition = builder.getDefinition();
71 DOMResult domResult = new DOMResult();
72 transformer.transform(definition.getSource(), domResult);
73
74 Document result = (Document) domResult.getNode();
75 Document expected = documentBuilder.parse(getClass().getResourceAsStream("single-inline.wsdl"));
76 assertXMLEqual("Invalid WSDL built", expected, result);
77 }
78
79 public void testSingleImport() throws Exception {
80 builder.setSchema(new ClassPathResource("single.xsd", getClass()));
81 builder.setSchemaLocation("single.xsd");
82 builder.setPortTypeName("Order");
83 builder.setTargetNamespace("http://www.springframework.org/spring-ws/single/definitions");
84 builder.afterPropertiesSet();
85
86 buildAll();
87
88 Wsdl11Definition definition = builder.getDefinition();
89 DOMResult domResult = new DOMResult();
90 transformer.transform(definition.getSource(), domResult);
91
92 Document result = (Document) domResult.getNode();
93 Document expected = documentBuilder.parse(getClass().getResourceAsStream("single-import.wsdl"));
94 assertXMLEqual("Invalid WSDL built", expected, result);
95 }
96
97 public void testFollowIncluding() throws Exception {
98 builder.setSchema(new ClassPathResource("including.xsd", getClass()));
99 builder.setPortTypeName("Order");
100 builder.setTargetNamespace("http://www.springframework.org/spring-ws/include/definitions");
101 builder.setFollowIncludeImport(true);
102 builder.afterPropertiesSet();
103
104 buildAll();
105
106 Wsdl11Definition definition = builder.getDefinition();
107 DOMResult domResult = new DOMResult();
108 transformer.transform(definition.getSource(), domResult);
109
110 Document result = (Document) domResult.getNode();
111 Document expected = documentBuilder.parse(getClass().getResourceAsStream("include-inline.wsdl"));
112 assertXMLEqual("Invalid WSDL built", expected, result);
113 }
114
115 public void testFollowImport() throws Exception {
116 builder.setSchema(new ClassPathResource("importing.xsd", getClass()));
117 builder.setPortTypeName("Order");
118 builder.setTargetNamespace("http://www.springframework.org/spring-ws/import/definitions");
119 builder.setFollowIncludeImport(true);
120 builder.afterPropertiesSet();
121
122 buildAll();
123
124 Wsdl11Definition definition = builder.getDefinition();
125 DOMResult domResult = new DOMResult();
126 transformer.transform(definition.getSource(), domResult);
127
128 Document result = (Document) domResult.getNode();
129 Document expected = documentBuilder.parse(getClass().getResourceAsStream("import-inline.wsdl"));
130 assertXMLEqual("Invalid WSDL built", expected, result);
131 }
132
133 public void testAirline() throws Exception {
134 builder.setSchema(new ClassPathResource("airline.xsd", getClass()));
135 builder.setPortTypeName("Airline");
136 builder.setTargetNamespace("http://www.springframework.org/spring-ws/samples/airline/definitions");
137 builder.afterPropertiesSet();
138 buildAll();
139 Wsdl11Definition definition = builder.getDefinition();
140 DOMResult domResult = new DOMResult();
141 transformer.transform(definition.getSource(), domResult);
142
143 Document result = (Document) domResult.getNode();
144 Document expected = documentBuilder.parse(getClass().getResourceAsStream("airline.wsdl"));
145 XMLUnit.setIgnoreWhitespace(true);
146 assertXMLEqual("Invalid WSDL built", expected, result);
147 }
148
149 public void testNoSchemaPrefix() throws Exception {
150 builder.setSchema(new ClassPathResource("single.xsd", getClass()));
151 builder.setPortTypeName("Order");
152 builder.setTargetNamespace("http://www.springframework.org/spring-ws/single/definitions");
153 builder.setSchemaPrefix("");
154 builder.afterPropertiesSet();
155
156 buildAll();
157
158 Wsdl11Definition definition = builder.getDefinition();
159
160 transformer.transform(definition.getSource(), new StringResult());
161 }
162
163 private void buildAll() {
164 builder.buildDefinition();
165 builder.buildImports();
166 builder.buildTypes();
167 builder.buildMessages();
168 builder.buildPortTypes();
169 builder.buildBindings();
170 builder.buildServices();
171 }
172
173
174 }