You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2008/02/21 05:11:18 UTC

svn commit: r629687 [1/2] - in /incubator/tuscany/java/sca: itest/databindings/sdogen/ itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/ itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/t...

Author: rfeng
Date: Wed Feb 20 20:11:14 2008
New Revision: 629687

URL: http://svn.apache.org/viewvc?rev=629687&view=rev
Log:
Fix for TUSCANY-1206 (Some of the ideas are from Scott's patch. Thank you, Scott.)

Added:
    incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSFaultExceptionMapper.java   (with props)
    incubator/tuscany/java/sca/modules/interface-java-jaxws/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxws/Bean.java   (with props)
    incubator/tuscany/java/sca/modules/interface-java-jaxws/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxws/Bean1.java   (with props)
    incubator/tuscany/java/sca/modules/interface-java-jaxws/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxws/Bean2.java   (with props)
    incubator/tuscany/java/sca/modules/interface-java-jaxws/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxws/MyServiceImpl.java   (with props)
    incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/FaultExceptionMapper.java   (with props)
Removed:
    incubator/tuscany/java/sca/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/AxiomExceptionHandler.java
    incubator/tuscany/java/sca/modules/databinding-axiom/src/test/java/org/apache/tuscany/sca/databinding/axiom/AxiomExceptionHandlerTestCase.java
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBExceptionHandler.java
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXWSJavaInterfaceProcessor.java
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/resources/META-INF/services/org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBExceptionHandlerTestCase.java
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXWSJavaInterfaceProcessorTestCase.java
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/fault/
    incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOExceptionHandler.java
    incubator/tuscany/java/sca/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDOExceptionHandlerTestCase.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/ExceptionHandler.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/JavaBeansExceptionHandler.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/JavaExceptionExceptionHandler.java
    incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/resources/META-INF/
Modified:
    incubator/tuscany/java/sca/itest/databindings/sdogen/pom.xml
    incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDOImpl.java
    incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/InvalidSymbolSDOException.java
    incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/MarketClosedSDOException.java
    incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/StockExceptionTest.java
    incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/test/java/org/apache/tuscany/sca/test/exceptions/IntraCompositeTestCase.java
    incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDOImpl.java
    incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/InvalidSymbolSDOException.java
    incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/MarketClosedSDOException.java
    incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/StockExceptionTest.java
    incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/test/java/org/apache/tuscany/sca/test/exceptions/IntraCompositeTestCase.java
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingInvoker.java
    incubator/tuscany/java/sca/modules/core-databinding/pom.xml
    incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java
    incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Exception2ExceptionTransformer.java
    incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java
    incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataTransformationInterceptor.java
    incubator/tuscany/java/sca/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/AxiomDataBinding.java
    incubator/tuscany/java/sca/modules/databinding-axiom/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer
    incubator/tuscany/java/sca/modules/databinding-jaxb/pom.xml
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextHelper.java
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBinding.java
    incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DataBinding.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/annotation/DataBinding.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/annotation/DataType.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/BaseDataBinding.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/DirectedGraph.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/JavaBeansDataBinding.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/JavaExceptionDataBinding.java
    incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/impl/DirectedGraphTestCase.java
    incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JavaIntrospectionHelper.java
    incubator/tuscany/java/sca/modules/interface-java-jaxws/pom.xml
    incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java
    incubator/tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java
    incubator/tuscany/java/sca/modules/interface-java/src/test/java/org/apache/tuscany/sca/interfacedef/java/introspection/impl/JavaInterfaceProcessorRegistryImplTestCase.java
    incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLOperationIntrospectorImpl.java
    incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java
    incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/util/FaultException.java
    incubator/tuscany/java/sca/modules/pom.xml
    incubator/tuscany/java/sca/tools/wsdl2java/pom.xml
    incubator/tuscany/java/sca/tools/wsdl2java/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceGenerator.java

Modified: incubator/tuscany/java/sca/itest/databindings/sdogen/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/databindings/sdogen/pom.xml?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/databindings/sdogen/pom.xml (original)
+++ incubator/tuscany/java/sca/itest/databindings/sdogen/pom.xml Wed Feb 20 20:11:14 2008
@@ -38,7 +38,7 @@
             </snapshots>
             <id>java.net</id>
             <name>java.net Maven 1.x Repository</name>
-            <url>https://maven-repository.dev.java.net/nonav/repository</url>
+            <url>http://download.java.net/maven/1</url>
             <layout>legacy</layout>
         </repository>
     </repositories>
@@ -50,7 +50,7 @@
             </snapshots>
             <id>java.net</id>
             <name>java.net Maven 1.x Repository</name>
-            <url>https://maven-repository.dev.java.net/repository</url>
+            <url>http://download.java.net/maven/1</url>
             <layout>legacy</layout>
         </pluginRepository>
     </pluginRepositories>

Modified: incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDOImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDOImpl.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDOImpl.java (original)
+++ incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDOImpl.java Wed Feb 20 20:11:14 2008
@@ -90,9 +90,6 @@
         try {
             StockOffer stockOfferAccepted = exchangeJaxb.stockQuoteOffer(stockOffer);
             stockOfferAccepted.getPrice(); // the price actually bought.
-        } catch (RemoteException e) {
-
-            e.printStackTrace();
         } catch (InvalidSymbolSDOException e) {
 
             e.printStackTrace();

Modified: incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/InvalidSymbolSDOException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/InvalidSymbolSDOException.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/InvalidSymbolSDOException.java (original)
+++ incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/InvalidSymbolSDOException.java Wed Feb 20 20:11:14 2008
@@ -19,18 +19,17 @@
 
 package org.apache.tuscany.sca.test.exceptions.sdohandgen;
 
-import javax.xml.namespace.QName;
+import javax.xml.ws.WebFault;
 
 import stockexceptiontestservice.scatesttool.InvalidSymbolFault;
 
 /**
  * 
  */
+@WebFault(name="InvalidSymbolFault", targetNamespace="http://scatesttool.stockexceptiontestservice")
 public class InvalidSymbolSDOException extends Exception {
     private static final long serialVersionUID = -3824848763300476741L;
     
-    public static final QName FAULT_ELEMENT = new QName("http://scatesttool.stockexceptiontestservice", "InvalidSymbolFault");
-
     /**
      * 
      */

Modified: incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/MarketClosedSDOException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/MarketClosedSDOException.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/MarketClosedSDOException.java (original)
+++ incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/MarketClosedSDOException.java Wed Feb 20 20:11:14 2008
@@ -19,16 +19,14 @@
 
 package org.apache.tuscany.sca.test.exceptions.sdohandgen;
 
-import javax.xml.namespace.QName;
+import javax.xml.ws.WebFault;
 
 /**
  * 
  */
+@WebFault(name="MarketClosedFault", targetNamespace="http://scatesttool.stockexceptiontestservice")
 public class MarketClosedSDOException extends Exception {
     private static final long serialVersionUID = 7652466275656958031L;
-
-    public static final QName FAULT_ELEMENT =
-               new QName("http://scatesttool.stockexceptiontestservice", "MarketClosedFault");
 
 
     /**

Modified: incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/StockExceptionTest.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/StockExceptionTest.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/StockExceptionTest.java (original)
+++ incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/StockExceptionTest.java Wed Feb 20 20:11:14 2008
@@ -40,7 +40,6 @@
      * 
      * @param param0
      */
-    StockOffer stockQuoteOffer(StockOffer param0)
-        throws java.rmi.RemoteException, InvalidSymbolSDOException, MarketClosedSDOException;
+    StockOffer stockQuoteOffer(StockOffer param0) throws InvalidSymbolSDOException, MarketClosedSDOException;
 
 }

Modified: incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/test/java/org/apache/tuscany/sca/test/exceptions/IntraCompositeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/test/java/org/apache/tuscany/sca/test/exceptions/IntraCompositeTestCase.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/test/java/org/apache/tuscany/sca/test/exceptions/IntraCompositeTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/exceptions-cross-binding-ws/src/test/java/org/apache/tuscany/sca/test/exceptions/IntraCompositeTestCase.java Wed Feb 20 20:11:14 2008
@@ -18,13 +18,12 @@
  */
 package org.apache.tuscany.sca.test.exceptions;
 
-import java.lang.reflect.UndeclaredThrowableException;
-
 import junit.framework.TestCase;
 
 import org.apache.tuscany.sca.host.embedded.SCADomain;
 import org.apache.tuscany.sca.test.exceptions.impl.StockTraderSDO;
 import org.apache.tuscany.sca.test.exceptions.sdohandgen.InvalidSymbolSDOException;
+import org.osoa.sca.ServiceRuntimeException;
 
 import stockexceptiontestservice.scatesttool.InvalidSymbolFault;
 import stockexceptiontestservice.scatesttool.StockOffer;
@@ -73,7 +72,7 @@
 
         assertNotNull(ret);
 
-        assertEquals(UndeclaredThrowableException.class, ret.getClass());
+        assertEquals(ServiceRuntimeException.class, ret.getClass());
 
     }
     
@@ -83,7 +82,7 @@
 
         assertNotNull(ret);
 
-        assertEquals(UndeclaredThrowableException.class, ret.getClass());
+        assertEquals(ServiceRuntimeException.class, ret.getClass());
 
     }
 

Modified: incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDOImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDOImpl.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDOImpl.java (original)
+++ incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDOImpl.java Wed Feb 20 20:11:14 2008
@@ -90,9 +90,6 @@
         try {
             StockOffer stockOfferAccepted = exchangeJaxb.stockQuoteOffer(stockOffer);
             stockOfferAccepted.getPrice(); // the price actually bought.
-        } catch (RemoteException e) {
-
-            e.printStackTrace();
         } catch (InvalidSymbolSDOException e) {
 
             e.printStackTrace();

Modified: incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/InvalidSymbolSDOException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/InvalidSymbolSDOException.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/InvalidSymbolSDOException.java (original)
+++ incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/InvalidSymbolSDOException.java Wed Feb 20 20:11:14 2008
@@ -19,18 +19,17 @@
 
 package org.apache.tuscany.sca.test.exceptions.sdohandgen;
 
-import javax.xml.namespace.QName;
+import javax.xml.ws.WebFault;
 
 import stockexceptiontestservice.scatesttool.InvalidSymbolFault;
 
 /**
  * 
  */
+@WebFault(name="InvalidSymbolFault", targetNamespace="http://scatesttool.stockexceptiontestservice")
 public class InvalidSymbolSDOException extends Exception {
     private static final long serialVersionUID = -3824848763300476741L;
     
-    public static final QName FAULT_ELEMENT = new QName("http://scatesttool.stockexceptiontestservice", "InvalidSymbolFault");
-
     /**
      * 
      */

Modified: incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/MarketClosedSDOException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/MarketClosedSDOException.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/MarketClosedSDOException.java (original)
+++ incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/MarketClosedSDOException.java Wed Feb 20 20:11:14 2008
@@ -19,17 +19,14 @@
 
 package org.apache.tuscany.sca.test.exceptions.sdohandgen;
 
-import javax.xml.namespace.QName;
+import javax.xml.ws.WebFault;
 
 /**
  * 
  */
+@WebFault(name="MarketClosedFault", targetNamespace="http://scatesttool.stockexceptiontestservice")
 public class MarketClosedSDOException extends Exception {
     private static final long serialVersionUID = 7652466275656958031L;
-
-    public static final QName FAULT_ELEMENT =
-               new QName("http://scatesttool.stockexceptiontestservice", "MarketClosedFault");
-
 
     /**
      * Java type that goes as soapenv:Fault detail element.

Modified: incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/StockExceptionTest.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/StockExceptionTest.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/StockExceptionTest.java (original)
+++ incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/StockExceptionTest.java Wed Feb 20 20:11:14 2008
@@ -40,7 +40,6 @@
      * 
      * @param param0
      */
-    StockOffer stockQuoteOffer(StockOffer param0)
-        throws java.rmi.RemoteException, InvalidSymbolSDOException, MarketClosedSDOException;
+    StockOffer stockQuoteOffer(StockOffer param0) throws InvalidSymbolSDOException, MarketClosedSDOException;
 
 }

Modified: incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/test/java/org/apache/tuscany/sca/test/exceptions/IntraCompositeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/test/java/org/apache/tuscany/sca/test/exceptions/IntraCompositeTestCase.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/test/java/org/apache/tuscany/sca/test/exceptions/IntraCompositeTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/exceptions-cross-binding/src/test/java/org/apache/tuscany/sca/test/exceptions/IntraCompositeTestCase.java Wed Feb 20 20:11:14 2008
@@ -20,10 +20,10 @@
 
 import junit.framework.TestCase;
 
-import org.apache.tuscany.sca.databinding.TransformationException;
 import org.apache.tuscany.sca.host.embedded.SCADomain;
 import org.apache.tuscany.sca.test.exceptions.impl.StockTraderSDO;
 import org.apache.tuscany.sca.test.exceptions.sdohandgen.InvalidSymbolSDOException;
+import org.osoa.sca.ServiceRuntimeException;
 
 import stockexceptiontestservice.scatesttool.InvalidSymbolFault;
 import stockexceptiontestservice.scatesttool.StockOffer;
@@ -73,7 +73,7 @@
 
         assertNotNull(ret);
 
-        assertEquals(TransformationException.class, ret.getClass());
+        assertEquals(ServiceRuntimeException.class, ret.getClass());
 
     }
 

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingInvoker.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingInvoker.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingInvoker.java Wed Feb 20 20:11:14 2008
@@ -71,14 +71,16 @@
         this.soapFactory = soapFactory;
     }
 
+    private final static QName EXCEPTION = new QName("", "Exception");
+    
     public Message invoke(Message msg) {
         try {
             Object resp = invokeTarget(msg);
             msg.setBody(resp);
         } catch (AxisFault e) {
-            if (e.getDetail() != null) {
-                FaultException f = new FaultException(e.getMessage(), e.getDetail());
-                f.setLogical(e.getDetail().getQName());
+            if (e.getDetail() != null ) {
+                FaultException f = new FaultException(e.getMessage(), e.getDetail(), e);
+                f.setFaultName(e.getDetail().getQName());
                 msg.setFaultBody(f);
             } else {
                 msg.setFaultBody(e);

Modified: incubator/tuscany/java/sca/modules/core-databinding/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-databinding/pom.xml?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core-databinding/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/core-databinding/pom.xml Wed Feb 20 20:11:14 2008
@@ -58,7 +58,14 @@
             <version>${project.version}</version>
             <scope>compile</scope>
         </dependency>
-        
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-interface-java-jaxws</artifactId>
+            <version>${project.version}</version>
+            <scope>compile</scope>
+        </dependency>
+                
         <dependency>
             <groupId>org.codehaus.woodstox</groupId>
             <artifactId>wstx-asl</artifactId>

Modified: incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java (original)
+++ incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java Wed Feb 20 20:11:14 2008
@@ -32,7 +32,10 @@
 import org.apache.tuscany.sca.databinding.TransformerExtensionPoint;
 import org.apache.tuscany.sca.databinding.impl.Group2GroupTransformer;
 import org.apache.tuscany.sca.databinding.impl.MediatorImpl;
+import org.apache.tuscany.sca.interfacedef.FaultExceptionMapper;
 import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
+import org.apache.tuscany.sca.interfacedef.java.jaxws.JAXWSFaultExceptionMapper;
+import org.apache.tuscany.sca.interfacedef.java.jaxws.JAXWSJavaInterfaceProcessor;
 import org.apache.tuscany.sca.runtime.RuntimeWireProcessorExtensionPoint;
 
 /**
@@ -43,6 +46,8 @@
     public void start(ExtensionPointRegistry registry) {
         DataBindingExtensionPoint dataBindings = registry.getExtensionPoint(DataBindingExtensionPoint.class);
         TransformerExtensionPoint transformers = registry.getExtensionPoint(TransformerExtensionPoint.class);
+        FaultExceptionMapper faultExceptionMapper = new JAXWSFaultExceptionMapper(dataBindings);
+        registry.addExtensionPoint(faultExceptionMapper);
         
         MediatorImpl mediator = new MediatorImpl(dataBindings, transformers);
         Input2InputTransformer input2InputTransformer = new Input2InputTransformer();
@@ -53,9 +58,8 @@
         output2OutputTransformer.setMediator(mediator);
         transformers.addTransformer(output2OutputTransformer, true);
 
-        Exception2ExceptionTransformer exception2ExceptionTransformer = new Exception2ExceptionTransformer();
-        exception2ExceptionTransformer.setMediator(mediator);
-        transformers.addTransformer(exception2ExceptionTransformer, true);
+        Exception2ExceptionTransformer exception2ExceptionTransformer = new Exception2ExceptionTransformer(mediator, faultExceptionMapper);
+        transformers.addTransformer(exception2ExceptionTransformer, false);
         
         Array2ArrayTransformer array2ArrayTransformer = new Array2ArrayTransformer();
         array2ArrayTransformer.setMediator(mediator);
@@ -67,13 +71,18 @@
 
         ModelFactoryExtensionPoint modelFactories = registry.getExtensionPoint(ModelFactoryExtensionPoint.class);
         JavaInterfaceFactory javaFactory = modelFactories.getFactory(JavaInterfaceFactory.class);
+
+        // [rfeng] The JAX-WS processor should come before the Databinding processor to make sure @WebService
+        // is honored as Remoteable
+        javaFactory.addInterfaceVisitor(new JAXWSJavaInterfaceProcessor(faultExceptionMapper));
+
         javaFactory.addInterfaceVisitor(new DataBindingJavaInterfaceProcessor(dataBindings));
 
         RuntimeWireProcessorExtensionPoint wireProcessorExtensionPoint = registry.getExtensionPoint(RuntimeWireProcessorExtensionPoint.class);
         if (wireProcessorExtensionPoint != null) {
-            wireProcessorExtensionPoint.addWireProcessor(new DataBindingRuntimeWireProcessor(mediator, dataBindings));
+            wireProcessorExtensionPoint.addWireProcessor(new DataBindingRuntimeWireProcessor(mediator, dataBindings, faultExceptionMapper));
         }
-
+        
     }
 
     public void stop(ExtensionPointRegistry registry) {

Modified: incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Exception2ExceptionTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Exception2ExceptionTransformer.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Exception2ExceptionTransformer.java (original)
+++ incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Exception2ExceptionTransformer.java Wed Feb 20 20:11:14 2008
@@ -20,22 +20,28 @@
 package org.apache.tuscany.sca.core.databinding.transformers;
 
 import org.apache.tuscany.sca.databinding.DataBinding;
-import org.apache.tuscany.sca.databinding.ExceptionHandler;
 import org.apache.tuscany.sca.databinding.Mediator;
 import org.apache.tuscany.sca.databinding.PullTransformer;
 import org.apache.tuscany.sca.databinding.TransformationContext;
 import org.apache.tuscany.sca.databinding.impl.BaseTransformer;
 import org.apache.tuscany.sca.interfacedef.DataType;
-import org.osoa.sca.annotations.Reference;
+import org.apache.tuscany.sca.interfacedef.FaultExceptionMapper;
 
 /**
  * This is a special transformer to transform the exception from one IDL to the
  * other one
  */
 public class Exception2ExceptionTransformer extends BaseTransformer<Object[], Object[]> implements
-    PullTransformer<Exception, Exception> {
+    PullTransformer<Throwable, Throwable> {
 
     protected Mediator mediator;
+    protected FaultExceptionMapper faultExceptionMapper;
+
+    public Exception2ExceptionTransformer(Mediator mediator, FaultExceptionMapper faultExceptionMapper) {
+        super();
+        this.mediator = mediator;
+        this.faultExceptionMapper = faultExceptionMapper;
+    }
 
     public Exception2ExceptionTransformer() {
         super();
@@ -54,7 +60,6 @@
     /**
      * @param mediator the mediator to set
      */
-    @Reference
     public void setMediator(Mediator mediator) {
         this.mediator = mediator;
     }
@@ -64,7 +69,7 @@
      */
     @Override
     protected Class getSourceType() {
-        return Exception.class;
+        return Throwable.class;
     }
 
     /**
@@ -72,7 +77,7 @@
      */
     @Override
     protected Class getTargetType() {
-        return Exception.class;
+        return Throwable.class;
     }
 
     /**
@@ -84,41 +89,24 @@
     }
 
     @SuppressWarnings("unchecked")
-    public Exception transform(Exception source, TransformationContext context) {
+    public Throwable transform(Throwable source, TransformationContext context) {
         DataType<DataType> sourceType = context.getSourceDataType();
 
         DataType<DataType> targetType = context.getTargetDataType();
 
-        ExceptionHandler exceptionHandler = getExceptionHandler(sourceType);
-        if (exceptionHandler == null) {
-            return source;
-        }
-
-        Object sourceFaultInfo = exceptionHandler.getFaultInfo(source);
+        Object sourceFaultInfo = faultExceptionMapper.getFaultInfo(source, sourceType.getLogical().getPhysical());
         Object targetFaultInfo =
             mediator.mediate(sourceFaultInfo, sourceType.getLogical(), targetType.getLogical(), context.getMetadata());
 
-        ExceptionHandler targetHandler = getExceptionHandler(targetType);
-
-        if (targetHandler != null) {
-            Exception targetException =
-                targetHandler.createException(targetType, source.getMessage(), targetFaultInfo, source.getCause());
-            return targetException;
-        }
+        Throwable targetException =
+            faultExceptionMapper.wrapFaultInfo(targetType, source.getMessage(), targetFaultInfo, source.getCause());
 
         // FIXME
-        return source;
+        return targetException == null ? source : targetException;
 
     }
 
-    private ExceptionHandler getExceptionHandler(DataType<DataType> targetType) {
-        DataType targetFaultType = (DataType)targetType.getLogical();
-        DataBinding targetDataBinding =
-            mediator.getDataBindings().getDataBinding(targetFaultType.getDataBinding());
-        if (targetDataBinding == null) {
-            return null;
-        }
-        ExceptionHandler targetHandler = targetDataBinding.getExceptionHandler();
-        return targetHandler;
+    public void setFaultExceptionMapper(FaultExceptionMapper faultExceptionMapper) {
+        this.faultExceptionMapper = faultExceptionMapper;
     }
 }

Modified: incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java Wed Feb 20 20:11:14 2008
@@ -24,6 +24,7 @@
 import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint;
 import org.apache.tuscany.sca.databinding.Mediator;
 import org.apache.tuscany.sca.interfacedef.DataType;
+import org.apache.tuscany.sca.interfacedef.FaultExceptionMapper;
 import org.apache.tuscany.sca.interfacedef.InterfaceContract;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.invocation.Interceptor;
@@ -40,11 +41,15 @@
 public class DataBindingRuntimeWireProcessor implements RuntimeWireProcessor {
     private Mediator mediator;
     private DataBindingExtensionPoint dataBindings;
+    private FaultExceptionMapper faultExceptionMapper;
 
-    public DataBindingRuntimeWireProcessor(Mediator mediator, DataBindingExtensionPoint dataBindings) {
+    public DataBindingRuntimeWireProcessor(Mediator mediator,
+                                           DataBindingExtensionPoint dataBindings,
+                                           FaultExceptionMapper faultExceptionMapper) {
         super();
         this.mediator = mediator;
         this.dataBindings = dataBindings;
+        this.faultExceptionMapper = faultExceptionMapper;
     }
 
     public boolean isTransformationRequired(DataType source, DataType target) {
@@ -141,7 +146,9 @@
             if (isTransformationRequired(sourceContract, sourceOperation, targetContract, targetOperation)) {
                 // Add the interceptor to the source side because multiple
                 // references can be wired to the same service
-                interceptor = new DataTransformationInterceptor(wire, sourceOperation, targetOperation, mediator);
+                interceptor =
+                    new DataTransformationInterceptor(wire, sourceOperation, targetOperation, mediator,
+                                                      faultExceptionMapper);
             } else {
                 // assume pass-by-values copies are required if interfaces are remotable and there is no data binding
                 // transformation, i.e. a transformation will result in a copy so another pass-by-value copy is unnecessary

Modified: incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataTransformationInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataTransformationInterceptor.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataTransformationInterceptor.java (original)
+++ incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataTransformationInterceptor.java Wed Feb 20 20:11:14 2008
@@ -26,10 +26,9 @@
 import javax.xml.namespace.QName;
 
 import org.apache.tuscany.sca.databinding.DataBinding;
-import org.apache.tuscany.sca.databinding.ExceptionHandler;
 import org.apache.tuscany.sca.databinding.Mediator;
-import org.apache.tuscany.sca.databinding.TransformationException;
 import org.apache.tuscany.sca.interfacedef.DataType;
+import org.apache.tuscany.sca.interfacedef.FaultExceptionMapper;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl;
 import org.apache.tuscany.sca.interfacedef.util.FaultException;
@@ -39,6 +38,7 @@
 import org.apache.tuscany.sca.invocation.Message;
 import org.apache.tuscany.sca.invocation.PassByValueAware;
 import org.apache.tuscany.sca.runtime.RuntimeWire;
+import org.osoa.sca.ServiceRuntimeException;
 
 /**
  * An interceptor to transform data accross databindings on the wire
@@ -53,16 +53,19 @@
     private Operation targetOperation;
     private RuntimeWire wire;
     private Mediator mediator;
+    private FaultExceptionMapper faultExceptionMapper;
 
     public DataTransformationInterceptor(RuntimeWire wire,
                                          Operation sourceOperation,
                                          Operation targetOperation,
-                                         Mediator mediator) {
+                                         Mediator mediator,
+                                         FaultExceptionMapper faultExceptionMapper) {
         super();
         this.sourceOperation = sourceOperation;
         this.targetOperation = targetOperation;
         this.mediator = mediator;
         this.wire = wire;
+        this.faultExceptionMapper = faultExceptionMapper;
     }
 
     public Invoker getNext() {
@@ -107,7 +110,8 @@
                 for (DataType exType : targetOperation.getFaultTypes()) {
                     if (((Class)exType.getPhysical()).isInstance(result)) {
                         if (result instanceof FaultException) {
-                            if (((FaultException)result).isMatchingType(exType.getLogical())) {
+                            DataType faultType = (DataType)exType.getLogical();
+                            if (((FaultException)result).isMatchingType(faultType.getLogical())) {
                                 targetDataType = exType;
                                 break;
                             }
@@ -118,14 +122,18 @@
                     }
                 }
 
+                /*
                 if (targetDataType == null) {
                     // Not a business exception
                     return resultMsg;
                 }
+                */
 
                 DataType targetFaultType = getFaultType(targetDataType);
                 if (targetFaultType == null) {
-                    throw new TransformationException("Target fault type cannot be resolved: " + targetDataType);
+                    throw new ServiceRuntimeException("Target fault type cannot be resolved: " + targetDataType,
+                                                      (Throwable)result);
+                    // throw new TransformationException("Target fault type cannot be resolved: " + targetDataType);
                 }
 
                 // FIXME: How to match a source fault type to a target fault
@@ -143,7 +151,9 @@
                 }
 
                 if (sourceFaultType == null) {
-                    throw new TransformationException("No matching source fault type is found: " + targetFaultType);
+                    throw new ServiceRuntimeException("No matching source fault type is found: " + targetFaultType,
+                                                      (Throwable)result);
+                    // throw new TransformationException("No matching source fault type is found: " + targetFaultType);
                 }
 
                 Object newResult =
@@ -177,16 +187,7 @@
     }
 
     private DataType getFaultType(DataType exceptionType) {
-        // FIXME: We cannot assume the exception will have a databinding set
-        DataBinding targetDataBinding = mediator.getDataBindings().getDataBinding(exceptionType.getDataBinding());
-        if (targetDataBinding == null) {
-            return null;
-        }
-        ExceptionHandler targetHandler = targetDataBinding.getExceptionHandler();
-        if (targetHandler == null) {
-            return null;
-        }
-        return targetHandler.getFaultType(exceptionType);
+        return exceptionType == null ? null : (DataType)exceptionType.getLogical();
     }
 
     private boolean typesMatch(Object first, Object second) {
@@ -196,7 +197,7 @@
         if (first instanceof XMLType && second instanceof XMLType) {
             XMLType t1 = (XMLType)first;
             XMLType t2 = (XMLType)second;
-            return matches(t1.getElementName(), t2.getElementName()) && matches(t1.getTypeName(), t2.getTypeName());
+            return matches(t1.getElementName(), t2.getElementName()) || matches(t1.getTypeName(), t2.getTypeName());
         }
         return false;
     }
@@ -254,7 +255,7 @@
     public void setNext(Invoker next) {
         this.next = next;
     }
-    
+
     public boolean allowsPassByReference() {
         return true;
     }

Modified: incubator/tuscany/java/sca/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/AxiomDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/AxiomDataBinding.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/AxiomDataBinding.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/AxiomDataBinding.java Wed Feb 20 20:11:14 2008
@@ -20,7 +20,6 @@
 package org.apache.tuscany.sca.databinding.axiom;
 
 import org.apache.axiom.om.OMElement;
-import org.apache.tuscany.sca.databinding.ExceptionHandler;
 import org.apache.tuscany.sca.databinding.WrapperHandler;
 import org.apache.tuscany.sca.databinding.impl.BaseDataBinding;
 
@@ -56,10 +55,5 @@
         }
         return super.copy(source);
     }
-    
-    @Override
-    public ExceptionHandler getExceptionHandler() {
-        return new AxiomExceptionHandler();
-    }    
 
 }

Modified: incubator/tuscany/java/sca/modules/databinding-axiom/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-axiom/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-axiom/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer (original)
+++ incubator/tuscany/java/sca/modules/databinding-axiom/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer Wed Feb 20 20:11:14 2008
@@ -20,8 +20,8 @@
 # org.apache.tuscany.sca.databinding.axiom.OMElement2CallableReference;source=org.apache.axiom.om.OMElement,target=org.osoa.sca.CallableReference,weight=10
 org.apache.tuscany.sca.databinding.axiom.Externalizable2OMElement;source=java.io.Externalizable,target=org.apache.axiom.om.OMElement,weight=10
 org.apache.tuscany.sca.databinding.axiom.OMElement2Externalizable;source=org.apache.axiom.om.OMElement,target=java.io.Externalizable,weight=10
-org.apache.tuscany.sca.databinding.axiom.Exception2OMElement;source=java:exception,target=org.apache.axiom.om.OMElement,weight=10
-org.apache.tuscany.sca.databinding.axiom.OMElement2Exception;source=org.apache.axiom.om.OMElement,target=java:exception,weight=10
+org.apache.tuscany.sca.databinding.axiom.Exception2OMElement;source=java:complexType,target=org.apache.axiom.om.OMElement,weight=10
+org.apache.tuscany.sca.databinding.axiom.OMElement2Exception;source=org.apache.axiom.om.OMElement,target=java:complexType,weight=10
 # org.apache.tuscany.sca.databinding.axiom.Object2OMElement;source=java:simpleType,target=org.apache.axiom.om.OMElement,weight=80000
 # org.apache.tuscany.sca.databinding.axiom.OMElement2Object;source=org.apache.axiom.om.OMElement,target=java:simpleType,weight=80000
 org.apache.tuscany.sca.databinding.axiom.OMElement2String;source=org.apache.axiom.om.OMElement,target=java.lang.String,weight=80

Modified: incubator/tuscany/java/sca/modules/databinding-jaxb/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-jaxb/pom.xml?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-jaxb/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/databinding-jaxb/pom.xml Wed Feb 20 20:11:14 2008
@@ -51,13 +51,6 @@
         </dependency>
 
         <dependency>
-            <groupId>javax.xml.ws</groupId>
-            <artifactId>jaxws-api</artifactId>
-            <!-- Set to 2.1 to make jaxws-maven-plugin happy -->
-            <version>2.1</version>
-        </dependency>
-
-        <dependency>
             <groupId>com.sun.xml.bind</groupId>
             <artifactId>jaxb-impl</artifactId>
             <version>2.1.6</version>
@@ -112,12 +105,6 @@
                         </goals>
                         <configuration>
                             <artifactItems>
-                                <artifactItem>
-                                    <groupId>javax.xml.ws</groupId>
-                                    <artifactId>jaxws-api</artifactId>
-                                    <version>2.1</version>
-                                    <type>jar</type>
-                                </artifactItem>
                                 <artifactItem>
                                     <groupId>javax.xml.bind</groupId>
                                     <artifactId>jaxb-api</artifactId>

Modified: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextHelper.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextHelper.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextHelper.java Wed Feb 20 20:11:14 2008
@@ -112,7 +112,7 @@
         Class type = dataType.getPhysical();
         if (JAXBElement.class.isAssignableFrom(type)) {
             type = Object.class;
-        } 
+        }
         if (type == Object.class && dataType.getLogical() instanceof XMLType) {
             XMLType xType = (XMLType)dataType.getLogical();
             Class javaType = SimpleTypeMapperImpl.getJavaType(xType.getTypeName());
@@ -124,6 +124,10 @@
     }
 
     public static XMLType getXmlTypeName(Class<?> javaType) {
+        if (javaType.isInterface()) {
+            // JAXB doesn't support interfaces
+            return null;
+        }
         String namespace = null;
         String name = null;
         Package pkg = javaType.getPackage();
@@ -133,41 +137,46 @@
                 namespace = schema.namespace();
             }
         }
+
+        QName elementQName = null;
+        QName typeQName = null;
+        XmlRootElement rootElement = javaType.getAnnotation(XmlRootElement.class);
+        if (rootElement != null) {
+            String elementName = rootElement.name();
+            String elementNamespace = rootElement.namespace();
+            if (elementNamespace.equals("##default")) {
+                elementNamespace = namespace;
+            }
+            if (elementName.equals("##default")) {
+                elementName = Introspector.decapitalize(javaType.getSimpleName());
+            }
+            elementQName = new QName(elementNamespace, elementName);
+        }
         XmlType type = javaType.getAnnotation(XmlType.class);
         if (type != null) {
             String typeNamespace = type.namespace();
             String typeName = type.name();
 
-            if (typeNamespace.equals("##default") && typeName.equals("")) {
-                XmlRootElement rootElement = javaType.getAnnotation(XmlRootElement.class);
-                if (rootElement != null) {
-                    namespace = rootElement.namespace();
-                } else {
-                    // FIXME: The namespace should be from the referencing
-                    // property
-                    namespace = null;
-                }
-            } else if (typeNamespace.equals("##default")) {
+            if (typeNamespace.equals("##default")) {
                 // namespace is from the package
-            } else {
-                namespace = typeNamespace;
+                typeNamespace = namespace;
             }
 
             if (typeName.equals("##default")) {
-                name = Introspector.decapitalize(javaType.getSimpleName());
-            } else {
-                name = typeName;
+                typeName = Introspector.decapitalize(javaType.getSimpleName());
             }
+            typeQName = new QName(typeNamespace, typeName);
         } else {
             XmlEnum xmlEnum = javaType.getAnnotation(XmlEnum.class);
             if (xmlEnum != null) {
                 name = Introspector.decapitalize(javaType.getSimpleName());
+                typeQName = new QName(namespace, name);
             }
         }
-        if (name == null) {
+        if (elementQName == null && typeQName == null) {
             return null;
         }
-        return new XMLType(null, new QName(namespace, name));
+        return new XMLType(elementQName, typeQName);
     }
 
 }

Modified: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBinding.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBinding.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBinding.java Wed Feb 20 20:11:14 2008
@@ -27,7 +27,6 @@
 import javax.xml.bind.JAXBElement;
 import javax.xml.namespace.QName;
 
-import org.apache.tuscany.sca.databinding.ExceptionHandler;
 import org.apache.tuscany.sca.databinding.impl.BaseDataBinding;
 import org.apache.tuscany.sca.databinding.impl.DOMHelper;
 import org.apache.tuscany.sca.interfacedef.DataType;
@@ -50,11 +49,7 @@
 
     @Override
     public boolean introspect(DataType dataType, Annotation[] annotations) {
-        Object physical = dataType.getPhysical();
-        if (!(physical instanceof Class)) {
-            return false;
-        }
-        Class javaType = (Class)physical;
+        Class javaType = dataType.getPhysical();
         if (JAXBElement.class.isAssignableFrom(javaType)) {
             Type type = javaType.getGenericSuperclass();
             if (type instanceof ParameterizedType) {
@@ -65,7 +60,7 @@
                     if (actualType instanceof Class) {
                         XMLType xmlType = JAXBContextHelper.getXmlTypeName((Class)actualType);
                         dataType.setLogical(xmlType);
-                        dataType.setDataBinding(getName());
+                        dataType.setDataBinding(NAME);
                         return true;
                     }
                 }
@@ -73,7 +68,7 @@
             if (dataType.getLogical() == null) {
                 dataType.setLogical(XMLType.UNKNOWN);
             }
-            dataType.setDataBinding(getName());
+            dataType.setDataBinding(NAME);
             return true;
         }
 
@@ -82,7 +77,7 @@
             return false;
         }
         dataType.setLogical(xmlType);
-        dataType.setDataBinding(getName());
+        dataType.setDataBinding(NAME);
         return true;
     }
 
@@ -106,11 +101,6 @@
         } catch (Exception e) {
             throw new IllegalArgumentException(e);
         }
-    }
-
-    @Override
-    public ExceptionHandler getExceptionHandler() {
-        return new JAXBExceptionHandler();
     }
 
 }

Modified: incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java Wed Feb 20 20:11:14 2008
@@ -23,7 +23,6 @@
 
 import javax.xml.namespace.QName;
 
-import org.apache.tuscany.sca.databinding.ExceptionHandler;
 import org.apache.tuscany.sca.databinding.SimpleTypeMapper;
 import org.apache.tuscany.sca.databinding.WrapperHandler;
 import org.apache.tuscany.sca.databinding.impl.BaseDataBinding;
@@ -116,11 +115,6 @@
         } else {
             return super.copy(arg);
         }
-    }
-
-    @Override
-    public ExceptionHandler getExceptionHandler() {
-        return new SDOExceptionHandler();
     }
 
 }

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DataBinding.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DataBinding.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DataBinding.java Wed Feb 20 20:11:14 2008
@@ -88,12 +88,4 @@
      * @return The databinding-specific simple type mapper
      */
     SimpleTypeMapper getSimpleTypeMapper();
-    
-    /**
-     * Get the handler that can handle exceptions/faults in the
-     * databinding-specific way
-     * 
-     * @return An instance of the exception handler
-     */
-    ExceptionHandler getExceptionHandler();
 }

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java Wed Feb 20 20:11:14 2008
@@ -175,10 +175,6 @@
             return aliases;
         }
 
-        public ExceptionHandler getExceptionHandler() {
-            return getDataBinding().getExceptionHandler();
-        }
-
         public String getName() {
             return name;
         }
@@ -230,6 +226,7 @@
             // which is java.lang.Object. Default to this only if no databinding
             // results
             if (!binding.getName().equals(JavaBeansDataBinding.NAME)) {
+                /*
                 if (isException) {
                     // Next look to see if the DB's exceptionHandler handles this exception
                     ExceptionHandler excHandler = binding.getExceptionHandler();
@@ -243,7 +240,9 @@
                             return true;
                         }
                     }
-                } else {
+                } else
+                */ 
+                {
                     if (binding.introspect(dataType, annotations)) {
                         return true;
                     }

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/annotation/DataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/annotation/DataBinding.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/annotation/DataBinding.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/annotation/DataBinding.java Wed Feb 20 20:11:14 2008
@@ -39,7 +39,7 @@
      * Indicate the effective databinding that controls the WSDL/Java mapping of the 
      * interface/operation
      * 
-     * @return the unique name of the data binding
+     * @return the data binding with the MIME media type syntax
      */
     String value();
     

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/annotation/DataType.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/annotation/DataType.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/annotation/DataType.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/annotation/DataType.java Wed Feb 20 20:11:14 2008
@@ -35,15 +35,9 @@
 public @interface DataType {
 
     /**
-     * Returns the unique name of the data binding
-     * @return the unique name of the data binding
+     * Returns the data binding configuration in MIME media type syntax
+     * @return the data binding
      */
     String value();
-
-    /**
-     * Additional attributes to further describe the data type
-     * @return
-     */
-    String[] attributes() default {};
 
 }

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/BaseDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/BaseDataBinding.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/BaseDataBinding.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/BaseDataBinding.java Wed Feb 20 20:11:14 2008
@@ -21,7 +21,6 @@
 import java.lang.annotation.Annotation;
 
 import org.apache.tuscany.sca.databinding.DataBinding;
-import org.apache.tuscany.sca.databinding.ExceptionHandler;
 import org.apache.tuscany.sca.databinding.SimpleTypeMapper;
 import org.apache.tuscany.sca.databinding.WrapperHandler;
 import org.apache.tuscany.sca.interfacedef.DataType;
@@ -111,10 +110,6 @@
      * @see org.apache.tuscany.sca.databinding.DataBinding#getWrapperHandler()
      */
     public WrapperHandler getWrapperHandler() {
-        return null;
-    }
-
-    public ExceptionHandler getExceptionHandler() {
         return null;
     }
 

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/DirectedGraph.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/DirectedGraph.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/DirectedGraph.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/DirectedGraph.java Wed Feb 20 20:11:14 2008
@@ -18,6 +18,7 @@
  */
 package org.apache.tuscany.sca.databinding.impl;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -32,7 +33,7 @@
  * @param <V> The type of vertex object
  * @param <E> The type of edge object
  */
-public class DirectedGraph<V, E> {
+public class DirectedGraph<V, E> implements Cloneable {
     private final Map<V, Vertex> vertices = new HashMap<V, Vertex>();
 
     /**
@@ -82,6 +83,7 @@
         // TODO: Do we want to support multiple edges for a vertex pair? If so,
         // we should use a List instead of Map
         private Map<Vertex, Edge> outEdges = new HashMap<Vertex, Edge>();
+        private Map<Vertex, Edge> inEdges = new HashMap<Vertex, Edge>();
 
         private Vertex(V value) {
             this.value = value;
@@ -100,6 +102,10 @@
             return outEdges;
         }
 
+        public Map<Vertex, Edge> getInEdges() {
+            return inEdges;
+        }
+
     }
 
     /**
@@ -200,6 +206,11 @@
         }
         Edge edge = new Edge(s, t, edgeValue, weight, publicEdge);
         s.outEdges.put(t, edge);
+        t.inEdges.put(s, edge);
+    }
+
+    public void addEdge(V soure, V target) {
+        addEdge(soure, target, null, 0, true);
     }
 
     public Vertex getVertex(V source) {
@@ -218,10 +229,25 @@
             return false;
         }
 
-        return s.outEdges.remove(t) != null;
+        return s.outEdges.remove(t) != null && t.inEdges.remove(s) != null;
 
     }
 
+    public void removeEdge(Edge edge) {
+        edge.sourceVertex.outEdges.remove(edge.targetVertex);
+        edge.targetVertex.inEdges.remove(edge.sourceVertex);
+    }
+
+    public void removeVertex(Vertex vertex) {
+        vertices.remove(vertex.getValue());
+        for (Edge e : new ArrayList<Edge>(vertex.outEdges.values())) {
+            removeEdge(e);
+        }
+        for (Edge e : new ArrayList<Edge>(vertex.inEdges.values())) {
+            removeEdge(e);
+        }
+    }
+
     public Edge getEdge(Vertex source, Vertex target) {
         return source.outEdges.get(target);
     }
@@ -380,5 +406,40 @@
                 addEdge(e.sourceVertex.value, e.targetVertex.value, e.value, e.weight, true);
             }
         }
+    }
+
+    private Vertex getFirst() {
+        for (Vertex v : vertices.values()) {
+            if (v.inEdges.isEmpty()) {
+                return v;
+            }
+        }
+        if (!vertices.isEmpty()) {
+            throw new IllegalArgumentException("Circular ordering has been detected: " + toString());
+        } else {
+            return null;
+        }
+    }
+
+    public List<V> topologicalSort(boolean readOnly) {
+        DirectedGraph<V, E> graph = (!readOnly) ? this : (DirectedGraph<V, E>)clone();
+        List<V> list = new ArrayList<V>();
+        while (true) {
+            Vertex v = graph.getFirst();
+            if (v == null) {
+                break;
+            }
+            list.add(v.getValue());
+            graph.removeVertex(v);
+        }
+
+        return list;
+    }
+
+    @Override
+    public Object clone() {
+        DirectedGraph<V, E> copy = new DirectedGraph<V, E>();
+        copy.addGraph(this);
+        return copy;
     }
 }

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/JavaBeansDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/JavaBeansDataBinding.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/JavaBeansDataBinding.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/JavaBeansDataBinding.java Wed Feb 20 20:11:14 2008
@@ -29,7 +29,6 @@
 import java.io.OutputStream;
 import java.io.Serializable;
 
-import org.apache.tuscany.sca.databinding.ExceptionHandler;
 import org.apache.tuscany.sca.databinding.impl.BaseDataBinding;
 
 /**
@@ -87,11 +86,6 @@
         } catch (Exception e) {
             throw new IllegalArgumentException("Pass-by-value is not supported for the given object", e);
         }
-    }
-
-    @Override
-    public ExceptionHandler getExceptionHandler() {
-        return new JavaBeansExceptionHandler();
     }
 
     protected ObjectOutputStream getObjectOutputStream(OutputStream os) throws IOException {

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/JavaExceptionDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/JavaExceptionDataBinding.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/JavaExceptionDataBinding.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/JavaExceptionDataBinding.java Wed Feb 20 20:11:14 2008
@@ -19,7 +19,6 @@
 
 package org.apache.tuscany.sca.databinding.javabeans;
 
-import org.apache.tuscany.sca.databinding.ExceptionHandler;
 
 /**
  * DataBinding for Java Exceptions
@@ -31,10 +30,4 @@
     public JavaExceptionDataBinding() {
         super(NAME, null);
     }
-
-    @Override
-    public ExceptionHandler getExceptionHandler() {
-        return new JavaExceptionExceptionHandler();
-    }
-
 }

Modified: incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/impl/DirectedGraphTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/impl/DirectedGraphTestCase.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/impl/DirectedGraphTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/impl/DirectedGraphTestCase.java Wed Feb 20 20:11:14 2008
@@ -18,6 +18,7 @@
  */
 package org.apache.tuscany.sca.databinding.impl;
 
+import java.util.Arrays;
 import java.util.List;
 
 import junit.framework.Assert;
@@ -33,6 +34,9 @@
     protected void setUp() throws Exception {
         super.setUp();
         graph = new DirectedGraph<String, Object>();
+    }
+
+    public void testGraph() {
         graph.addEdge("a", "b", null, 3, true);
         graph.addEdge("b", "c", null, 1, true);
         // graph.addEdge("a", "c", null, 8, true);
@@ -50,11 +54,6 @@
         graph.addEdge("j", "i", null, 2, true);
         graph.addEdge("h", "i", null, 8, true);
 
-    }
-
-    public void testGraph() {
-        // System.out.println(graph);
-
         Vertex vertex = graph.getVertex("a");
         Assert.assertNotNull(vertex);
         Assert.assertEquals(vertex.getValue(), "a");
@@ -89,6 +88,29 @@
         DirectedGraph<String, Object>.Path path5 = graph.getShortestPath("f", "i");
         Assert.assertTrue(path5.getWeight() == 16 && path5.getEdges().size() == 2);
 
+    }
+
+    public void testSort() {
+        graph.addEdge("a", "b");
+        graph.addEdge("a", "c");
+        graph.addEdge("c", "d");
+        graph.addEdge("b", "c");
+        List<String> order = graph.topologicalSort(true);
+        assertEquals(Arrays.asList("a", "b", "c", "d"), order);
+        assertTrue(!graph.getVertices().isEmpty());
+
+        graph.addEdge("d", "a");
+        try {
+            order = graph.topologicalSort(true);
+            assertTrue("Should have failed", false);
+        } catch (IllegalArgumentException e) {
+            assertTrue(true);
+        }
+
+        graph.removeEdge("d", "a");
+        order = graph.topologicalSort(false);
+        assertEquals(Arrays.asList("a", "b", "c", "d"), order);
+        assertTrue(graph.getVertices().isEmpty());
     }
 
     @Override

Modified: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JavaIntrospectionHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JavaIntrospectionHelper.java?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JavaIntrospectionHelper.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JavaIntrospectionHelper.java Wed Feb 20 20:11:14 2008
@@ -32,8 +32,10 @@
 import java.lang.reflect.WildcardType;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.logging.Logger;
 
@@ -61,7 +63,6 @@
     public static Set<Field> getAllPublicAndProtectedFields(Class clazz, boolean validating) {
         return getAllPublicAndProtectedFields(clazz, new HashSet<Field>(), validating);
     }
-    
 
     private static void checkInvalidAnnotations(AnnotatedElement element) {
         for (Annotation a : element.getAnnotations()) {
@@ -87,7 +88,7 @@
                 field.setAccessible(true); // ignore Java accessibility
                 fields.add(field);
             } else {
-                if(validating) {
+                if (validating) {
                     checkInvalidAnnotations(field);
                 }
             }
@@ -119,7 +120,7 @@
         for (Method declaredMethod : declaredMethods) {
             int modifiers = declaredMethod.getModifiers();
             if ((!Modifier.isPublic(modifiers) && !Modifier.isProtected(modifiers)) || Modifier.isStatic(modifiers)) {
-                if(validating) {
+                if (validating) {
                     checkInvalidAnnotations(declaredMethod);
                 }
                 continue;
@@ -168,8 +169,9 @@
             if (field.getName().equals(name)) {
                 if (field.getType().equals(type)) {
                     return field; // exact match
-                } else if (field.getType().isAssignableFrom(type) 
-                    || (field.getType().isPrimitive() && primitiveAssignable(field.getType(), type))) {
+                } else if (field.getType().isAssignableFrom(type) || (field.getType().isPrimitive() && primitiveAssignable(field
+                                                                                                                               .getType(),
+                                                                                                                           type))) {
                     // We could have the situation where a field parameter is a
                     // primitive and the demarshalled value is
                     // an object counterpart (e.g. Integer and int)
@@ -273,10 +275,10 @@
 
     public static boolean isImmutable(Class clazz) {
         return String.class == clazz || clazz.isPrimitive()
-               || Number.class.isAssignableFrom(clazz)
-               || Boolean.class.isAssignableFrom(clazz)
-               || Character.class.isAssignableFrom(clazz)
-               || Byte.class.isAssignableFrom(clazz);
+            || Number.class.isAssignableFrom(clazz)
+            || Boolean.class.isAssignableFrom(clazz)
+            || Character.class.isAssignableFrom(clazz)
+            || Byte.class.isAssignableFrom(clazz);
     }
 
     /**
@@ -343,7 +345,7 @@
             return cls;
         }
     }
-    
+
     public static Type getParameterType(Type type) {
         if (type instanceof ParameterizedType) {
             // Collection<BaseType>
@@ -354,7 +356,7 @@
             return Object.class;
         }
     }
-    
+
     public static Class<?> getBusinessInterface(Class<?> cls, Type callableReferenceType) {
         if (CallableReference.class.isAssignableFrom(cls) && callableReferenceType instanceof ParameterizedType) {
             // Collection<BaseType>
@@ -491,7 +493,7 @@
             getAllInterfaces(superClass, implemented);
         }
     }
-    
+
     public static boolean isSetter(Method method) {
         return (void.class == method.getReturnType() && method.getParameterTypes().length == 1 && method.getName()
             .startsWith("set"));
@@ -500,5 +502,36 @@
     public static boolean isGetter(Method method) {
         return (void.class != method.getReturnType() && method.getParameterTypes().length == 0 && method.getName()
             .startsWith("get"));
-    }    
+    }
+
+    private final static Map<Class, String> signatures = new HashMap<Class, String>();
+    static {
+        signatures.put(boolean.class, "Z");
+        signatures.put(byte.class, "B");
+        signatures.put(char.class, "C");
+        signatures.put(short.class, "S");
+        signatures.put(int.class, "I");
+        signatures.put(long.class, "J");
+        signatures.put(float.class, "F");
+        signatures.put(double.class, "D");
+    };
+
+    public static String getSignature(Class<?> cls) {
+        if (cls.isPrimitive()) {
+            return signatures.get(cls);
+        }
+        if (cls.isArray()) {
+            return "[" + getSignature(cls.getComponentType());
+        }
+        return "L" + cls.getName().replace('.', '/') + ";";
+    }
+
+    public static Class<?> getArrayType(Class<?> componentType, int dims) throws ClassNotFoundException {
+        StringBuffer buf = new StringBuffer();
+        for (int i = 0; i < dims; i++) {
+            buf.append('[');
+        }
+        buf.append(getSignature(componentType));
+        return Class.forName(buf.toString(), false, componentType.getClassLoader());
+    }
 }

Modified: incubator/tuscany/java/sca/modules/interface-java-jaxws/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-java-jaxws/pom.xml?rev=629687&r1=629686&r2=629687&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-java-jaxws/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/interface-java-jaxws/pom.xml Wed Feb 20 20:11:14 2008
@@ -177,6 +177,25 @@
                     <xnocompile>true</xnocompile>
                 </configuration>
             </plugin>
+            <!-- 
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>jaxws-maven-plugin</artifactId>
+                <version>1.9</version>
+                <configuration>
+                    <sei>org.apache.tuscany.sca.interfacedef.java.jaxws.MyServiceImpl</sei>
+                    <genWsdl>true</genWsdl>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>process-test-classes</phase>
+                        <goals>
+                            <goal>wsgen-test</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            -->
         </plugins>
     </build>
 

Added: incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSFaultExceptionMapper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSFaultExceptionMapper.java?rev=629687&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSFaultExceptionMapper.java (added)
+++ incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSFaultExceptionMapper.java Wed Feb 20 20:11:14 2008
@@ -0,0 +1,225 @@
+/*
+ * 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.sca.interfacedef.java.jaxws;
+
+import java.beans.BeanInfo;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.WebFault;
+
+import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint;
+import org.apache.tuscany.sca.interfacedef.DataType;
+import org.apache.tuscany.sca.interfacedef.FaultExceptionMapper;
+import org.apache.tuscany.sca.interfacedef.util.FaultException;
+import org.apache.tuscany.sca.interfacedef.util.XMLType;
+import org.osoa.sca.ServiceRuntimeException;
+
+/**
+ * JAX-WS ExceptionHandler
+ * 
+ * @version $Rev$ $Date$
+ */
+public class JAXWSFaultExceptionMapper implements FaultExceptionMapper {
+    private static final Class<?>[] EMPTY_CLASS_ARRAY = new Class[0];
+    private DataBindingExtensionPoint dataBindingExtensionPoint;
+
+    public JAXWSFaultExceptionMapper(DataBindingExtensionPoint dataBindingExtensionPoint) {
+        super();
+        this.dataBindingExtensionPoint = dataBindingExtensionPoint;
+    }
+
+    /**
+     * The following is quoted from the JAX-WS spec v2.1
+     * <ul>
+     * <li>WrapperException(String message, FaultBean faultInfo) <br>
+     * A constructor where WrapperException is replaced with the name of the
+     * generated wrapper exception and FaultBean is replaced by the name of the
+     * generated fault bean.
+     * <li> WrapperException(String message, FaultBean faultInfo, Throwable
+     * cause) <br>
+     * A constructor where WrapperException is replaced with the name of the
+     * generated wrapper exception and FaultBean is replaced by the name of the
+     * generated fault bean. The last argument, cause, may be used to convey
+     * protocol specific fault information
+     * </ul>
+     */
+    @SuppressWarnings("unchecked")
+    public Throwable wrapFaultInfo(DataType<DataType> exceptionType, String message, Object faultInfo, Throwable cause) {
+        Class<?> exceptionClass = exceptionType.getPhysical();
+        if (exceptionClass.isInstance(faultInfo)) {
+            return (Throwable)faultInfo;
+        }
+        DataType<?> faultBeanType = exceptionType.getLogical();
+        Class<?> faultBeanClass = faultBeanType.getPhysical();
+        try {
+            try {
+                Constructor<?> constructor =
+                    exceptionClass.getConstructor(new Class[] {String.class, faultBeanClass, Throwable.class});
+                return (Exception)constructor.newInstance(new Object[] {message, faultInfo, cause});
+            } catch (NoSuchMethodException e) {
+                // Create a generic fault exception
+                return new FaultException(message, faultInfo, cause);
+            }
+        } catch (Throwable e) {
+            throw new IllegalArgumentException(e);
+        }
+    }
+
+    public Object getFaultInfo(Throwable exception, Class<?> faultBeanClass) {
+        if (exception == null) {
+            return null;
+        }
+
+        // Check if it's the generic FaultException
+        if (exception instanceof FaultException) {
+            return ((FaultException)exception).getFaultInfo();
+        }
+
+        try {
+            Method method = exception.getClass().getMethod("getFaultInfo", EMPTY_CLASS_ARRAY);
+            return method.invoke(exception, (Object[])null);
+        } catch (NoSuchMethodException e) {
+            // Follow the JAX-WS v2.1 spec section 3.7
+            return createFaultBean(exception, faultBeanClass);
+        } catch (Throwable e) {
+            throw new IllegalArgumentException(e);
+        }
+    }
+
+    private Object createFaultBean(Throwable exception, Class<?> faultBeanClass) {
+        /**
+         * For each getter in the exception and its superclasses, a property of the same 
+         * type and name is added to the bean. The getCause, getLocalizedMessage and 
+         * getStackTrace getters from java.lang.Throwable and the getClass getter from 
+         * java.lang.Object are excluded from the list of getters to be mapped.
+         */
+        // Return the exception as-is if it's already the fault bean
+        if (faultBeanClass.isInstance(exception)) {
+            return exception;
+        }
+        try {
+            Object faultBean = null;
+            for (Constructor<?> ctor : faultBeanClass.getConstructors()) {
+                Class<?>[] params = ctor.getParameterTypes();
+                if (params.length == 1 && String.class == params[0]) {
+                    faultBean = ctor.newInstance(exception.getMessage());
+                } else if (params.length == 2 && String.class == params[0]
+                    && Throwable.class.isAssignableFrom(params[1])) {
+                    faultBean = ctor.newInstance(exception.getMessage(), exception);
+                } else if (params.length == 0) {
+                    faultBean = ctor.newInstance();
+                }
+                if (faultBean != null) {
+                    break;
+                }
+            }
+            if (faultBean == null) {
+                return exception;
+            }
+            BeanInfo beanInfo = Introspector.getBeanInfo(exception.getClass());
+            for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+                Method getter = pd.getReadMethod();
+                String name = getter.getName();
+                if ("getClass".equals(name) || "getStackTrace".equals(name)
+                    || "getCause".equals(name)
+                    || "getLocalizedMessage".equals(name)) {
+                    continue;
+                }
+                String prefix = "get";
+                if (name.startsWith("get")) {
+                    prefix = "get";
+                } else if (name.startsWith("is")) {
+                    prefix = "is";
+                }
+                Method setter = null;
+                try {
+                    setter =
+                        faultBeanClass.getMethod("set" + name.substring(prefix.length()), new Class[] {getter
+                            .getReturnType()});
+                } catch (NoSuchMethodException e) {
+                    continue;
+                }
+                Object prop = setter.invoke(faultBean, getter.invoke(exception, (Object[])null));
+                setter.invoke(faultBean, prop);
+            }
+            return faultBean;
+        } catch (Throwable ex) {
+            throw new IllegalArgumentException(ex);
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    public boolean introspectFaultDataType(DataType<DataType> exceptionType) {
+        Class<?> cls = exceptionType.getPhysical();
+        if (cls == FaultException.class) {
+            return true;
+        }
+        DataType faultType = (DataType)exceptionType.getLogical();
+        Class<?> faultBean = null;
+        WebFault fault = cls.getAnnotation(WebFault.class);
+        if (fault != null) {
+            QName faultName = new QName(fault.targetNamespace(), fault.name());
+            XMLType xmlType = new XMLType(faultName, null);
+            faultType.setLogical(xmlType);
+            if (!"".equals(fault.faultBean())) {
+                try {
+                    faultBean = Class.forName(fault.faultBean(), false, cls.getClassLoader());
+                } catch (ClassNotFoundException e) {
+                    throw new ServiceRuntimeException(e);
+                }
+            } else {
+                Method m;
+                try {
+                    m = cls.getMethod("getFaultInfo", (Class[])null);
+                    faultBean = m.getReturnType();
+                } catch (NoSuchMethodException e) {
+                    // Ignore
+                }
+            }
+        }
+
+        if (faultBean == null) {
+            String faultBeanClassName = cls.getPackage().getName() + ".jaxws." + cls.getSimpleName() + "Bean";
+            try {
+                faultBean = Class.forName(faultBeanClassName, false, cls.getClassLoader());
+            } catch (ClassNotFoundException e) {
+                faultBean = cls;
+            }
+        }
+
+        faultType.setPhysical(faultBean);
+        // TODO: Use the databinding framework to introspect the fault bean class
+        if (dataBindingExtensionPoint != null) {
+            return dataBindingExtensionPoint.introspectType(faultType, null);
+        }
+
+        return false;
+
+    }
+
+    public void setDataBindingExtensionPoint(DataBindingExtensionPoint dataBindingExtensionPoint) {
+        this.dataBindingExtensionPoint = dataBindingExtensionPoint;
+    }
+
+}



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