summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2010-07-12 21:36:15 +0000
committerantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2010-07-12 21:36:15 +0000
commit39bee7916c491f04132bf7fc00ae95afc109b2b8 (patch)
tree89adab262215d4401f493e82524b1d47742b394f
parent1ab7a9337a28b743379ca8d2a3c5d8339691da80 (diff)
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
-rw-r--r--sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java8
-rw-r--r--sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java8
-rw-r--r--sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java27
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()) {