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 09:27:27 UTC
svn commit: r1437893 [2/3] - 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/ webbean...
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=1437893&r1=1437892&r2=1437893&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 08:27:26 2013
@@ -18,14 +18,11 @@
*/
package org.apache.webbeans.component.creation;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import java.util.Set;
-
import javax.enterprise.inject.spi.AnnotatedMember;
import javax.enterprise.inject.spi.AnnotatedType;
import org.apache.webbeans.component.AbstractProducerBean;
+import org.apache.webbeans.component.BeanAttributesImpl;
import org.apache.webbeans.component.InjectionTargetBean;
public abstract class AbstractProducerBeanBuilder<T, A extends AnnotatedMember<?>, P extends AbstractProducerBean<T>> extends AbstractBeanBuilder<T, A, P>
@@ -33,9 +30,9 @@ public abstract class AbstractProducerBe
private InjectionTargetBean<?> parent;
- public AbstractProducerBeanBuilder(InjectionTargetBean<?> parent, A annotated)
+ public AbstractProducerBeanBuilder(InjectionTargetBean<?> parent, A annotated, BeanAttributesImpl<T> beanAttributes)
{
- super(parent.getWebBeansContext(), annotated);
+ super(parent.getWebBeansContext(), annotated, beanAttributes);
this.parent = parent;
}
@@ -49,25 +46,10 @@ public abstract class AbstractProducerBe
return parent.getWebBeansContext().getAnnotatedElementFactory().getAnnotatedType(superclass);
}
- protected abstract P createBean(InjectionTargetBean<?> parent,
- Set<Type> types,
- Set<Annotation> qualifiers,
- Class<? extends Annotation> scope,
- String name,
- boolean nullable,
- Class<T> beanClass,
- Set<Class<? extends Annotation>> stereotypes,
- boolean alternative);
+ protected abstract P createBean(InjectionTargetBean<?> parent, Class<T> beanClass);
@Override
- protected P createBean(Set<Type> types,
- Set<Annotation> qualifiers,
- Class<? extends Annotation> scope,
- String name,
- boolean nullable,
- Class<T> beanClass,
- Set<Class<? extends Annotation>> stereotypes,
- boolean alternative)
+ protected P createBean(Class<T> beanClass)
{
- return createBean(parent, types, qualifiers, scope, name, nullable, beanClass, stereotypes, alternative);
+ 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=1437893&r1=1437892&r2=1437893&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 08:27:26 2013
@@ -23,6 +23,7 @@ import java.util.logging.Logger;
import javax.enterprise.inject.spi.AnnotatedType;
+import org.apache.webbeans.component.BeanAttributesImpl;
import org.apache.webbeans.component.ManagedBean;
import org.apache.webbeans.config.OWBLogConst;
import org.apache.webbeans.config.WebBeansContext;
@@ -32,9 +33,9 @@ public class AnnotatedTypeBeanBuilder<T>
{
private final static Logger logger = WebBeansLoggerFacade.getLogger(AnnotatedTypeBeanBuilder.class);
- public AnnotatedTypeBeanBuilder(AnnotatedType<T> annotatedType, WebBeansContext context)
+ public AnnotatedTypeBeanBuilder(AnnotatedType<T> annotatedType, WebBeansContext context, BeanAttributesImpl<T> beanAttributes)
{
- super(context, annotatedType);
+ super(context, annotatedType, beanAttributes);
}
/**
Copied: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/BeanAttributesBuilder.java (from r1436940, openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.java)
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/BeanAttributesBuilder.java?p2=openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/BeanAttributesBuilder.java&p1=openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.java&r1=1436940&r2=1437893&rev=1437893&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/BeanAttributesBuilder.java Thu Jan 24 08:27:26 2013
@@ -18,12 +18,8 @@
*/
package org.apache.webbeans.component.creation;
-import static org.apache.webbeans.util.InjectionExceptionUtil.throwUnproxyableResolutionException;
-
import java.lang.annotation.Annotation;
-import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
import java.util.HashSet;
import java.util.Iterator;
@@ -38,8 +34,8 @@ import javax.enterprise.inject.spi.Annot
import javax.enterprise.inject.spi.AnnotatedField;
import javax.enterprise.inject.spi.AnnotatedMember;
import javax.enterprise.inject.spi.AnnotatedMethod;
-import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.AnnotatedParameter;
+import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.util.Nonbinding;
import javax.inject.Named;
import javax.inject.Scope;
@@ -48,14 +44,16 @@ import org.apache.webbeans.annotation.An
import org.apache.webbeans.annotation.AnyLiteral;
import org.apache.webbeans.annotation.DefaultLiteral;
import org.apache.webbeans.annotation.NamedLiteral;
-import org.apache.webbeans.component.OwbBean;
+import org.apache.webbeans.component.BeanAttributesImpl;
+import org.apache.webbeans.config.OWBLogConst;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.container.ExternalScope;
-import org.apache.webbeans.event.EventUtil;
import org.apache.webbeans.exception.WebBeansConfigurationException;
-import org.apache.webbeans.exception.helper.ViolationMessageBuilder;
+import org.apache.webbeans.exception.inject.DefinitionException;
+import org.apache.webbeans.logger.WebBeansLoggerFacade;
import org.apache.webbeans.util.AnnotationUtil;
-import org.apache.webbeans.util.SecurityUtil;
+import org.apache.webbeans.util.Asserts;
+import org.apache.webbeans.util.ClassUtil;
import org.apache.webbeans.util.WebBeansUtil;
/**
@@ -65,150 +63,77 @@ import org.apache.webbeans.util.WebBeans
*
* @param <T> bean class info
*/
-public abstract class AbstractBeanBuilder<T, A extends Annotated, B extends Bean<T>>
+public abstract class BeanAttributesBuilder<T, A extends Annotated>
{
- private A annotated;
+ A annotated;
- private WebBeansContext webBeansContext;
+ WebBeansContext webBeansContext;
+
+ Set<Type> types = new HashSet<Type>();
+
+ Set<Annotation> qualifiers = new HashSet<Annotation>();
- private String beanName;
+ Class<? extends Annotation> scope;
- private Class<? extends Annotation> scope;
-
- private Set<Type> apiTypes = new HashSet<Type>();
+ String name;
+
+ boolean nullable;
- private Set<Annotation> qualifiers = new HashSet<Annotation>();
+ Set<Class<? extends Annotation>> stereotypes = new HashSet<Class<? extends Annotation>>();
- private Set<Class<? extends Annotation>> stereotypes = new HashSet<Class<? extends Annotation>>();
+ boolean alternative;
- private Set<AnnotatedMember<? super T>> injectionPoints = new HashSet<AnnotatedMember<? super T>>();
+ public static BeanAttributesBuilderFactory forContext(WebBeansContext webBeansContext)
+ {
+ return new BeanAttributesBuilderFactory(webBeansContext);
+ }
/**
* Creates a bean instance.
*
* @param annotated
*/
- public AbstractBeanBuilder(WebBeansContext webBeansContext, A annotated)
+ protected BeanAttributesBuilder(WebBeansContext webBeansContext, A annotated)
{
this.annotated = annotated;
this.webBeansContext = webBeansContext;
}
- public Class<? extends Annotation> getScope()
+ public BeanAttributesImpl<T> build()
{
- return scope;
+ defineTypes();
+ defineStereotypes();
+ defineScope();
+ defineName();
+ defineQualifiers();
+ defineNullable();
+ defineAlternative();
+ return new BeanAttributesImpl<T>(types, qualifiers, scope, name, nullable, stereotypes, alternative);
}
- public String getName()
- {
- return beanName;
- }
-
- protected Set<Class<? extends Annotation>> getStereotypes()
- {
- return stereotypes;
- }
-
- protected Set<Type> getApiTypes()
- {
- return apiTypes;
- }
-
- /**
- * {@inheritDoc}
- */
- public void checkCreateConditions()
- {
- //Sub-class can override this
- }
-
- /**
- * Check if the given annotatedMethod overrides some previously defined AnnotatedMethods
- * from a superclass and remove them if non-private.
- *
- *
- * @param alreadyDefinedMethods the methods already calculated from the superclasses. See
- * {@link org.apache.webbeans.intercept.InterceptorUtil#getReverseClassHierarchy(Class)}
- * @param annotatedMethod the AnnotatedMethod to check for.
- * @return <code>true</code> if a method was overridden and got removed, <code>false</code> otherwise.
- */
- protected boolean removeOverriddenMethod(List<AnnotatedMethod> alreadyDefinedMethods, AnnotatedMethod annotatedMethod)
+ protected A getAnnotated()
{
- String methodName = null;
- Class<?>[] methodParameterTypes = null;
-
- Iterator<AnnotatedMethod> it = alreadyDefinedMethods.iterator();
- while (it.hasNext())
- {
- AnnotatedMethod alreadyDefined = it.next();
-
- if (alreadyDefined == annotatedMethod)
- {
- // we don't remove ourself
- continue;
- }
-
- if (methodName == null)
- {
- methodName = annotatedMethod.getJavaMember().getName();
- methodParameterTypes = annotatedMethod.getJavaMember().getParameterTypes();
- }
-
- // check method overrides
- if (!Modifier.isPrivate(alreadyDefined.getJavaMember().getModifiers()))
- {
- // we only scan non-private methods, as private methods cannot get overridden.
- if (methodName.equals(alreadyDefined.getJavaMember().getName()) &&
- methodParameterTypes.length == alreadyDefined.getJavaMember().getParameterTypes().length)
- {
- boolean overridden = true;
- // same name and param length so we need to check if all the paramTypes are equal.
- if (methodParameterTypes.length > 0)
- {
- Class<?>[] otherParamTypes = alreadyDefined.getJavaMember().getParameterTypes();
-
- for (int i = 0; i < otherParamTypes.length; i++)
- {
- if (!otherParamTypes[i].equals(methodParameterTypes[i]))
- {
- overridden = false;
- break;
- }
- }
- }
-
- if (overridden)
- {
- // then we need to remove this method
- it.remove();
- return true;
- }
- }
- }
- }
-
- return false;
+ return annotated;
}
-
-
/**
* {@inheritDoc}
*/
- public void defineApiType()
+ public void defineTypes()
{
- if (getBeanType().isArray())
+ Class<?> baseType = ClassUtil.getClass(annotated.getBaseType());
+ if (baseType.isArray())
{
// 3.3.1
- apiTypes.add(Object.class);
- apiTypes.add(getBeanType());
+ types.add(Object.class);
+ types.add(baseType);
}
else
{
Set<Type> types = annotated.getTypeClosure();
- apiTypes.addAll(types);
+ this.types.addAll(types);
Set<String> ignored = webBeansContext.getOpenWebBeansConfiguration().getIgnoredInterfaces();
- for (Iterator<Type> i = apiTypes.iterator(); i.hasNext();)
+ for (Iterator<Type> i = this.types.iterator(); i.hasNext();)
{
Type t = i.next();
if (t instanceof Class && ignored.contains(((Class<?>)t).getName()))
@@ -219,49 +144,6 @@ public abstract class AbstractBeanBuilde
}
}
- protected void defineName(Annotated annotated, String name)
- {
- Annotation[] anns = AnnotationUtil.asArray(annotated.getAnnotations());
- Named nameAnnot = null;
- boolean isDefault = false;
- for (Annotation ann : anns)
- {
- if (ann.annotationType().equals(Named.class))
- {
- nameAnnot = (Named) ann;
- break;
- }
- }
-
- if (nameAnnot == null) // no @Named
- {
- // Check for stereottype
- if (webBeansContext.getAnnotationManager().hasNamedOnStereoTypes(stereotypes))
- {
- isDefault = true;
- }
-
- }
- else
- // yes @Named
- {
- if (nameAnnot.value().equals(""))
- {
- isDefault = true;
- }
- else
- {
- beanName = nameAnnot.value();
- }
-
- }
-
- if (isDefault)
- {
- beanName = name;
- }
- }
-
/**
* {@inheritDoc}
*/
@@ -274,8 +156,6 @@ public abstract class AbstractBeanBuilde
}
defineQualifiers(annotated, qualifiedTypes);
}
-
- protected abstract Annotated getSuperAnnotated();
private void defineQualifiers(Annotated annotated, Set<Class<? extends Annotation>> qualifiedTypes)
{
@@ -312,9 +192,9 @@ public abstract class AbstractBeanBuilde
{
qualifiedTypes.add(annotation.annotationType());
}
- if (annotation.annotationType().equals(Named.class) && beanName != null)
+ if (annotation.annotationType().equals(Named.class) && name != null)
{
- qualifiers.add(new NamedLiteral(beanName));
+ qualifiers.add(new NamedLiteral(name));
}
else
{
@@ -345,19 +225,6 @@ public abstract class AbstractBeanBuilde
}
- protected void addInjectionPoint(AnnotatedMember<? super T> member)
- {
- injectionPoints.add(member);
- }
-
- /**
- * @return the AnnotatedMember of all found injection points <i>before</i> InjectionPoint will be constructed from it.
- */
- protected Set<AnnotatedMember<? super T>> getInjectionPointsAnnotated()
- {
- return injectionPoints;
- }
-
/**
* Returns true if any binding exist
*
@@ -368,12 +235,15 @@ public abstract class AbstractBeanBuilde
return AnnotationUtil.getAnnotation(qualifiers, Any.class) != null;
}
- public void defineScopeType(String errorMessage)
+
+ protected abstract void defineScope();
+
+ protected void defineScope(String errorMessage)
{
- defineScopeType(null, errorMessage);
+ defineScope(null, errorMessage);
}
- protected void defineScopeType(Class<?> declaringClass, String errorMessage)
+ protected void defineScope(Class<?> declaringClass, String errorMessage)
{
Annotation[] annotations = AnnotationUtil.asArray(annotated.getAnnotations());
boolean found = false;
@@ -419,7 +289,7 @@ public abstract class AbstractBeanBuilde
{
if(pseudo != null)
{
- throw new WebBeansConfigurationException("Not to define both @Scope and @NormalScope on bean : " + getBeanType().getName());
+ throw new WebBeansConfigurationException("Not to define both @Scope and @NormalScope on bean : " + ClassUtil.getClass(annotated.getBaseType()).getName());
}
if (found)
@@ -447,15 +317,15 @@ public abstract class AbstractBeanBuilde
if (!found && declaringClass != null && !hasDeclaredNonInheritedScope(declaringClass))
{
- defineScopeType(declaringClass.getSuperclass(), errorMessage);
+ defineScope(declaringClass.getSuperclass(), errorMessage);
}
else if (!found)
{
- defineDefaultScopeType(errorMessage);
+ defineDefaultScope(errorMessage);
}
}
- private void defineDefaultScopeType(String exceptionMessage)
+ private void defineDefaultScope(String exceptionMessage)
{
if (scope == null)
{
@@ -517,74 +387,62 @@ public abstract class AbstractBeanBuilde
return webBeansContext.getAnnotationManager().getDeclaredScopeAnnotation(type) != null;
}
- /**
- * Checks the unproxiable condition.
- * @throws WebBeansConfigurationException if bean is not proxied by the container
- */
- protected void checkUnproxiableApiType()
+ protected abstract void defineName();
+
+ protected void defineName(Annotated annotated, String name)
{
- //Unproxiable test for NormalScoped beans
- if (webBeansContext.getBeanManagerImpl().isNormalScope(scope))
+ Annotation[] anns = AnnotationUtil.asArray(annotated.getAnnotations());
+ Named nameAnnot = null;
+ boolean isDefault = false;
+ for (Annotation ann : anns)
{
- ViolationMessageBuilder violationMessage = ViolationMessageBuilder.newViolation();
-
- Class<?> beanClass = getBeanType();
-
- if(!beanClass.isInterface() && beanClass != Object.class)
+ if (ann.annotationType().equals(Named.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(), ")");
- }
+ nameAnnot = (Named) ann;
+ break;
+ }
+ }
- if(!violationMessage.containsViolation())
- {
- if (Modifier.isFinal(beanClass.getModifiers()))
- {
- violationMessage.addLine(beanClass.getName(), " is a final class! CDI doesn't allow to proxy that.");
- }
+ if (nameAnnot == null) // no @Named
+ {
+ // Check for stereottype
+ if (webBeansContext.getAnnotationManager().hasNamedOnStereoTypes(stereotypes))
+ {
+ isDefault = true;
+ }
- 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.");
- }
- }
+ }
+ else
+ // yes @Named
+ {
+ if (nameAnnot.value().equals(""))
+ {
+ isDefault = true;
+ }
+ else
+ {
+ this.name = nameAnnot.value();
+ }
- 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 (isDefault)
+ {
+ this.name = name;
}
}
+
+ protected abstract Annotated getSuperAnnotated();
+
+ public void defineNullable()
+ {
+ nullable = false;
+ }
/**
* {@inheritDoc}
*/
- public void defineStereoTypes()
+ public void defineStereotypes()
{
Annotation[] anns = AnnotationUtil.asArray(annotated.getAnnotations());
final AnnotationManager annotationManager = webBeansContext.getAnnotationManager();
@@ -599,70 +457,208 @@ public abstract class AbstractBeanBuilde
}
}
}
+
+ public void defineAlternative()
+ {
+ alternative = false;
+ }
+
+ public static class BeanAttributesBuilderFactory
+ {
+ private WebBeansContext webBeansContext;
+
+ private BeanAttributesBuilderFactory(WebBeansContext webBeansContext)
+ {
+ Asserts.assertNotNull(webBeansContext, "webBeansContext may not be null");
+ this.webBeansContext = webBeansContext;
+ }
+
+ public <T> BeanAttributesBuilder<T, AnnotatedType<T>> newBeanAttibutes(AnnotatedType<T> annotatedType)
+ {
+ return new AnnotatedTypeBeanAttributesBuilder<T>(webBeansContext, annotatedType);
+ }
+
+ public <T> BeanAttributesBuilder<T, AnnotatedField<T>> newBeanAttibutes(AnnotatedField<T> annotatedField)
+ {
+ return new AnnotatedFieldBeanAttributesBuilder<T>(webBeansContext, annotatedField);
+ }
+
+ public <T> BeanAttributesBuilder<T, AnnotatedMethod<T>> newBeanAttibutes(AnnotatedMethod<T> annotatedMethod)
+ {
+ return new AnnotatedMethodBeanAttributesBuilder<T>(webBeansContext, annotatedMethod);
+ }
+ }
- protected <X> void addFieldInjectionPointMetaData(OwbBean<T> bean, AnnotatedField<X> annotField)
+ private static class AnnotatedTypeBeanAttributesBuilder<C> extends BeanAttributesBuilder<C, AnnotatedType<C>>
{
- InjectionPoint injectionPoint = webBeansContext.getInjectionPointFactory().getFieldInjectionPointData(bean, annotField);
- if (injectionPoint != null)
+
+ public AnnotatedTypeBeanAttributesBuilder(WebBeansContext webBeansContext, AnnotatedType<C> annotated)
+ {
+ super(webBeansContext, annotated);
+ }
+
+ @Override
+ protected void defineScope()
{
- addImplicitComponentForInjectionPoint(injectionPoint);
- bean.addInjectionPoint(injectionPoint);
+ defineScope(getAnnotated().getJavaClass(), WebBeansLoggerFacade.getTokenString(OWBLogConst.TEXT_MB_IMPL) + getAnnotated().getJavaClass().getName() +
+ WebBeansLoggerFacade.getTokenString(OWBLogConst.TEXT_SAME_SCOPE));
+ }
+
+ @Override
+ protected void defineName()
+ {
+ if (getAnnotated().isAnnotationPresent(Specializes.class))
+ {
+ AnnotatedType<? super C> superAnnotated = getSuperAnnotated();
+ defineName(superAnnotated, WebBeansUtil.getManagedBeanDefaultName(superAnnotated.getJavaClass().getSimpleName()));
+ }
+ if (name == null)
+ {
+ defineName(getAnnotated(), WebBeansUtil.getManagedBeanDefaultName(getAnnotated().getJavaClass().getSimpleName()));
+ }
+ else
+ {
+ // TODO XXX We have to check stereotypes here, too
+ if (getAnnotated().getJavaClass().isAnnotationPresent(Named.class))
+ {
+ throw new DefinitionException("@Specialized Class : " + getAnnotated().getJavaClass().getName()
+ + " may not explicitly declare a bean name");
+ }
+ }
+ }
+
+ @Override
+ protected AnnotatedType<? super C> getSuperAnnotated()
+ {
+ Class<? super C> superclass = getAnnotated().getJavaClass().getSuperclass();
+ if (superclass == null)
+ {
+ return null;
+ }
+ return webBeansContext.getAnnotatedElementFactory().newAnnotatedType(superclass);
}
}
- protected <X> void addMethodInjectionPointMetaData(OwbBean<T> bean, AnnotatedMethod<X> method)
+ private static class AnnotatedFieldBeanAttributesBuilder<M> extends AnnotatedMemberBeanAttributesBuilder<M, AnnotatedField<M>>
{
- List<InjectionPoint> methodInjectionPoints = webBeansContext.getInjectionPointFactory().getMethodInjectionPointData(bean, method);
- for (InjectionPoint injectionPoint : methodInjectionPoints)
+
+ protected AnnotatedFieldBeanAttributesBuilder(WebBeansContext webBeansContext, AnnotatedField<M> annotated)
+ {
+ super(webBeansContext, annotated);
+ }
+
+ @Override
+ protected void defineScope()
+ {
+ defineScope("Annotated producer field: " + getAnnotated().getJavaMember() + "must declare default @Scope annotation");
+ }
+
+ @Override
+ protected void defineName()
{
- addImplicitComponentForInjectionPoint(injectionPoint);
- bean.addInjectionPoint(injectionPoint);
+ defineName(getAnnotated(), WebBeansUtil.getProducerDefaultName(getAnnotated().getJavaMember().getName()));
+ }
+
+ @Override
+ protected AnnotatedField<? super M> getSuperAnnotated()
+ {
+ AnnotatedField<M> thisField = getAnnotated();
+ for (AnnotatedField<? super M> superField: getSuperType().getFields())
+ {
+ if (thisField.getJavaMember().getName().equals(superField.getJavaMember().getName())
+ && thisField.getBaseType().equals(superField.getBaseType()))
+ {
+ return superField;
+ }
+ }
+ return null;
}
}
- protected void addImplicitComponentForInjectionPoint(InjectionPoint injectionPoint)
+ private static class AnnotatedMethodBeanAttributesBuilder<M> extends AnnotatedMemberBeanAttributesBuilder<M, AnnotatedMethod<M>>
{
- if(!WebBeansUtil.checkObtainsInjectionPointConditions(injectionPoint))
+
+ protected AnnotatedMethodBeanAttributesBuilder(WebBeansContext webBeansContext, AnnotatedMethod<M> annotated)
{
- EventUtil.checkObservableInjectionPointConditions(injectionPoint);
- }
- }
+ super(webBeansContext, annotated);
+ }
- protected abstract B createBean(Set<Type> types,
- Set<Annotation> qualifiers,
- Class<? extends Annotation> scope,
- String name,
- boolean nullable,
- Class<T> returnType,
- Set<Class<? extends Annotation>> stereotypes,
- boolean alternative);
+ @Override
+ protected void defineScope()
+ {
+ defineScope("Annotated producer method : " + getAnnotated().getJavaMember() + "must declare default @Scope annotation");
+ }
- /**
- * {@inheritDoc}
- */
- public B getBean()
- {
- B bean = createBean(apiTypes, qualifiers, getScope(), beanName, false, getBeanType(), stereotypes, false);
- for (Iterator<AnnotatedMember<? super T>> memberIterator = injectionPoints.iterator(); memberIterator.hasNext();)
+ @Override
+ protected void defineName()
{
- AnnotatedMember<? super T> member = memberIterator.next();
- if (member instanceof AnnotatedField)
+ if (getAnnotated().isAnnotationPresent(Specializes.class))
{
- addFieldInjectionPointMetaData((OwbBean<T>)bean, (AnnotatedField<?>) member);
+ AnnotatedMethod<? super M> superAnnotated = getSuperAnnotated();
+ defineName(superAnnotated, WebBeansUtil.getProducerDefaultName(superAnnotated.getJavaMember().getName()));
}
- else if (member instanceof AnnotatedMethod)
+ if (name == null)
{
- addMethodInjectionPointMetaData((OwbBean<T>)bean, (AnnotatedMethod<?>) member);
+ defineName(getAnnotated(), WebBeansUtil.getProducerDefaultName(getAnnotated().getJavaMember().getName()));
+ }
+ else
+ {
+ // TODO XXX We have to check stereotypes here, too
+ if (getAnnotated().isAnnotationPresent(Named.class))
+ {
+ throw new DefinitionException("@Specialized Producer method : " + getAnnotated().getJavaMember().getName()
+ + " may not explicitly declare a bean name");
+ }
}
}
- return bean;
+ @Override
+ protected AnnotatedMethod<? super M> getSuperAnnotated()
+ {
+ AnnotatedMethod<M> thisMethod = getAnnotated();
+ for (AnnotatedMethod<? super M> superMethod: getSuperType().getMethods())
+ {
+ List<AnnotatedParameter<M>> thisParameters = thisMethod.getParameters();
+ if (thisMethod.getJavaMember().getName().equals(superMethod.getJavaMember().getName())
+ && thisMethod.getBaseType().equals(superMethod.getBaseType())
+ && thisParameters.size() == superMethod.getParameters().size())
+ {
+ List<AnnotatedParameter<?>> superParameters = (List<AnnotatedParameter<?>>)(List<?>)superMethod.getParameters();
+ boolean match = true;
+ for (int i = 0; i < thisParameters.size(); i++)
+ {
+ if (!thisParameters.get(i).getBaseType().equals(superParameters.get(i).getBaseType()))
+ {
+ match = false;
+ break;
+ }
+ }
+ if (match)
+ {
+ return superMethod;
+ }
+ }
+ }
+ return null;
+ }
}
- protected A getAnnotated()
+ private abstract static class AnnotatedMemberBeanAttributesBuilder<M, A extends AnnotatedMember<M>> extends BeanAttributesBuilder<M, A>
{
- return annotated;
+
+ protected AnnotatedMemberBeanAttributesBuilder(WebBeansContext webBeansContext, A annotated)
+ {
+ super(webBeansContext, annotated);
+ }
+
+ protected AnnotatedType<? super M> getSuperType()
+ {
+ Class<? super M> superclass = getAnnotated().getDeclaringType().getJavaClass().getSuperclass();
+ if (superclass == null)
+ {
+ return null;
+ }
+ return webBeansContext.getAnnotatedElementFactory().getAnnotatedType(superclass);
+ }
}
-
- protected abstract Class<T> getBeanType();
}
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=1437893&r1=1437892&r2=1437893&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 08:27:26 2013
@@ -24,10 +24,10 @@ import javax.enterprise.inject.spi.Inter
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
-import java.lang.reflect.Type;
import java.util.Map;
import java.util.Set;
+import org.apache.webbeans.component.BeanAttributesImpl;
import org.apache.webbeans.component.CdiInterceptorBean;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.exception.WebBeansConfigurationException;
@@ -41,9 +41,9 @@ public class CdiInterceptorBeanBuilder<T
private Set<Annotation> interceptorBindings;
- public CdiInterceptorBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType)
+ public CdiInterceptorBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType, BeanAttributesImpl<T> beanAttributes)
{
- super(webBeansContext, annotatedType);
+ super(webBeansContext, annotatedType, beanAttributes);
}
public void defineCdiInterceptorRules()
@@ -71,8 +71,8 @@ public class CdiInterceptorBeanBuilder<T
}
@Override
- protected CdiInterceptorBean<T> createBean(Set<Type> types, Class<T> beanClass, boolean enabled, Map<InterceptionType, Method[]> interceptionMethods)
+ protected CdiInterceptorBean<T> createBean(Class<T> beanClass, boolean enabled, Map<InterceptionType, Method[]> interceptionMethods)
{
- return new CdiInterceptorBean<T>(webBeansContext, getAnnotated(), types, beanClass, interceptorBindings, enabled, interceptionMethods);
+ return new CdiInterceptorBean<T>(webBeansContext, getAnnotated(), getBeanAttributes(), 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=1437893&r1=1437892&r2=1437893&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 08:27:26 2013
@@ -41,6 +41,7 @@ import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
+import org.apache.webbeans.component.BeanAttributesImpl;
import org.apache.webbeans.component.DecoratorBean;
import org.apache.webbeans.component.WebBeansType;
import org.apache.webbeans.config.OWBLogConst;
@@ -80,9 +81,10 @@ public class DecoratorBeanBuilder<T> ext
private final Set<String> ignoredDecoratorInterfaces;
- public DecoratorBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType)
+ public DecoratorBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType, BeanAttributesImpl<T> beanAttributes)
{
- super(webBeansContext, annotatedType);
+ super(webBeansContext, annotatedType, beanAttributes);
+ decoratedTypes = new HashSet<Type>(beanAttributes.getTypes());
ignoredDecoratorInterfaces = getIgnoredDecoratorInterfaces();
}
@@ -128,7 +130,7 @@ public class DecoratorBeanBuilder<T> ext
protected void checkDecoratorConditions()
{
- if(getScope() != Dependent.class)
+ if(getBeanAttributes().getScope() != Dependent.class)
{
if(logger.isLoggable(Level.WARNING))
{
@@ -136,7 +138,7 @@ public class DecoratorBeanBuilder<T> ext
}
}
- if(getName() != null)
+ if(getBeanAttributes().getName() != null)
{
if(logger.isLoggable(Level.WARNING))
{
@@ -178,12 +180,8 @@ public class DecoratorBeanBuilder<T> ext
public void defineDecoratorRules()
{
- defineScopeType(WebBeansLoggerFacade.getTokenString(OWBLogConst.TEXT_MB_IMPL) + getBeanType() +
- WebBeansLoggerFacade.getTokenString(OWBLogConst.TEXT_SAME_SCOPE));
-
checkDecoratorConditions();
- defineApiType();
defineConstructor();
defineInjectedMethods();
defineInjectedFields();
@@ -193,7 +191,6 @@ public class DecoratorBeanBuilder<T> ext
private void defineDecoratedTypes()
{
- decoratedTypes = new HashSet<Type>(getApiTypes());
Class<T> beanClass = getBeanType();
// determine a safe Type for for a later BeanManager.getReference(...)
@@ -300,10 +297,10 @@ public class DecoratorBeanBuilder<T> ext
}
@Override
- protected InjectionTarget<T> buildInjectionTarget(Set<Type> types, Set<Annotation> qualifiers, AnnotatedType<T> annotatedType, Set<InjectionPoint> points,
+ protected InjectionTarget<T> buildInjectionTarget(AnnotatedType<T> annotatedType, Set<InjectionPoint> points,
WebBeansContext webBeansContext, List<AnnotatedMethod<?>> postConstructMethods, List<AnnotatedMethod<?>> preDestroyMethods)
{
- InjectionTarget<T> injectionTarget = super.buildInjectionTarget(types, qualifiers, annotatedType, points, webBeansContext, postConstructMethods, preDestroyMethods);
+ InjectionTarget<T> injectionTarget = super.buildInjectionTarget(annotatedType, points, webBeansContext, postConstructMethods, preDestroyMethods);
if (Modifier.isAbstract(annotatedType.getJavaClass().getModifiers()))
{
@@ -313,18 +310,9 @@ public class DecoratorBeanBuilder<T> ext
}
@Override
- protected DecoratorBean<T> createBean(Set<Type> types,
- Set<Annotation> qualifiers,
- Class<? extends Annotation> scope,
- String name,
- boolean nullable,
- Class<T> beanClass,
- Set<Class<? extends Annotation>> stereotypes,
- boolean alternative,
- boolean enabled)
+ protected DecoratorBean<T> createBean(Class<T> beanClass, boolean enabled)
{
- DecoratorBean<T> decorator = new DecoratorBean<T>(webBeansContext, WebBeansType.MANAGED, getAnnotated(), types, qualifiers,
- scope, beanClass, stereotypes);
+ DecoratorBean<T> decorator = new DecoratorBean<T>(webBeansContext, WebBeansType.MANAGED, getAnnotated(), getBeanAttributes(), beanClass);
addConstructorInjectionPointMetaData(decorator);
decorator.setEnabled(enabled);
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=1437893&r1=1437892&r2=1437893&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 08:27:26 2013
@@ -20,13 +20,12 @@ package org.apache.webbeans.component.cr
import java.lang.reflect.Method;
-import java.lang.reflect.Type;
import java.util.Map;
-import java.util.Set;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.InterceptionType;
+import org.apache.webbeans.component.BeanAttributesImpl;
import org.apache.webbeans.component.EjbInterceptorBean;
import org.apache.webbeans.config.WebBeansContext;
@@ -36,9 +35,9 @@ import org.apache.webbeans.config.WebBea
public class EjbInterceptorBeanBuilder<T> extends InterceptorBeanBuilder<T, EjbInterceptorBean<T>>
{
- public EjbInterceptorBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType)
+ public EjbInterceptorBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType, BeanAttributesImpl<T> beanAttributes)
{
- super(webBeansContext, annotatedType);
+ super(webBeansContext, annotatedType, beanAttributes);
}
public void defineEjbInterceptorRules()
@@ -54,8 +53,8 @@ public class EjbInterceptorBeanBuilder<T
}
@Override
- protected EjbInterceptorBean<T> createBean(Set<Type> types, Class<T> beanClass, boolean enabled, Map<InterceptionType, Method[]> interceptionMethods)
+ protected EjbInterceptorBean<T> createBean(Class<T> beanClass, boolean enabled, Map<InterceptionType, Method[]> interceptionMethods)
{
- return new EjbInterceptorBean<T>(webBeansContext, getAnnotated(), types, beanClass, interceptionMethods);
+ return new EjbInterceptorBean<T>(webBeansContext, getAnnotated(), getBeanAttributes(), beanClass, interceptionMethods);
}
}
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=1437893&r1=1437892&r2=1437893&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 Thu Jan 24 08:27:26 2013
@@ -37,7 +37,9 @@ public class ExtensionBeanBuilder<T> ext
public ExtensionBeanBuilder(WebBeansContext webBeansContext, Class<T> type)
{
- super(webBeansContext, webBeansContext.getAnnotatedElementFactory().newAnnotatedType(type));
+ super(webBeansContext,
+ webBeansContext.getAnnotatedElementFactory().newAnnotatedType(type),
+ BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes(webBeansContext.getAnnotatedElementFactory().getAnnotatedType(type)).build());
}
protected InjectionTarget<T> buildInjectionTarget(Set<Type> types,
@@ -52,15 +54,7 @@ public class ExtensionBeanBuilder<T> ext
}
@Override
- protected ExtensionBean<T> createBean(Set<Type> types,
- Set<Annotation> qualifiers,
- Class<? extends Annotation> scope,
- String name,
- boolean nullable,
- Class<T> beanClass,
- Set<Class<? extends Annotation>> stereotypes,
- boolean alternative,
- boolean enabled)
+ protected ExtensionBean<T> createBean(Class<T> beanClass, boolean enabled)
{
return new ExtensionBean<T>(webBeansContext, beanClass);
}
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=1437893&r1=1437892&r2=1437893&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 08:27:26 2013
@@ -20,7 +20,6 @@ package org.apache.webbeans.component.cr
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;
@@ -35,13 +34,13 @@ import javax.interceptor.InvocationConte
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
-import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.apache.webbeans.component.BeanAttributesImpl;
import org.apache.webbeans.component.InterceptorBean;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.exception.WebBeansConfigurationException;
@@ -64,9 +63,9 @@ public abstract class InterceptorBeanBui
private Map<InterceptionType, Method[]> interceptionMethods;
- protected InterceptorBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType)
+ protected InterceptorBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType, BeanAttributesImpl<T> beanAttributes)
{
- super(webBeansContext, annotatedType);
+ super(webBeansContext, annotatedType, beanAttributes);
ejbPlugin = webBeansContext.getPluginLoader().getEjbLCAPlugin();
if (ejbPlugin != null)
{
@@ -80,13 +79,6 @@ public abstract class InterceptorBeanBui
}
}
- @Override
- public Class<? extends Annotation> getScope()
- {
- // Interceptors are always Dependent scoped
- return Dependent.class;
- }
-
public void defineConstructor()
{
constructor = getBeanConstructor();
@@ -137,7 +129,6 @@ public abstract class InterceptorBeanBui
protected void defineInterceptorRules()
{
- defineApiType();
defineConstructor();
defineInterceptorMethods();
defineInjectedMethods();
@@ -363,23 +354,14 @@ public abstract class InterceptorBeanBui
}
}
- protected abstract B createBean(Set<Type> types,
- Class<T> beanClass,
+ protected abstract B createBean(Class<T> beanClass,
boolean enabled,
Map<InterceptionType, Method[]> interceptionMethods);
@Override
- protected B createBean(Set<Type> types,
- Set<Annotation> qualifiers,
- Class<? extends Annotation> scope,
- String name,
- boolean nullable,
- Class<T> beanClass,
- Set<Class<? extends Annotation>> stereotypes,
- boolean alternative,
- boolean enabled)
+ protected B createBean(Class<T> beanClass, boolean enabled)
{
- B bean = createBean(types, beanClass, enabled, interceptionMethods);
+ B bean = createBean(beanClass, enabled, interceptionMethods);
addConstructorInjectionPointMetaData(bean);
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=1437893&r1=1437892&r2=1437893&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 08:27:26 2013
@@ -18,10 +18,7 @@
*/
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.annotation.PostConstruct;
import javax.annotation.PreDestroy;
@@ -30,12 +27,11 @@ import javax.enterprise.inject.spi.Annot
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.InjectionPoint;
+import org.apache.webbeans.component.BeanAttributesImpl;
import org.apache.webbeans.component.ManagedBean;
import org.apache.webbeans.component.WebBeansType;
-import org.apache.webbeans.config.OWBLogConst;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.inject.impl.InjectionPointFactory;
-import org.apache.webbeans.logger.WebBeansLoggerFacade;
import org.apache.webbeans.util.WebBeansUtil;
/**
@@ -53,9 +49,9 @@ public class ManagedBeanBuilder<T, M ext
/**
* Creates a new creator.
*/
- public ManagedBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType)
+ public ManagedBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType, BeanAttributesImpl<T> beanAttributes)
{
- super(webBeansContext, annotatedType);
+ super(webBeansContext, annotatedType, beanAttributes);
}
/**
@@ -65,7 +61,7 @@ public class ManagedBeanBuilder<T, M ext
public void checkCreateConditions()
{
webBeansContext.getWebBeansUtil().checkManagedBeanCondition(getAnnotated());
- WebBeansUtil.checkGenericType(getBeanType(), getScope());
+ WebBeansUtil.checkGenericType(getBeanType(), getBeanAttributes().getScope());
//Check Unproxiable
checkUnproxiableApiType();
}
@@ -89,22 +85,10 @@ public class ManagedBeanBuilder<T, M ext
public ManagedBean<T> defineManagedBean(AnnotatedType<T> annotatedType)
{
- Class<T> clazz = annotatedType.getJavaClass();
-
- defineApiType();
-
- //Define meta-data
- defineStereoTypes();
- //Scope type
- defineScopeType(WebBeansLoggerFacade.getTokenString(OWBLogConst.TEXT_MB_IMPL) + clazz.getName() +
- WebBeansLoggerFacade.getTokenString(OWBLogConst.TEXT_SAME_SCOPE));
-
//Check for Enabled via Alternative
defineEnabled();
checkCreateConditions();
- defineName();
- defineQualifiers();
defineConstructor();
defineInjectedFields();
@@ -144,17 +128,9 @@ public class ManagedBeanBuilder<T, M ext
@Override
- protected M createBean(Set<Type> types,
- Set<Annotation> qualifiers,
- Class<? extends Annotation> scope,
- String name,
- boolean nullable,
- Class<T> beanClass,
- Set<Class<? extends Annotation>> stereotypes,
- boolean alternative,
- boolean enabled)
+ protected M createBean(Class<T> beanClass, boolean enabled)
{
- M managedBean = (M)new ManagedBean<T>(webBeansContext, WebBeansType.MANAGED, getAnnotated(), types, qualifiers, scope, name, beanClass, stereotypes, alternative);
+ M managedBean = (M)new ManagedBean<T>(webBeansContext, WebBeansType.MANAGED, getAnnotated(), getBeanAttributes(), 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=1437893&r1=1437892&r2=1437893&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 08:27:26 2013
@@ -18,41 +18,20 @@
*/
package org.apache.webbeans.component.creation;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import java.util.Set;
-
-import javax.enterprise.inject.Specializes;
import javax.enterprise.inject.spi.AnnotatedField;
+import org.apache.webbeans.component.BeanAttributesImpl;
import org.apache.webbeans.component.InjectionTargetBean;
import org.apache.webbeans.component.ProducerFieldBean;
-import org.apache.webbeans.util.WebBeansUtil;
public class ProducerFieldBeanBuilder<T, P extends ProducerFieldBean<T>> extends AbstractProducerBeanBuilder<T, AnnotatedField<?>, P>
{
- public ProducerFieldBeanBuilder(InjectionTargetBean<?> owner, AnnotatedField<?> annotated)
+ public ProducerFieldBeanBuilder(InjectionTargetBean<?> owner, AnnotatedField<?> annotated, BeanAttributesImpl<T> beanAttributes)
{
- super(owner, annotated);
+ super(owner, annotated, beanAttributes);
}
- /**
- * {@inheritDoc}
- */
- public void defineName()
- {
- if (getAnnotated().isAnnotationPresent(Specializes.class))
- {
- AnnotatedField<?> superAnnotated = getSuperAnnotated();
- defineName(superAnnotated, WebBeansUtil.getProducerDefaultName(superAnnotated.getJavaMember().getName()));
- }
- if (getName() == null)
- {
- defineName(getAnnotated(), WebBeansUtil.getProducerDefaultName(getAnnotated().getJavaMember().getName()));
- }
- }
-
@Override
protected Class<T> getBeanType()
{
@@ -74,16 +53,8 @@ public class ProducerFieldBeanBuilder<T,
}
@Override
- protected P createBean(InjectionTargetBean<?> owner,
- Set<Type> types,
- Set<Annotation> qualifiers,
- Class<? extends Annotation> scope,
- String name,
- boolean nullable,
- Class<T> beanClass,
- Set<Class<? extends Annotation>> stereotypes,
- boolean alternative)
+ protected P createBean(InjectionTargetBean<?> owner, Class<T> beanClass)
{
- return (P) new ProducerFieldBean<T>(owner, types, qualifiers, scope, name, nullable, beanClass, stereotypes, alternative);
+ return (P) new ProducerFieldBean<T>(owner, getBeanAttributes(), beanClass);
}
}
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=1437893&r1=1437892&r2=1437893&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 08:27:26 2013
@@ -18,35 +18,29 @@
*/
package org.apache.webbeans.component.creation;
-import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
-import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
-import java.util.Set;
import javax.enterprise.inject.Produces;
-import javax.enterprise.inject.Specializes;
import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedParameter;
-import javax.inject.Named;
+import org.apache.webbeans.component.BeanAttributesImpl;
import org.apache.webbeans.component.InjectionTargetBean;
import org.apache.webbeans.component.ProducerMethodBean;
import org.apache.webbeans.exception.WebBeansConfigurationException;
-import org.apache.webbeans.exception.inject.DefinitionException;
import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.util.ClassUtil;
-import org.apache.webbeans.util.WebBeansUtil;
public class ProducerMethodBeanBuilder<T> extends AbstractProducerBeanBuilder<T, AnnotatedMethod<?>, ProducerMethodBean<T>>
{
private boolean specialized;
- public ProducerMethodBeanBuilder(InjectionTargetBean<T> parent, AnnotatedMethod<?> annotatedMethod)
+ public ProducerMethodBeanBuilder(InjectionTargetBean<T> parent, AnnotatedMethod<?> annotatedMethod, BeanAttributesImpl<T> beanAttributes)
{
- super(parent, annotatedMethod);
+ super(parent, annotatedMethod, beanAttributes);
}
public void configureProducerSpecialization(ProducerMethodBean<T> bean, AnnotatedMethod<T> annotatedMethod)
@@ -89,32 +83,6 @@ public class ProducerMethodBeanBuilder<T
bean.setSpecializedBean(true);
}
- /**
- * {@inheritDoc}
- */
- public void defineName()
- {
- if (getAnnotated().isAnnotationPresent(Specializes.class))
- {
- specialized = true;
- AnnotatedMethod<?> superAnnotated = getSuperAnnotated();
- defineName(superAnnotated, WebBeansUtil.getProducerDefaultName(superAnnotated.getJavaMember().getName()));
- }
- if (getName() == null)
- {
- defineName(getAnnotated(), WebBeansUtil.getProducerDefaultName(getAnnotated().getJavaMember().getName()));
- }
- else
- {
- // TODO XXX We have to check stereotypes here, too
- if (getAnnotated().isAnnotationPresent(Named.class))
- {
- throw new DefinitionException("@Specialized Producer method : " + getAnnotated().getJavaMember().getName()
- + " may not explicitly declare a bean name");
- }
- }
- }
-
protected AnnotatedMethod<?> getSuperAnnotated()
{
AnnotatedMethod<?> thisMethod = getAnnotated();
@@ -151,17 +119,9 @@ public class ProducerMethodBeanBuilder<T
}
@Override
- protected ProducerMethodBean<T> createBean(InjectionTargetBean<?> parent,
- Set<Type> types,
- Set<Annotation> qualifiers,
- Class<? extends Annotation> scope,
- String name,
- boolean nullable,
- Class<T> beanClass,
- Set<Class<? extends Annotation>> stereotypes,
- boolean alternative)
+ protected ProducerMethodBean<T> createBean(InjectionTargetBean<?> parent, Class<T> beanClass)
{
- ProducerMethodBean<T> producerMethodBean = new ProducerMethodBean<T>(parent, types, qualifiers, scope, name, nullable, beanClass, stereotypes, alternative);
+ ProducerMethodBean<T> producerMethodBean = new ProducerMethodBean<T>(parent, getBeanAttributes(), beanClass);
producerMethodBean.setSpecializedBean(specialized);
return producerMethodBean;
}
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=1437893&r1=1437892&r2=1437893&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 08:27:26 2013
@@ -19,11 +19,10 @@
package org.apache.webbeans.component.creation;
import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import java.util.Set;
import javax.enterprise.inject.spi.AnnotatedField;
+import org.apache.webbeans.component.BeanAttributesImpl;
import org.apache.webbeans.component.InjectionTargetBean;
import org.apache.webbeans.component.ResourceBean;
import org.apache.webbeans.spi.api.ResourceReference;
@@ -33,23 +32,15 @@ public class ResourceBeanBuilder<T, R ex
private ResourceReference<T, R> resourceRef;
- public ResourceBeanBuilder(InjectionTargetBean<?> parent, ResourceReference<T, R> resourceRef, AnnotatedField<?> annotatedField)
+ public ResourceBeanBuilder(InjectionTargetBean<?> parent, ResourceReference<T, R> resourceRef, AnnotatedField<?> annotatedField, BeanAttributesImpl<T> beanAttributes)
{
- super(parent, annotatedField);
+ super(parent, annotatedField, beanAttributes);
this.resourceRef = resourceRef;
}
@Override
- protected ResourceBean<T, R> createBean(InjectionTargetBean<?> owner,
- Set<Type> types,
- Set<Annotation> qualifiers,
- Class<? extends Annotation> scope,
- String name,
- boolean nullable,
- Class<T> beanClass,
- Set<Class<? extends Annotation>> stereotypes,
- boolean alternative)
+ protected ResourceBean<T, R> createBean(InjectionTargetBean<?> owner, Class<T> beanClass)
{
- return new ResourceBean<T, R>(owner, resourceRef, types, qualifiers, scope, name, nullable, beanClass, stereotypes, alternative);
+ return new ResourceBean<T, R>(owner, resourceRef, getBeanAttributes(), 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=1437893&r1=1437892&r2=1437893&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 08:27:26 2013
@@ -20,13 +20,12 @@ package org.apache.webbeans.component.cr
import java.lang.reflect.Method;
-import java.lang.reflect.Type;
import java.util.Map;
-import java.util.Set;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.InterceptionType;
+import org.apache.webbeans.component.BeanAttributesImpl;
import org.apache.webbeans.component.SelfInterceptorBean;
import org.apache.webbeans.config.WebBeansContext;
@@ -37,9 +36,9 @@ public class SelfInterceptorBeanBuilder<
{
private boolean enabled = false;
- public SelfInterceptorBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType)
+ public SelfInterceptorBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType, BeanAttributesImpl<T> beanAttributes)
{
- super(webBeansContext, annotatedType);
+ super(webBeansContext, annotatedType, beanAttributes);
}
public void defineSelfInterceptorRules()
@@ -50,7 +49,6 @@ public class SelfInterceptorBeanBuilder<
// we do NOT invoke defineInterceptorRules() !
- defineApiType();
enabled = defineInterceptorMethods();
}
@@ -60,8 +58,8 @@ public class SelfInterceptorBeanBuilder<
}
@Override
- protected SelfInterceptorBean<T> createBean(Set<Type> types, Class<T> beanClass, boolean enabled, Map<InterceptionType, Method[]> interceptionMethods)
+ protected SelfInterceptorBean<T> createBean(Class<T> beanClass, boolean enabled, Map<InterceptionType, Method[]> interceptionMethods)
{
- return new SelfInterceptorBean<T>(webBeansContext, getAnnotated(), types, beanClass, interceptionMethods);
+ return new SelfInterceptorBean<T>(webBeansContext, getAnnotated(), getBeanAttributes(), beanClass, interceptionMethods);
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/third/ThirdpartyBeanImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/third/ThirdpartyBeanImpl.java?rev=1437893&r1=1437892&r2=1437893&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/third/ThirdpartyBeanImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/third/ThirdpartyBeanImpl.java Thu Jan 24 08:27:26 2013
@@ -19,7 +19,6 @@
package org.apache.webbeans.component.third;
import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
import java.util.Set;
import javax.enterprise.context.spi.CreationalContext;
@@ -28,6 +27,7 @@ import javax.enterprise.inject.spi.Injec
import javax.enterprise.inject.spi.PassivationCapable;
import org.apache.webbeans.component.AbstractOwbBean;
+import org.apache.webbeans.component.BeanAttributesImpl;
import org.apache.webbeans.component.WebBeansType;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.inject.AlternativesManager;
@@ -40,61 +40,19 @@ public class ThirdpartyBeanImpl<T> exten
{
super(webBeansContext,
WebBeansType.THIRDPARTY,
- bean.getTypes(),
- bean.getQualifiers(),
- bean.getScope(),
- bean.getName(),
- bean.isNullable(),
- bean.getBeanClass(),
- bean.getStereotypes(),
- bean.isAlternative());
+ new BeanAttributesImpl<T>(bean),
+ bean.getBeanClass());
this.bean = bean;
}
-
- @Override
- public Set<Annotation> getQualifiers()
- {
-
- return bean.getQualifiers();
- }
@Override
public Set<InjectionPoint> getInjectionPoints()
{
-
return bean.getInjectionPoints();
}
- @Override
- public String getName()
- {
-
- return bean.getName();
- }
-
- @Override
- public Class<? extends Annotation> getScope()
- {
-
- return bean.getScope();
- }
-
- @Override
- public Set<Type> getTypes()
- {
-
- return bean.getTypes();
- }
-
- @Override
- public boolean isNullable()
- {
-
- return bean.isNullable();
- }
-
public T create(CreationalContext<T> context)
{
@@ -107,7 +65,6 @@ public class ThirdpartyBeanImpl<T> exten
}
-
/* (non-Javadoc)
* @see org.apache.webbeans.component.AbstractBean#getId()
*/
@@ -138,15 +95,9 @@ public class ThirdpartyBeanImpl<T> exten
}
@Override
- public Set<Class<? extends Annotation>> getStereotypes()
- {
- return bean.getStereotypes();
- }
-
- @Override
public boolean isAlternative()
{
- boolean alternative = bean.isAlternative();
+ boolean alternative = super.isAlternative();
if(alternative)
{
AlternativesManager manager = getWebBeansContext().getAlternativesManager();
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=1437893&r1=1437892&r2=1437893&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 Thu Jan 24 08:27:26 2013
@@ -49,6 +49,7 @@ import javax.enterprise.inject.spi.Proce
import javax.enterprise.inject.spi.Producer;
import org.apache.webbeans.annotation.AnnotationManager;
+import org.apache.webbeans.component.BeanAttributesImpl;
import org.apache.webbeans.component.DecoratorBean;
import org.apache.webbeans.component.InjectionTargetBean;
import org.apache.webbeans.component.AbstractProducerBean;
@@ -59,6 +60,7 @@ import org.apache.webbeans.component.Man
import org.apache.webbeans.component.OwbBean;
import org.apache.webbeans.component.ProducerFieldBean;
import org.apache.webbeans.component.ProducerMethodBean;
+import org.apache.webbeans.component.creation.BeanAttributesBuilder;
import org.apache.webbeans.component.creation.CdiInterceptorBeanBuilder;
import org.apache.webbeans.component.creation.DecoratorBeanBuilder;
import org.apache.webbeans.component.creation.ManagedBeanBuilder;
@@ -822,8 +824,10 @@ public class BeansDeployer
{
//Check conditions
webBeansContext.getWebBeansUtil().checkManagedBeanCondition(clazz);
+
+ BeanAttributesImpl<T> beanAttributes = BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes(annotatedType).build();
- ManagedBeanBuilder<T, ManagedBean<T>> managedBeanCreator = new ManagedBeanBuilder<T, ManagedBean<T>>(webBeansContext, annotatedType);
+ ManagedBeanBuilder<T, ManagedBean<T>> managedBeanCreator = new ManagedBeanBuilder<T, ManagedBean<T>>(webBeansContext, annotatedType, beanAttributes);
InjectionTargetBean<T> bean;
GProcessInjectionTarget processInjectionTarget = null;
@@ -833,7 +837,7 @@ public class BeansDeployer
{
logger.log(Level.FINE, "Found Managed Bean Decorator with class name : [{0}]", annotatedType.getJavaClass().getName());
}
- DecoratorBeanBuilder<T> dbb = new DecoratorBeanBuilder<T>(webBeansContext, annotatedType);
+ DecoratorBeanBuilder<T> dbb = new DecoratorBeanBuilder<T>(webBeansContext, annotatedType, beanAttributes);
if (dbb.isDecoratorEnabled())
{
dbb.defineDecoratorRules();
@@ -853,7 +857,7 @@ public class BeansDeployer
logger.log(Level.FINE, "Found Managed Bean Interceptor with class name : [{0}]", annotatedType.getJavaClass().getName());
}
- CdiInterceptorBeanBuilder<T> ibb = new CdiInterceptorBeanBuilder<T>(webBeansContext, annotatedType);
+ CdiInterceptorBeanBuilder<T> ibb = new CdiInterceptorBeanBuilder<T>(webBeansContext, annotatedType, beanAttributes);
if (ibb.isInterceptorEnabled())
{
ibb.defineCdiInterceptorRules();
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java?rev=1437893&r1=1437892&r2=1437893&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java Thu Jan 24 08:27:26 2013
@@ -39,6 +39,7 @@ import javax.enterprise.inject.spi.Injec
import org.apache.webbeans.annotation.AnyLiteral;
import org.apache.webbeans.annotation.DefaultLiteral;
import org.apache.webbeans.component.AbstractOwbBean;
+import org.apache.webbeans.component.InjectionTargetBean;
import org.apache.webbeans.component.OwbBean;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.exception.WebBeansConfigurationException;
@@ -172,17 +173,7 @@ public class InjectionResolver
{
if (qualifiers.length == 1 && qualifiers[0].annotationType().equals(New.class))
{
- New newQualifier = (New) qualifiers[0];
-
- if (newQualifier.value() == New.class)
- {
- beanSet.add(webBeansContext.getWebBeansUtil().createNewComponent(clazz, type));
- }
- else
- {
- beanSet.add(webBeansContext.getWebBeansUtil().createNewComponent(newQualifier.value(), null));
- }
-
+ createNewBean(injectionPoint, type, qualifiers, beanSet);
}
}
@@ -247,16 +238,7 @@ public class InjectionResolver
{
if (qualifiers.length == 1 && qualifiers[0].annotationType().equals(New.class))
{
- New newQualifier = (New) qualifiers[0];
-
- if (newQualifier.value() == New.class)
- {
- beanSet.add(webBeansContext.getWebBeansUtil().createNewComponent(clazz, type));
- }
- else
- {
- beanSet.add(webBeansContext.getWebBeansUtil().createNewComponent(newQualifier.value(), null));
- }
+ createNewBean(injectionPoint, type, qualifiers, beanSet);
}
else
{
@@ -267,6 +249,42 @@ public class InjectionResolver
return resolve(beanSet);
}
+ private void createNewBean(InjectionPoint injectionPoint, Type type, Annotation[] qualifiers, Set<Bean<?>> beanSet)
+ {
+ New newQualifier = (New) qualifiers[0];
+ Class<?> newType;
+ if (newQualifier.value() == New.class)
+ {
+ newType = ClassUtil.getClass(type);
+ }
+ else
+ {
+ newType = newQualifier.value();
+ }
+ Set<Bean<?>> beans = implResolveByType(newType, injectionPoint.getBean().getBeanClass(), new AnyLiteral());
+ if (beans.isEmpty())
+ {
+ beanSet.add(webBeansContext.getWebBeansUtil().createNewComponent(newType));
+ }
+ else
+ {
+ // we just need the bean for the injection points. So when we find an InjectionTargetBean, we can just take it.
+ for (Bean<?> bean: beans)
+ {
+ if (bean instanceof InjectionTargetBean)
+ {
+ beanSet.add(webBeansContext.getWebBeansUtil().createNewComponent((OwbBean)bean, (Class)newType));
+ break;
+ }
+ }
+ if (beanSet.isEmpty())
+ {
+ //Hmm, no InjectionTargetBean available, then we have to create the injection points on our own
+ beanSet.add(webBeansContext.getWebBeansUtil().createNewComponent((Class)newType));
+ }
+ }
+ }
+
private boolean isInstanceOrEventInjection(Type type)
{
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java?rev=1437893&r1=1437892&r2=1437893&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java Thu Jan 24 08:27:26 2013
@@ -49,7 +49,9 @@ import java.util.Set;
import java.util.logging.Logger;
import org.apache.webbeans.annotation.AnnotationManager;
+import org.apache.webbeans.component.BeanAttributesImpl;
import org.apache.webbeans.component.SelfInterceptorBean;
+import org.apache.webbeans.component.creation.BeanAttributesBuilder;
import org.apache.webbeans.component.creation.SelfInterceptorBeanBuilder;
import org.apache.webbeans.config.OpenWebBeansConfiguration;
import org.apache.webbeans.config.WebBeansContext;
@@ -240,7 +242,8 @@ public class InterceptorResolutionServic
*/
private <T> SelfInterceptorBean<T> resolveSelfInterceptorBean(AnnotatedType<T> annotatedType)
{
- SelfInterceptorBeanBuilder sibb = new SelfInterceptorBeanBuilder(webBeansContext, annotatedType);
+ BeanAttributesImpl<T> beanAttributes = BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes(annotatedType).build();
+ SelfInterceptorBeanBuilder<T>sibb = new SelfInterceptorBeanBuilder<T>(webBeansContext, annotatedType, beanAttributes);
sibb.defineSelfInterceptorRules();
if (!sibb.isInterceptorEnabled())
{
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorsManager.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorsManager.java?rev=1437893&r1=1437892&r2=1437893&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorsManager.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorsManager.java Thu Jan 24 08:27:26 2013
@@ -34,7 +34,9 @@ import javax.enterprise.inject.spi.Inter
import javax.enterprise.inject.spi.Interceptor;
import javax.enterprise.inject.spi.PassivationCapable;
+import org.apache.webbeans.component.BeanAttributesImpl;
import org.apache.webbeans.component.OwbBean;
+import org.apache.webbeans.component.creation.BeanAttributesBuilder;
import org.apache.webbeans.component.creation.EjbInterceptorBeanBuilder;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.container.BeanManagerImpl;
@@ -120,7 +122,8 @@ public class InterceptorsManager
if (interceptor == null)
{
AnnotatedType<T> annotatedType = webBeansContext.getBeanManagerImpl().createAnnotatedType(interceptorClass);
- EjbInterceptorBeanBuilder<T> buildr = new EjbInterceptorBeanBuilder<T>(webBeansContext, annotatedType);
+ BeanAttributesImpl<T> beanAttributes = BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes(annotatedType).build();
+ EjbInterceptorBeanBuilder<T> buildr = new EjbInterceptorBeanBuilder<T>(webBeansContext, annotatedType, beanAttributes);
buildr.defineEjbInterceptorRules();
Interceptor<T> i = buildr.getBean();
interceptor = (Interceptor<T>) ejbInterceptors.putIfAbsent(interceptorClass, i);