Author: struberg
Date: Fri Jan 11 11:40:17 2013
New Revision: 1431997
URL: http://svn.apache.org/viewvc?rev=1431997&view=rev
Log:
OWB-344 InterceptorBinding checks and scanninf
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/CdiInterceptorBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorUtil.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/InterceptorBeanBuilderTest.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=1431997&r1=1431996&r2=1431997&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
Fri Jan 11 11:40:17 2013
@@ -30,7 +30,6 @@ import java.util.Set;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.exception.WebBeansException;
-import org.apache.webbeans.util.Asserts;
import org.apache.webbeans.util.ExceptionUtil;
/**
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/CdiInterceptorBeanBuilder.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/CdiInterceptorBeanBuilder.java?rev=1431997&r1=1431996&r2=1431997&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/CdiInterceptorBeanBuilder.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/CdiInterceptorBeanBuilder.java
Fri Jan 11 11:40:17 2013
@@ -21,8 +21,12 @@ package org.apache.webbeans.component.cr
import javax.enterprise.inject.spi.AnnotatedType;
+import java.lang.annotation.Annotation;
+
import org.apache.webbeans.component.CdiInterceptorBean;
import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.exception.WebBeansConfigurationException;
+import org.apache.webbeans.util.ArrayUtil;
/**
* Bean builder for {@link org.apache.webbeans.component.InterceptorBean}s.
@@ -36,6 +40,7 @@ public class CdiInterceptorBeanBuilder<T
public void defineCdiInterceptorRules()
{
+ checkInterceptorConditions();
defineInterceptorBindings();
defineInterceptorRules();
@@ -48,7 +53,14 @@ public class CdiInterceptorBeanBuilder<T
protected void defineInterceptorBindings()
{
+ Annotation[] bindings =
webBeansContext.getAnnotationManager().getInterceptorBindingMetaAnnotations(getAnnotated().getAnnotations());
+ if (bindings == null || bindings.length == 0)
+ {
+ throw new WebBeansConfigurationException("WebBeans Interceptor
class : " + getBeanType()
+ + " must have at least one @InterceptorBinding
annotation");
+ }
+ getBean().setInterceptorBindings(ArrayUtil.asSet(bindings));
}
public CdiInterceptorBean<T> getBean()
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=1431997&r1=1431996&r2=1431997&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
Fri Jan 11 11:40:17 2013
@@ -19,8 +19,15 @@
package org.apache.webbeans.component.creation;
import javax.enterprise.context.Dependent;
+import javax.enterprise.inject.Produces;
+import javax.enterprise.inject.spi.AnnotatedMethod;
+import javax.enterprise.inject.spi.AnnotatedParameter;
+
+import java.util.List;
+import java.util.Set;
import org.apache.webbeans.component.InterceptorBean;
+import org.apache.webbeans.exception.WebBeansConfigurationException;
/**
@@ -41,6 +48,24 @@ public abstract class InterceptorBeanBui
*/
public abstract boolean isInterceptorEnabled();
+ protected void checkInterceptorConditions()
+ {
+ Set<AnnotatedMethod<? super T>> methods = getAnnotated().getMethods();
+ for(AnnotatedMethod method : methods)
+ {
+ List<AnnotatedParameter> parms = method.getParameters();
+ for (AnnotatedParameter parameter : parms)
+ {
+ if (parameter.isAnnotationPresent(Produces.class))
+ {
+ throw new WebBeansConfigurationException("Interceptor
class : " + getBeanType()
+ + " can not have producer methods but it has one
with name : "
+ + method.getJavaMember().getName());
+ }
+ }
+ }
+ }
+
protected void defineInterceptorRules()
{
defineInjectedMethods();
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorUtil.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorUtil.java?rev=1431997&r1=1431996&r2=1431997&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorUtil.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorUtil.java
Fri Jan 11 11:40:17 2013
@@ -366,11 +366,14 @@ public final class InterceptorUtil
+ " must have at least
one @InterceptorBinding annotation");
}
- checkLifecycleConditions(annotatedType, anns, "Lifecycle interceptor :
" + annotatedType.getJavaClass().getName()
+ checkLifecycleConditions(annotatedType, annSet, "Lifecycle interceptor
: " + annotatedType.getJavaClass().getName()
+ " interceptor binding
type must be defined as @Target{TYPE}");
}
+ /**
+ * @deprecated moved to InteceptorBeanBuilder
+ */
public void checkInterceptorConditions(AnnotatedType annotatedType)
{
Asserts.assertNotNull(annotatedType);
@@ -428,7 +431,7 @@ public final class InterceptorUtil
}
- public <T> void checkLifecycleConditions(AnnotatedType<T> annotatedType,
Annotation[] annots, String errorMessage)
+ public <T> void checkLifecycleConditions(AnnotatedType<T> annotatedType,
Set<Annotation> annots, String errorMessage)
{
if (isLifecycleMethodInterceptor(annotatedType) &&
!isBusinessMethodInterceptor(annotatedType))
{
Modified:
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/InterceptorBeanBuilderTest.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/InterceptorBeanBuilderTest.java?rev=1431997&r1=1431996&r2=1431997&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/InterceptorBeanBuilderTest.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/InterceptorBeanBuilderTest.java
Fri Jan 11 11:40:17 2013
@@ -20,7 +20,7 @@ package org.apache.webbeans.newtests.int
import javax.enterprise.inject.spi.AnnotatedType;
-import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.Interceptor;
import java.util.ArrayList;
import java.util.Collection;
@@ -52,6 +52,7 @@ public class InterceptorBeanBuilderTest
startContainer(beanClasses, beanXmls);
{
+ // take an Interceptor class which is not listed in beans.xml and
verify that is is not enabled
AnnotatedType<SecureAndTransactionalInterceptor> annotatedType =
getBeanManager().createAnnotatedType(SecureAndTransactionalInterceptor.class);
CdiInterceptorBeanBuilder<SecureAndTransactionalInterceptor> ibb
@@ -65,8 +66,11 @@ public class InterceptorBeanBuilderTest
CdiInterceptorBeanBuilder<TransactionalInterceptor> ibb
= new
CdiInterceptorBeanBuilder<TransactionalInterceptor>(getWebBeansContext(),
annotatedType);
ibb.defineCdiInterceptorRules();
- Bean<TransactionalInterceptor> bean = ibb.getBean();
+ Interceptor<TransactionalInterceptor> bean = ibb.getBean();
Assert.assertNotNull(bean);
+ Assert.assertNotNull(bean.getInterceptorBindings());
+ Assert.assertEquals(1, bean.getInterceptorBindings().size());
+
}
shutDownContainer();