Author: antelder
Date: Mon Jul 12 21:36:15 2010
New Revision: 963494

URL: http://svn.apache.org/viewvc?rev=963494&view=rev
Log:
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)

Modified:
    
tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java
    
tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java
    
tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java

Modified: 
tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java?rev=963494&r1=963493&r2=963494&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java
 Mon Jul 12 21:36:15 2010
@@ -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 exten
     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

Modified: 
tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java?rev=963494&r1=963493&r2=963494&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java
 Mon Jul 12 21:36:15 2010
@@ -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 W
     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 W
         // 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 ;
+    }
 }

Modified: 
tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java?rev=963494&r1=963493&r2=963494&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
 Mon Jul 12 21:36:15 2010
@@ -21,6 +21,7 @@ package org.apache.tuscany.sca.binding.w
 
 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 
         }
 
         // 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 
             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 
         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()) {


Reply via email to