From 39bee7916c491f04132bf7fc00ae95afc109b2b8 Mon Sep 17 00:00:00 2001 From: antelder Date: Mon, 12 Jul 2010 21:36:15 +0000 Subject: Update the ws binding model to have a wsdliLocations field to properly store the iri pairs from the wsdli:location attribute. (do need to still look at what the existing location field is really used for, when i changed that it broke something in impl.bpel so need to investigate whats going on there) git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@963494 13f79535-47bb-0310-9956-ffa450edef68 --- .../tuscany/sca/binding/ws/WebServiceBinding.java | 8 +++++++ .../sca/binding/ws/impl/WebServiceBindingImpl.java | 8 ++++++- .../binding/ws/xml/WebServiceBindingProcessor.java | 27 +++++++++++++++++----- 3 files changed, 36 insertions(+), 7 deletions(-) (limited to 'sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws') 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; @@ -49,6 +51,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 getWsdliLocations(); + /** * Returns 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 wsdliLocations = new HashMap(); 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 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 0) { + StringBuilder wsdliLocation = new StringBuilder(); + Map 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()) { -- cgit v1.2.3