You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ar...@apache.org on 2013/01/30 14:27:16 UTC
svn commit: r1440403 - in /openwebbeans/trunk:
webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/
webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/
webbeans-impl/src/main/java/org/apache/webbeans/component/ webbeans-impl...
Author: arne
Date: Wed Jan 30 13:27:15 2013
New Revision: 1440403
URL: http://svn.apache.org/viewvc?rev=1440403&view=rev
Log:
OWB-770: Removed AbstractInjectionTargetBeanBuilder
Removed:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java
Modified:
openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanBuilder.java
openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/DecoratorBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ExtensionBeanBuilder.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/util/WebBeansUtil.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java
Modified: openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanBuilder.java?rev=1440403&r1=1440402&r2=1440403&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanBuilder.java Wed Jan 30 13:27:15 2013
@@ -18,6 +18,7 @@
*/
package org.apache.webbeans.ejb.common.component;
+import java.util.Collections;
import java.util.List;
import java.util.Set;
@@ -28,10 +29,10 @@ import javax.enterprise.inject.spi.Injec
import javax.enterprise.inject.spi.InjectionTarget;
import org.apache.webbeans.component.BeanAttributesImpl;
-import org.apache.webbeans.component.creation.AbstractInjectionTargetBeanBuilder;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.ejb.common.util.EjbValidator;
import org.apache.webbeans.portable.AbstractEjbInjectionTarget;
+import org.apache.webbeans.util.Asserts;
/**
* EjbBeanCreatorImpl.
@@ -40,14 +41,22 @@ import org.apache.webbeans.portable.Abst
*
* @param <T> ejb class type
*/
-public abstract class EjbBeanBuilder<T, E extends BaseEjbBean<T>> extends AbstractInjectionTargetBeanBuilder<T, E>
+public abstract class EjbBeanBuilder<T, E extends BaseEjbBean<T>>
{
+ protected final WebBeansContext webBeansContext;
+ protected final AnnotatedType<T> annotatedType;
+ protected final BeanAttributesImpl<T> beanAttributes;
+
public EjbBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType, BeanAttributesImpl<T> beanAttributes)
{
- super(webBeansContext, annotatedType, beanAttributes);
+ Asserts.assertNotNull(webBeansContext, "webBeansContext may not be null");
+ Asserts.assertNotNull(annotatedType, "annotated type may not be null");
+ Asserts.assertNotNull(beanAttributes, "beanAttributes may not be null");
+ this.webBeansContext = webBeansContext;
+ this.annotatedType = annotatedType;
+ this.beanAttributes = beanAttributes;
}
- @Override
protected InjectionTarget<T> buildInjectionTarget(AnnotatedType<T> annotatedType,
Set<InjectionPoint> points,
WebBeansContext webBeansContext,
@@ -64,9 +73,31 @@ public abstract class EjbBeanBuilder<T,
};
}
+ protected final E createBean(Class<T> beanClass)
+ {
+ E bean = createBean(beanClass, webBeansContext.getWebBeansUtil().isBeanEnabled(annotatedType, annotatedType.getJavaClass(), beanAttributes.getStereotypes()));
+
+ //X TODO hack to set the InjectionTarget
+ InjectionTarget<T> injectionTarget = buildInjectionTarget(
+ bean.getAnnotatedType(),
+ bean.getInjectionPoints(),
+ webBeansContext,
+ Collections.<AnnotatedMethod<?>>emptyList(),
+ Collections.<AnnotatedMethod<?>>emptyList());
+ bean.setProducer(injectionTarget);
+
+ return bean;
+ }
+
+ protected abstract E createBean(Class<T> beanClass, boolean beanEnabled);
+
public E getBean()
{
- E bean = super.getBean();
+ E bean = createBean(annotatedType.getJavaClass());
+ for (InjectionPoint injectionPoint: webBeansContext.getInjectionPointFactory().buildInjectionPoints(bean, annotatedType))
+ {
+ bean.addInjectionPoint(injectionPoint);
+ }
EjbValidator.validateDecoratorOrInterceptor(bean.getReturnType());
EjbValidator.validateEjbScopeType(bean);
EjbValidator.validateGenericBeanType(bean.getReturnType(), bean.getScope());
Modified: openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java?rev=1440403&r1=1440402&r2=1440403&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java (original)
+++ openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java Wed Jan 30 13:27:15 2013
@@ -77,7 +77,6 @@ public final class EjbUtility
ProcessAnnotatedTypeImpl<T> processAnnotatedEvent = (ProcessAnnotatedTypeImpl<T>)event;
BeanAttributesImpl<T> beanAttributes = BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes(annotatedType).build();
EjbBeanBuilder<T, BaseEjbBean<T>> ejbBeanCreator = new EjbBeanBuilder<T, BaseEjbBean<T>>(ejbBean.getWebBeansContext(), annotatedType, beanAttributes) {
- @Override
protected BaseEjbBean<T> createBean(Class<T> beanClass, boolean enabled)
{
return ejbBean;
@@ -192,8 +191,6 @@ public final class EjbUtility
final BeanAttributesImpl<T> beanAttributes = BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes(annotatedType).build();
final EjbBeanBuilder<T, BaseEjbBean<T>> ejbBeanCreator = new EjbBeanBuilder<T, BaseEjbBean<T>>(ejbBean.getWebBeansContext(), annotatedType, beanAttributes) {
-
- @Override
protected BaseEjbBean<T> createBean(Class<T> beanClass, boolean enabled)
{
return ejbBean;
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java?rev=1440403&r1=1440402&r2=1440403&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java Wed Jan 30 13:27:15 2013
@@ -21,6 +21,7 @@ package org.apache.webbeans.component;
import javax.enterprise.context.ApplicationScoped;
import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.portable.ExtensionProducer;
import org.apache.webbeans.util.AnnotationUtil;
/**
@@ -50,7 +51,6 @@ public class ExtensionBean<T> extends In
ApplicationScoped.class),
returnType);
setEnabled(true);
+ setProducer(new ExtensionProducer<T>(getAnnotatedType(), getInjectionPoints(), webBeansContext));
}
-
-
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/DecoratorBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/DecoratorBeanBuilder.java?rev=1440403&r1=1440402&r2=1440403&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/DecoratorBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/DecoratorBeanBuilder.java Wed Jan 30 13:27:15 2013
@@ -18,6 +18,8 @@
*/
package org.apache.webbeans.component.creation;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
import javax.decorator.Delegate;
import javax.enterprise.context.Dependent;
import javax.enterprise.inject.Produces;
@@ -34,6 +36,7 @@ import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
+import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -51,17 +54,20 @@ import org.apache.webbeans.exception.Web
import org.apache.webbeans.logger.WebBeansLoggerFacade;
import org.apache.webbeans.portable.AnnotatedConstructorImpl;
import org.apache.webbeans.portable.InjectionTargetImpl;
+import org.apache.webbeans.util.Asserts;
import org.apache.webbeans.util.ClassUtil;
/**
* Bean builder for {@link org.apache.webbeans.component.InterceptorBean}s.
*/
-public class DecoratorBeanBuilder<T> extends AbstractInjectionTargetBeanBuilder<T, DecoratorBean<T>>
+public class DecoratorBeanBuilder<T>
{
private static Logger logger = WebBeansLoggerFacade.getLogger(DecoratorBeanBuilder.class);
- private AnnotatedConstructor<T> constructor;
+ protected final WebBeansContext webBeansContext;
+ protected final AnnotatedType<T> annotatedType;
+ protected final BeanAttributesImpl<T> beanAttributes;
/**
* The Types the decorator itself implements
@@ -82,15 +88,19 @@ public class DecoratorBeanBuilder<T> ext
public DecoratorBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType, BeanAttributesImpl<T> beanAttributes)
{
- super(webBeansContext, annotatedType, beanAttributes);
+ Asserts.assertNotNull(webBeansContext, "webBeansContext may not be null");
+ Asserts.assertNotNull(annotatedType, "annotated type may not be null");
+ Asserts.assertNotNull(beanAttributes, "beanAttributes may not be null");
+ this.webBeansContext = webBeansContext;
+ this.annotatedType = annotatedType;
+ this.beanAttributes = beanAttributes;
decoratedTypes = new HashSet<Type>(beanAttributes.getTypes());
ignoredDecoratorInterfaces = getIgnoredDecoratorInterfaces();
}
private Set<String> getIgnoredDecoratorInterfaces()
{
- Set<String> result = new HashSet<String>(webBeansContext.getOpenWebBeansConfiguration().getIgnoredInterfaces());
- return result;
+ return webBeansContext.getOpenWebBeansConfiguration().getIgnoredInterfaces();
}
/**
@@ -138,10 +148,9 @@ public class DecoratorBeanBuilder<T> ext
}
Set<AnnotatedMethod<? super T>> methods = annotatedType.getMethods();
- for(AnnotatedMethod method : methods)
+ for(AnnotatedMethod<?> method : methods)
{
- List<AnnotatedParameter> parms = method.getParameters();
- for (AnnotatedParameter parameter : parms)
+ for (AnnotatedParameter<?> parameter : method.getParameters())
{
if (parameter.isAnnotationPresent(Produces.class))
{
@@ -267,31 +276,33 @@ public class DecoratorBeanBuilder<T> ext
}
}
- @Override
protected InjectionTarget<T> buildInjectionTarget(AnnotatedType<T> annotatedType, Set<InjectionPoint> points,
WebBeansContext webBeansContext, List<AnnotatedMethod<?>> postConstructMethods, List<AnnotatedMethod<?>> preDestroyMethods)
{
- InjectionTarget<T> injectionTarget = super.buildInjectionTarget(annotatedType, points, webBeansContext, postConstructMethods, preDestroyMethods);
+ InjectionTarget<T> injectionTarget;
if (Modifier.isAbstract(annotatedType.getJavaClass().getModifiers()))
{
- injectionTarget = new AbstractDecoratorInjectionTarget(annotatedType, points, webBeansContext, postConstructMethods, preDestroyMethods);
+ injectionTarget = new AbstractDecoratorInjectionTarget<T>(annotatedType, points, webBeansContext, postConstructMethods, preDestroyMethods);
+ }
+ else
+ {
+ injectionTarget = new InjectionTargetImpl<T>(annotatedType, points, webBeansContext, postConstructMethods, preDestroyMethods);
}
return injectionTarget;
}
- @Override
- protected DecoratorBean<T> createBean(Class<T> beanClass, boolean enabled)
- {
- DecoratorBean<T> decorator = new DecoratorBean<T>(webBeansContext, WebBeansType.MANAGED, annotatedType, beanAttributes, beanClass);
- decorator.setEnabled(enabled);
- return decorator;
- }
-
- @Override
public DecoratorBean<T> getBean()
{
- DecoratorBean<T> decorator = super.getBean();
+ DecoratorBean<T> decorator = new DecoratorBean<T>(webBeansContext, WebBeansType.MANAGED, annotatedType, beanAttributes, annotatedType.getJavaClass());
+ decorator.setEnabled(webBeansContext.getDecoratorsManager().isDecoratorEnabled(annotatedType.getJavaClass()));
+ InjectionTarget<T> injectionTarget
+ = buildInjectionTarget(annotatedType, decorator.getInjectionPoints(), webBeansContext, getPostConstructMethods(), getPreDestroyMethods());
+ decorator.setProducer(injectionTarget);
+ for (InjectionPoint injectionPoint: webBeansContext.getInjectionPointFactory().buildInjectionPoints(decorator, annotatedType))
+ {
+ decorator.addInjectionPoint(injectionPoint);
+ }
// we can only do this after the bean injection points got scanned
defineDelegate(decorator.getInjectionPoints());
@@ -300,6 +311,56 @@ public class DecoratorBeanBuilder<T> ext
return decorator;
}
+ protected List<AnnotatedMethod<?>> getPostConstructMethods()
+ {
+ List<AnnotatedMethod<?>> postConstructMethods = new ArrayList<AnnotatedMethod<?>>();
+ collectPostConstructMethods(annotatedType.getJavaClass(), postConstructMethods);
+ return postConstructMethods;
+ }
+
+ private void collectPostConstructMethods(Class<?> type, List<AnnotatedMethod<?>> postConstructMethods)
+ {
+ if (type == null)
+ {
+ return;
+ }
+ collectPostConstructMethods(type.getSuperclass(), postConstructMethods);
+ for (AnnotatedMethod<?> annotatedMethod: annotatedType.getMethods())
+ {
+ if (annotatedMethod.getJavaMember().getDeclaringClass() == type
+ && annotatedMethod.isAnnotationPresent(PostConstruct.class)
+ && annotatedMethod.getParameters().isEmpty())
+ {
+ postConstructMethods.add(annotatedMethod);
+ }
+ }
+ }
+
+ protected List<AnnotatedMethod<?>> getPreDestroyMethods()
+ {
+ List<AnnotatedMethod<?>> preDestroyMethods = new ArrayList<AnnotatedMethod<?>>();
+ collectPreDestroyMethods(annotatedType.getJavaClass(), preDestroyMethods);
+ return preDestroyMethods;
+ }
+
+ private void collectPreDestroyMethods(Class<?> type, List<AnnotatedMethod<?>> preDestroyMethods)
+ {
+ if (type == null)
+ {
+ return;
+ }
+ collectPreDestroyMethods(type.getSuperclass(), preDestroyMethods);
+ for (AnnotatedMethod<?> annotatedMethod: annotatedType.getMethods())
+ {
+ if (annotatedMethod.getJavaMember().getDeclaringClass() == type
+ && annotatedMethod.isAnnotationPresent(PreDestroy.class)
+ && annotatedMethod.getParameters().isEmpty())
+ {
+ preDestroyMethods.add(annotatedMethod);
+ }
+ }
+ }
+
/**
* Helper class to swap out the constructor for the proxied subclass.
*/
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ExtensionBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ExtensionBeanBuilder.java?rev=1440403&r1=1440402&r2=1440403&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ExtensionBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ExtensionBeanBuilder.java Wed Jan 30 13:27:15 2013
@@ -18,44 +18,27 @@
*/
package org.apache.webbeans.component.creation;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import java.util.List;
-import java.util.Set;
-
-import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedType;
-import javax.enterprise.inject.spi.InjectionPoint;
-import javax.enterprise.inject.spi.InjectionTarget;
import org.apache.webbeans.component.ExtensionBean;
import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.portable.ExtensionProducer;
+import org.apache.webbeans.util.Asserts;
-public class ExtensionBeanBuilder<T> extends AbstractInjectionTargetBeanBuilder<T, ExtensionBean<T>>
+public class ExtensionBeanBuilder<T>
{
+ protected final WebBeansContext webBeansContext;
+ protected final AnnotatedType<T> annotatedType;
public ExtensionBeanBuilder(WebBeansContext webBeansContext, Class<T> type)
{
- super(webBeansContext,
- webBeansContext.getAnnotatedElementFactory().newAnnotatedType(type),
- BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes(webBeansContext.getAnnotatedElementFactory().getAnnotatedType(type)).build());
- }
-
- protected InjectionTarget<T> buildInjectionTarget(Set<Type> types,
- Set<Annotation> qualifiers,
- AnnotatedType<T> annotatedType,
- Set<InjectionPoint> points,
- WebBeansContext webBeansContext,
- List<AnnotatedMethod<?>> postConstructMethods,
- List<AnnotatedMethod<?>> preDestroyMethods)
- {
- return new ExtensionProducer<T>(annotatedType, points, webBeansContext);
+ Asserts.assertNotNull(webBeansContext, "webBeansContext may not be null");
+ Asserts.assertNotNull(type, "type may not be null");
+ this.webBeansContext = webBeansContext;
+ this.annotatedType = webBeansContext.getAnnotatedElementFactory().newAnnotatedType(type);
}
- @Override
- protected ExtensionBean<T> createBean(Class<T> beanClass, boolean enabled)
+ public ExtensionBean<T> getBean()
{
- return new ExtensionBean<T>(webBeansContext, beanClass);
+ return new ExtensionBean<T>(webBeansContext, annotatedType.getJavaClass());
}
}
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=1440403&r1=1440402&r2=1440403&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 Wed Jan 30 13:27:15 2013
@@ -24,6 +24,8 @@ import javax.enterprise.inject.Produces;
import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedParameter;
import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.InjectionTarget;
import javax.enterprise.inject.spi.InterceptionType;
import javax.interceptor.AroundInvoke;
import javax.interceptor.AroundTimeout;
@@ -33,6 +35,7 @@ import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -43,14 +46,19 @@ import org.apache.webbeans.component.Int
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.plugins.OpenWebBeansEjbLCAPlugin;
+import org.apache.webbeans.portable.InjectionTargetImpl;
+import org.apache.webbeans.util.Asserts;
import org.apache.webbeans.util.ClassUtil;
/**
* Bean builder for {@link org.apache.webbeans.component.InterceptorBean}s.
*/
-public abstract class InterceptorBeanBuilder<T, B extends InterceptorBean<T>> extends AbstractInjectionTargetBeanBuilder<T, B>
+public abstract class InterceptorBeanBuilder<T, B extends InterceptorBean<T>>
{
+ protected final WebBeansContext webBeansContext;
+ protected final AnnotatedType<T> annotatedType;
+ protected final BeanAttributesImpl<T> beanAttributes;
private final OpenWebBeansEjbLCAPlugin ejbPlugin;
private final Class<? extends Annotation> prePassivateClass;
@@ -60,7 +68,12 @@ public abstract class InterceptorBeanBui
protected InterceptorBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType, BeanAttributesImpl<T> beanAttributes)
{
- super(webBeansContext, annotatedType, beanAttributes);
+ Asserts.assertNotNull(webBeansContext, "webBeansContext may not be null");
+ Asserts.assertNotNull(annotatedType, "annotated type may not be null");
+ Asserts.assertNotNull(beanAttributes, "beanAttributes may not be null");
+ this.webBeansContext = webBeansContext;
+ this.annotatedType = annotatedType;
+ this.beanAttributes = beanAttributes;
ejbPlugin = webBeansContext.getPluginLoader().getEjbLCAPlugin();
if (ejbPlugin != null)
{
@@ -81,14 +94,12 @@ public abstract class InterceptorBeanBui
*/
public abstract boolean isInterceptorEnabled();
-
protected void checkInterceptorConditions()
{
Set<AnnotatedMethod<? super T>> methods = annotatedType.getMethods();
- for(AnnotatedMethod method : methods)
+ for(AnnotatedMethod<?> method : methods)
{
- List<AnnotatedParameter> parms = method.getParameters();
- for (AnnotatedParameter parameter : parms)
+ for (AnnotatedParameter<?> parameter : method.getParameters())
{
if (parameter.isAnnotationPresent(Produces.class))
{
@@ -317,9 +328,22 @@ public abstract class InterceptorBeanBui
boolean enabled,
Map<InterceptionType, Method[]> interceptionMethods);
- @Override
- protected B createBean(Class<T> beanClass, boolean enabled)
+ public B getBean()
{
- return createBean(beanClass, enabled, interceptionMethods);
+ B bean = createBean(annotatedType.getJavaClass(), isInterceptorEnabled(), interceptionMethods);
+
+ //X TODO hack to set the InjectionTarget
+ InjectionTarget<T> injectionTarget = new InjectionTargetImpl<T>(
+ bean.getAnnotatedType(),
+ bean.getInjectionPoints(),
+ webBeansContext,
+ Collections.<AnnotatedMethod<?>>emptyList(),
+ Collections.<AnnotatedMethod<?>>emptyList());
+ bean.setProducer(injectionTarget);
+ for (InjectionPoint injectionPoint: webBeansContext.getInjectionPointFactory().buildInjectionPoints(bean, annotatedType))
+ {
+ bean.addInjectionPoint(injectionPoint);
+ }
+ return bean;
}
}
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=1440403&r1=1440402&r2=1440403&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 Wed Jan 30 13:27:15 2013
@@ -24,11 +24,15 @@ import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.InjectionTarget;
import org.apache.webbeans.component.BeanAttributesImpl;
import org.apache.webbeans.component.ManagedBean;
import org.apache.webbeans.component.WebBeansType;
import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.portable.InjectionTargetImpl;
+import org.apache.webbeans.util.Asserts;
import org.apache.webbeans.util.WebBeansUtil;
/**
@@ -39,14 +43,23 @@ import org.apache.webbeans.util.WebBeans
*
* @param <T> bean type info
*/
-public class ManagedBeanBuilder<T, M extends ManagedBean<T>> extends AbstractInjectionTargetBeanBuilder<T, M>
+public class ManagedBeanBuilder<T, M extends ManagedBean<T>>
{
+ protected final WebBeansContext webBeansContext;
+ protected final AnnotatedType<T> annotatedType;
+ protected final BeanAttributesImpl<T> beanAttributes;
+
/**
* Creates a new creator.
*/
public ManagedBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType, BeanAttributesImpl<T> beanAttributes)
{
- super(webBeansContext, annotatedType, beanAttributes);
+ Asserts.assertNotNull(webBeansContext, "webBeansContext may not be null");
+ Asserts.assertNotNull(annotatedType, "annotated type may not be null");
+ Asserts.assertNotNull(beanAttributes, "beanAttributes may not be null");
+ this.webBeansContext = webBeansContext;
+ this.annotatedType = annotatedType;
+ this.beanAttributes = beanAttributes;
}
/**
@@ -54,39 +67,29 @@ public class ManagedBeanBuilder<T, M ext
*/
public M getBean()
{
- M bean = super.getBean();
+ M bean = (M)new ManagedBean<T>(webBeansContext, WebBeansType.MANAGED, annotatedType, beanAttributes, annotatedType.getJavaClass());
+ bean.setEnabled(webBeansContext.getWebBeansUtil().isBeanEnabled(annotatedType, annotatedType.getJavaClass(), beanAttributes.getStereotypes()));
+ for (InjectionPoint injectionPoint: webBeansContext.getInjectionPointFactory().buildInjectionPoints(bean, annotatedType))
+ {
+ bean.addInjectionPoint(injectionPoint);
+ }
+
+ InjectionTarget<T> injectionTarget
+ = new InjectionTargetImpl<T>(bean.getAnnotatedType(), bean.getInjectionPoints(), webBeansContext, getPostConstructMethods(), getPreDestroyMethods());
+ bean.setProducer(injectionTarget);
webBeansContext.getWebBeansUtil().checkManagedBeanCondition(annotatedType);
WebBeansUtil.checkGenericType(annotatedType.getJavaClass(), beanAttributes.getScope());
webBeansContext.getDeploymentValidationService().validateProxyable(bean);
return bean;
}
-
- public ManagedBean<T> defineManagedBean(AnnotatedType<T> annotatedType)
- {
- //Check for Enabled via Alternative
- defineEnabled();
-
- return getBean();
- }
-
- @Override
protected List<AnnotatedMethod<?>> getPostConstructMethods()
{
return webBeansContext.getInterceptorUtil().getLifecycleMethods(annotatedType, PostConstruct.class, true);
}
- @Override
protected List<AnnotatedMethod<?>> getPreDestroyMethods()
{
return webBeansContext.getInterceptorUtil().getLifecycleMethods(annotatedType, PreDestroy.class, false);
}
-
- @Override
- protected M createBean(Class<T> beanClass, boolean enabled)
- {
- M managedBean = (M)new ManagedBean<T>(webBeansContext, WebBeansType.MANAGED, annotatedType, beanAttributes, beanClass);
- managedBean.setEnabled(enabled);
- return managedBean;
- }
}
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=1440403&r1=1440402&r2=1440403&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 Wed Jan 30 13:27:15 2013
@@ -876,7 +876,7 @@ public class BeansDeployer
else
{
- bean = managedBeanCreator.defineManagedBean(annotatedType);
+ bean = managedBeanCreator.getBean();
if(processInjectionTargetEvent == null)
{
@@ -896,7 +896,7 @@ public class BeansDeployer
}
Set<ObserverMethod<?>> observerMethods = new HashSet<ObserverMethod<?>>();
- if(managedBeanCreator.isEnabled())
+ if(bean.isEnabled())
{
observerMethods = new ObserverMethodsBuilder<T, InjectionTargetBean<T>>(webBeansContext, bean.getAnnotatedType()).defineObserverMethods(bean);
}
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=1440403&r1=1440402&r2=1440403&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 Wed Jan 30 13:27:15 2013
@@ -1729,7 +1729,6 @@ public final class WebBeansUtil
ManagedBeanBuilder<T, ManagedBean<T>> managedBeanCreator = new ManagedBeanBuilder<T, ManagedBean<T>>(webBeansContext, type, beanAttributes);
//Check for Enabled via Alternative
- managedBeanCreator.defineEnabled();
ManagedBean<T> managedBean = managedBeanCreator.getBean();
new ProducerMethodBeansBuilder(managedBean.getWebBeansContext(), managedBean.getAnnotatedType()).defineProducerMethods(managedBean);
new ProducerFieldBeansBuilder(managedBean.getWebBeansContext(), managedBean.getAnnotatedType()).defineProducerFields(managedBean);
Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java?rev=1440403&r1=1440402&r2=1440403&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java Wed Jan 30 13:27:15 2013
@@ -523,7 +523,6 @@ public abstract class TestContext implem
BeanAttributesImpl<T> beanAttributes = BeanAttributesBuilder.forContext(getWebBeansContext()).newBeanAttibutes(annotatedType).build();
ManagedBeanBuilder<T, ManagedBean<T>> managedBeanCreator = new ManagedBeanBuilder<T, ManagedBean<T>>(webBeansContext, annotatedType, beanAttributes);
- managedBeanCreator.defineEnabled();
ManagedBean<T> component = managedBeanCreator.getBean();
List<AnnotatedMethod<?>> postConstructMethods
= webBeansContext.getInterceptorUtil().getLifecycleMethods(component.getAnnotatedType(), PostConstruct.class, true);