Alessio, Two thoughts:
1) There is a java.xml.stream.util.StreamReaderDelegate class available from StAX apis, is there really a need for another delegate in CXF? 2) Would it make sense to change the SysPropExpandingStreamReader to a more generic “PropertiesExpandingStreamReader” that takes a Properties object as a constructor param (or better yet, a Map<String, Object> or similar). That way someone could possibly configure it with some properties object specified in spring or similar. Dan On Jul 9, 2014, at 6:08 PM, [email protected] wrote: > Repository: cxf > Updated Branches: > refs/heads/master 2c9464299 -> e0b7f3556 > > > [CXF-5866] Adding XMLStreamReaderWrapper to WSDLManagerImpl and providing a > XMLStreamReader wrapper that resolves system properties > > > Project: http://git-wip-us.apache.org/repos/asf/cxf/repo > Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/e0b7f355 > Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/e0b7f355 > Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/e0b7f355 > > Branch: refs/heads/master > Commit: e0b7f35566bdcb2f364f85caa70c4b100433ed8a > Parents: 2c94642 > Author: Alessio Soldano <[email protected]> > Authored: Thu Jul 10 00:04:09 2014 +0200 > Committer: Alessio Soldano <[email protected]> > Committed: Thu Jul 10 00:08:08 2014 +0200 > > ---------------------------------------------------------------------- > .../staxutils/DelegatingXMLStreamReader.java | 264 +++++++++++++++++++ > .../staxutils/SysPropExpandingStreamReader.java | 90 +++++++ > .../cxf/staxutils/XMLStreamReaderWrapper.java | 30 +++ > .../SysPropExpandingStreamReaderTest.java | 63 +++++ > .../apache/cxf/staxutils/resources/sysprops.xml | 23 ++ > .../org/apache/cxf/wsdl11/WSDLManagerImpl.java | 26 +- > .../apache/cxf/wsdl11/WSDLManagerImplTest.java | 28 ++ > .../org/apache/cxf/wsdl11/hello_world_wrap.wsdl | 161 +++++++++++ > 8 files changed, 680 insertions(+), 5 deletions(-) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/cxf/blob/e0b7f355/core/src/main/java/org/apache/cxf/staxutils/DelegatingXMLStreamReader.java > ---------------------------------------------------------------------- > diff --git > a/core/src/main/java/org/apache/cxf/staxutils/DelegatingXMLStreamReader.java > b/core/src/main/java/org/apache/cxf/staxutils/DelegatingXMLStreamReader.java > new file mode 100644 > index 0000000..56564a7 > --- /dev/null > +++ > b/core/src/main/java/org/apache/cxf/staxutils/DelegatingXMLStreamReader.java > @@ -0,0 +1,264 @@ > +/** > + * Licensed to the Apache Software Foundation (ASF) under one > + * or more contributor license agreements. See the NOTICE file > + * distributed with this work for additional information > + * regarding copyright ownership. The ASF licenses this file > + * to you under the Apache License, Version 2.0 (the > + * "License"); you may not use this file except in compliance > + * with the License. You may obtain a copy of the License at > + * > + * http://www.apache.org/licenses/LICENSE-2.0 > + * > + * Unless required by applicable law or agreed to in writing, > + * software distributed under the License is distributed on an > + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > + * KIND, either express or implied. See the License for the > + * specific language governing permissions and limitations > + * under the License. > + */ > +package org.apache.cxf.staxutils; > + > +import javax.xml.namespace.NamespaceContext; > +import javax.xml.namespace.QName; > +import javax.xml.stream.Location; > +import javax.xml.stream.XMLStreamException; > +import javax.xml.stream.XMLStreamReader; > + > +/** > + * A XMLStreamReader that delegates to a provided XMLStreamReader instance. > + * > + */ > +public class DelegatingXMLStreamReader implements XMLStreamReader { > + > + private final XMLStreamReader delegate; > + > + public DelegatingXMLStreamReader(XMLStreamReader reader) { > + this.delegate = reader; > + } > + > + @Override > + public Object getProperty(String name) throws IllegalArgumentException { > + return delegate.getProperty(name); > + } > + > + @Override > + public int next() throws XMLStreamException { > + return delegate.next(); > + } > + > + @Override > + public void require(int type, String namespaceURI, String localName) > throws XMLStreamException { > + delegate.require(type, namespaceURI, localName); > + } > + > + @Override > + public String getElementText() throws XMLStreamException { > + return delegate.getElementText(); > + } > + > + @Override > + public int nextTag() throws XMLStreamException { > + return delegate.nextTag(); > + } > + > + @Override > + public boolean hasNext() throws XMLStreamException { > + return delegate.hasNext(); > + } > + > + @Override > + public void close() throws XMLStreamException { > + delegate.close(); > + } > + > + @Override > + public String getNamespaceURI(String prefix) { > + return delegate.getNamespaceURI(prefix); > + } > + > + @Override > + public boolean isStartElement() { > + return delegate.isStartElement(); > + } > + > + @Override > + public boolean isEndElement() { > + return delegate.isEndElement(); > + } > + > + @Override > + public boolean isCharacters() { > + return delegate.isCharacters(); > + } > + > + @Override > + public boolean isWhiteSpace() { > + return delegate.isWhiteSpace(); > + } > + > + @Override > + public String getAttributeValue(String namespaceURI, String localName) { > + return delegate.getAttributeValue(namespaceURI, localName); > + } > + > + @Override > + public int getAttributeCount() { > + return delegate.getAttributeCount(); > + } > + > + @Override > + public QName getAttributeName(int index) { > + return delegate.getAttributeName(index); > + } > + > + @Override > + public String getAttributeNamespace(int index) { > + return delegate.getAttributeNamespace(index); > + } > + > + @Override > + public String getAttributeLocalName(int index) { > + return delegate.getAttributeLocalName(index); > + } > + > + @Override > + public String getAttributePrefix(int index) { > + return delegate.getAttributePrefix(index); > + } > + > + @Override > + public String getAttributeType(int index) { > + return delegate.getAttributeType(index); > + } > + > + @Override > + public String getAttributeValue(int index) { > + return delegate.getAttributeValue(index); > + } > + > + @Override > + public boolean isAttributeSpecified(int index) { > + return delegate.isAttributeSpecified(index); > + } > + > + @Override > + public int getNamespaceCount() { > + return delegate.getNamespaceCount(); > + } > + > + @Override > + public String getNamespacePrefix(int index) { > + return delegate.getNamespacePrefix(index); > + } > + > + @Override > + public String getNamespaceURI(int index) { > + return delegate.getNamespaceURI(index); > + } > + > + @Override > + public NamespaceContext getNamespaceContext() { > + return delegate.getNamespaceContext(); > + } > + > + @Override > + public int getEventType() { > + return delegate.getEventType(); > + } > + > + @Override > + public String getText() { > + return delegate.getText(); > + } > + > + @Override > + public char[] getTextCharacters() { > + return delegate.getTextCharacters(); > + } > + > + @Override > + public int getTextCharacters(int sourceStart, char[] target, int > targetStart, int length) > + throws XMLStreamException { > + return delegate.getTextCharacters(sourceStart, target, targetStart, > length); > + } > + > + @Override > + public int getTextStart() { > + return delegate.getTextStart(); > + } > + > + @Override > + public int getTextLength() { > + return delegate.getTextLength(); > + } > + > + @Override > + public String getEncoding() { > + return delegate.getEncoding(); > + } > + > + @Override > + public boolean hasText() { > + return delegate.hasText(); > + } > + > + @Override > + public Location getLocation() { > + return delegate.getLocation(); > + } > + > + @Override > + public QName getName() { > + return delegate.getName(); > + } > + > + @Override > + public String getLocalName() { > + return delegate.getLocalName(); > + } > + > + @Override > + public boolean hasName() { > + return delegate.hasName(); > + } > + > + @Override > + public String getNamespaceURI() { > + return delegate.getNamespaceURI(); > + } > + > + @Override > + public String getPrefix() { > + return delegate.getPrefix(); > + } > + > + @Override > + public String getVersion() { > + return delegate.getVersion(); > + } > + > + @Override > + public boolean isStandalone() { > + return delegate.isStandalone(); > + } > + > + @Override > + public boolean standaloneSet() { > + return delegate.standaloneSet(); > + } > + > + @Override > + public String getCharacterEncodingScheme() { > + return delegate.getCharacterEncodingScheme(); > + } > + > + @Override > + public String getPITarget() { > + return delegate.getPITarget(); > + } > + > + @Override > + public String getPIData() { > + return delegate.getPIData(); > + } > +} > > http://git-wip-us.apache.org/repos/asf/cxf/blob/e0b7f355/core/src/main/java/org/apache/cxf/staxutils/SysPropExpandingStreamReader.java > ---------------------------------------------------------------------- > diff --git > a/core/src/main/java/org/apache/cxf/staxutils/SysPropExpandingStreamReader.java > > b/core/src/main/java/org/apache/cxf/staxutils/SysPropExpandingStreamReader.java > new file mode 100644 > index 0000000..4987338 > --- /dev/null > +++ > b/core/src/main/java/org/apache/cxf/staxutils/SysPropExpandingStreamReader.java > @@ -0,0 +1,90 @@ > +/** > + * Licensed to the Apache Software Foundation (ASF) under one > + * or more contributor license agreements. See the NOTICE file > + * distributed with this work for additional information > + * regarding copyright ownership. The ASF licenses this file > + * to you under the Apache License, Version 2.0 (the > + * "License"); you may not use this file except in compliance > + * with the License. You may obtain a copy of the License at > + * > + * http://www.apache.org/licenses/LICENSE-2.0 > + * > + * Unless required by applicable law or agreed to in writing, > + * software distributed under the License is distributed on an > + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > + * KIND, either express or implied. See the License for the > + * specific language governing permissions and limitations > + * under the License. > + */ > +package org.apache.cxf.staxutils; > + > +import javax.xml.stream.XMLStreamException; > +import javax.xml.stream.XMLStreamReader; > + > +/** > + * A wrapper around XMLStreamReader that expands system property references > in element and attribute values. > + * > + */ > +public class SysPropExpandingStreamReader extends DelegatingXMLStreamReader { > + > + public static final String DELIMITER = "@"; > + > + public SysPropExpandingStreamReader(XMLStreamReader reader) { > + super(reader); > + } > + > + protected String expandSystemProperty(String value) { > + if (!isEmpty(value)) { > + final int startIndx = value.indexOf(DELIMITER); > + if (startIndx > -1) { > + final int endIndx = value.lastIndexOf(DELIMITER); > + if (endIndx > -1 && startIndx + 1 < endIndx) { > + final String propName = value.substring(startIndx + 1, > endIndx); > + if (!isEmpty(propName)) { > + final String envValue = System.getProperty(propName); > + if (!isEmpty(envValue)) { > + StringBuilder sb = new StringBuilder(); > + sb.append(value.substring(0, startIndx)); > + sb.append(envValue); > + sb.append(value.substring(endIndx + 1)); > + value = sb.toString(); > + } > + } > + } > + } > + } > + return value; > + } > + > + private static boolean isEmpty(String str) { > + if (str != null) { > + int len = str.length(); > + for (int x = 0; x < len; ++x) { > + if (str.charAt(x) > ' ') { > + return false; > + } > + } > + } > + return true; > + } > + > + @Override > + public String getElementText() throws XMLStreamException { > + return expandSystemProperty(super.getElementText()); > + } > + > + @Override > + public String getAttributeValue(String namespaceURI, String localName) { > + return expandSystemProperty(super.getAttributeValue(namespaceURI, > localName)); > + } > + > + @Override > + public String getAttributeValue(int index) { > + return expandSystemProperty(super.getAttributeValue(index)); > + } > + > + @Override > + public String getText() { > + return expandSystemProperty(super.getText()); > + } > +} > > http://git-wip-us.apache.org/repos/asf/cxf/blob/e0b7f355/core/src/main/java/org/apache/cxf/staxutils/XMLStreamReaderWrapper.java > ---------------------------------------------------------------------- > diff --git > a/core/src/main/java/org/apache/cxf/staxutils/XMLStreamReaderWrapper.java > b/core/src/main/java/org/apache/cxf/staxutils/XMLStreamReaderWrapper.java > new file mode 100644 > index 0000000..36c582f > --- /dev/null > +++ b/core/src/main/java/org/apache/cxf/staxutils/XMLStreamReaderWrapper.java > @@ -0,0 +1,30 @@ > +/** > + * Licensed to the Apache Software Foundation (ASF) under one > + * or more contributor license agreements. See the NOTICE file > + * distributed with this work for additional information > + * regarding copyright ownership. The ASF licenses this file > + * to you under the Apache License, Version 2.0 (the > + * "License"); you may not use this file except in compliance > + * with the License. You may obtain a copy of the License at > + * > + * http://www.apache.org/licenses/LICENSE-2.0 > + * > + * Unless required by applicable law or agreed to in writing, > + * software distributed under the License is distributed on an > + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > + * KIND, either express or implied. See the License for the > + * specific language governing permissions and limitations > + * under the License. > + */ > +package org.apache.cxf.staxutils; > + > +import javax.xml.stream.XMLStreamReader; > + > +/** > + * Interface for XMLStreamReader wrappers > + * > + */ > +public interface XMLStreamReaderWrapper { > + > + public XMLStreamReader wrap(XMLStreamReader reader); > +} > > http://git-wip-us.apache.org/repos/asf/cxf/blob/e0b7f355/core/src/test/java/org/apache/cxf/staxutils/SysPropExpandingStreamReaderTest.java > ---------------------------------------------------------------------- > diff --git > a/core/src/test/java/org/apache/cxf/staxutils/SysPropExpandingStreamReaderTest.java > > b/core/src/test/java/org/apache/cxf/staxutils/SysPropExpandingStreamReaderTest.java > new file mode 100644 > index 0000000..59a188c > --- /dev/null > +++ > b/core/src/test/java/org/apache/cxf/staxutils/SysPropExpandingStreamReaderTest.java > @@ -0,0 +1,63 @@ > +/** > + * Licensed to the Apache Software Foundation (ASF) under one > + * or more contributor license agreements. See the NOTICE file > + * distributed with this work for additional information > + * regarding copyright ownership. The ASF licenses this file > + * to you under the Apache License, Version 2.0 (the > + * "License"); you may not use this file except in compliance > + * with the License. You may obtain a copy of the License at > + * > + * http://www.apache.org/licenses/LICENSE-2.0 > + * > + * Unless required by applicable law or agreed to in writing, > + * software distributed under the License is distributed on an > + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > + * KIND, either express or implied. See the License for the > + * specific language governing permissions and limitations > + * under the License. > + */ > + > +package org.apache.cxf.staxutils; > + > +import java.io.InputStream; > + > +import javax.xml.stream.XMLStreamReader; > + > +import org.apache.cxf.helpers.DOMUtils; > +import org.junit.Assert; > +import org.junit.Test; > +import org.w3c.dom.Document; > +import org.w3c.dom.Element; > + > +public class SysPropExpandingStreamReaderTest extends Assert { > + > + @Test > + public void testSystemPropertyExpansion() throws Exception { > + final String barProp = System.setProperty("bar", "BAR-VALUE"); > + final String blahProp = System.setProperty("blah", "BLAH-VALUE"); > + try { > + XMLStreamReader reader = new > SysPropExpandingStreamReader(StaxUtils.createXMLStreamReader(getTestStream("./resources/sysprops.xml"))); > + Document doc = StaxUtils.read(reader); > + Element abc = > DOMUtils.getChildrenWithName(doc.getDocumentElement(), "http://foo/bar", > "abc").iterator().next(); > + assertEquals("fooBAR-VALUEfoo", abc.getTextContent()); > + Element def = > DOMUtils.getChildrenWithName(doc.getDocumentElement(), "http://foo/bar", > "def").iterator().next(); > + assertEquals("ggggg", def.getTextContent()); > + assertEquals("BLAH-VALUE2", def.getAttribute("myAttr")); > + } finally { > + if (barProp != null) { > + System.setProperty("bar", barProp); > + } else { > + System.clearProperty("bar"); > + } > + if (blahProp != null) { > + System.setProperty("blah", blahProp); > + } else { > + System.clearProperty("blah"); > + } > + } > + } > + > + private InputStream getTestStream(String resource) { > + return getClass().getResourceAsStream(resource); > + } > +} > > http://git-wip-us.apache.org/repos/asf/cxf/blob/e0b7f355/core/src/test/java/org/apache/cxf/staxutils/resources/sysprops.xml > ---------------------------------------------------------------------- > diff --git > a/core/src/test/java/org/apache/cxf/staxutils/resources/sysprops.xml > b/core/src/test/java/org/apache/cxf/staxutils/resources/sysprops.xml > new file mode 100644 > index 0000000..7a6ca81 > --- /dev/null > +++ b/core/src/test/java/org/apache/cxf/staxutils/resources/sysprops.xml > @@ -0,0 +1,23 @@ > +<?xml version="1.0" encoding="UTF-8"?> > +<!-- > + Licensed to the Apache Software Foundation (ASF) under one > + or more contributor license agreements. See the NOTICE file > + distributed with this work for additional information > + regarding copyright ownership. The ASF licenses this file > + to you under the Apache License, Version 2.0 (the > + "License"); you may not use this file except in compliance > + with the License. You may obtain a copy of the License at > + > + http://www.apache.org/licenses/LICENSE-2.0 > + > + Unless required by applicable law or agreed to in writing, > + software distributed under the License is distributed on an > + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > + KIND, either express or implied. See the License for the > + specific language governing permissions and limitations > + under the License. > +--> > +<ns:ssss xmlns:ns="http://foo/bar"> > + <ns:abc>foo@bar@foo</ns:abc> > + <ns:def myAttr="@blah@2">ggggg</ns:def> > +</ns:ssss> > > http://git-wip-us.apache.org/repos/asf/cxf/blob/e0b7f355/rt/wsdl/src/main/java/org/apache/cxf/wsdl11/WSDLManagerImpl.java > ---------------------------------------------------------------------- > diff --git a/rt/wsdl/src/main/java/org/apache/cxf/wsdl11/WSDLManagerImpl.java > b/rt/wsdl/src/main/java/org/apache/cxf/wsdl11/WSDLManagerImpl.java > index e4f368a..2f24f9f 100644 > --- a/rt/wsdl/src/main/java/org/apache/cxf/wsdl11/WSDLManagerImpl.java > +++ b/rt/wsdl/src/main/java/org/apache/cxf/wsdl11/WSDLManagerImpl.java > @@ -49,6 +49,9 @@ import org.apache.cxf.common.util.CacheMap; > import org.apache.cxf.configuration.ConfiguredBeanLocator; > import org.apache.cxf.service.model.ServiceSchemaInfo; > import org.apache.cxf.staxutils.StaxUtils; > +import org.apache.cxf.staxutils.DelegatingXMLStreamReader; > +import org.apache.cxf.staxutils.SysPropExpandingStreamReader; > +import org.apache.cxf.staxutils.XMLStreamReaderWrapper; > import org.apache.cxf.wsdl.WSDLConstants; > import org.apache.cxf.wsdl.WSDLExtensionLoader; > import org.apache.cxf.wsdl.WSDLManager; > @@ -71,6 +74,8 @@ public class WSDLManagerImpl implements WSDLManager { > private boolean disableSchemaCache; > > private Bus bus; > + > + private XMLStreamReaderWrapper xmlStreamReaderWrapper; > > public WSDLManagerImpl() throws BusException { > this(null); > @@ -130,6 +135,9 @@ public class WSDLManagerImpl implements WSDLManager { > } > } > > + protected Bus getBus() { > + return bus; > + } > > /* > * (non-Javadoc) > @@ -153,7 +161,11 @@ public class WSDLManagerImpl implements WSDLManager { > return definitionsMap.get(url); > } > } > - return loadDefinition(url); > + Definition def = loadDefinition(url); > + synchronized (definitionsMap) { > + definitionsMap.put(url, def); > + } > + return def; > } > > public Definition getDefinition(Element el) throws WSDLException { > @@ -179,7 +191,7 @@ public class WSDLManagerImpl implements WSDLManager { > } > } > > - private Definition loadDefinition(String url) throws WSDLException { > + protected Definition loadDefinition(String url) throws WSDLException { > WSDLReader reader = factory.newWSDLReader(); > reader.setFeature("javax.wsdl.verbose", false); > reader.setFeature("javax.wsdl.importDocuments", true); > @@ -195,6 +207,9 @@ public class WSDLManagerImpl implements WSDLManager { > XMLStreamReader xmlReader = null; > try { > xmlReader = StaxUtils.createXMLStreamReader(src); > + if (xmlStreamReaderWrapper != null) { > + xmlReader = xmlStreamReaderWrapper.wrap(xmlReader); > + } > doc = StaxUtils.read(xmlReader, true); > if (src.getSystemId() != null) { > try { > @@ -217,11 +232,12 @@ public class WSDLManagerImpl implements WSDLManager { > def = reader.readWSDL(wsdlLocator); > } > > - synchronized (definitionsMap) { > - definitionsMap.put(url, def); > - } > return def; > } > + > + public void setXMLStreamReaderWrapper(XMLStreamReaderWrapper wrapper) { > + this.xmlStreamReaderWrapper = wrapper; > + } > > private void addExtensionAttributeTypes(ExtensionRegistry extreg) { > // register types that are not of wsdl4j's default attribute type > QName > > http://git-wip-us.apache.org/repos/asf/cxf/blob/e0b7f355/rt/wsdl/src/test/java/org/apache/cxf/wsdl11/WSDLManagerImplTest.java > ---------------------------------------------------------------------- > diff --git > a/rt/wsdl/src/test/java/org/apache/cxf/wsdl11/WSDLManagerImplTest.java > b/rt/wsdl/src/test/java/org/apache/cxf/wsdl11/WSDLManagerImplTest.java > index e3e5b0a..bcafef1 100644 > --- a/rt/wsdl/src/test/java/org/apache/cxf/wsdl11/WSDLManagerImplTest.java > +++ b/rt/wsdl/src/test/java/org/apache/cxf/wsdl11/WSDLManagerImplTest.java > @@ -29,7 +29,10 @@ import javax.wsdl.Port; > import javax.wsdl.PortType; > import javax.wsdl.Service; > import javax.xml.namespace.QName; > +import javax.xml.stream.XMLStreamReader; > > +import org.apache.cxf.staxutils.SysPropExpandingStreamReader; > +import org.apache.cxf.staxutils.XMLStreamReaderWrapper; > import org.junit.Assert; > import org.junit.Test; > > @@ -106,4 +109,29 @@ public class WSDLManagerImplTest extends Assert { > java.io.ByteArrayOutputStream bos = new > java.io.ByteArrayOutputStream(); > builder.getWSDLFactory().newWSDLWriter().writeWSDL(def, bos); > } > + > + @Test > + public void testXMLStreamReaderWrapper() throws Exception { > + final String testProp = > System.setProperty("org.apache.cxf.test.wsdl11.port", "99999"); > + try { > + String wsdlUrl = > getClass().getResource("hello_world_wrap.wsdl").toString(); > + WSDLManagerImpl builder = new WSDLManagerImpl(); > + builder.setXMLStreamReaderWrapper(new XMLStreamReaderWrapper() { > + @Override > + public XMLStreamReader wrap(XMLStreamReader reader) { > + return new SysPropExpandingStreamReader(reader); > + } > + }); > + Definition def = builder.getDefinition(wsdlUrl); > + java.io.ByteArrayOutputStream bos = new > java.io.ByteArrayOutputStream(); > + builder.getWSDLFactory().newWSDLWriter().writeWSDL(def, bos); > + > assertTrue(bos.toString().contains("http://localhost:99999/SoapContext/SoapPort")); > + } finally { > + if (testProp != null) { > + System.setProperty("org.apache.cxf.test.wsdl11.port", > testProp); > + } else { > + System.clearProperty("org.apache.cxf.test.wsdl11.port"); > + } > + } > + } > } > > http://git-wip-us.apache.org/repos/asf/cxf/blob/e0b7f355/rt/wsdl/src/test/resources/org/apache/cxf/wsdl11/hello_world_wrap.wsdl > ---------------------------------------------------------------------- > diff --git > a/rt/wsdl/src/test/resources/org/apache/cxf/wsdl11/hello_world_wrap.wsdl > b/rt/wsdl/src/test/resources/org/apache/cxf/wsdl11/hello_world_wrap.wsdl > new file mode 100644 > index 0000000..d2f1d75 > --- /dev/null > +++ b/rt/wsdl/src/test/resources/org/apache/cxf/wsdl11/hello_world_wrap.wsdl > @@ -0,0 +1,161 @@ > +<?xml version="1.0" encoding="UTF-8"?> > +<!-- > + Licensed to the Apache Software Foundation (ASF) under one > + or more contributor license agreements. See the NOTICE file > + distributed with this work for additional information > + regarding copyright ownership. The ASF licenses this file > + to you under the Apache License, Version 2.0 (the > + "License"); you may not use this file except in compliance > + with the License. You may obtain a copy of the License at > + > + http://www.apache.org/licenses/LICENSE-2.0 > + > + Unless required by applicable law or agreed to in writing, > + software distributed under the License is distributed on an > + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > + KIND, either express or implied. See the License for the > + specific language governing permissions and limitations > + under the License. > +--> > +<wsdl:definitions xmlns="http://schemas.xmlsoap.org/wsdl/" > xmlns:tns="http://apache.org/hello_world_soap_http" > xmlns:x1="http://apache.org/hello_world_soap_http/types" > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="HelloWorld" > targetNamespace="http://apache.org/hello_world_soap_http"> > + <wsdl:types> > + <schema xmlns="http://www.w3.org/2001/XMLSchema" > xmlns:tns="http://apache.org/hello_world_soap_http/types" > targetNamespace="http://apache.org/hello_world_soap_http/types" > elementFormDefault="qualified"> > + <simpleType name="MyStringType"> > + <restriction base="string"> > + <maxLength value="30"/> > + </restriction> > + </simpleType> > + <element name="sayHi"> > + <complexType/> > + </element> > + <element name="sayHiResponse"> > + <complexType> > + <sequence> > + <element name="responseType" type="string"/> > + </sequence> > + </complexType> > + </element> > + <element name="greetMe"> > + <complexType> > + <sequence> > + <element name="requestType" type="tns:MyStringType"/> > + </sequence> > + </complexType> > + </element> > + <element name="greetMeResponse"> > + <complexType> > + <sequence> > + <element name="responseType" type="string"/> > + </sequence> > + </complexType> > + </element> > + <element name="greetMeOneWay"> > + <complexType> > + <sequence> > + <element name="requestType" type="string"/> > + </sequence> > + </complexType> > + </element> > + <element name="pingMe"> > + <complexType/> > + </element> > + <element name="pingMeResponse"> > + <complexType/> > + </element> > + <element name="faultDetail"> > + <complexType> > + <sequence> > + <element name="minor" type="short"/> > + <element name="major" type="short"/> > + </sequence> > + </complexType> > + </element> > + </schema> > + </wsdl:types> > + <wsdl:message name="sayHiRequest"> > + <wsdl:part element="x1:sayHi" name="in"/> > + </wsdl:message> > + <wsdl:message name="sayHiResponse"> > + <wsdl:part element="x1:sayHiResponse" name="out"/> > + </wsdl:message> > + <wsdl:message name="greetMeRequest"> > + <wsdl:part element="x1:greetMe" name="in"/> > + </wsdl:message> > + <wsdl:message name="greetMeResponse"> > + <wsdl:part element="x1:greetMeResponse" name="out"/> > + </wsdl:message> > + <wsdl:message name="greetMeOneWayRequest"> > + <wsdl:part element="x1:greetMeOneWay" name="in"/> > + </wsdl:message> > + <wsdl:message name="pingMeRequest"> > + <wsdl:part name="in" element="x1:pingMe"/> > + </wsdl:message> > + <wsdl:message name="pingMeResponse"> > + <wsdl:part name="out" element="x1:pingMeResponse"/> > + </wsdl:message> > + <wsdl:message name="pingMeFault"> > + <wsdl:part name="faultDetail" element="x1:faultDetail"/> > + </wsdl:message> > + <wsdl:portType name="Greeter"> > + <wsdl:operation name="sayHi"> > + <wsdl:input message="tns:sayHiRequest" name="sayHiRequest"/> > + <wsdl:output message="tns:sayHiResponse" name="sayHiResponse"/> > + </wsdl:operation> > + <wsdl:operation name="greetMe"> > + <wsdl:input message="tns:greetMeRequest" name="greetMeRequest"/> > + <wsdl:output message="tns:greetMeResponse" > name="greetMeResponse"/> > + </wsdl:operation> > + <wsdl:operation name="greetMeOneWay"> > + <wsdl:input message="tns:greetMeOneWayRequest" > name="greetMeOneWayRequest"/> > + </wsdl:operation> > + <wsdl:operation name="pingMe"> > + <wsdl:input name="pingMeRequest" message="tns:pingMeRequest"/> > + <wsdl:output name="pingMeResponse" message="tns:pingMeResponse"/> > + <wsdl:fault name="pingMeFault" message="tns:pingMeFault"/> > + </wsdl:operation> > + </wsdl:portType> > + <wsdl:binding name="Greeter_SOAPBinding" type="tns:Greeter"> > + <soap:binding xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > style="document" transport="http://schemas.xmlsoap.org/soap/http"/> > + <wsdl:operation name="sayHi"> > + <soap:operation > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" soapAction="" > style="document"/> > + <wsdl:input name="sayHiRequest"> > + <soap:body > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="literal"/> > + </wsdl:input> > + <wsdl:output name="sayHiResponse"> > + <soap:body > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="literal"/> > + </wsdl:output> > + </wsdl:operation> > + <wsdl:operation name="greetMe"> > + <soap:operation > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" soapAction="" > style="document"/> > + <wsdl:input name="greetMeRequest"> > + <soap:body > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="literal"/> > + </wsdl:input> > + <wsdl:output name="greetMeResponse"> > + <soap:body > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="literal"/> > + </wsdl:output> > + </wsdl:operation> > + <wsdl:operation name="greetMeOneWay"> > + <soap:operation > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" soapAction="" > style="document"/> > + <wsdl:input name="greetMeOneWayRequest"> > + <soap:body > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="literal"/> > + </wsdl:input> > + </wsdl:operation> > + <wsdl:operation name="pingMe"> > + <soap:operation > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" style="document"/> > + <wsdl:input> > + <soap:body > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="literal"/> > + </wsdl:input> > + <wsdl:output> > + <soap:body > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="literal"/> > + </wsdl:output> > + <wsdl:fault name="pingMeFault"> > + <soap:fault > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" name="pingMeFault" > use="literal"/> > + </wsdl:fault> > + </wsdl:operation> > + </wsdl:binding> > + <wsdl:service name="SOAPService"> > + <wsdl:port binding="tns:Greeter_SOAPBinding" name="SoapPort"> > + <soap:address xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > location="http://localhost:@org.apache.cxf.test.wsdl11.port@/SoapContext/SoapPort"/> > + </wsdl:port> > + </wsdl:service> > +</wsdl:definitions> > -- Daniel Kulp [email protected] - http://dankulp.com/blog Talend Community Coder - http://coders.talend.com
