From fc317b0f63d924cf8501dc4da3036b18c780f9d8 Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Fri, 7 Dec 2007 14:49:13 +0000 Subject: [PATCH] SWS-247 in 1.0 branch --- .../XsdBasedSoap11Wsdl4jDefinitionBuilder.java | 9 +++++---- ...BasedSoap11Wsdl4jDefinitionBuilderTest.java | 18 +++++++++++++++++- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/org/springframework/ws/wsdl/wsdl11/builder/XsdBasedSoap11Wsdl4jDefinitionBuilder.java b/core/src/main/java/org/springframework/ws/wsdl/wsdl11/builder/XsdBasedSoap11Wsdl4jDefinitionBuilder.java index 3ed2fe1d..0dc9e294 100644 --- a/core/src/main/java/org/springframework/ws/wsdl/wsdl11/builder/XsdBasedSoap11Wsdl4jDefinitionBuilder.java +++ b/core/src/main/java/org/springframework/ws/wsdl/wsdl11/builder/XsdBasedSoap11Wsdl4jDefinitionBuilder.java @@ -37,15 +37,16 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.xml.sax.SAXException; + import org.springframework.beans.factory.InitializingBean; import org.springframework.core.io.Resource; import org.springframework.util.Assert; import org.springframework.util.StringUtils; import org.springframework.ws.wsdl.wsdl11.DynamicWsdl11Definition; import org.springframework.xml.namespace.QNameUtils; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.xml.sax.SAXException; /** * Builds a WsdlDefinition with a SOAP 1.1 binding based on an XSD schema. This builder iterates over all @@ -281,7 +282,7 @@ public class XsdBasedSoap11Wsdl4jDefinitionBuilder extends AbstractSoap11Wsdl4jD QName elementName = (QName) iterator.next(); if (elementName != null && (isRequestMessage(elementName) || isResponseMessage(elementName) || isFaultMessage(elementName))) { - if (!StringUtils.hasLength(definition.getPrefix(elementName.getNamespaceURI()))) { + if (definition.getPrefix(elementName.getNamespaceURI()) == null) { int i = 0; while (true) { String prefix = schemaPrefix + Integer.toString(i); diff --git a/core/src/test/java/org/springframework/ws/wsdl/wsdl11/builder/XsdBasedSoap11Wsdl4jDefinitionBuilderTest.java b/core/src/test/java/org/springframework/ws/wsdl/wsdl11/builder/XsdBasedSoap11Wsdl4jDefinitionBuilderTest.java index 42841614..cc4a2a3c 100644 --- a/core/src/test/java/org/springframework/ws/wsdl/wsdl11/builder/XsdBasedSoap11Wsdl4jDefinitionBuilderTest.java +++ b/core/src/test/java/org/springframework/ws/wsdl/wsdl11/builder/XsdBasedSoap11Wsdl4jDefinitionBuilderTest.java @@ -24,9 +24,11 @@ import javax.xml.transform.dom.DOMResult; import org.custommonkey.xmlunit.XMLTestCase; import org.custommonkey.xmlunit.XMLUnit; +import org.w3c.dom.Document; + import org.springframework.core.io.ClassPathResource; import org.springframework.ws.wsdl.wsdl11.Wsdl11Definition; -import org.w3c.dom.Document; +import org.springframework.xml.transform.StringResult; public class XsdBasedSoap11Wsdl4jDefinitionBuilderTest extends XMLTestCase { @@ -144,6 +146,20 @@ public class XsdBasedSoap11Wsdl4jDefinitionBuilderTest extends XMLTestCase { assertXMLEqual("Invalid WSDL built", expected, result); } + public void testNoSchemaPrefix() throws Exception { + builder.setSchema(new ClassPathResource("single.xsd", getClass())); + builder.setPortTypeName("Order"); + builder.setTargetNamespace("http://www.springframework.org/spring-ws/single/definitions"); + builder.setSchemaPrefix(""); + builder.afterPropertiesSet(); + + buildAll(); + + Wsdl11Definition definition = builder.getDefinition(); + + transformer.transform(definition.getSource(), new StringResult()); + } + private void buildAll() { builder.buildDefinition(); builder.buildImports();