openwebbeans-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cove...@apache.org
Subject svn commit: r916811 - /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java
Date Fri, 26 Feb 2010 20:29:37 GMT
Author: covener
Date: Fri Feb 26 20:29:37 2010
New Revision: 916811

URL: http://svn.apache.org/viewvc?rev=916811&view=rev
Log:
OWB-305 when an exception bubbles up the interceptor, throw the actual
cause from proceed() and not the InvocationTargetException that
Method.invoke() has wrapped it in 

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java?rev=916811&r1=916810&r2=916811&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java
(original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java
Fri Feb 26 20:29:37 2010
@@ -13,6 +13,7 @@
  */
 package org.apache.webbeans.intercept;
 
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -153,6 +154,22 @@
             }
 
         }
+        catch (InvocationTargetException ite)
+        {
+            this.target = null; // destroy target instance
+            
+            // Try to provide the original exception to the interceptor stack, 
+            // not the InvocationTargetException from Method.invoke
+            Throwable t = ite.getCause();
+            if (t instanceof Exception)
+            {
+                throw (Exception) t;
+            }
+            else
+            {
+                throw ite;
+            }
+        }
         catch (Exception e)
         {
             this.target = null; // destroy target instance



Mime
View raw message