You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2010/07/12 23:37:32 UTC

svn commit: r963496 - in /tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main: java/org/apache/tuscany/sca/interfacedef/wsdl/ java/org/apache/tuscany/sca/interfacedef/wsdl/impl/ java/org/apache/tuscany/sca/interfacedef/wsdl/xml/ resources/

Author: antelder
Date: Mon Jul 12 21:37:32 2010
New Revision: 963496

URL: http://svn.apache.org/viewvc?rev=963496&view=rev
Log:
Update wsdl resolving to take account of wsdli:location namespace to location url mappings

Modified:
    tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java
    tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java
    tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java
    tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/resources/interface-wsdlxml-validation-messages.properties

Modified: tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java?rev=963496&r1=963495&r2=963496&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java Mon Jul 12 21:37:32 2010
@@ -21,6 +21,7 @@ package org.apache.tuscany.sca.interface
 
 import java.net.URI;
 import java.util.List;
+import java.util.Map;
 
 import javax.wsdl.Binding;
 import javax.wsdl.Definition;
@@ -178,6 +179,12 @@ public interface WSDLDefinition extends 
      * 
      * @param nameOfBindingToResolve
      */
-    void setNameOfServiceToResolve(QName nameOfServiceToResolve);    
+    void setNameOfServiceToResolve(QName nameOfServiceToResolve);
+
+    /**
+     * Gets the wsdli:location attribute namespace mappings
+     * @return a Map with key being namespace and value the location
+     */
+    Map<String, String> getWsdliLocations();    
 
 }

Modified: tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java?rev=963496&r1=963495&r2=963496&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java Mon Jul 12 21:37:32 2010
@@ -21,6 +21,7 @@ package org.apache.tuscany.sca.interface
 
 import java.net.URI;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -62,6 +63,7 @@ public class WSDLDefinitionImpl implemen
     private QName nameOfPortTypeToResolve;
     private QName nameOfBindingToResolve;
     private QName nameOfServiceToResolve;
+    private Map<String, String> wsdliLocations = new HashMap<String, String>();
 
     protected WSDLDefinitionImpl() {
     }
@@ -311,4 +313,9 @@ public class WSDLDefinitionImpl implemen
     public void setNameOfServiceToResolve(QName nameOfServiceToResolve) {
         this.nameOfServiceToResolve = nameOfServiceToResolve;
     }
+
+    @Override
+    public Map<String, String> getWsdliLocations() {
+        return wsdliLocations ;
+    }
 }

Modified: tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java?rev=963496&r1=963495&r2=963496&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java Mon Jul 12 21:37:32 2010
@@ -339,6 +339,17 @@ public class WSDLModelResolver implement
             return modelClass.cast(unresolved);
         }    	
     	
+    	// Lookup based on wsdli:location
+    	if (((WSDLDefinition)unresolved).getWsdliLocations().containsKey(namespace)) {
+            try {
+                loadDefinition(((WSDLDefinition)unresolved), context);
+            } catch (ContributionReadException e) {
+                context.getMonitor().error(context.getMonitor(), this, "interface-wsdlxml-validation-messages", "wsdliLocationException", e, ((WSDLDefinition)unresolved).getNamespace());
+            }
+            return modelClass.cast((WSDLDefinition)unresolved);
+    	}
+    	
+    	
     	// Lookup a definition for the given namespace, from imports        
         for (Import import_ : this.contribution.getImports()) {
             if (import_ instanceof NamespaceImport) {
@@ -458,11 +469,20 @@ public class WSDLModelResolver implement
      * @throws ContributionReadException
      */
     private void loadDefinition(WSDLDefinition wsdlDef, ProcessorContext context) throws ContributionReadException {
-        if (wsdlDef.getDefinition() != null || wsdlDef.getLocation() == null) {
+        if (wsdlDef.getDefinition() != null) {
             return;
         }
         try {
-            URL artifactURL = wsdlDef.getLocation().toURL();
+            URL artifactURL;
+            String loc = wsdlDef.getWsdliLocations().get(wsdlDef.getNamespace());
+            if (loc != null) {
+                artifactURL = new URL(loc);
+            } else {
+                if (wsdlDef.getLocation() == null) {
+                    return;
+                }
+                artifactURL = wsdlDef.getLocation().toURL();
+            }
             // Read a WSDL document
             InputStream is = IOHelper.openStream(artifactURL);
             WSDLReader reader = wsdl4jFactory.newWSDLReader();
@@ -474,6 +494,7 @@ public class WSDLModelResolver implement
 
             // Collection of namespace,location for wsdl:import definition
             Map<String, String> wsdlImports = indexRead(wsdlDef.getLocation().toURL());
+            wsdlImports.putAll(wsdlDef.getWsdliLocations());
             WSDLLocatorImpl locator = new WSDLLocatorImpl(context, artifactURL, is, wsdlImports);
             Definition definition = reader.readWSDL(locator);
             wsdlDef.setDefinition(definition);

Modified: tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/resources/interface-wsdlxml-validation-messages.properties
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/resources/interface-wsdlxml-validation-messages.properties?rev=963496&r1=963495&r2=963496&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/resources/interface-wsdlxml-validation-messages.properties (original)
+++ tuscany/sca-java-2.x/trunk/modules/interface-wsdl/src/main/resources/interface-wsdlxml-validation-messages.properties Mon Jul 12 21:37:32 2010
@@ -23,4 +23,5 @@ ContributionResolveException = Contribut
 InvalidWSDLInterfaceAttr = Invalid WSDL interface attribute: {0}
 WsdlInterfaceDoesNotMatch = The WSDL referenced by the interface.wsdl interface as ({0}) cannot be found in this contribution or in any imports that this contribution makes
 InvalidRemotableValue = The interface.wsdl interface {0} element can only have a remotable attribute with the value "true" as WSDL interface are assumed to be remotable by default. The value that was found is: {1}.
-IncompatibleCallbacks = The interface.wsdl element has a forward interface with a callback declared in the WSDL {0} and a callback interface also declared using the callbackInterface attribute {1} but the callback interfaces are not equal.
\ No newline at end of file
+IncompatibleCallbacks = The interface.wsdl element has a forward interface with a callback declared in the WSDL {0} and a callback interface also declared using the callbackInterface attribute {1} but the callback interfaces are not equal.
+wsdliLocationException = Exception locating wsdli:location resource: {0}
\ No newline at end of file