You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by gp...@apache.org on 2013/01/04 20:32:38 UTC

git commit: DELTASPIKE-299 fixed handling of InvocationTargetException

Updated Branches:
  refs/heads/master 7bf5691fd -> 4f10de53e


DELTASPIKE-299 fixed handling of InvocationTargetException


Project: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/commit/4f10de53
Tree: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/tree/4f10de53
Diff: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/diff/4f10de53

Branch: refs/heads/master
Commit: 4f10de53ef0246f556ff8ba62ac6810d43351fa5
Parents: 7bf5691
Author: gpetracek <gp...@apache.org>
Authored: Fri Jan 4 20:30:23 2013 +0100
Committer: gpetracek <gp...@apache.org>
Committed: Fri Jan 4 20:30:23 2013 +0100

----------------------------------------------------------------------
 .../core/api/exception/control/HandlerMethod.java  |    2 +-
 .../deltaspike/core/util/ReflectionUtils.java      |    2 +
 .../util/metadata/builder/InjectableMethod.java    |    3 ++
 .../impl/exception/control/HandlerMethodImpl.java  |    2 +-
 .../security/impl/extension/Authorizer.java        |   17 ++++++++++++--
 5 files changed, 21 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/4f10de53/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/exception/control/HandlerMethod.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/exception/control/HandlerMethod.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/exception/control/HandlerMethod.java
index ecf114b..d875b05 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/exception/control/HandlerMethod.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/exception/control/HandlerMethod.java
@@ -56,7 +56,7 @@ public interface HandlerMethod<T extends Throwable>
      * @param event event to pass to the handler.
      * @param beanManager The BeanManager to use
      */
-    void notify(ExceptionEvent<T> event, BeanManager beanManager);
+    void notify(ExceptionEvent<T> event, BeanManager beanManager) throws Exception;
 
     /**
      * Obtains the precedence of the handler, relative to other handlers for the same type.

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/4f10de53/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/ReflectionUtils.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/ReflectionUtils.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/ReflectionUtils.java
index da7e457..c5c09e5 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/ReflectionUtils.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/ReflectionUtils.java
@@ -22,6 +22,7 @@ package org.apache.deltaspike.core.util;
 import javax.enterprise.inject.Typed;
 import java.io.Serializable;
 import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Member;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
@@ -170,6 +171,7 @@ public abstract class ReflectionUtils
                                      Method method, Class<T> expectedReturnType,
                                      boolean setAccessible,
                                      Object... args)
+        throws InvocationTargetException, IllegalAccessException, IllegalArgumentException
     {
         if (setAccessible && !method.isAccessible())
         {

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/4f10de53/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/metadata/builder/InjectableMethod.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/metadata/builder/InjectableMethod.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/metadata/builder/InjectableMethod.java
index abe9a76..3cb28d1 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/metadata/builder/InjectableMethod.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/metadata/builder/InjectableMethod.java
@@ -25,6 +25,7 @@ import javax.enterprise.inject.spi.AnnotatedMethod;
 import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.BeanManager;
 import javax.enterprise.inject.spi.InjectionPoint;
+import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -133,6 +134,7 @@ public class InjectableMethod<X>
      *                                     method fails.
      */
     public <T> T invoke(Object receiver, CreationalContext<T> creationalContext)
+        throws InvocationTargetException, IllegalAccessException, IllegalArgumentException
     {
         return invoke(receiver, creationalContext, null);
     }
@@ -166,6 +168,7 @@ public class InjectableMethod<X>
      *                                     method fails.
      */
     public <T> T invoke(Object receiver, CreationalContext<T> creationalContext, ParameterValueRedefiner redefinition)
+        throws InvocationTargetException, IllegalAccessException, IllegalArgumentException
     {
         List<Object> parameterValues = new ArrayList<Object>();
         for (int i = 0; i < getParameters().size(); i++)

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/4f10de53/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exception/control/HandlerMethodImpl.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exception/control/HandlerMethodImpl.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exception/control/HandlerMethodImpl.java
index 070c4a0..df8a4b1 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exception/control/HandlerMethodImpl.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exception/control/HandlerMethodImpl.java
@@ -184,7 +184,7 @@ public class HandlerMethodImpl<T extends Throwable> implements HandlerMethod<T>
      * {@inheritDoc}
      */
     @Override
-    public void notify(final ExceptionEvent<T> event, BeanManager beanManager)
+    public void notify(final ExceptionEvent<T> event, BeanManager beanManager) throws Exception
     {
         CreationalContext<?> ctx = null;
         try

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/4f10de53/deltaspike/modules/security/impl/src/main/java/org/apache/deltaspike/security/impl/extension/Authorizer.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/security/impl/src/main/java/org/apache/deltaspike/security/impl/extension/Authorizer.java b/deltaspike/modules/security/impl/src/main/java/org/apache/deltaspike/security/impl/extension/Authorizer.java
index 15c08a6..cea02cb 100644
--- a/deltaspike/modules/security/impl/src/main/java/org/apache/deltaspike/security/impl/extension/Authorizer.java
+++ b/deltaspike/modules/security/impl/src/main/java/org/apache/deltaspike/security/impl/extension/Authorizer.java
@@ -36,6 +36,7 @@ import javax.enterprise.inject.spi.BeanManager;
 import javax.enterprise.util.Nonbinding;
 import javax.interceptor.InvocationContext;
 
+import org.apache.deltaspike.core.util.ExceptionUtils;
 import org.apache.deltaspike.core.util.metadata.builder.InjectableMethod;
 import org.apache.deltaspike.security.api.authorization.AccessDeniedException;
 import org.apache.deltaspike.security.api.authorization.SecurityDefinitionException;
@@ -167,6 +168,7 @@ class Authorizer
     }
 
     void authorize(final InvocationContext ic, final Object returnValue, BeanManager beanManager)
+        throws InvocationTargetException, IllegalAccessException, IllegalArgumentException
     {
         if (boundAuthorizerBean == null)
         {
@@ -178,10 +180,19 @@ class Authorizer
         Object reference = beanManager.getReference(boundAuthorizerBean,
             boundAuthorizerMethod.getJavaMember().getDeclaringClass(), creationalContext);
 
-        Object result = boundAuthorizerMethodProxy.invoke(reference, creationalContext, 
-                    new SecurityParameterValueRedefiner(creationalContext, ic, returnValue));
+        Object result = null;
+        try
+        {
+            result = boundAuthorizerMethodProxy.invoke(reference, creationalContext,
+                        new SecurityParameterValueRedefiner(creationalContext, ic, returnValue));
+        }
+        catch (InvocationTargetException e)
+        {
+            //see DELTASPIKE-299
+            ExceptionUtils.throwAsRuntimeException(e.getCause());
+        }
 
-        if (result.equals(Boolean.FALSE))
+        if (Boolean.FALSE.equals(result))
         {
             Set<SecurityViolation> violations = new HashSet<SecurityViolation>();
             violations.add(new SecurityViolation()