Return-Path: X-Original-To: apmail-openwebbeans-commits-archive@www.apache.org Delivered-To: apmail-openwebbeans-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5F726EA5F for ; Sat, 12 Jan 2013 19:14:57 +0000 (UTC) Received: (qmail 88169 invoked by uid 500); 12 Jan 2013 19:14:57 -0000 Delivered-To: apmail-openwebbeans-commits-archive@openwebbeans.apache.org Received: (qmail 88147 invoked by uid 500); 12 Jan 2013 19:14:57 -0000 Mailing-List: contact commits-help@openwebbeans.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openwebbeans.apache.org Delivered-To: mailing list commits@openwebbeans.apache.org Received: (qmail 88137 invoked by uid 99); 12 Jan 2013 19:14:57 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 12 Jan 2013 19:14:57 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 12 Jan 2013 19:14:55 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 53DD32388847; Sat, 12 Jan 2013 19:14:36 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1432492 - in /openwebbeans/trunk/webbeans-impl/src: main/java/org/apache/webbeans/component/ main/java/org/apache/webbeans/component/creation/ test/java/org/apache/webbeans/newtests/interceptors/resolution/ Date: Sat, 12 Jan 2013 19:14:36 -0000 To: commits@openwebbeans.apache.org From: struberg@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130112191436.53DD32388847@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: struberg Date: Sat Jan 12 19:14:35 2013 New Revision: 1432492 URL: http://svn.apache.org/viewvc?rev=1432492&view=rev Log: OWB-344 initial EjbInterceptorBeanBuilder Added: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/EjbInterceptorBeanBuilder.java - copied, changed from r1432468, openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/CdiInterceptorBeanBuilder.java openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/CdiInterceptorBeanBuilderTest.java - copied, changed from r1432491, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/InterceptorBeanBuilderTest.java openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/EjbInterceptorBeanBuilderTest.java Removed: 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/CdiInterceptorBean.java 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/CdiInterceptorBean.java URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/CdiInterceptorBean.java?rev=1432492&r1=1432491&r2=1432492&view=diff ============================================================================== --- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/CdiInterceptorBean.java (original) +++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/CdiInterceptorBean.java Sat Jan 12 19:14:35 2013 @@ -37,10 +37,6 @@ import org.apache.webbeans.portable.Inje */ public class CdiInterceptorBean extends InterceptorBean { - /** - * Constructor of the web bean component - */ - private Constructor constructor; /** * @@ -55,25 +51,6 @@ public class CdiInterceptorBean exten private Set interceptorBindings; - /** - * Get constructor. - * - * @return constructor - */ - public Constructor getConstructor() - { - return constructor; - } - - /** - * Set constructor. - * - * @param constructor constructor instance - */ - public void setConstructor(Constructor constructor) - { - this.constructor = constructor; - } /** * {@inheritDoc} 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=1432492&r1=1432491&r2=1432492&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 Sat Jan 12 19:14:35 2013 @@ -24,6 +24,7 @@ import javax.enterprise.inject.spi.Inter import javax.enterprise.inject.spi.Interceptor; import javax.interceptor.InvocationContext; import java.lang.annotation.Annotation; +import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.util.Collections; import java.util.Map; @@ -41,16 +42,11 @@ import org.apache.webbeans.util.Exceptio */ public abstract class InterceptorBean extends AbstractInjectionTargetBean implements Interceptor, EnterpriseBeanMarker { - /** - * - * @param annotatedType AnnotatedType will be returned by some methods in the SPI - * @param webBeansContext + * Constructor of the web bean component */ - public InterceptorBean(WebBeansContext webBeansContext, AnnotatedType annotatedType) - { - super(webBeansContext, WebBeansType.INTERCEPTOR, annotatedType.getJavaClass(), annotatedType); - } + private Constructor constructor; + private Set intercepts = Collections.EMPTY_SET; @@ -101,6 +97,36 @@ public abstract class InterceptorBean */ private Method[] postActivateMethods; + /** + * + * @param annotatedType AnnotatedType will be returned by some methods in the SPI + * @param webBeansContext + */ + public InterceptorBean(WebBeansContext webBeansContext, AnnotatedType annotatedType) + { + super(webBeansContext, WebBeansType.INTERCEPTOR, annotatedType.getJavaClass(), annotatedType); + } + + /** + * Get constructor. + * + * @return constructor + */ + public Constructor getConstructor() + { + return constructor; + } + + /** + * Set constructor. + * + * @param constructor constructor instance + */ + public void setConstructor(Constructor constructor) + { + this.constructor = constructor; + } + public void setAroundInvokeMethods(Method[] aroundInvokeMethods) { this.aroundInvokeMethods = aroundInvokeMethods; Copied: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/EjbInterceptorBeanBuilder.java (from r1432468, 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/EjbInterceptorBeanBuilder.java?p2=openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/EjbInterceptorBeanBuilder.java&p1=openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/CdiInterceptorBeanBuilder.java&r1=1432468&r2=1432492&rev=1432492&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/EjbInterceptorBeanBuilder.java Sat Jan 12 19:14:35 2013 @@ -19,82 +19,37 @@ package org.apache.webbeans.component.creation; -import javax.enterprise.inject.spi.AnnotatedConstructor; import javax.enterprise.inject.spi.AnnotatedType; -import javax.enterprise.inject.spi.InjectionPoint; -import java.lang.annotation.Annotation; -import java.util.List; - -import org.apache.webbeans.component.CdiInterceptorBean; +import org.apache.webbeans.component.EjbInterceptorBean; import org.apache.webbeans.config.WebBeansContext; -import org.apache.webbeans.exception.WebBeansConfigurationException; -import org.apache.webbeans.inject.impl.InjectionPointFactory; -import org.apache.webbeans.util.ArrayUtil; /** * Bean builder for {@link org.apache.webbeans.component.InterceptorBean}s. */ -public class CdiInterceptorBeanBuilder extends InterceptorBeanBuilder +public class EjbInterceptorBeanBuilder extends InterceptorBeanBuilder { - private AnnotatedConstructor constructor; - public CdiInterceptorBeanBuilder(WebBeansContext webBeansContext, AnnotatedType annotatedType) + public EjbInterceptorBeanBuilder(WebBeansContext webBeansContext, AnnotatedType annotatedType) { - super(new CdiInterceptorBean(webBeansContext, annotatedType)); + super(new EjbInterceptorBean(webBeansContext, annotatedType)); } - public void defineCdiInterceptorRules() + public void defineEjbInterceptorRules() { checkInterceptorConditions(); - defineInterceptorBindings(); defineInterceptorRules(); } public boolean isInterceptorEnabled() { - return webBeansContext.getInterceptorsManager().isInterceptorClassEnabled(getBeanType()); - } - - 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)); + return true; } - public void defineConstructor() - { - constructor = getBeanConstructor(); - addConstructorInjectionPointMetaData(); - } - - - protected void addConstructorInjectionPointMetaData() - { - if (constructor == null) - { - return; - } - CdiInterceptorBean bean = getBean(); - InjectionPointFactory injectionPointFactory = webBeansContext.getInjectionPointFactory(); - List injectionPoints = injectionPointFactory.getConstructorInjectionPointData(bean, constructor); - for (InjectionPoint injectionPoint : injectionPoints) - { - addImplicitComponentForInjectionPoint(injectionPoint); - bean.addInjectionPoint(injectionPoint); - } - bean.setConstructor(constructor.getJavaMember()); - } - public CdiInterceptorBean getBean() + public EjbInterceptorBean getBean() { - return (CdiInterceptorBean)super.getBean(); + return (EjbInterceptorBean)super.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=1432492&r1=1432491&r2=1432492&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 Sat Jan 12 19:14:35 2013 @@ -22,8 +22,10 @@ import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.enterprise.context.Dependent; import javax.enterprise.inject.Produces; +import javax.enterprise.inject.spi.AnnotatedConstructor; import javax.enterprise.inject.spi.AnnotatedMethod; import javax.enterprise.inject.spi.AnnotatedParameter; +import javax.enterprise.inject.spi.InjectionPoint; import javax.enterprise.inject.spi.InterceptionType; import javax.interceptor.AroundInvoke; import javax.interceptor.AroundTimeout; @@ -37,6 +39,7 @@ import java.util.Set; import org.apache.webbeans.component.InterceptorBean; import org.apache.webbeans.exception.WebBeansConfigurationException; +import org.apache.webbeans.inject.impl.InjectionPointFactory; import org.apache.webbeans.plugins.OpenWebBeansEjbLCAPlugin; @@ -51,6 +54,8 @@ public abstract class InterceptorBeanBui private final Class prePassivateClass; private final Class postActivateClass; + private AnnotatedConstructor constructor; + protected InterceptorBeanBuilder(InterceptorBean bean) { super(bean, Dependent.class); @@ -68,6 +73,30 @@ public abstract class InterceptorBeanBui } } + public void defineConstructor() + { + constructor = getBeanConstructor(); + addConstructorInjectionPointMetaData(); + } + + + protected void addConstructorInjectionPointMetaData() + { + if (constructor == null) + { + return; + } + InterceptorBean bean = (InterceptorBean) getBean(); + InjectionPointFactory injectionPointFactory = webBeansContext.getInjectionPointFactory(); + List injectionPoints = injectionPointFactory.getConstructorInjectionPointData(bean, constructor); + for (InjectionPoint injectionPoint : injectionPoints) + { + addImplicitComponentForInjectionPoint(injectionPoint); + bean.addInjectionPoint(injectionPoint); + } + bean.setConstructor(constructor.getJavaMember()); + } + /** * If this method returns false the {@link #getBean()} method must not get called. * @@ -75,7 +104,6 @@ public abstract class InterceptorBeanBui */ public abstract boolean isInterceptorEnabled(); - public abstract void defineConstructor(); protected void checkInterceptorConditions() { Copied: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/CdiInterceptorBeanBuilderTest.java (from r1432491, 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/CdiInterceptorBeanBuilderTest.java?p2=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/CdiInterceptorBeanBuilderTest.java&p1=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/InterceptorBeanBuilderTest.java&r1=1432491&r2=1432492&rev=1432492&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/CdiInterceptorBeanBuilderTest.java Sat Jan 12 19:14:35 2013 @@ -43,7 +43,7 @@ import org.junit.Test; /** * Tests for the various InterceptorBeanBuilder implementations. */ -public class InterceptorBeanBuilderTest extends AbstractUnitTest +public class CdiInterceptorBeanBuilderTest extends AbstractUnitTest { @Test public void testClassLevelSingleInterceptor() throws Exception Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/EjbInterceptorBeanBuilderTest.java URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/EjbInterceptorBeanBuilderTest.java?rev=1432492&view=auto ============================================================================== --- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/EjbInterceptorBeanBuilderTest.java (added) +++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/EjbInterceptorBeanBuilderTest.java Sat Jan 12 19:14:35 2013 @@ -0,0 +1,63 @@ +/* + * 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; + +import javax.enterprise.inject.spi.AnnotatedType; +import java.util.ArrayList; +import java.util.Collection; + +import org.apache.webbeans.component.InterceptorBean; +import org.apache.webbeans.component.creation.EjbInterceptorBeanBuilder; +import org.apache.webbeans.newtests.AbstractUnitTest; + +import org.apache.webbeans.newtests.interceptors.ejb.EjbInterceptor; +import org.apache.webbeans.newtests.interceptors.ejb.ManagedBeanWithEjbInterceptor; +import org.apache.webbeans.newtests.interceptors.resolution.beans.UtilitySampleBean; +import org.junit.Assert; +import org.junit.Test; + +/** + * Test for building EJB-style interceptor beans + */ +public class EjbInterceptorBeanBuilderTest extends AbstractUnitTest +{ + + @Test + public void testEjbInterceptorBeanCreation() + { + Collection> beanClasses = new ArrayList>(); + beanClasses.add(UtilitySampleBean.class); + beanClasses.add(EjbInterceptor.class); + beanClasses.add(ManagedBeanWithEjbInterceptor.class); + + startContainer(beanClasses, null); + + AnnotatedType annotatedType = getBeanManager().createAnnotatedType(EjbInterceptor.class); + + EjbInterceptorBeanBuilder ibb + = new EjbInterceptorBeanBuilder(getWebBeansContext(), annotatedType); + ibb.defineEjbInterceptorRules(); + InterceptorBean bean = ibb.getBean(); + Assert.assertNotNull(bean); + + + shutDownContainer(); + } + +}