You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by na...@apache.org on 2008/12/01 02:50:29 UTC

svn commit: r721944 - in /tuscany/branches/sca-java-1.x/modules: binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/ binding-ws-xml/src/main/resources/ host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/ interface-wsdl-xml...

Author: nash
Date: Sun Nov 30 17:50:28 2008
New Revision: 721944

URL: http://svn.apache.org/viewvc?rev=721944&view=rev
Log:
Fix TUSCANY-2698

Modified:
    tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
    tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/main/resources/binding-wsxml-validation-messages.properties
    tuscany/branches/sca-java-1.x/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/SCADomain.java
    tuscany/branches/sca-java-1.x/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java
    tuscany/branches/sca-java-1.x/modules/interface-wsdl-xml/src/main/resources/interface-wsdlxml-validation-messages.properties
    tuscany/branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
    tuscany/branches/sca-java-1.x/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java

Modified: tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java?rev=721944&r1=721943&r2=721944&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java Sun Nov 30 17:50:28 2008
@@ -46,6 +46,7 @@
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 import org.apache.tuscany.sca.contribution.service.ContributionReadException;
 import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
+import org.apache.tuscany.sca.contribution.service.ContributionRuntimeException;
 import org.apache.tuscany.sca.contribution.service.ContributionWriteException;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.UtilityExtensionPoint;
@@ -97,9 +98,9 @@
     /**
      * Report a warning.
      * 
-     * @param problems
-     * @param message
+     * @param problem
      * @param model
+     * @param message data
      */
     private void warning(String message, Object model, Object... messageParameters) {
        if (monitor != null) {
@@ -109,11 +110,11 @@
     }
          
     /**
-     * Report a error.
+     * Report an error.
      * 
-     * @param problems
-     * @param message
+     * @param problem
      * @param model
+     * @param message data
      */
     private void error(String message, Object model, Object... messageParameters) {
         if (monitor != null) {
@@ -122,6 +123,20 @@
         }        
     }
 
+   /**
+    * Report an exception.
+    * 
+    * @param problem
+    * @param model
+    * @param exception
+    */
+    private void error(String message, Object model, Exception ex) {
+        if (monitor != null) {
+            Problem problem = new ProblemImpl(this.getClass().getName(), "binding-wsxml-validation-messages", Severity.ERROR, model, message, ex);
+            monitor.problem(problem);
+        }        
+    }
+
     public WebServiceBinding read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException {
 
         // Read a <binding.ws>
@@ -322,7 +337,14 @@
     	WSDLDefinition wsdlDefinition = wsdlFactory.createWSDLDefinition();
         wsdlDefinition.setUnresolved(true);
         wsdlDefinition.setNamespace(model.getNamespace());
-        WSDLDefinition resolved = resolver.resolveModel(WSDLDefinition.class, wsdlDefinition);
+        WSDLDefinition resolved = null;
+        try {
+            resolved = resolver.resolveModel(WSDLDefinition.class, wsdlDefinition);
+        } catch (ContributionRuntimeException e) {
+            ContributionResolveException ce = new ContributionResolveException(e.getCause());
+            error("ContributionResolveException", wsdlDefinition, ce);
+            throw ce;
+        }                        
 
         if (!resolved.isUnresolved()) {
             wsdlDefinition.setDefinition(resolved.getDefinition());

Modified: tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/main/resources/binding-wsxml-validation-messages.properties
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/main/resources/binding-wsxml-validation-messages.properties?rev=721944&r1=721943&r2=721944&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/main/resources/binding-wsxml-validation-messages.properties (original)
+++ tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/main/resources/binding-wsxml-validation-messages.properties Sun Nov 30 17:50:28 2008
@@ -24,5 +24,4 @@
 WsdlBindingDoesNotMatch = The #wsdl.binding({0}) does not match with the WSDL Definitions
 WsdlServiceDoesNotMatch = The #wsdl.service({0}) does not match with the WSDL Definitions
 WsdlPortTypeDoesNotMatch = The #wsdl.port({0}) does not match with the WSDL Definitions
-
-
+ContributionResolveException = Error in contribution: {0}

Modified: tuscany/branches/sca-java-1.x/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/SCADomain.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/SCADomain.java?rev=721944&r1=721943&r2=721944&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/SCADomain.java (original)
+++ tuscany/branches/sca-java-1.x/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/SCADomain.java Sun Nov 30 17:50:28 2008
@@ -214,6 +214,8 @@
 
             return domain;
 
+        } catch (ServiceRuntimeException e) {
+            throw e;
         } catch (Exception e) {
             throw new ServiceRuntimeException(e);
         }

Modified: tuscany/branches/sca-java-1.x/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java?rev=721944&r1=721943&r2=721944&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java Sun Nov 30 17:50:28 2008
@@ -34,6 +34,7 @@
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 import org.apache.tuscany.sca.contribution.service.ContributionReadException;
 import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
+import org.apache.tuscany.sca.contribution.service.ContributionRuntimeException;
 import org.apache.tuscany.sca.contribution.service.ContributionWriteException;
 import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
 import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
@@ -62,9 +63,9 @@
     /**
      * Report a warning.
      * 
-     * @param problems
-     * @param message
+     * @param problem
      * @param model
+     * @param message data
      */
     private void warning(String message, Object model, Object... messageParameters) {
         if (monitor != null) {
@@ -74,11 +75,11 @@
      }
     
     /**
-     * Report a error.
+     * Report an error.
      * 
-     * @param problems
-     * @param message
+     * @param problem
      * @param model
+     * @param message data
      */
     private void error(String message, Object model, Object... messageParameters) {
         if (monitor != null) {
@@ -88,11 +89,11 @@
      }
    
    /**
-    * Report a exception.
+    * Report an exception.
     * 
-    * @param problems
-    * @param message
+    * @param problem
     * @param model
+    * @param exception
     */
     private void error(String message, Object model, Exception ex) {
         if (monitor != null) {
@@ -217,9 +218,12 @@
                             wsdlInterface = wsdlFactory.createWSDLInterface(portType.getElement(), wsdlDefinition, resolver);
                             wsdlInterface.setWsdlDefinition(wsdlDefinition);
                             resolver.addModel(wsdlInterface);
+                        } catch (ContributionRuntimeException e) {
+                            ContributionResolveException ce = new ContributionResolveException(e.getCause());
+                            error("ContributionResolveException", wsdlDefinition, ce);
                         } catch (InvalidInterfaceException e) {
                         	ContributionResolveException ce = new ContributionResolveException(e);
-                        	error("ContributionResolveException", wsdlFactory, ce);
+                        	error("ContributionResolveException", wsdlDefinition, ce);
                             //throw ce;
                         }                        
                     }

Modified: tuscany/branches/sca-java-1.x/modules/interface-wsdl-xml/src/main/resources/interface-wsdlxml-validation-messages.properties
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/interface-wsdl-xml/src/main/resources/interface-wsdlxml-validation-messages.properties?rev=721944&r1=721943&r2=721944&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/interface-wsdl-xml/src/main/resources/interface-wsdlxml-validation-messages.properties (original)
+++ tuscany/branches/sca-java-1.x/modules/interface-wsdl-xml/src/main/resources/interface-wsdlxml-validation-messages.properties Sun Nov 30 17:50:28 2008
@@ -19,6 +19,6 @@
 #
 #
 ContributionReadException = ContributionReadException occured due to :
-ContributionResolveException = ContributionResolveException occured due to :
+ContributionResolveException = Error in contribution: {0}
 InvalidWSDLInterfaceAttr = Invalid WSDL interface attribute: {0}
-WsdlInterfaceDoesNotMatch = The #wsdl.interface({0}) specified does not match with WSDL Definitions
\ No newline at end of file
+WsdlInterfaceDoesNotMatch = The #wsdl.interface({0}) specified does not match with WSDL Definitions

Modified: tuscany/branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java?rev=721944&r1=721943&r2=721944&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java (original)
+++ tuscany/branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java Sun Nov 30 17:50:28 2008
@@ -165,6 +165,8 @@
 
             ConfiguredNodeImplementation config = findNodeConfiguration(compositeURI, classLoader);
             configureNode(config);
+        } catch (ServiceRuntimeException e) {
+            throw e;
         } catch (Throwable e) {
             throw new ServiceRuntimeException(e);
         }

Modified: tuscany/branches/sca-java-1.x/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java?rev=721944&r1=721943&r2=721944&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java (original)
+++ tuscany/branches/sca-java-1.x/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java Sun Nov 30 17:50:28 2008
@@ -156,7 +156,17 @@
             if (definition.getLocation() != null) {
                 uri = definition.getLocation().toString();
             }
-            XmlSchema schema = schemaCollection.read(definition.getDocument(), uri, null);
+            XmlSchema schema = null;
+            try {
+                schema = schemaCollection.read(definition.getDocument(), uri, null);
+            } catch (RuntimeException e) {
+                // find original cause of the problem
+                Throwable cause = e;
+                while (cause.getCause() != null) {
+                    cause = cause.getCause();
+                }
+                throw new ContributionRuntimeException(cause);
+            }
             definition.setSchemaCollection(schemaCollection);
             definition.setSchema(schema);
             definition.setUnresolved(false);
@@ -168,17 +178,35 @@
             // Read an XSD document
             InputSource xsd = XMLDocumentHelper.getInputSource(definition.getLocation().toURL());
             for (XmlSchema d : schemaCollection.getXmlSchemas()) {
-                if (d.getTargetNamespace().equals(definition.getNamespace())) {
+                if (isSameNamespace(d.getTargetNamespace(), definition.getNamespace())) {
                     if (d.getSourceURI().equals(definition.getLocation().toString()))
                         return;
                 }
             }
-            XmlSchema schema = schemaCollection.read(xsd, null);
+            XmlSchema schema = null;
+            try {
+                schema = schemaCollection.read(xsd, null);
+            } catch (RuntimeException e) {
+                // find original cause of the problem
+                Throwable cause = e;
+                while (cause.getCause() != null) {
+                    cause = cause.getCause();
+                }
+                throw new ContributionRuntimeException(cause);
+            }
             definition.setSchemaCollection(schemaCollection);
             definition.setSchema(schema);
         }
     }
 
+    private boolean isSameNamespace(String ns1, String ns2) {
+        if (ns1 == null) {
+            return ns2 == null;
+        } else {
+            return ns1.equals(ns2);
+        }
+    }
+
     /**
      * Create a facade XmlSchema which includes all the definitions
      * 
@@ -249,9 +277,7 @@
             this.contribution = contribution;
         }
 
-        public org.xml.sax.InputSource resolveEntity(java.lang.String targetNamespace,
-                                                     java.lang.String schemaLocation,
-                                                     java.lang.String baseUri) {
+        public InputSource resolveEntity(String targetNamespace, String schemaLocation, String baseUri) {
             try {
                 if (schemaLocation == null) {
                     return null;
@@ -266,12 +292,19 @@
                             break;
                         }
                     }
+                    if (url == null) {
+                        // URI not found in the contribution; return a default InputSource
+                        // so that the XmlSchema code will produce a useful diagnostic
+                        return new InputSource(schemaLocation);
+                    }
                 } else {
                     url = new URL(new URL(baseUri), schemaLocation);
                 }
                 return XMLDocumentHelper.getInputSource(url);
             } catch (IOException e) {
-                return null;
+                // Invalid URI; return a default InputSource so that the
+                // XmlSchema code will produce a useful diagnostic
+                return new InputSource(schemaLocation);
             }
         }
     }