[jboss-cvs] jboss-seam/src/main/org/jboss/seam/util ...
Gavin King
gavin.king at jboss.com
Fri Feb 2 02:06:23 EST 2007
User: gavin
Date: 07/02/02 02:06:23
Modified: src/main/org/jboss/seam/util EJB.java
Log:
search exception causes for a match
Revision Changes Path
1.6 +28 -0 jboss-seam/src/main/org/jboss/seam/util/EJB.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: EJB.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/util/EJB.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- EJB.java 1 Feb 2007 19:38:41 -0000 1.5
+++ EJB.java 2 Feb 2007 07:06:22 -0000 1.6
@@ -28,6 +28,7 @@
public static final Class<Annotation> PERSISTENCE_CONTEXT;
public static final Class<Annotation> INTERCEPTORS;
public static final Class<Annotation> AROUND_INVOKE;
+ public static final Class<Annotation> EJB_EXCEPTION;
public static boolean INVOCATION_CONTEXT_AVAILABLE;
private static Class classForName(String name)
@@ -58,6 +59,7 @@
POST_CONSTRUCT = classForName("javax.annotation.PostConstruct");
INTERCEPTORS = classForName("javax.interceptor.Interceptors");
AROUND_INVOKE = classForName("javax.interceptor.AroundInvoke");
+ EJB_EXCEPTION = classForName("javax.ejb.EJBException");
INVOCATION_CONTEXT_AVAILABLE = !classForName("javax.interceptor.InvocationContext").equals(Dummy.class);
}
@@ -66,6 +68,32 @@
return (String) Reflections.invokeAndWrap( Reflections.getMethod(annotation, "name"), annotation );
}
+ public static Exception getCause(Exception exception)
+ {
+ if ( EJB_EXCEPTION.isInstance(exception) )
+ {
+ try
+ {
+ return (Exception) Reflections.getGetterMethod(EJB_EXCEPTION, "causedByException").invoke(exception);
+ }
+ catch (Exception x)
+ {
+ return null;
+ }
+ }
+ else
+ {
+ try
+ {
+ return (Exception) exception.getCause();
+ }
+ catch (Exception x)
+ {
+ return null;
+ }
+ }
+ }
+
public static Class[] value(Annotation annotation)
{
return (Class[]) Reflections.invokeAndWrap( Reflections.getMethod(annotation, "value"), annotation );
More information about the jboss-cvs-commits
mailing list