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/24 23:07:12 UTC
svn commit: r1438223 - 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/creation/ webb...
Author: arne
Date: Thu Jan 24 22:07:12 2013
New Revision: 1438223
URL: http://svn.apache.org/viewvc?rev=1438223&view=rev
Log:
OWB-770: Removed AbstractBeanBuilder
Removed:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.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/creation/AbstractInjectionTargetBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractProducerBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AnnotatedTypeBeanBuilder.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/DecoratorBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/EjbInterceptorBeanBuilder.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/component/creation/ProducerFieldBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ResourceBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/SelfInterceptorBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DeploymentValidationService.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=1438223&r1=1438222&r2=1438223&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 Thu Jan 24 22:07:12 2013
@@ -49,17 +49,6 @@ public abstract class EjbBeanBuilder<T,
super(webBeansContext, annotatedType, beanAttributes);
}
- /**
- * {@inheritDoc}
- */
- @Override
- public void checkCreateConditions()
- {
- EjbValidator.validateDecoratorOrInterceptor(getBeanType());
- EjbValidator.validateEjbScopeType(getBean());
- EjbValidator.validateGenericBeanType(getBeanType(), getBeanAttributes().getScope());
- }
-
/* (non-Javadoc)
* @see org.apache.webbeans.component.creation.AbstractInjectedTargetBeanCreator#defineObserverMethods()
*/
@@ -89,5 +78,14 @@ public abstract class EjbBeanBuilder<T,
};
}
+ public E getBean()
+ {
+ E bean = super.getBean();
+ EjbValidator.validateDecoratorOrInterceptor(bean.getReturnType());
+ EjbValidator.validateEjbScopeType(bean);
+ EjbValidator.validateGenericBeanType(bean.getReturnType(), bean.getScope());
+ return bean;
+ }
+
protected abstract T getInstance(CreationalContext<T> creationalContext);
}
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=1438223&r1=1438222&r2=1438223&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 Thu Jan 24 22:07:12 2013
@@ -85,8 +85,6 @@ public final class EjbUtility
throw new UnsupportedOperationException("Please implement ejb lookup");
}
};
- ejbBeanCreator.checkCreateConditions();
-
if(processAnnotatedEvent.isVeto())
{
return;
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=1438223&r1=1438222&r2=1438223&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 Thu Jan 24 22:07:12 2013
@@ -73,11 +73,13 @@ import org.apache.webbeans.util.WebBeans
*
* @param <T> bean class type
*/
-public abstract class AbstractInjectionTargetBeanBuilder<T, I extends InjectionTargetBean<T>> extends AbstractBeanBuilder<T, AnnotatedType<T>, I>
+public abstract class AbstractInjectionTargetBeanBuilder<T, I extends InjectionTargetBean<T>>
{
+ protected final WebBeansContext webBeansContext;
+ protected final AnnotatedType<T> annotatedType;
+ protected final BeanAttributesImpl<T> beanAttributes;
private boolean enabled = true;
- protected WebBeansContext webBeansContext;
/**
* Creates a new instance.
@@ -85,13 +87,17 @@ public abstract class AbstractInjectionT
*/
public AbstractInjectionTargetBeanBuilder(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;
}
protected AnnotatedType<? super T> getSuperAnnotated()
{
- Class<? super T> superclass = getAnnotated().getJavaClass().getSuperclass();
+ Class<? super T> superclass = annotatedType.getJavaClass().getSuperclass();
if (superclass == null)
{
return null;
@@ -101,10 +107,10 @@ public abstract class AbstractInjectionT
protected AnnotatedConstructor<T> getBeanConstructor()
{
- Asserts.assertNotNull(getAnnotated(),"Type is null");
+ Asserts.assertNotNull(annotatedType,"Type is null");
AnnotatedConstructor<T> result = null;
- Set<AnnotatedConstructor<T>> annConsts = getAnnotated().getConstructors();
+ Set<AnnotatedConstructor<T>> annConsts = annotatedType.getConstructors();
if(annConsts != null)
{
boolean found = false;
@@ -116,7 +122,7 @@ public abstract class AbstractInjectionT
if (found)
{
throw new WebBeansConfigurationException("There are more than one constructor with @Inject annotation in annotation type : "
- + getAnnotated());
+ + annotatedType);
}
found = true;
@@ -139,7 +145,7 @@ public abstract class AbstractInjectionT
if (result == null)
{
- throw new WebBeansConfigurationException("No constructor is found for the annotated type : " + getAnnotated());
+ throw new WebBeansConfigurationException("No constructor is found for the annotated type : " + annotatedType);
}
List<AnnotatedParameter<T>> parameters = result.getParameters();
@@ -167,7 +173,7 @@ public abstract class AbstractInjectionT
public Set<ObserverMethod<?>> defineObserverMethods(InjectionTargetBean<T> bean)
{
Set<ObserverMethod<?>> definedObservers = new HashSet<ObserverMethod<?>>();
- Set<AnnotatedMethod<? super T>> annotatedMethods = getAnnotated().getMethods();
+ Set<AnnotatedMethod<? super T>> annotatedMethods = annotatedType.getMethods();
for (AnnotatedMethod<? super T> annotatedMethod : annotatedMethods)
{
AnnotatedMethod<T> annt = (AnnotatedMethod<T>)annotatedMethod;
@@ -194,7 +200,7 @@ public abstract class AbstractInjectionT
Reception reception = observes.notifyObserver();
if(reception.equals(Reception.IF_EXISTS))
{
- throw new WebBeansConfigurationException("Dependent Bean : " + getBeanType() + " can not define observer method with @Receiver = IF_EXIST");
+ throw new WebBeansConfigurationException("Dependent Bean : " + annotatedType.getJavaClass() + " can not define observer method with @Receiver = IF_EXIST");
}
}
@@ -244,10 +250,10 @@ public abstract class AbstractInjectionT
public Set<ProducerFieldBean<?>> defineProducerFields(InjectionTargetBean<T> bean)
{
Set<ProducerFieldBean<?>> producerBeans = new HashSet<ProducerFieldBean<?>>();
- Set<AnnotatedField<? super T>> annotatedFields = getAnnotated().getFields();
+ Set<AnnotatedField<? super T>> annotatedFields = annotatedType.getFields();
for(AnnotatedField<? super T> annotatedField: annotatedFields)
{
- if(annotatedField.isAnnotationPresent(Produces.class) && annotatedField.getDeclaringType().equals(getAnnotated()))
+ if(annotatedField.isAnnotationPresent(Produces.class) && annotatedField.getDeclaringType().equals(annotatedType))
{
Type genericType = annotatedField.getBaseType();
@@ -275,7 +281,7 @@ public abstract class AbstractInjectionT
//WebBeansUtil.checkForValidResources(annotatedField.getDeclaringType().getJavaClass(), field.getType(), field.getName(), anns);
if(!Modifier.isStatic(field.getModifiers()))
{
- ResourceReference<T, Annotation> resourceRef = new ResourceReference<T, Annotation>(getBeanType(), field.getName(),
+ ResourceReference<T, Annotation> resourceRef = new ResourceReference<T, Annotation>(annotatedType.getJavaClass(), field.getName(),
(Class<T>)field.getType(), resourceAnnotation);
//Can not define EL name
@@ -302,8 +308,8 @@ public abstract class AbstractInjectionT
BeanAttributesImpl<T> beanAttributes = BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes((AnnotatedField<T>)annotatedField).build();
ProducerFieldBeanBuilder<T, ProducerFieldBean<T>> producerFieldBeanCreator
= new ProducerFieldBeanBuilder<T, ProducerFieldBean<T>>(bean, annotatedField, beanAttributes);
- producerFieldBeanCreator.checkUnproxiableApiType();
ProducerFieldBean<T> producerFieldBean = producerFieldBeanCreator.getBean();
+ webBeansContext.getDeploymentValidationService().validateProxyable(producerFieldBean);
producerFieldBean.setProducer(new ProducerFieldProducer(bean, annotatedField, producerFieldBean.getInjectionPoints()));
producerFieldBean.setProducerField(field);
@@ -324,11 +330,11 @@ public abstract class AbstractInjectionT
public Set<ProducerMethodBean<?>> defineProducerMethods(InjectionTargetBean<T> bean)
{
Set<ProducerMethodBean<?>> producerBeans = new HashSet<ProducerMethodBean<?>>();
- Set<AnnotatedMethod<? super T>> annotatedMethods = getAnnotated().getMethods();
+ Set<AnnotatedMethod<? super T>> annotatedMethods = annotatedType.getMethods();
for(AnnotatedMethod<? super T> annotatedMethod: annotatedMethods)
{
- if(annotatedMethod.isAnnotationPresent(Produces.class) && annotatedMethod.getDeclaringType().equals(getAnnotated()))
+ if(annotatedMethod.isAnnotationPresent(Produces.class) && annotatedMethod.getDeclaringType().equals(annotatedType))
{
checkProducerMethodForDeployment(annotatedMethod);
boolean specialize = false;
@@ -345,10 +351,10 @@ public abstract class AbstractInjectionT
BeanAttributesImpl<T> beanAttributes = BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes((AnnotatedMethod<T>)annotatedMethod).build();
ProducerMethodBeanBuilder<T> producerMethodBeanCreator = new ProducerMethodBeanBuilder<T>(bean, annotatedMethod, beanAttributes);
- producerMethodBeanCreator.checkUnproxiableApiType();
-
ProducerMethodBean<T> producerMethodBean = producerMethodBeanCreator.getBean();
+ webBeansContext.getDeploymentValidationService().validateProxyable(producerMethodBean);
+
if(specialize)
{
producerMethodBeanCreator.configureProducerSpecialization(producerMethodBean, (AnnotatedMethod<T>) annotatedMethod);
@@ -401,7 +407,6 @@ public abstract class AbstractInjectionT
protected abstract I createBean(Class<T> beanClass, boolean enabled);
- @Override
protected final I createBean(Class<T> beanClass)
{
I bean = createBean(beanClass, enabled);
@@ -417,7 +422,7 @@ public abstract class AbstractInjectionT
protected List<AnnotatedMethod<?>> getPostConstructMethods()
{
List<AnnotatedMethod<?>> postConstructMethods = new ArrayList<AnnotatedMethod<?>>();
- collectPostConstructMethods(getAnnotated().getJavaClass(), postConstructMethods);
+ collectPostConstructMethods(annotatedType.getJavaClass(), postConstructMethods);
return postConstructMethods;
}
@@ -428,7 +433,7 @@ public abstract class AbstractInjectionT
return;
}
collectPostConstructMethods(type.getSuperclass(), postConstructMethods);
- for (AnnotatedMethod<?> annotatedMethod: getAnnotated().getMethods())
+ for (AnnotatedMethod<?> annotatedMethod: annotatedType.getMethods())
{
if (annotatedMethod.getJavaMember().getDeclaringClass() == type
&& annotatedMethod.isAnnotationPresent(PostConstruct.class)
@@ -442,7 +447,7 @@ public abstract class AbstractInjectionT
protected List<AnnotatedMethod<?>> getPreDestroyMethods()
{
List<AnnotatedMethod<?>> preDestroyMethods = new ArrayList<AnnotatedMethod<?>>();
- collectPreDestroyMethods(getAnnotated().getJavaClass(), preDestroyMethods);
+ collectPreDestroyMethods(annotatedType.getJavaClass(), preDestroyMethods);
return preDestroyMethods;
}
@@ -453,7 +458,7 @@ public abstract class AbstractInjectionT
return;
}
collectPreDestroyMethods(type.getSuperclass(), preDestroyMethods);
- for (AnnotatedMethod<?> annotatedMethod: getAnnotated().getMethods())
+ for (AnnotatedMethod<?> annotatedMethod: annotatedType.getMethods())
{
if (annotatedMethod.getJavaMember().getDeclaringClass() == type
&& annotatedMethod.isAnnotationPresent(PreDestroy.class)
@@ -471,20 +476,13 @@ public abstract class AbstractInjectionT
public void defineEnabled()
{
- enabled = webBeansContext.getWebBeansUtil().isBeanEnabled(getAnnotated(), getBeanType(), getBeanAttributes().getStereotypes());
- }
-
- @Override
- protected Class<T> getBeanType()
- {
- return getAnnotated().getJavaClass();
+ enabled = webBeansContext.getWebBeansUtil().isBeanEnabled(annotatedType, annotatedType.getJavaClass(), beanAttributes.getStereotypes());
}
- @Override
public I getBean()
{
- I bean = super.getBean();
- for (InjectionPoint injectionPoint: webBeansContext.getInjectionPointFactory().buildInjectionPoints(bean, getAnnotated()))
+ I bean = createBean(annotatedType.getJavaClass());
+ for (InjectionPoint injectionPoint: webBeansContext.getInjectionPointFactory().buildInjectionPoints(bean, annotatedType))
{
bean.addInjectionPoint(injectionPoint);
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractProducerBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractProducerBeanBuilder.java?rev=1438223&r1=1438222&r2=1438223&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractProducerBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractProducerBeanBuilder.java Thu Jan 24 22:07:12 2013
@@ -24,21 +24,28 @@ import javax.enterprise.inject.spi.Annot
import org.apache.webbeans.component.AbstractProducerBean;
import org.apache.webbeans.component.BeanAttributesImpl;
import org.apache.webbeans.component.InjectionTargetBean;
+import org.apache.webbeans.util.Asserts;
-public abstract class AbstractProducerBeanBuilder<T, A extends AnnotatedMember<?>, P extends AbstractProducerBean<T>> extends AbstractBeanBuilder<T, A, P>
+public abstract class AbstractProducerBeanBuilder<T, A extends AnnotatedMember<?>, P extends AbstractProducerBean<T>>
{
- private InjectionTargetBean<?> parent;
+ protected final InjectionTargetBean<?> parent;
+ protected final A annotatedMember;
+ protected final BeanAttributesImpl<T> beanAttributes;
public AbstractProducerBeanBuilder(InjectionTargetBean<?> parent, A annotated, BeanAttributesImpl<T> beanAttributes)
{
- super(parent.getWebBeansContext(), annotated, beanAttributes);
+ Asserts.assertNotNull(parent, "webBeansContext may not be null");
+ Asserts.assertNotNull(annotated, "annotated may not be null");
+ Asserts.assertNotNull(beanAttributes, "beanAttributes may not be null");
this.parent = parent;
+ this.annotatedMember = annotated;
+ this.beanAttributes = beanAttributes;
}
protected AnnotatedType<?> getSuperType()
{
- Class<?> superclass = getAnnotated().getDeclaringType().getJavaClass().getSuperclass();
+ Class<?> superclass = annotatedMember.getDeclaringType().getJavaClass().getSuperclass();
if (superclass == null)
{
return null;
@@ -48,7 +55,6 @@ public abstract class AbstractProducerBe
protected abstract P createBean(InjectionTargetBean<?> parent, Class<T> beanClass);
- @Override
protected P createBean(Class<T> beanClass)
{
return createBean(parent, beanClass);
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AnnotatedTypeBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AnnotatedTypeBeanBuilder.java?rev=1438223&r1=1438222&r2=1438223&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AnnotatedTypeBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AnnotatedTypeBeanBuilder.java Thu Jan 24 22:07:12 2013
@@ -51,7 +51,7 @@ public class AnnotatedTypeBeanBuilder<T>
catch(Exception e)
{
// if no constructor could be found, we just leave the empty set.
- logger.log(Level.INFO, OWBLogConst.WARN_0012, getAnnotated().getJavaClass());
+ logger.log(Level.INFO, OWBLogConst.WARN_0012, annotatedType.getJavaClass());
}
}
}
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=1438223&r1=1438222&r2=1438223&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 Thu Jan 24 22:07:12 2013
@@ -55,15 +55,15 @@ public class CdiInterceptorBeanBuilder<T
public boolean isInterceptorEnabled()
{
- return webBeansContext.getInterceptorsManager().isInterceptorClassEnabled(getBeanType());
+ return webBeansContext.getInterceptorsManager().isInterceptorClassEnabled(annotatedType.getJavaClass());
}
protected void defineInterceptorBindings()
{
- Annotation[] bindings = webBeansContext.getAnnotationManager().getInterceptorBindingMetaAnnotations(getAnnotated().getAnnotations());
+ Annotation[] bindings = webBeansContext.getAnnotationManager().getInterceptorBindingMetaAnnotations(annotatedType.getAnnotations());
if (bindings == null || bindings.length == 0)
{
- throw new WebBeansConfigurationException("WebBeans Interceptor class : " + getBeanType()
+ throw new WebBeansConfigurationException("WebBeans Interceptor class : " + annotatedType.getJavaClass()
+ " must have at least one @InterceptorBinding annotation");
}
@@ -73,6 +73,6 @@ public class CdiInterceptorBeanBuilder<T
@Override
protected CdiInterceptorBean<T> createBean(Class<T> beanClass, boolean enabled, Map<InterceptionType, Method[]> interceptionMethods)
{
- return new CdiInterceptorBean<T>(webBeansContext, getAnnotated(), getBeanAttributes(), beanClass, interceptorBindings, enabled, interceptionMethods);
+ return new CdiInterceptorBean<T>(webBeansContext, annotatedType, beanAttributes, beanClass, interceptorBindings, enabled, interceptionMethods);
}
}
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=1438223&r1=1438222&r2=1438223&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 Thu Jan 24 22:07:12 2013
@@ -106,24 +106,24 @@ public class DecoratorBeanBuilder<T> ext
*/
public boolean isDecoratorEnabled()
{
- return webBeansContext.getDecoratorsManager().isDecoratorEnabled(getBeanType());
+ return webBeansContext.getDecoratorsManager().isDecoratorEnabled(annotatedType.getJavaClass());
}
protected void checkDecoratorConditions()
{
- if(getBeanAttributes().getScope() != Dependent.class)
+ if (beanAttributes.getScope() != Dependent.class)
{
if(logger.isLoggable(Level.WARNING))
{
- logger.log(Level.WARNING, OWBLogConst.WARN_0005_1, getBeanType().getName());
+ logger.log(Level.WARNING, OWBLogConst.WARN_0005_1, annotatedType.getJavaClass().getName());
}
}
- if(getBeanAttributes().getName() != null)
+ if (beanAttributes.getName() != null)
{
if(logger.isLoggable(Level.WARNING))
{
- logger.log(Level.WARNING, OWBLogConst.WARN_0005_2, getBeanType().getName());
+ logger.log(Level.WARNING, OWBLogConst.WARN_0005_2, annotatedType.getJavaClass().getName());
}
}
@@ -140,10 +140,10 @@ public class DecoratorBeanBuilder<T> ext
if (logger.isLoggable(Level.FINE))
{
- logger.log(Level.FINE, "Configuring decorator class : [{0}]", getBeanType());
+ logger.log(Level.FINE, "Configuring decorator class : [{0}]", annotatedType.getJavaClass());
}
- Set<AnnotatedMethod<? super T>> methods = getAnnotated().getMethods();
+ Set<AnnotatedMethod<? super T>> methods = annotatedType.getMethods();
for(AnnotatedMethod method : methods)
{
List<AnnotatedParameter> parms = method.getParameters();
@@ -151,7 +151,7 @@ public class DecoratorBeanBuilder<T> ext
{
if (parameter.isAnnotationPresent(Produces.class))
{
- throw new WebBeansConfigurationException("Interceptor class : " + getBeanType()
+ throw new WebBeansConfigurationException("Interceptor class : " + annotatedType.getJavaClass()
+ " can not have producer methods but it has one with name : "
+ method.getJavaMember().getName());
}
@@ -170,7 +170,7 @@ public class DecoratorBeanBuilder<T> ext
private void defineDecoratedTypes()
{
- Class<T> beanClass = getBeanType();
+ Class<T> beanClass = annotatedType.getJavaClass();
// determine a safe Type for for a later BeanManager.getReference(...)
if (ClassUtil.isDefinitionContainsTypeVariables(beanClass))
@@ -291,7 +291,7 @@ public class DecoratorBeanBuilder<T> ext
@Override
protected DecoratorBean<T> createBean(Class<T> beanClass, boolean enabled)
{
- DecoratorBean<T> decorator = new DecoratorBean<T>(webBeansContext, WebBeansType.MANAGED, getAnnotated(), getBeanAttributes(), beanClass);
+ DecoratorBean<T> decorator = new DecoratorBean<T>(webBeansContext, WebBeansType.MANAGED, annotatedType, beanAttributes, beanClass);
decorator.setEnabled(enabled);
return decorator;
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/EjbInterceptorBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/EjbInterceptorBeanBuilder.java?rev=1438223&r1=1438222&r2=1438223&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/EjbInterceptorBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/EjbInterceptorBeanBuilder.java Thu Jan 24 22:07:12 2013
@@ -55,6 +55,6 @@ public class EjbInterceptorBeanBuilder<T
@Override
protected EjbInterceptorBean<T> createBean(Class<T> beanClass, boolean enabled, Map<InterceptionType, Method[]> interceptionMethods)
{
- return new EjbInterceptorBean<T>(webBeansContext, getAnnotated(), getBeanAttributes(), beanClass, interceptionMethods);
+ return new EjbInterceptorBean<T>(webBeansContext, annotatedType, beanAttributes, beanClass, interceptionMethods);
}
}
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=1438223&r1=1438222&r2=1438223&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 Thu Jan 24 22:07:12 2013
@@ -102,7 +102,7 @@ public abstract class InterceptorBeanBui
protected void checkInterceptorConditions()
{
- Set<AnnotatedMethod<? super T>> methods = getAnnotated().getMethods();
+ Set<AnnotatedMethod<? super T>> methods = annotatedType.getMethods();
for(AnnotatedMethod method : methods)
{
List<AnnotatedParameter> parms = method.getParameters();
@@ -110,7 +110,7 @@ public abstract class InterceptorBeanBui
{
if (parameter.isAnnotationPresent(Produces.class))
{
- throw new WebBeansConfigurationException("Interceptor class : " + getBeanType()
+ throw new WebBeansConfigurationException("Interceptor class : " + annotatedType.getJavaClass()
+ " can not have producer methods but it has one with name : "
+ method.getJavaMember().getName());
}
@@ -144,7 +144,7 @@ public abstract class InterceptorBeanBui
*/
public boolean defineInterceptorMethods()
{
- List<Class> classHierarchy = webBeansContext.getInterceptorUtil().getReverseClassHierarchy(getAnnotated().getJavaClass());
+ List<Class> classHierarchy = webBeansContext.getInterceptorUtil().getReverseClassHierarchy(annotatedType.getJavaClass());
AnnotatedMethod aroundInvokeMethod = null;
List<AnnotatedMethod> postConstructMethods = new ArrayList<AnnotatedMethod>();
@@ -157,7 +157,7 @@ public abstract class InterceptorBeanBui
boolean interceptorFound = false;
- Set<AnnotatedMethod<? super T>> methods = getAnnotated().getMethods();
+ Set<AnnotatedMethod<? super T>> methods = annotatedType.getMethods();
for (Class clazz : classHierarchy)
{
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=1438223&r1=1438222&r2=1438223&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 Thu Jan 24 22:07:12 2013
@@ -52,19 +52,6 @@ public class ManagedBeanBuilder<T, M ext
super(webBeansContext, annotatedType, beanAttributes);
}
- /**
- * {@inheritDoc}
- */
- @Override
- public void checkCreateConditions()
- {
- webBeansContext.getWebBeansUtil().checkManagedBeanCondition(getAnnotated());
- WebBeansUtil.checkGenericType(getBeanType(), getBeanAttributes().getScope());
- //Check Unproxiable
- checkUnproxiableApiType();
- }
-
-
public void defineConstructor()
{
constructor = getBeanConstructor();
@@ -76,6 +63,9 @@ public class ManagedBeanBuilder<T, M ext
public M getBean()
{
M bean = super.getBean();
+ webBeansContext.getWebBeansUtil().checkManagedBeanCondition(annotatedType);
+ WebBeansUtil.checkGenericType(annotatedType.getJavaClass(), beanAttributes.getScope());
+ webBeansContext.getDeploymentValidationService().validateProxyable(bean);
addConstructorInjectionPointMetaData(bean);
return bean;
}
@@ -86,8 +76,6 @@ public class ManagedBeanBuilder<T, M ext
//Check for Enabled via Alternative
defineEnabled();
- checkCreateConditions();
-
defineConstructor();
return getBean();
@@ -96,13 +84,13 @@ public class ManagedBeanBuilder<T, M ext
@Override
protected List<AnnotatedMethod<?>> getPostConstructMethods()
{
- return webBeansContext.getInterceptorUtil().getLifecycleMethods(getAnnotated(), PostConstruct.class, true);
+ return webBeansContext.getInterceptorUtil().getLifecycleMethods(annotatedType, PostConstruct.class, true);
}
@Override
protected List<AnnotatedMethod<?>> getPreDestroyMethods()
{
- return webBeansContext.getInterceptorUtil().getLifecycleMethods(getAnnotated(), PreDestroy.class, false);
+ return webBeansContext.getInterceptorUtil().getLifecycleMethods(annotatedType, PreDestroy.class, false);
}
protected void addConstructorInjectionPointMetaData(ManagedBean<T> bean)
@@ -118,7 +106,7 @@ public class ManagedBeanBuilder<T, M ext
@Override
protected M createBean(Class<T> beanClass, boolean enabled)
{
- M managedBean = (M)new ManagedBean<T>(webBeansContext, WebBeansType.MANAGED, getAnnotated(), getBeanAttributes(), beanClass);
+ 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/component/creation/ProducerFieldBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerFieldBeanBuilder.java?rev=1438223&r1=1438222&r2=1438223&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerFieldBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerFieldBeanBuilder.java Thu Jan 24 22:07:12 2013
@@ -31,16 +31,10 @@ public class ProducerFieldBeanBuilder<T,
{
super(owner, annotated, beanAttributes);
}
-
- @Override
- protected Class<T> getBeanType()
- {
- return (Class<T>) getAnnotated().getJavaMember().getType();
- }
protected AnnotatedField<?> getSuperAnnotated()
{
- AnnotatedField<?> thisField = getAnnotated();
+ AnnotatedField<?> thisField = annotatedMember;
for (AnnotatedField<?> superField: getSuperType().getFields())
{
if (thisField.getJavaMember().getName().equals(superField.getJavaMember().getName())
@@ -55,6 +49,11 @@ public class ProducerFieldBeanBuilder<T,
@Override
protected P createBean(InjectionTargetBean<?> owner, Class<T> beanClass)
{
- return (P) new ProducerFieldBean<T>(owner, getBeanAttributes(), beanClass);
+ return (P) new ProducerFieldBean<T>(owner, beanAttributes, beanClass);
+ }
+
+ public P getBean()
+ {
+ return createBean((Class<T>) annotatedMember.getJavaMember().getType());
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java?rev=1438223&r1=1438222&r2=1438223&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java Thu Jan 24 22:07:12 2013
@@ -85,7 +85,7 @@ public class ProducerMethodBeanBuilder<T
protected AnnotatedMethod<?> getSuperAnnotated()
{
- AnnotatedMethod<?> thisMethod = getAnnotated();
+ AnnotatedMethod<?> thisMethod = annotatedMember;
for (AnnotatedMethod<?> superMethod: getSuperType().getMethods())
{
List<AnnotatedParameter<?>> thisParameters = (List<AnnotatedParameter<?>>)(List<?>)thisMethod.getParameters();
@@ -113,16 +113,15 @@ public class ProducerMethodBeanBuilder<T
}
@Override
- protected Class<T> getBeanType()
- {
- return (Class<T>) getAnnotated().getJavaMember().getReturnType();
- }
-
- @Override
protected ProducerMethodBean<T> createBean(InjectionTargetBean<?> parent, Class<T> beanClass)
{
- ProducerMethodBean<T> producerMethodBean = new ProducerMethodBean<T>(parent, getBeanAttributes(), beanClass);
+ ProducerMethodBean<T> producerMethodBean = new ProducerMethodBean<T>(parent, beanAttributes, beanClass);
producerMethodBean.setSpecializedBean(specialized);
return producerMethodBean;
}
+
+ public ProducerMethodBean<T> getBean()
+ {
+ return createBean((Class<T>) annotatedMember.getJavaMember().getReturnType());
+ }
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ResourceBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ResourceBeanBuilder.java?rev=1438223&r1=1438222&r2=1438223&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ResourceBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ResourceBeanBuilder.java Thu Jan 24 22:07:12 2013
@@ -41,6 +41,6 @@ public class ResourceBeanBuilder<T, R ex
@Override
protected ResourceBean<T, R> createBean(InjectionTargetBean<?> owner, Class<T> beanClass)
{
- return new ResourceBean<T, R>(owner, resourceRef, getBeanAttributes(), beanClass);
+ return new ResourceBean<T, R>(owner, resourceRef, beanAttributes, beanClass);
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/SelfInterceptorBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/SelfInterceptorBeanBuilder.java?rev=1438223&r1=1438222&r2=1438223&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/SelfInterceptorBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/SelfInterceptorBeanBuilder.java Thu Jan 24 22:07:12 2013
@@ -60,6 +60,6 @@ public class SelfInterceptorBeanBuilder<
@Override
protected SelfInterceptorBean<T> createBean(Class<T> beanClass, boolean enabled, Map<InterceptionType, Method[]> interceptionMethods)
{
- return new SelfInterceptorBean<T>(webBeansContext, getAnnotated(), getBeanAttributes(), beanClass, interceptionMethods);
+ return new SelfInterceptorBean<T>(webBeansContext, annotatedType, beanAttributes, beanClass, interceptionMethods);
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DeploymentValidationService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DeploymentValidationService.java?rev=1438223&r1=1438222&r2=1438223&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DeploymentValidationService.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DeploymentValidationService.java Thu Jan 24 22:07:12 2013
@@ -18,6 +18,11 @@
*/
package org.apache.webbeans.config;
+import static org.apache.webbeans.util.InjectionExceptionUtil.throwUnproxyableResolutionException;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
import java.util.Set;
import javax.enterprise.inject.Disposes;
@@ -30,8 +35,10 @@ import javax.enterprise.inject.spi.Passi
import org.apache.webbeans.component.OwbBean;
import org.apache.webbeans.component.ProducerMethodBean;
import org.apache.webbeans.exception.WebBeansConfigurationException;
+import org.apache.webbeans.exception.helper.ViolationMessageBuilder;
import org.apache.webbeans.intercept.InterceptorResolutionService.BeanInterceptorInfo;
import org.apache.webbeans.portable.InjectionTargetImpl;
+import org.apache.webbeans.util.SecurityUtil;
public class DeploymentValidationService
{
@@ -44,6 +51,70 @@ public class DeploymentValidationService
}
/**
+ * Checks the unproxiable condition.
+ * @throws org.apache.webbeans.exception.WebBeansConfigurationException if bean is not proxied by the container
+ */
+ public void validateProxyable(OwbBean<?> bean)
+ {
+ //Unproxiable test for NormalScoped beans
+ if (webBeansContext.getBeanManagerImpl().isNormalScope(bean.getScope()))
+ {
+ ViolationMessageBuilder violationMessage = ViolationMessageBuilder.newViolation();
+
+ Class<?> beanClass = bean.getReturnType();
+
+ if(!beanClass.isInterface() && beanClass != Object.class)
+ {
+ if(beanClass.isPrimitive())
+ {
+ violationMessage.addLine("It isn't possible to proxy a primitive type (" + beanClass.getName(), ")");
+ }
+
+ if(beanClass.isArray())
+ {
+ violationMessage.addLine("It isn't possible to proxy an array type (", beanClass.getName(), ")");
+ }
+
+ if(!violationMessage.containsViolation())
+ {
+ if (Modifier.isFinal(beanClass.getModifiers()))
+ {
+ violationMessage.addLine(beanClass.getName(), " is a final class! CDI doesn't allow to proxy that.");
+ }
+
+ Method[] methods = SecurityUtil.doPrivilegedGetDeclaredMethods(beanClass);
+ for (Method m : methods)
+ {
+ int modifiers = m.getModifiers();
+ if (Modifier.isFinal(modifiers) && !Modifier.isPrivate(modifiers) &&
+ !m.isSynthetic() && !m.isBridge())
+ {
+ violationMessage.addLine(beanClass.getName(), " has final method "+ m + " CDI doesn't allow to proxy that.");
+ }
+ }
+
+ Constructor<?> cons = webBeansContext.getWebBeansUtil().getNoArgConstructor(beanClass);
+ if (cons == null)
+ {
+ violationMessage.addLine(beanClass.getName(), " has no explicit no-arg constructor!",
+ "A public or protected constructor without args is required!");
+ }
+ else if (Modifier.isPrivate(cons.getModifiers()))
+ {
+ violationMessage.addLine(beanClass.getName(), " has a >private< no-arg constructor! CDI doesn't allow to proxy that.");
+ }
+ }
+
+ //Throw Exception
+ if(violationMessage.containsViolation())
+ {
+ throwUnproxyableResolutionException(violationMessage);
+ }
+ }
+ }
+ }
+
+ /**
* If bean is passivation capable, it validate all of its dependencies.
* @throws org.apache.webbeans.exception.WebBeansConfigurationException if not satisfy passivation dependencies
*/
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=1438223&r1=1438222&r2=1438223&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 Thu Jan 24 22:07:12 2013
@@ -1599,7 +1599,6 @@ public final class WebBeansUtil
//Check for Enabled via Alternative
setInjectionTargetBeanEnableFlag(managedBeanCreator.getBean());
- managedBeanCreator.checkCreateConditions();
managedBeanCreator.defineConstructor();
ManagedBean<T> managedBean = managedBeanCreator.getBean();
managedBeanCreator.defineProducerMethods(managedBean);
@@ -1731,7 +1730,6 @@ public final class WebBeansUtil
//Check for Enabled via Alternative
managedBeanCreator.defineEnabled();
- managedBeanCreator.checkCreateConditions();
managedBeanCreator.defineConstructor();
ManagedBean<T> managedBean = managedBeanCreator.getBean();
managedBeanCreator.defineProducerMethods(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=1438223&r1=1438222&r2=1438223&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 Thu Jan 24 22:07:12 2013
@@ -525,7 +525,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.checkCreateConditions();
managedBeanCreator.defineEnabled();
managedBeanCreator.defineConstructor();
ManagedBean<T> component = managedBeanCreator.getBean();