You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by ri...@apache.org on 2007/02/23 20:17:55 UTC

svn commit: r511057 - in /incubator/tuscany/branches/sca-java-integration/sca: extensions/axis2/databinding/src/main/java/org/apache/tuscany/databinding/axiom/ extensions/axis2/databinding/src/test/java/org/apache/tuscany/databinding/axiom/ kernel/core...

Author: rineholt
Date: Fri Feb 23 11:17:53 2007
New Revision: 511057

URL: http://svn.apache.org/viewvc?view=rev&rev=511057
Log:
[sca-java-integration] fixes for Exception faults with wsdl contract


Added:
    incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/ServiceFaultException.java   (with props)
Removed:
    incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/databinding/src/main/java/org/apache/tuscany/databinding/axiom/AxiomFaultException.java
Modified:
    incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/databinding/src/main/java/org/apache/tuscany/databinding/axiom/AxiomExceptionHandler.java
    incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/databinding/src/test/java/org/apache/tuscany/databinding/axiom/AxiomExceptionHandlerTestCase.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingInteceptor.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/databinding/ExceptionHandler.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-jaxb/src/main/java/org/apache/tuscany/databinding/jaxb/JAXBExceptionHandler.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBExceptionHandlerTestCase.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOExceptionHandler.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDOExceptionHandlerTestCase.java
    incubator/tuscany/branches/sca-java-integration/sca/services/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/WSDLOperation.java

Modified: incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/databinding/src/main/java/org/apache/tuscany/databinding/axiom/AxiomExceptionHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/databinding/src/main/java/org/apache/tuscany/databinding/axiom/AxiomExceptionHandler.java?view=diff&rev=511057&r1=511056&r2=511057
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/databinding/src/main/java/org/apache/tuscany/databinding/axiom/AxiomExceptionHandler.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/databinding/src/main/java/org/apache/tuscany/databinding/axiom/AxiomExceptionHandler.java Fri Feb 23 11:17:53 2007
@@ -21,6 +21,7 @@
 
 import org.apache.axiom.om.OMElement;
 import org.apache.tuscany.spi.databinding.ExceptionHandler;
+import org.apache.tuscany.spi.idl.ServiceFaultException;
 import org.apache.tuscany.spi.idl.XMLType;
 import org.apache.tuscany.spi.model.DataType;
 
@@ -32,21 +33,25 @@
 public class AxiomExceptionHandler implements ExceptionHandler {
 
     public Exception createException(DataType<DataType> exceptionType, String message, Object faultInfo, Throwable cause) {
-        return new AxiomFaultException(message, (OMElement)faultInfo, cause);
+        return new ServiceFaultException(message, (OMElement)faultInfo, cause);
     }
 
     public Object getFaultInfo(Exception exception) {
         if (exception == null) {
             return null;
         }
-        AxiomFaultException faultException = (AxiomFaultException)exception;
+        ServiceFaultException faultException = (ServiceFaultException)exception;
         return faultException.getFaultInfo();
 
     }
 
-    public DataType<?> getFaultType(Class<? extends Exception> exceptionType) {
-        if (AxiomFaultException.class == exceptionType) {
-            DataType<XMLType> faultType = new DataType<XMLType>(AxiomDataBinding.NAME, OMElement.class, XMLType.UNKNOWN);
+    public DataType<?> getFaultType(DataType exceptionType) {
+        if (ServiceFaultException.class == exceptionType.getPhysical()) {
+            XMLType type = XMLType.UNKNOWN;
+            if(exceptionType.getLogical() instanceof XMLType) {
+                type = (XMLType) exceptionType.getLogical();
+            }
+            DataType<XMLType> faultType = new DataType<XMLType>(AxiomDataBinding.NAME, OMElement.class, type);
             return faultType;
         } else {
             return null;

Modified: incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/databinding/src/test/java/org/apache/tuscany/databinding/axiom/AxiomExceptionHandlerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/databinding/src/test/java/org/apache/tuscany/databinding/axiom/AxiomExceptionHandlerTestCase.java?view=diff&rev=511057&r1=511056&r2=511057
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/databinding/src/test/java/org/apache/tuscany/databinding/axiom/AxiomExceptionHandlerTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/databinding/src/test/java/org/apache/tuscany/databinding/axiom/AxiomExceptionHandlerTestCase.java Fri Feb 23 11:17:53 2007
@@ -28,6 +28,7 @@
 
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.tuscany.spi.idl.ServiceFaultException;
 import org.apache.tuscany.spi.idl.XMLType;
 import org.apache.tuscany.spi.model.DataType;
 
@@ -80,25 +81,25 @@
     }
 
     public void testGetFaultType() {
-        DataType<?> dataType = handler.getFaultType(AxiomFaultException.class);
+        DataType<?> dataType = handler.getFaultType(new DataType<XMLType>(ServiceFaultException.class, null));
         assertEquals(OMElement.class, dataType.getPhysical());
         assertEquals(XMLType.UNKNOWN, dataType.getLogical());
         assertEquals(AxiomDataBinding.NAME, dataType.getDataBinding());
-        dataType = handler.getFaultType(Exception.class);
+        dataType = handler.getFaultType(new DataType<XMLType>(Exception.class, null));
         assertNull(dataType);
     }
 
     public void testCreate() {
 
         Exception ex = handler.createException(null, "Order", faultElement, null);
-        assertTrue(ex instanceof AxiomFaultException);
-        AxiomFaultException exception = (AxiomFaultException)ex;
+        assertTrue(ex instanceof ServiceFaultException);
+        ServiceFaultException exception = (ServiceFaultException)ex;
         assertEquals("Order", exception.getMessage());
         assertSame(faultElement, exception.getFaultInfo());
     }
 
     public void testGetFaultInfo() {
-        AxiomFaultException exception = new AxiomFaultException("Order", faultElement, null);
+        ServiceFaultException exception = new ServiceFaultException("Order", faultElement, null);
         Object faultInfo = handler.getFaultInfo(exception);
         assertSame(faultElement, faultInfo);
     }

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingInteceptor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingInteceptor.java?view=diff&rev=511057&r1=511056&r2=511057
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingInteceptor.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingInteceptor.java Fri Feb 23 11:17:53 2007
@@ -174,7 +174,7 @@
         if (targetHandler == null) {
             return null;
         }
-        return targetHandler.getFaultType((Class)exceptionType.getPhysical());
+        return targetHandler.getFaultType(exceptionType);
     }
 
     /**

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/databinding/ExceptionHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/databinding/ExceptionHandler.java?view=diff&rev=511057&r1=511056&r2=511057
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/databinding/ExceptionHandler.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/databinding/ExceptionHandler.java Fri Feb 23 11:17:53 2007
@@ -50,8 +50,8 @@
     /**
      * Introspect an exception class to figure out the fault data type
      * 
-     * @param exceptionType The exception class
+     * @param exceptionDataType The exception class
      * @return The data type for the fault
      */
-    DataType<?> getFaultType(Class<? extends Exception> exceptionType);
+    DataType<?> getFaultType(DataType exceptionDataType);
 }

Added: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/ServiceFaultException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/ServiceFaultException.java?view=auto&rev=511057
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/ServiceFaultException.java (added)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/ServiceFaultException.java Fri Feb 23 11:17:53 2007
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.spi.idl;
+
+import org.apache.tuscany.api.TuscanyException;
+
+/**
+ * The generic java exception to wrap service faults 
+ * 
+ * @version $Rev$ $Date$
+ */
+public class ServiceFaultException extends TuscanyException {
+    private static final long serialVersionUID = -8002583655240625792L;
+    private Object faultInfo;
+
+    /**
+     * @param message
+     * @param faultInfo
+     */
+    public ServiceFaultException(String message, Object faultInfo) {
+        super(message);
+        this.faultInfo = faultInfo;
+    }
+
+    /**
+     * @param message
+     * @param faultInfo
+     * @param cause
+     */
+    public ServiceFaultException(String message, Object faultInfo, Throwable cause) {
+        super(message, cause);
+        this.faultInfo = faultInfo;
+    }
+
+    /**
+     * @return the faultInfo
+     */
+    public Object getFaultInfo() {
+        return faultInfo;
+    }
+
+}

Propchange: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/ServiceFaultException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/ServiceFaultException.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-jaxb/src/main/java/org/apache/tuscany/databinding/jaxb/JAXBExceptionHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-jaxb/src/main/java/org/apache/tuscany/databinding/jaxb/JAXBExceptionHandler.java?view=diff&rev=511057&r1=511056&r2=511057
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-jaxb/src/main/java/org/apache/tuscany/databinding/jaxb/JAXBExceptionHandler.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-jaxb/src/main/java/org/apache/tuscany/databinding/jaxb/JAXBExceptionHandler.java Fri Feb 23 11:17:53 2007
@@ -76,7 +76,8 @@
         }
     }
 
-    public DataType<?> getFaultType(Class<? extends Exception> exceptionType) {
+    public DataType<?> getFaultType(DataType exDataType) {
+        Class<?> exceptionType  = (Class) exDataType.getPhysical();
         WebFault webFault = exceptionType.getAnnotation(WebFault.class);
         if (webFault == null) {
             return null;

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBExceptionHandlerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBExceptionHandlerTestCase.java?view=diff&rev=511057&r1=511056&r2=511057
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBExceptionHandlerTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBExceptionHandlerTestCase.java Fri Feb 23 11:17:53 2007
@@ -44,14 +44,16 @@
     }
 
     public void testGetFaultType() {
-        DataType<?> dataType = handler.getFaultType(InvalidSymbolFault_Exception.class);
+        DataType exType = new DataType<XMLType>(InvalidSymbolFault_Exception.class, XMLType.UNKNOWN);
+        DataType<?> dataType = handler.getFaultType(exType);
         assertEquals(InvalidSymbolFault.class, dataType.getPhysical());
         assertEquals(ELEMENT, ((XMLType) dataType.getLogical()).getElementName());
         assertEquals(JAXBDataBinding.NAME, dataType.getDataBinding());
     }
 
     public void testCreate() {
-        DataType<?> faultType = handler.getFaultType(InvalidSymbolFault_Exception.class);
+        DataType execType = new DataType<XMLType>(InvalidSymbolFault_Exception.class, XMLType.UNKNOWN);
+        DataType<?> faultType = handler.getFaultType(execType);
         InvalidSymbolFault fault = new InvalidSymbolFault();
         fault.setMessage("ABC");
         fault.setSymbol("IBM0");

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOExceptionHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOExceptionHandler.java?view=diff&rev=511057&r1=511056&r2=511057
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOExceptionHandler.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOExceptionHandler.java Fri Feb 23 11:17:53 2007
@@ -83,7 +83,8 @@
         }
     }
 
-    public DataType<?> getFaultType(Class<? extends Exception> exceptionType) {
+    public DataType<?> getFaultType(DataType exceptionDataType) {
+        Class exceptionType = (Class) exceptionDataType.getPhysical();
         Class faultBeanClass = null;
         try {
             Method method = exceptionType.getMethod("getFaultInfo", EMPTY_CLASS_ARRAY);

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDOExceptionHandlerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDOExceptionHandlerTestCase.java?view=diff&rev=511057&r1=511056&r2=511057
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDOExceptionHandlerTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDOExceptionHandlerTestCase.java Fri Feb 23 11:17:53 2007
@@ -48,14 +48,16 @@
     }
 
     public void testGetFaultType() {
-        DataType<?> dataType = handler.getFaultType(InvalidSymbolFault_Exception.class);
+        DataType execType = new DataType<XMLType>(InvalidSymbolFault_Exception.class, XMLType.UNKNOWN);
+        DataType<?> dataType = handler.getFaultType(execType);
         assertEquals(InvalidSymbolFault.class, dataType.getPhysical());
         assertEquals(InvalidSymbolFault_Exception.FAULT_ELEMENT, ((XMLType) dataType.getLogical()).getElementName());
         assertEquals(SDODataBinding.NAME, dataType.getDataBinding());
     }
 
     public void testCreate() {
-        DataType<?> faultType = handler.getFaultType(InvalidSymbolFault_Exception.class);
+        DataType execType = new DataType<XMLType>(InvalidSymbolFault_Exception.class, XMLType.UNKNOWN);
+        DataType<?> faultType = handler.getFaultType(execType);
         InvalidSymbolFault fault = StockFactory.INSTANCE.createInvalidSymbolFault();
         fault.setMessage("ABC");
         fault.setSymbol("IBM0");

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/WSDLOperation.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/WSDLOperation.java?view=diff&rev=511057&r1=511056&r2=511057
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/WSDLOperation.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/WSDLOperation.java Fri Feb 23 11:17:53 2007
@@ -34,6 +34,7 @@
 import org.apache.tuscany.spi.databinding.DataBinding;
 import org.apache.tuscany.spi.idl.ElementInfo;
 import org.apache.tuscany.spi.idl.InvalidServiceContractException;
+import org.apache.tuscany.spi.idl.ServiceFaultException;
 import org.apache.tuscany.spi.idl.TypeInfo;
 import org.apache.tuscany.spi.idl.XMLType;
 import org.apache.tuscany.spi.model.WrapperInfo;
@@ -132,7 +133,7 @@
                     throw new NotSupportedWSDLException("Multi-part output is not supported");
                 }
                 Part part = (Part)outputParts.get(0);
-                outputType = new WSDLPart(part).getDataType();
+                outputType = new WSDLPart(part, Object.class).getDataType();
                 // outputType.setMetadata(WSDLOperation.class.getName(), this);
             }
         }
@@ -155,7 +156,7 @@
                     throw new NotSupportedWSDLException("The fault message MUST have a single part");
                 }
                 Part part = (Part)faultParts.get(0);
-                WSDLPart wsdlPart = new WSDLPart(part);
+                WSDLPart wsdlPart = new WSDLPart(part, ServiceFaultException.class);
                 faultTypes.add(wsdlPart.getDataType());
             }
         }
@@ -167,7 +168,7 @@
         if (message != null) {
             Collection parts = message.getOrderedParts(null);
             for (Object p : parts) {
-                WSDLPart part = new WSDLPart((Part)p);
+                WSDLPart part = new WSDLPart((Part)p, Object.class);
                 DataType<XMLType> partType = part.getDataType();
                 partTypes.add(partType);
             }
@@ -221,7 +222,7 @@
 
         private DataType<XMLType> dataType;
 
-        public WSDLPart(Part part) throws InvalidWSDLException {
+        public WSDLPart(Part part, Class javaType) throws InvalidWSDLException {
             this.part = part;
             QName elementName = part.getElementName();
             if (elementName != null) {
@@ -244,7 +245,7 @@
                     element.setSchemaTypeName(type.getQName());
                 }
             }
-            dataType = new DataType<XMLType>(dataBinding, Object.class, new XMLType(getElementInfo(element)));
+            dataType = new DataType<XMLType>(dataBinding, javaType, new XMLType(getElementInfo(element)));
             // dataType.setMetadata(WSDLPart.class.getName(), this);
             // dataType.setMetadata(ElementInfo.class.getName(), getElementInfo(element));
         }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org