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/12 14:52:01 UTC

svn commit: r1432423 - in /openwebbeans/trunk/webbeans-impl/src: main/java/org/apache/webbeans/component/creation/ test/java/org/apache/webbeans/newtests/interceptors/resolution/ test/java/org/apache/webbeans/newtests/interceptors/resolution/intercepto...

Author: struberg
Date: Sat Jan 12 13:52:00 2013
New Revision: 1432423

URL: http://svn.apache.org/viewvc?rev=1432423&view=rev
Log:
OWB-344 more tests for interceptor method detection

Added:
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/interceptors/
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/interceptors/TestIntercepted1.java   (contents, props changed)
      - copied, changed from r1432402, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/intercept/webbeans/bindings/Transactional.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/interceptors/TestInterceptor1.java
      - copied, changed from r1432402, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/intercept/webbeans/TransactionalInterceptor.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/interceptors/TestInterceptorParent.java
Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/InterceptorBeanBuilderTest.java
    openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/newtests/interceptors/resolution/InterceptorResolutionServiceTest.xml

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.java?rev=1432423&r1=1432422&r2=1432423&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.java Sat Jan 12 13:52:00 2013
@@ -162,6 +162,12 @@ public abstract class AbstractBeanBuilde
         {
             AnnotatedMethod alreadyDefined = it.next();
 
+            if (alreadyDefined == annotatedMethod)
+            {
+                // we don't remove ourself
+                continue;
+            }
+
             if (methodName == null)
             {
                 methodName = annotatedMethod.getJavaMember().getName();

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=1432423&r1=1432422&r2=1432423&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 Sat Jan 12 13:52:00 2013
@@ -28,6 +28,9 @@ 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.newtests.interceptors.resolution.interceptors.TestIntercepted1;
+import org.apache.webbeans.newtests.interceptors.resolution.interceptors.TestInterceptor1;
+import org.apache.webbeans.newtests.interceptors.resolution.interceptors.TestInterceptorParent;
 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;
@@ -49,6 +52,9 @@ public class InterceptorBeanBuilderTest 
         beanClasses.add(ClassInterceptedClass.class);
         beanClasses.add(Transactional.class);
         beanClasses.add(TransactionalInterceptor.class);
+        beanClasses.add(TestIntercepted1.class);
+        beanClasses.add(TestInterceptor1.class);
+        beanClasses.add(TestInterceptorParent.class);
 
         startContainer(beanClasses, beanXmls);
 
@@ -81,4 +87,36 @@ public class InterceptorBeanBuilderTest 
 
         shutDownContainer();
     }
+
+    @Test
+    public void testClassLevelParentInterceptor() throws Exception
+    {
+        Collection<String> beanXmls = new ArrayList<String>();
+        beanXmls.add(getXmlPath(this.getClass().getPackage().getName(), InterceptorResolutionServiceTest.class.getSimpleName()));
+
+        Collection<Class<?>> beanClasses = new ArrayList<Class<?>>();
+        beanClasses.add(TestIntercepted1.class);
+        beanClasses.add(TestInterceptor1.class);
+        beanClasses.add(TestInterceptorParent.class);
+
+        startContainer(beanClasses, beanXmls);
+
+        AnnotatedType<TestInterceptor1> annotatedType = getBeanManager().createAnnotatedType(TestInterceptor1.class);
+
+        CdiInterceptorBeanBuilder<TestInterceptor1> ibb
+                = new CdiInterceptorBeanBuilder<TestInterceptor1>(getWebBeansContext(), annotatedType);
+        ibb.defineCdiInterceptorRules();
+        Interceptor<TestInterceptor1> bean = ibb.getBean();
+        Assert.assertNotNull(bean);
+
+        Assert.assertTrue(bean.intercepts(InterceptionType.AROUND_INVOKE));
+        Assert.assertTrue(bean.intercepts(InterceptionType.AROUND_TIMEOUT));
+        Assert.assertTrue(bean.intercepts(InterceptionType.PRE_DESTROY));
+        Assert.assertTrue(bean.intercepts(InterceptionType.POST_CONSTRUCT));
+        Assert.assertFalse(bean.intercepts(InterceptionType.PRE_PASSIVATE));
+        Assert.assertFalse(bean.intercepts(InterceptionType.POST_ACTIVATE));
+        Assert.assertEquals(1, bean.getInterceptorBindings().size());
+
+        shutDownContainer();
+    }
 }

Copied: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/interceptors/TestIntercepted1.java (from r1432402, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/intercept/webbeans/bindings/Transactional.java)
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/interceptors/TestIntercepted1.java?p2=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/interceptors/TestIntercepted1.java&p1=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/intercept/webbeans/bindings/Transactional.java&r1=1432402&r2=1432423&rev=1432423&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/intercept/webbeans/bindings/Transactional.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/interceptors/TestIntercepted1.java Sat Jan 12 13:52:00 2013
@@ -16,19 +16,18 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.webbeans.test.component.intercept.webbeans.bindings;
+package org.apache.webbeans.newtests.interceptors.resolution.interceptors;
 
+import javax.interceptor.InterceptorBinding;
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import javax.interceptor.InterceptorBinding;
-
 @InterceptorBinding
 @Retention(RetentionPolicy.RUNTIME)
 @Target( { ElementType.TYPE, ElementType.METHOD })
-public @interface Transactional 
+public @interface TestIntercepted1
 {
 
 }

Propchange: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/interceptors/TestIntercepted1.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/interceptors/TestInterceptor1.java (from r1432402, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/intercept/webbeans/TransactionalInterceptor.java)
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/interceptors/TestInterceptor1.java?p2=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/interceptors/TestInterceptor1.java&p1=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/intercept/webbeans/TransactionalInterceptor.java&r1=1432402&r2=1432423&rev=1432423&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/intercept/webbeans/TransactionalInterceptor.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/interceptors/TestInterceptor1.java Sat Jan 12 13:52:00 2013
@@ -16,32 +16,87 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.webbeans.test.component.intercept.webbeans;
+package org.apache.webbeans.newtests.interceptors.resolution.interceptors;
 
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
 import javax.interceptor.AroundInvoke;
+import javax.interceptor.AroundTimeout;
 import javax.interceptor.Interceptor;
 import javax.interceptor.InvocationContext;
 
-import org.apache.webbeans.test.component.intercept.webbeans.bindings.Transactional;
+import org.apache.webbeans.util.ExceptionUtil;
+
 
 @Interceptor
-@Transactional
-public class TransactionalInterceptor
+@TestIntercepted1
+public class TestInterceptor1 extends TestInterceptorParent
 {
+    public static int invocationCount = 0;
+    public static int exceptionCount = 0;
+    public static int postConstructCount = 0;
 
     @AroundInvoke
     public Object caller(InvocationContext context) throws Exception
     {
         try
         {
-            ShoppingCard.CALLED = true;
+            invocationCount++;
             return context.proceed();
             
-        }catch(Exception e)
+        } catch(Exception e)
+        {
+            exceptionCount++;
+            throw e;
+        }
+    }
+
+    /**
+     * another name -> no invocation -> 2 interceptors
+     */
+    @PostConstruct
+    public void anotherPostConstruct(InvocationContext context)
+    {
+        postConstructCount++;
+        try
+        {
+            context.proceed();
+        }
+        catch (Exception e)
+        {
+            ExceptionUtil.throwAsRuntimeException(e);
+        }
+
+    }
+
+    /**
+     * 2 private methods -> 2 interceptors
+     */
+    @PreDestroy
+    private void preDestroy(InvocationContext context)
+    {
+        preDestroyCount++;
+        try
+        {
+            context.proceed();
+        }
+        catch (Exception e)
         {
-            ShoppingCard.CALLED = false;
+            ExceptionUtil.throwAsRuntimeException(e);
         }
-        
-        return null;
+
+    }
+
+    /**
+     * overridden method -> only 1 interceptor
+     * @param context
+     */
+    @AroundTimeout
+    public Object aroundTimeout(InvocationContext context) throws Exception
+    {
+        aroundTimeoutCount++;
+        return context.proceed();
     }
+
+
 }

Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/interceptors/TestInterceptorParent.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/interceptors/TestInterceptorParent.java?rev=1432423&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/interceptors/TestInterceptorParent.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/interceptors/TestInterceptorParent.java Sat Jan 12 13:52:00 2013
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.webbeans.newtests.interceptors.resolution.interceptors;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.interceptor.AroundTimeout;
+import javax.interceptor.InvocationContext;
+
+import org.apache.webbeans.util.ExceptionUtil;
+
+
+public class TestInterceptorParent
+{
+    public static int postConstructCount = 0;
+    public static int preDestroyCount = 0;
+    public static int aroundTimeoutCount = 0;
+
+    @PostConstruct
+    public void postConstruct(InvocationContext context)
+    {
+        postConstructCount++;
+        try
+        {
+            context.proceed();
+        }
+        catch (Exception e)
+        {
+            ExceptionUtil.throwAsRuntimeException(e);
+        }
+    }
+
+    @PreDestroy
+    private void preDestroy(InvocationContext context)
+    {
+        preDestroyCount++;
+        try
+        {
+            context.proceed();
+        }
+        catch (Exception e)
+        {
+            ExceptionUtil.throwAsRuntimeException(e);
+        }
+    }
+
+    @AroundTimeout
+    public Object aroundTimeout(InvocationContext context) throws Exception
+    {
+        aroundTimeoutCount++;
+        return context.proceed();
+    }
+
+}

Modified: openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/newtests/interceptors/resolution/InterceptorResolutionServiceTest.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/newtests/interceptors/resolution/InterceptorResolutionServiceTest.xml?rev=1432423&r1=1432422&r2=1432423&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/newtests/interceptors/resolution/InterceptorResolutionServiceTest.xml (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/newtests/interceptors/resolution/InterceptorResolutionServiceTest.xml Sat Jan 12 13:52:00 2013
@@ -22,6 +22,7 @@ under the License.
         <class>org.apache.webbeans.test.component.intercept.webbeans.TransactionalInterceptor</class>
         <class>org.apache.webbeans.test.component.intercept.webbeans.ActionInterceptor</class>
         <class>org.apache.webbeans.test.component.intercept.webbeans.SecureInterceptor</class>
+        <class>org.apache.webbeans.newtests.interceptors.resolution.interceptors.TestInterceptor1</class>
     </interceptors>
     <decorators>
         <class>org.apache.webbeans.test.component.decorator.clean.ServiceDecorator</class>