1   /*
2    * Copyright ${YEAR} the original author or authors.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package org.springframework.ws.wsdl.wsdl11;
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.core.io.Resource;
31  import org.springframework.xml.xsd.SimpleXsdSchema;
32  import org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection;
33  
34  public class DefaultWsdl11DefinitionTest extends XMLTestCase {
35  
36      private DefaultWsdl11Definition definition;
37  
38      private Transformer transformer;
39  
40      private DocumentBuilder documentBuilder;
41  
42      protected void setUp() throws Exception {
43          definition = new DefaultWsdl11Definition();
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 testSingle() throws Exception {
53          Resource resource = new ClassPathResource("single.xsd", getClass());
54          SimpleXsdSchema schema = new SimpleXsdSchema(resource);
55          schema.afterPropertiesSet();
56          definition.setSchema(schema);
57  
58          definition.setTargetNamespace("http://www.springframework.org/spring-ws/single/definitions");
59          definition.setPortTypeName("Order");
60          definition.setLocationUri("http://localhost:8080/");
61  
62          definition.afterPropertiesSet();
63  
64          DOMResult domResult = new DOMResult();
65          transformer.transform(definition.getSource(), domResult);
66  
67          Document result = (Document) domResult.getNode();
68          Document expected = documentBuilder.parse(getClass().getResourceAsStream("single-inline.wsdl"));
69  
70          assertXMLEqual("Invalid WSDL built", expected, result);
71  
72      }
73  
74      public void testInclude() throws Exception {
75          ClassPathResource resource = new ClassPathResource("including.xsd", getClass());
76          CommonsXsdSchemaCollection schemaCollection = new CommonsXsdSchemaCollection(new Resource[]{resource});
77          schemaCollection.setInline(true);
78          schemaCollection.afterPropertiesSet();
79          definition.setSchemaCollection(schemaCollection);
80  
81          definition.setPortTypeName("Order");
82          definition.setTargetNamespace("http://www.springframework.org/spring-ws/include/definitions");
83          definition.setLocationUri("http://localhost:8080/");
84          definition.afterPropertiesSet();
85  
86          DOMResult domResult = new DOMResult();
87          transformer.transform(definition.getSource(), domResult);
88  
89          Document result = (Document) domResult.getNode();
90          Document expected = documentBuilder.parse(getClass().getResourceAsStream("include-inline.wsdl"));
91          assertXMLEqual("Invalid WSDL built", expected, result);
92      }
93  
94      public void testImport() throws Exception {
95          ClassPathResource resource = new ClassPathResource("importing.xsd", getClass());
96          CommonsXsdSchemaCollection schemaCollection = new CommonsXsdSchemaCollection(new Resource[]{resource});
97          schemaCollection.setInline(true);
98          schemaCollection.afterPropertiesSet();
99          definition.setSchemaCollection(schemaCollection);
100 
101         definition.setPortTypeName("Order");
102         definition.setTargetNamespace("http://www.springframework.org/spring-ws/import/definitions");
103         definition.setLocationUri("http://localhost:8080/");
104         definition.afterPropertiesSet();
105 
106         DOMResult domResult = new DOMResult();
107         transformer.transform(definition.getSource(), domResult);
108 
109         Document result = (Document) domResult.getNode();
110         Document expected = documentBuilder.parse(getClass().getResourceAsStream("import-inline.wsdl"));
111         assertXMLEqual("Invalid WSDL built", expected, result);
112     }
113 
114     public void testSoap11And12() throws Exception {
115         Resource resource = new ClassPathResource("single.xsd", getClass());
116         SimpleXsdSchema schema = new SimpleXsdSchema(resource);
117         schema.afterPropertiesSet();
118         definition.setSchema(schema);
119 
120         definition.setTargetNamespace("http://www.springframework.org/spring-ws/single/definitions");
121         definition.setPortTypeName("Order");
122         definition.setLocationUri("http://localhost:8080/");
123         definition.setCreateSoap11Binding(true);
124         definition.setCreateSoap12Binding(true);
125 
126         definition.afterPropertiesSet();
127 
128         DOMResult domResult = new DOMResult();
129         transformer.transform(definition.getSource(), domResult);
130 
131         Document result = (Document) domResult.getNode();
132         Document expected = documentBuilder.parse(getClass().getResourceAsStream("soap-11-12.wsdl"));
133 
134         assertXMLEqual("Invalid WSDL built", expected, result);
135 
136     }
137 
138 
139 }