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()