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 20:14:36 UTC
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/
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<T> extends InterceptorBean<T>
{
- /**
- * Constructor of the web bean component
- */
- private Constructor<T> constructor;
/**
*
@@ -55,25 +51,6 @@ public class CdiInterceptorBean<T> exten
private Set<Annotation> interceptorBindings;
- /**
- * Get constructor.
- *
- * @return constructor
- */
- public Constructor<T> getConstructor()
- {
- return constructor;
- }
-
- /**
- * Set constructor.
- *
- * @param constructor constructor instance
- */
- public void setConstructor(Constructor<T> 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<T> extends AbstractInjectionTargetBean<T> implements Interceptor<T>, 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<T> annotatedType)
- {
- super(webBeansContext, WebBeansType.INTERCEPTOR, annotatedType.getJavaClass(), annotatedType);
- }
+ private Constructor<T> constructor;
+
private Set<InterceptionType> intercepts = Collections.EMPTY_SET;
@@ -101,6 +97,36 @@ public abstract class InterceptorBean<T>
*/
private Method[] postActivateMethods;
+ /**
+ *
+ * @param annotatedType AnnotatedType will be returned by some methods in the SPI
+ * @param webBeansContext
+ */
+ public InterceptorBean(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType)
+ {
+ super(webBeansContext, WebBeansType.INTERCEPTOR, annotatedType.getJavaClass(), annotatedType);
+ }
+
+ /**
+ * Get constructor.
+ *
+ * @return constructor
+ */
+ public Constructor<T> getConstructor()
+ {
+ return constructor;
+ }
+
+ /**
+ * Set constructor.
+ *
+ * @param constructor constructor instance
+ */
+ public void setConstructor(Constructor<T> 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<T> extends InterceptorBeanBuilder<T>
+public class EjbInterceptorBeanBuilder<T> extends InterceptorBeanBuilder<T>
{
- private AnnotatedConstructor<T> constructor;
- public CdiInterceptorBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType)
+ public EjbInterceptorBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType)
{
- super(new CdiInterceptorBean<T>(webBeansContext, annotatedType));
+ super(new EjbInterceptorBean<T>(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<T> bean = getBean();
- InjectionPointFactory injectionPointFactory = webBeansContext.getInjectionPointFactory();
- List<InjectionPoint> injectionPoints = injectionPointFactory.getConstructorInjectionPointData(bean, constructor);
- for (InjectionPoint injectionPoint : injectionPoints)
- {
- addImplicitComponentForInjectionPoint(injectionPoint);
- bean.addInjectionPoint(injectionPoint);
- }
- bean.setConstructor(constructor.getJavaMember());
- }
- public CdiInterceptorBean<T> getBean()
+ public EjbInterceptorBean<T> getBean()
{
- return (CdiInterceptorBean<T>)super.getBean();
+ return (EjbInterceptorBean<T>)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<? extends Annotation> prePassivateClass;
private final Class<? extends Annotation> postActivateClass;
+ private AnnotatedConstructor<T> constructor;
+
protected InterceptorBeanBuilder(InterceptorBean<T> 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<T> bean = (InterceptorBean<T>) getBean();
+ InjectionPointFactory injectionPointFactory = webBeansContext.getInjectionPointFactory();
+ List<InjectionPoint> injectionPoints = injectionPointFactory.getConstructorInjectionPointData(bean, constructor);
+ for (InjectionPoint injectionPoint : injectionPoints)
+ {
+ addImplicitComponentForInjectionPoint(injectionPoint);
+ bean.addInjectionPoint(injectionPoint);
+ }
+ bean.setConstructor(constructor.getJavaMember());
+ }
+
/**
* If this method returns <code>false</code> 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<Class<?>> beanClasses = new ArrayList<Class<?>>();
+ beanClasses.add(UtilitySampleBean.class);
+ beanClasses.add(EjbInterceptor.class);
+ beanClasses.add(ManagedBeanWithEjbInterceptor.class);
+
+ startContainer(beanClasses, null);
+
+ AnnotatedType<EjbInterceptor> annotatedType = getBeanManager().createAnnotatedType(EjbInterceptor.class);
+
+ EjbInterceptorBeanBuilder<EjbInterceptor> ibb
+ = new EjbInterceptorBeanBuilder<EjbInterceptor>(getWebBeansContext(), annotatedType);
+ ibb.defineEjbInterceptorRules();
+ InterceptorBean<EjbInterceptor> bean = ibb.getBean();
+ Assert.assertNotNull(bean);
+
+
+ shutDownContainer();
+ }
+
+}