[webbeans-commits] Webbeans SVN: r1762 - in ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans: event and 2 other directories.
webbeans-commits at lists.jboss.org
webbeans-commits at lists.jboss.org
Wed Mar 4 13:26:49 EST 2009
Author: pete.muir at jboss.org
Date: 2009-03-04 13:26:47 -0500 (Wed, 04 Mar 2009)
New Revision: 1762
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/ObserverImpl.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/Exceptions.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/MethodInjectionPoint.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java
Log:
Rework Observer's use of MethodInjectionPoint
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java 2009-03-04 15:55:27 UTC (rev 1761)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java 2009-03-04 18:26:47 UTC (rev 1762)
@@ -26,6 +26,7 @@
import javax.context.ScopeType;
import javax.event.Observes;
import javax.inject.BindingType;
+import javax.inject.CreationException;
import javax.inject.DefinitionException;
import javax.inject.DeploymentType;
import javax.inject.Disposes;
@@ -111,7 +112,7 @@
{
for (MethodInjectionPoint<?> initializer : getInitializerMethods())
{
- initializer.invoke(instance, manager, creationalContext);
+ initializer.invoke(instance, manager, creationalContext, CreationException.class);
}
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java 2009-03-04 15:55:27 UTC (rev 1761)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java 2009-03-04 18:26:47 UTC (rev 1762)
@@ -23,6 +23,7 @@
import javax.context.CreationalContext;
import javax.event.Observes;
+import javax.inject.CreationException;
import javax.inject.DefinitionException;
import javax.inject.Disposes;
@@ -78,7 +79,7 @@
protected T produceInstance(CreationalContext<T> creationalContext)
{
- return method.invoke(getReceiver(creationalContext), manager, creationalContext);
+ return method.invoke(getReceiver(creationalContext), manager, creationalContext, CreationException.class);
}
/**
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/ObserverImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/ObserverImpl.java 2009-03-04 15:55:27 UTC (rev 1761)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/ObserverImpl.java 2009-03-04 18:26:47 UTC (rev 1762)
@@ -170,7 +170,8 @@
{
return;
}
- observerMethod.invokeWithSpecialValue(instance, Observes.class, event, manager, null, ObserverException.class);
+ // As we are working with the contextual instance, we may not have the actual object, but a container proxy (e.g. EJB)
+ observerMethod.invokeOnInstanceWithSpecialValue(instance, Observes.class, event, manager, null, ObserverException.class);
}
finally
{
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/Exceptions.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/Exceptions.java 2009-03-04 15:55:27 UTC (rev 1761)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/Exceptions.java 2009-03-04 18:26:47 UTC (rev 1762)
@@ -90,6 +90,16 @@
rethrowException(e.getCause() != null ? e.getCause() : e, exceptionToThrow);
}
+ public static void rethrowException(SecurityException e, Class<? extends RuntimeException> exceptionToThrow)
+ {
+ rethrowException(e.getCause() != null ? e.getCause() : e, exceptionToThrow);
+ }
+
+ public static void rethrowException(NoSuchMethodException e, Class<? extends RuntimeException> exceptionToThrow)
+ {
+ rethrowException(e.getCause() != null ? e.getCause() : e, exceptionToThrow);
+ }
+
public static void rethrowException(InvocationTargetException e)
{
rethrowException(e.getCause() != null ? e.getCause() : e);
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/MethodInjectionPoint.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/MethodInjectionPoint.java 2009-03-04 15:55:27 UTC (rev 1761)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/MethodInjectionPoint.java 2009-03-04 18:26:47 UTC (rev 1762)
@@ -33,7 +33,6 @@
import org.jboss.webbeans.introspector.AnnotatedMethod;
import org.jboss.webbeans.introspector.AnnotatedParameter;
import org.jboss.webbeans.introspector.ForwardingAnnotatedMethod;
-import org.jboss.webbeans.util.Reflections;
public class MethodInjectionPoint<T> extends ForwardingAnnotatedMethod<T> implements AnnotatedInjectionPoint<T, Method>
{
@@ -96,7 +95,7 @@
return delegate().getBindings();
}
- public T invoke(Object declaringInstance, ManagerImpl manager, CreationalContext<?> creationalContext)
+ public T invoke(Object declaringInstance, ManagerImpl manager, CreationalContext<?> creationalContext, Class<? extends RuntimeException> exceptionTypeToThrow)
{
try
{
@@ -104,6 +103,49 @@
}
catch (IllegalArgumentException e)
{
+ rethrowException(e, exceptionTypeToThrow);
+ }
+ catch (IllegalAccessException e)
+ {
+ rethrowException(e, exceptionTypeToThrow);
+ }
+ catch (InvocationTargetException e)
+ {
+ rethrowException(e, exceptionTypeToThrow);
+ }
+ return null;
+ }
+
+ @SuppressWarnings("unchecked")
+ public T invokeWithSpecialValue(Object declaringInstance, Class<? extends Annotation> annotatedParameter, Object parameter, ManagerImpl manager, CreationalContext<?> creationalContext, Class<? extends RuntimeException> exceptionTypeToThrow)
+ {
+ try
+ {
+ return invoke(declaringInstance, getParameterValues(getParameters(), annotatedParameter, parameter, manager, creationalContext), exceptionTypeToThrow);
+ }
+ catch (IllegalArgumentException e)
+ {
+ rethrowException(e, exceptionTypeToThrow);
+ }
+ catch (IllegalAccessException e)
+ {
+ rethrowException(e, exceptionTypeToThrow);
+ }
+ catch (InvocationTargetException e)
+ {
+ rethrowException(e, exceptionTypeToThrow);
+ }
+ return null;
+ }
+
+ public T invokeOnInstance(Object declaringInstance, ManagerImpl manager, CreationalContext<?> creationalContext, Class<? extends RuntimeException> exceptionTypeToThrow)
+ {
+ try
+ {
+ return delegate().invokeOnInstance(declaringInstance, getParameterValues(getParameters(), null, null, manager, creationalContext));
+ }
+ catch (IllegalArgumentException e)
+ {
rethrowException(e);
}
catch (IllegalAccessException e)
@@ -114,28 +156,32 @@
{
rethrowException(e);
}
+ catch (SecurityException e)
+ {
+ rethrowException(e, exceptionTypeToThrow);
+ }
+ catch (NoSuchMethodException e)
+ {
+ rethrowException(e, exceptionTypeToThrow);
+ }
return null;
}
@SuppressWarnings("unchecked")
- public T invokeWithSpecialValue(Object declaringInstance, Class<? extends Annotation> annotatedParameter, Object parameter, ManagerImpl manager, CreationalContext<?> creationalContext, Class<? extends RuntimeException> exceptionTypeToThrow)
+ public T invokeOnInstanceWithSpecialValue(Object declaringInstance, Class<? extends Annotation> annotatedParameter, Object parameter, ManagerImpl manager, CreationalContext<?> creationalContext, Class<? extends RuntimeException> exceptionTypeToThrow)
{
try
{
- if (delegate().getDeclaringClass().getType().equals(declaringInstance.getClass()))
- {
- return delegate().invoke(declaringInstance, getParameterValues(getParameters(), annotatedParameter, parameter, manager, creationalContext));
- }
- else
- {
- Method proxiedMethod = Reflections.lookupMethod(delegate().getAnnotatedMethod(), declaringInstance);
- return (T) proxiedMethod.invoke(declaringInstance, getParameterValues(getParameters(), annotatedParameter, parameter, manager, creationalContext));
- }
+ return invokeOnInstance(declaringInstance, getParameterValues(getParameters(), annotatedParameter, parameter, manager, creationalContext));
}
catch (IllegalArgumentException e)
{
rethrowException(e, exceptionTypeToThrow);
}
+ catch (SecurityException e)
+ {
+ rethrowException(e, exceptionTypeToThrow);
+ }
catch (IllegalAccessException e)
{
rethrowException(e, exceptionTypeToThrow);
@@ -144,6 +190,10 @@
{
rethrowException(e, exceptionTypeToThrow);
}
+ catch (NoSuchMethodException e)
+ {
+ rethrowException(e, exceptionTypeToThrow);
+ }
return null;
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java 2009-03-04 15:55:27 UTC (rev 1761)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java 2009-03-04 18:26:47 UTC (rev 1762)
@@ -206,8 +206,10 @@
public T invokeOnInstance(Object instance, Object...parameters) throws IllegalArgumentException, SecurityException, IllegalAccessException, InvocationTargetException, NoSuchMethodException
{
+ Method method = instance.getClass().getMethod(getName(), getParameterTypesAsArray());
+ method.setAccessible(true);
@SuppressWarnings("unchecked")
- T result = (T) instance.getClass().getMethod(getName(), getParameterTypesAsArray()).invoke(instance, parameters);
+ T result = (T) method.invoke(instance, parameters);
return result;
}
More information about the weld-commits
mailing list