Author: edwardsmj
Date: Tue Jun 29 19:22:46 2010
New Revision: 959077

URL: http://svn.apache.org/viewvc?rev=959077&view=rev
Log:
Add in processing of declared Asynchronous Faults via @AsyncFaults annotation, 
in support of TUSCANY-3609

Modified:
    
tuscany/sca-java-2.x/trunk/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java

Modified: 
tuscany/sca-java-2.x/trunk/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java?rev=959077&r1=959076&r2=959077&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java
 Tue Jun 29 19:22:46 2010
@@ -235,6 +235,9 @@ public class JavaInterfaceIntrospectorIm
             }
             List<DataType> faultDataTypes = new 
ArrayList<DataType>(faultTypes.length);
             Type[] genericFaultTypes = method.getGenericExceptionTypes();
+            if( method.isAnnotationPresent(AsyncFault.class) ) {
+               genericFaultTypes = readAsyncGenericFaultTypes( method );
+            } // end if
             for (int i = 0; i < faultTypes.length; i++) {
                 Class<?> faultType = faultTypes[i];
                 // Only add checked exceptions
@@ -273,6 +276,17 @@ public class JavaInterfaceIntrospectorIm
        if ( theFaults == null ) return null;
        return theFaults.value();
     } // end method readAsyncFaultTypes
+    
+    /**
+     * Reads the generic fault types declared in an @AsyncFault annotation on 
an async server method
+     * @param method - the Method
+     * @return - an array of fault/exception classes
+     */
+    private  Type[] readAsyncGenericFaultTypes( Method method ) {
+       AsyncFault theFaults = method.getAnnotation(AsyncFault.class);
+       if ( theFaults == null ) return null;
+       return theFaults.value();
+    } // end method readAsyncFaultTypes
 
     private boolean jaxwsAsyncMethod(Method method) {
         if (method.getName().endsWith("Async")) {


Reply via email to