diff options
Diffstat (limited to 'sca-java-2.x/trunk/modules/binding-ws/src/main/java')
3 files changed, 36 insertions, 7 deletions
diff --git a/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java b/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java index 22ea63bd89..b6bcb38645 100644 --- a/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java +++ b/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java @@ -18,6 +18,8 @@ */ package org.apache.tuscany.sca.binding.ws; +import java.util.Map; + import javax.wsdl.Definition; import javax.wsdl.Port; import javax.wsdl.Service; @@ -50,6 +52,12 @@ public interface WebServiceBinding extends Binding { String getLocation(); /** + * Returns the wsdli:location attribute namespace mappings + * @return a Map with key being namespace and value the location + */ + Map<String, String> getWsdliLocations(); + + /** * Returns the name of the WSDL service. * * @return the name of the WSDL service diff --git a/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java b/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java index 9cda2978d3..34a269b2f2 100644 --- a/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java +++ b/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java @@ -20,7 +20,9 @@ package org.apache.tuscany.sca.binding.ws.impl; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import javax.wsdl.Binding; import javax.wsdl.BindingOperation; @@ -31,7 +33,6 @@ import javax.wsdl.Port; import javax.wsdl.Service; import javax.wsdl.extensions.soap.SOAPBinding; import javax.wsdl.extensions.soap.SOAPBody; -import javax.wsdl.extensions.soap12.SOAP12Body; import javax.xml.namespace.QName; import org.apache.tuscany.sca.assembly.Extensible; @@ -80,6 +81,7 @@ class WebServiceBindingImpl implements WebServiceBinding, PolicySubject, Extensi private boolean isDocumentStyle; private boolean isLiteralEncoding; private boolean isMessageWrapped; + private Map<String, String> wsdliLocations = new HashMap<String, String>(); protected WebServiceBindingImpl() { } @@ -451,4 +453,8 @@ class WebServiceBindingImpl implements WebServiceBinding, PolicySubject, Extensi // if no binding is explicitly specified by the user then default to http return "http://schemas.xmlsoap.org/soap/http"; } + + public Map<String, String> getWsdliLocations() { + return wsdliLocations ; + } } diff --git a/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java b/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java index b388311987..9a2ff7b12e 100644 --- a/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java +++ b/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java @@ -21,6 +21,7 @@ package org.apache.tuscany.sca.binding.ws.xml; import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; +import static org.apache.tuscany.sca.binding.ws.xml.WebServiceConstants.SCA11_NS; import java.net.URI; import java.net.URISyntaxException; @@ -234,15 +235,18 @@ public class WebServiceBindingProcessor extends BaseStAXArtifactProcessor implem } // Read wsdlLocation - wsBinding.setLocation(reader.getAttributeValue(WSDLI_NS, WSDL_LOCATION)); - if (wsBinding.getLocation() != null) { + String wsdliLocation = reader.getAttributeValue(WSDLI_NS, WSDL_LOCATION); + if (wsdliLocation != null) { if (wsdlElement == null) { error(monitor, "WsdliLocationMissingWsdlElement", reader); } - String[] iris = wsBinding.getLocation().split(" "); + String[] iris = wsdliLocation.split(" "); if (iris.length % 2 != 0) { error(monitor, "WsdliLocationNotIRIPairs", reader); } + for (int i=0; i<iris.length-1; i=i+2) { + wsBinding.getWsdliLocations().put(iris[i], iris[i+1]); + } } // Skip to end element @@ -338,9 +342,19 @@ public class WebServiceBindingProcessor extends BaseStAXArtifactProcessor implem writer.writeAttribute(WSDL_ELEMENT, wsdlElement); } - // Write location - if (wsBinding.getLocation() != null) { - writer.writeAttribute(WSDLI_NS, WSDL_LOCATION, wsBinding.getLocation()); + // Write wsdli:location + if (wsBinding.getWsdliLocations().size() > 0) { + StringBuilder wsdliLocation = new StringBuilder(); + Map<String, String> wl = wsBinding.getWsdliLocations(); + for (String ns : wl.keySet()) { + if (wsdliLocation.length() > 0) { + wsdliLocation.append(' '); + } + wsdliLocation.append(ns); + wsdliLocation.append(' '); + wsdliLocation.append(wl.get(ns)); + } + writer.writeAttribute(WSDLI_NS, WSDL_LOCATION, wsdliLocation.toString()); } if (wsBinding.getEndPointReference() != null) { @@ -360,6 +374,7 @@ public class WebServiceBindingProcessor extends BaseStAXArtifactProcessor implem wsdlDefinition.setNamespace(model.getNamespace()); wsdlDefinition.setNameOfBindingToResolve(model.getBindingName()); wsdlDefinition.setNameOfServiceToResolve(model.getServiceName()); + wsdlDefinition.getWsdliLocations().putAll(model.getWsdliLocations()); WSDLDefinition resolved = resolver.resolveModel(WSDLDefinition.class, wsdlDefinition, context); if (!resolved.isUnresolved()) { |