You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ar...@apache.org on 2013/01/04 08:09:40 UTC
svn commit: r1428732 - in
/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans:
intercept/WebBeansInterceptorConfig.java
intercept/webbeans/WebBeansInterceptorBean.java util/WebBeansUtil.java
Author: arne
Date: Fri Jan 4 07:09:40 2013
New Revision: 1428732
URL: http://svn.apache.org/viewvc?rev=1428732&view=rev
Log:
OWB-745: Aligned methods checkCommonsAnnotationCriterias
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptorBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java?rev=1428732&r1=1428731&r2=1428732&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java Fri Jan 4 07:09:40 2013
@@ -290,13 +290,13 @@ public final class WebBeansInterceptorCo
// interceptor binding
webBeansContext.getWebBeansUtil().configureInterceptorMethods(interceptor, annotatedType,
AroundInvoke.class, true,
- false, stack, null);
+ false, stack, null, true);
webBeansContext.getWebBeansUtil().configureInterceptorMethods(interceptor, annotatedType,
PostConstruct.class, true,
- false, stack, null);
+ false, stack, null, true);
webBeansContext.getWebBeansUtil().configureInterceptorMethods(interceptor, annotatedType,
PreDestroy.class, true,
- false, stack, null);
+ false, stack, null, true);
if (null != ejbPlugin)
{
@@ -304,12 +304,12 @@ public final class WebBeansInterceptorCo
annotatedType,
prePassivateClass,
true, false, stack,
- null);
+ null, true);
webBeansContext.getWebBeansUtil().configureInterceptorMethods(interceptor,
annotatedType,
postActivateClass,
true, false, stack,
- null);
+ null, true);
}
}
@@ -553,17 +553,17 @@ public final class WebBeansInterceptorCo
interAnnoType,
AroundInvoke.class,
true, true, stack,
- method);
+ method, true);
webBeansContext.getWebBeansUtil().configureInterceptorMethods(interceptor,
interAnnoType,
PostConstruct.class,
true, true, stack,
- method);
+ method, true);
webBeansContext.getWebBeansUtil().configureInterceptorMethods(interceptor,
interAnnoType,
PreDestroy.class,
true, true, stack,
- method);
+ method, true);
}
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptorBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptorBean.java?rev=1428732&r1=1428731&r2=1428732&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptorBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptorBean.java Fri Jan 4 07:09:40 2013
@@ -268,9 +268,8 @@ public class WebBeansInterceptorBean<T>
{
Class<? extends Annotation> interceptorTypeAnnotationClazz =
webBeansContext.getInterceptorUtil().getInterceptorAnnotationClazz(type);
- method = getWebBeansContext().getWebBeansUtil().checkCommonAnnotationCriterias(getClazz(),
- interceptorTypeAnnotationClazz,
- true);
+ method
+ = getWebBeansContext().getWebBeansUtil().checkCommonAnnotationCriterias(getClazz(), interceptorTypeAnnotationClazz, true);
}
return method;
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java?rev=1428732&r1=1428731&r2=1428732&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java Fri Jan 4 07:09:40 2013
@@ -819,7 +819,7 @@ public final class WebBeansUtil
Class<?> clazz = annotatedType.getJavaClass();
Method result = null;
- boolean found = false;
+ Set<Class<?>> foundInClass = new HashSet<Class<?>>();
Set<AnnotatedMethod<? super T>> methods = annotatedType.getMethods();
for(AnnotatedMethod<? super T> methodA : methods)
{
@@ -832,33 +832,18 @@ public final class WebBeansUtil
continue;
}
- if (found)
+ if (foundInClass.contains(method.getDeclaringClass()))
{
throw new WebBeansConfigurationException("@" + commonAnnotation.getSimpleName()
+ " annotation is declared more than one method in the class : " + clazz.getName());
}
- found = true;
+ foundInClass.add(method.getDeclaringClass());
result = method;
// Check method criterias
- if (methodB.getParameters().isEmpty())
+ if (!methodB.getParameters().isEmpty())
{
- if (!invocationContext)
- {
- throw new WebBeansConfigurationException("@" + commonAnnotation.getSimpleName()
- + " annotated method : " + method.getName() + " in class : " + clazz.getName()
- + " can not take any formal arguments");
- }
-
- List<AnnotatedParameter<T>> parameters = methodB.getParameters();
- List<Class<?>> clazzParameters = new ArrayList<Class<?>>();
- for(AnnotatedParameter<T> parameter : parameters)
- {
- clazzParameters.add(ClassUtil.getClazz(parameter.getBaseType()));
- }
-
- Class<?>[] params = clazzParameters.toArray(new Class<?>[clazzParameters.size()]);
- if (params.length != 1 || !params[0].equals(InvocationContext.class))
+ if (methodB.getParameters().size() != 1 || !ClassUtil.getClass(methodB.getParameters().get(0).getBaseType()).equals(InvocationContext.class))
{
throw new WebBeansConfigurationException("@" + commonAnnotation.getSimpleName()
+ " annotated method : " + method.getName() + " in class : " + clazz.getName()
@@ -867,9 +852,8 @@ public final class WebBeansUtil
}
else if(invocationContext)
{
- throw new WebBeansConfigurationException("@" + commonAnnotation.getSimpleName()
- + " annotated method : " + method.getName() + " in class : " + clazz.getName()
- + " must take a parameter with class type javax.interceptor.InvocationContext.");
+ // Maybe it just intercepts itself, but we were looking at it like an @Interceptor
+ return null;
}
if (!method.getReturnType().equals(Void.TYPE))
@@ -1116,7 +1100,8 @@ public final class WebBeansUtil
boolean definedInInterceptorClass,
boolean definedInMethod,
List<InterceptorData> stack,
- Method annotatedInterceptorClassMethod)
+ Method annotatedInterceptorClassMethod,
+ boolean defineWithInterceptorBinding)
{
InterceptorData intData;
Method method = null;
@@ -1131,6 +1116,20 @@ public final class WebBeansUtil
postActivateClass = ejbPlugin.getPostActivateClass();
}
+ //Check for default constructor of EJB based interceptor
+ if(webBeansInterceptor == null)
+ {
+ if(definedInInterceptorClass)
+ {
+ Constructor<?> ct = getNoArgConstructor(annotatedType.getJavaClass());
+ if (ct == null)
+ {
+ throw new WebBeansConfigurationException("class : " + annotatedType.getJavaClass().getName()
+ + " must have no-arg constructor");
+ }
+ }
+ }
+
if (annotation.equals(AroundInvoke.class) ||
annotation.equals(AroundTimeout.class))
{
@@ -1144,14 +1143,18 @@ public final class WebBeansUtil
if (method != null)
{
- intData = new InterceptorDataImpl(true, webBeansContext);
+ intData = new InterceptorDataImpl(defineWithInterceptorBinding, webBeansContext);
intData.setDefinedInInterceptorClass(definedInInterceptorClass);
intData.setDefinedInMethod(definedInMethod);
intData.setInterceptorBindingMethod(annotatedInterceptorClassMethod);
intData.setWebBeansInterceptor(webBeansInterceptor);
- intData.setInterceptorMethod(method, annotation);
- intData.setInterceptorClass(webBeansInterceptor.getBeanClass());
+ if (definedInInterceptorClass)
+ {
+ intData.setInterceptorClass(annotatedType.getJavaClass());
+ }
+
+ intData.setInterceptorMethod(method, annotation);
stack.add(intData);
}
}