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