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
77 assertXMLEqual("Invalid WSDL built", expected, result);
78 }
79
80 public void testSingleImport() throws Exception {
81 builder.setSchema(new ClassPathResource("single.xsd", getClass()));
82 builder.setSchemaLocation("single.xsd");
83 builder.setPortTypeName("Order");
84 builder.setTargetNamespace("http://www.springframework.org/spring-ws/single/definitions");
85 builder.afterPropertiesSet();
86
87 buildAll();
88
89 Wsdl11Definition definition = builder.getDefinition();
90 DOMResult domResult = new DOMResult();
91 transformer.transform(definition.getSource(), domResult);
92
93 Document result = (Document) domResult.getNode();
94 Document expected = documentBuilder.parse(getClass().getResourceAsStream("single-import.wsdl"));
95 assertXMLEqual("Invalid WSDL built", expected, result);
96 }
97
98 public void testFollowIncluding() throws Exception {
99 builder.setSchema(new ClassPathResource("including.xsd", getClass()));
100 builder.setPortTypeName("Order");
101 builder.setTargetNamespace("http://www.springframework.org/spring-ws/include/definitions");
102 builder.setFollowIncludeImport(true);
103 builder.afterPropertiesSet();
104
105 buildAll();
106
107 Wsdl11Definition definition = builder.getDefinition();
108 DOMResult domResult = new DOMResult();
109 transformer.transform(definition.getSource(), domResult);
110
111 Document result = (Document) domResult.getNode();
112 Document expected = documentBuilder.parse(getClass().getResourceAsStream("include-inline.wsdl"));
113 assertXMLEqual("Invalid WSDL built", expected, result);
114 }
115
116 public void testFollowImport() throws Exception {
117 builder.setSchema(new ClassPathResource("importing.xsd", getClass()));
118 builder.setPortTypeName("Order");
119 builder.setTargetNamespace("http://www.springframework.org/spring-ws/import/definitions");
120 builder.setFollowIncludeImport(true);
121 builder.afterPropertiesSet();
122
123 buildAll();
124
125 Wsdl11Definition definition = builder.getDefinition();
126 DOMResult domResult = new DOMResult();
127 transformer.transform(definition.getSource(), domResult);
128
129 Document result = (Document) domResult.getNode();
130 Document expected = documentBuilder.parse(getClass().getResourceAsStream("import-inline.wsdl"));
131 assertXMLEqual("Invalid WSDL built", expected, result);
132 }
133
134 public void testAirline() throws Exception {
135 builder.setSchema(new ClassPathResource("airline.xsd", getClass()));
136 builder.setPortTypeName("Airline");
137 builder.setTargetNamespace("http://www.springframework.org/spring-ws/samples/airline/definitions");
138 builder.afterPropertiesSet();
139 buildAll();
140 Wsdl11Definition definition = builder.getDefinition();
141 DOMResult domResult = new DOMResult();
142 transformer.transform(definition.getSource(), domResult);
143
144 Document result = (Document) domResult.getNode();
145 Document expected = documentBuilder.parse(getClass().getResourceAsStream("airline-soap11.wsdl"));
146 XMLUnit.setIgnoreWhitespace(true);
147 assertXMLEqual("Invalid WSDL built", expected, result);
148 }
149
150 public void testNoSchemaPrefix() throws Exception {
151 builder.setSchema(new ClassPathResource("single.xsd", getClass()));
152 builder.setPortTypeName("Order");
153 builder.setTargetNamespace("http://www.springframework.org/spring-ws/single/definitions");
154 builder.setSchemaPrefix("");
155 builder.afterPropertiesSet();
156
157 buildAll();
158
159 Wsdl11Definition definition = builder.getDefinition();
160
161 transformer.transform(definition.getSource(), new StringResult());
162 }
163
164 private void buildAll() {
165 builder.buildDefinition();
166 builder.buildImports();
167 builder.buildTypes();
168 builder.buildMessages();
169 builder.buildPortTypes();
170 builder.buildBindings();
171 builder.buildServices();
172 }
173
174
175 }