Author: rmannibucau
Date: Mon Apr 15 07:12:04 2013
New Revision: 1467875
URL: http://svn.apache.org/r1467875
Log:
seems our interceptor index was never hitting the 0 index + hierarchic
interceptors was forbidden
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java?rev=1467875&r1=1467874&r2=1467875&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java
Mon Apr 15 07:12:04 2013
@@ -199,7 +199,9 @@ public abstract class InterceptorBean<T>
public int getCurrentInterceptorIdx()
{
- return currentInterceptorIdx;
+ // in proceed we +1 to handle index properly whatever the stack is
but we need to -1 here to not skip
+ // index 0 when we have multiple interceptors
+ return currentInterceptorIdx - 1;
}
public InvocationContext getWrapped()
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java?rev=1467875&r1=1467874&r2=1467875&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java
Mon Apr 15 07:12:04 2013
@@ -33,6 +33,7 @@ import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -129,7 +130,7 @@ public abstract class InterceptorBeanBui
{
List<Class> classHierarchy =
webBeansContext.getInterceptorUtil().getReverseClassHierarchy(annotatedType.getJavaClass());
- AnnotatedMethod aroundInvokeMethod = null;
+ Collection<Method> aroundInvokeMethod = null;
List<AnnotatedMethod> postConstructMethods = new
ArrayList<AnnotatedMethod>();
List<AnnotatedMethod> preDestroyMethods = new
ArrayList<AnnotatedMethod>();
List<AnnotatedMethod> aroundTimeoutMethods = new
ArrayList<AnnotatedMethod>();
@@ -155,10 +156,20 @@ public abstract class InterceptorBeanBui
{
if (aroundInvokeMethod != null)
{
- throw new WebBeansConfigurationException("only one
AroundInvoke allowed per Interceptor");
+ for (final Method ai : aroundInvokeMethod)
+ {
+ if (ai.getDeclaringClass() ==
m.getJavaMember().getDeclaringClass())
+ {
+ throw new
WebBeansConfigurationException("only one AroundInvoke allowed per Interceptor");
+ }
+ }
}
checkAroundInvokeConditions(m);
- aroundInvokeMethod = m;
+ if (aroundInvokeMethod == null)
+ {
+ aroundInvokeMethod = new ArrayList<Method>();
+ }
+ aroundInvokeMethod.add(m.getJavaMember());
}
// PostConstruct
@@ -216,7 +227,7 @@ public abstract class InterceptorBeanBui
if (aroundInvokeMethod != null)
{
interceptorFound = true;
- interceptionMethods.put(InterceptionType.AROUND_INVOKE, new
Method[]{aroundInvokeMethod.getJavaMember()});
+ interceptionMethods.put(InterceptionType.AROUND_INVOKE,
aroundInvokeMethod.toArray(new Method[aroundInvokeMethod.size()]));
}
if (postConstructMethods.size() > 0)