You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2013/01/11 12:09:54 UTC

svn commit: r1431992 - in /openwebbeans/trunk/webbeans-impl/src: main/java/org/apache/webbeans/component/ main/java/org/apache/webbeans/component/creation/ main/java/org/apache/webbeans/config/ main/java/org/apache/webbeans/intercept/ main/java/org/apa...

Author: struberg
Date: Fri Jan 11 11:09:54 2013
New Revision: 1431992

URL: http://svn.apache.org/viewvc?rev=1431992&view=rev
Log:
OWB-344 interceptor builder refined

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/AbstractInjectionTargetBeanBuilder.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/component/creation/ManagedBeanBuilder.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.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=1431992&r1=1431991&r2=1431992&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:09:54 2013
@@ -49,8 +49,6 @@ public abstract class InterceptorBean<T>
     public InterceptorBean(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType)
     {
         super(webBeansContext, WebBeansType.INTERCEPTOR, annotatedType.getJavaClass(), annotatedType);
-
-        Asserts.assertNotNull(intercepts, "Interceptor does not handle any InterceptionTypes!");
     }
 
     private Set<InterceptionType> intercepts;

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java?rev=1431992&r1=1431991&r2=1431992&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java Fri Jan 11 11:09:54 2013
@@ -73,7 +73,7 @@ import org.apache.webbeans.util.WebBeans
 public abstract class AbstractInjectionTargetBeanBuilder<T> extends AbstractBeanBuilder<T>
 {    
     
-    private WebBeansContext webBeansContext;
+    protected WebBeansContext webBeansContext;
     private Set<AnnotatedMember<? super T>> injectionPoints = new HashSet<AnnotatedMember<? super T>>();
 
     /**

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=1431992&r1=1431991&r2=1431992&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:09:54 2013
@@ -34,7 +34,19 @@ public class CdiInterceptorBeanBuilder<T
         super(new CdiInterceptorBean<T>(webBeansContext, annotatedType));
     }
 
-    public void defineCdiInterceptorBean()
+    public void defineCdiInterceptorRules()
+    {
+        defineInterceptorBindings();
+        defineInterceptorRules();
+
+    }
+
+    public boolean isInterceptorEnabled()
+    {
+        return webBeansContext.getInterceptorsManager().isInterceptorClassEnabled(getBeanType());
+    }
+
+    protected void defineInterceptorBindings()
     {
 
     }

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=1431992&r1=1431991&r2=1431992&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:09:54 2013
@@ -21,24 +21,32 @@ package org.apache.webbeans.component.cr
 import javax.enterprise.context.Dependent;
 
 import org.apache.webbeans.component.InterceptorBean;
-import org.apache.webbeans.intercept.InterceptorResolutionService;
+
 
 /**
  * Bean builder for {@link org.apache.webbeans.component.InterceptorBean}s.
  */
 public abstract class InterceptorBeanBuilder<T> extends AbstractInjectionTargetBeanBuilder<T>
 {
-    protected final InterceptorResolutionService interceptorResolutionService;
 
     protected InterceptorBeanBuilder(InterceptorBean<T> bean)
     {
         super(bean, Dependent.class);
-        interceptorResolutionService = bean.getWebBeansContext().getInterceptorResolutionService();
     }
 
-    protected void defineInterceptorBean()
-    {
+    /**
+     * If this method returns <code>false</code> the {@link #getBean()} method must not get called.
+     *
+     * @return <code>true</code> if the Interceptor is enabled and a Bean should get created
+     */
+    public abstract boolean isInterceptorEnabled();
 
+    protected void defineInterceptorRules()
+    {
+        defineInjectedMethods();
+        defineInjectedFields();
     }
 
+
+
 }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java?rev=1431992&r1=1431991&r2=1431992&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java Fri Jan 11 11:09:54 2013
@@ -238,6 +238,9 @@ public class ManagedBeanBuilder<T> exten
         return managedBean;
     }
 
+    /**
+     * @deprecated replaced via the various {@link InterceptorBeanBuilder}s
+     */
     public void defineInterceptor(ProcessInjectionTarget<T> injectionTargetEvent)
     {
         Class<?> clazz = injectionTargetEvent.getAnnotatedType().getJavaClass();

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java?rev=1431992&r1=1431991&r2=1431992&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java Fri Jan 11 11:09:54 2013
@@ -406,7 +406,7 @@ public class BeansDeployer
                     //If intercepted marker
                     if(bean instanceof InterceptedMarker)
                     {
-                        webBeansContext.getWebBeansInterceptorConfig().defineBeanInterceptorStack((AbstractInjectionTargetBean<Object>)bean);
+                        webBeansContext.getWebBeansInterceptorConfig().defineBeanInterceptorStack((AbstractInjectionTargetBean<Object>) bean);
                     }                                                            
                 }                
                 
@@ -862,7 +862,7 @@ public class BeansDeployer
                     managedBeanCreator.defineDecorator(processInjectionTargetEvent);
                 }
             }
-            else if(WebBeansUtil.isInterceptor(annotatedType))
+            else if(WebBeansUtil.isCdiInterceptor(annotatedType))
             {
                 if (logger.isLoggable(Level.FINE))
                 {

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java?rev=1431992&r1=1431991&r2=1431992&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java Fri Jan 11 11:09:54 2013
@@ -335,6 +335,7 @@ public class InterceptorResolutionServic
         /**
          * All the Interceptor Beans which are active on this class somewhere.
          * This is only used to create the Interceptor instances.
+         * The Interceptors are not sorted yet.
          */
         private Set<Interceptor<?>> interceptors = null;
 

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=1431992&r1=1431991&r2=1431992&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 11 11:09:54 2013
@@ -2448,7 +2448,7 @@ public final class WebBeansUtil
     public boolean isAnnotatedTypeDecoratorOrInterceptor(AnnotatedType<?> annotatedType)
     {
         if(isDecorator(annotatedType) ||
-           isInterceptor(annotatedType))
+           isCdiInterceptor(annotatedType))
         {
             return true;
         }
@@ -2466,9 +2466,10 @@ public final class WebBeansUtil
     }
 
     /**
-     * @return <code>true</code> if this AnnotatedType represents an Interceptor
+     * @return <code>true</code> if this AnnotatedType represents a CDI Interceptor
+     *         defined via a {@link javax.interceptor.Interceptor} annotation
      */
-    public static boolean isInterceptor(AnnotatedType<?> annotatedType)
+    public static boolean isCdiInterceptor(AnnotatedType<?> annotatedType)
     {
         return annotatedType.isAnnotationPresent(javax.interceptor.Interceptor.class);
     }

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=1431992&r1=1431991&r2=1431992&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:09:54 2013
@@ -27,6 +27,7 @@ import java.util.Collection;
 import org.apache.webbeans.component.creation.CdiInterceptorBeanBuilder;
 import org.apache.webbeans.newtests.AbstractUnitTest;
 import org.apache.webbeans.newtests.interceptors.factory.beans.ClassInterceptedClass;
+import org.apache.webbeans.test.component.intercept.webbeans.SecureAndTransactionalInterceptor;
 import org.apache.webbeans.test.component.intercept.webbeans.TransactionalInterceptor;
 import org.apache.webbeans.test.component.intercept.webbeans.bindings.Transactional;
 import org.junit.Assert;
@@ -50,13 +51,24 @@ public class InterceptorBeanBuilderTest 
 
         startContainer(beanClasses, beanXmls);
 
-        AnnotatedType<TransactionalInterceptor> annotatedType = getBeanManager().createAnnotatedType(TransactionalInterceptor.class);
+        {
+            AnnotatedType<SecureAndTransactionalInterceptor> annotatedType = getBeanManager().createAnnotatedType(SecureAndTransactionalInterceptor.class);
 
-/*X TODO finish
-        CdiInterceptorBeanBuilder<TransactionalInterceptor> ibb
-                = new CdiInterceptorBeanBuilder<TransactionalInterceptor>(getWebBeansContext(), annotatedType);
-        Bean<TransactionalInterceptor> bean = ibb.getBean();
-        Assert.assertNotNull(bean);
-*/
+            CdiInterceptorBeanBuilder<SecureAndTransactionalInterceptor> ibb
+                    = new CdiInterceptorBeanBuilder<SecureAndTransactionalInterceptor>(getWebBeansContext(), annotatedType);
+            Assert.assertFalse(ibb.isInterceptorEnabled());
+        }
+
+        {
+            AnnotatedType<TransactionalInterceptor> annotatedType = getBeanManager().createAnnotatedType(TransactionalInterceptor.class);
+
+            CdiInterceptorBeanBuilder<TransactionalInterceptor> ibb
+                    = new CdiInterceptorBeanBuilder<TransactionalInterceptor>(getWebBeansContext(), annotatedType);
+            ibb.defineCdiInterceptorRules();
+            Bean<TransactionalInterceptor> bean = ibb.getBean();
+            Assert.assertNotNull(bean);
+        }
+
+        shutDownContainer();
     }
 }