You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2013/01/17 15:57:21 UTC
svn commit: r1434703 - in
/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans:
component/creation/ config/ container/ conversation/ decorator/ event/
Author: struberg
Date: Thu Jan 17 14:57:20 2013
New Revision: 1434703
URL: http://svn.apache.org/viewvc?rev=1434703&view=rev
Log:
OWB-344 generalize Decorator comparison
and remove lots of hardcoded WebBeansDecorator impl specific stuff
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DecoratorComparator.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DecoratorsManager.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java
Modified: 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/AbstractBeanBuilder.java?rev=1434703&r1=1434702&r2=1434703&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/AbstractBeanBuilder.java Thu Jan 17 14:57:20 2013
@@ -321,14 +321,14 @@ public abstract class AbstractBeanBuilde
// No-binding annotation
if (qualifiers.size() == 0 )
{
- qualifiers.add(new DefaultLiteral());
+ qualifiers.add(DefaultLiteral.INSTANCE);
}
else if(qualifiers.size() == 1)
{
Annotation annot = qualifiers.iterator().next();
if(annot.annotationType().equals(Named.class))
{
- qualifiers.add(new DefaultLiteral());
+ qualifiers.add(DefaultLiteral.INSTANCE);
}
}
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=1434703&r1=1434702&r2=1434703&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 17 14:57:20 2013
@@ -65,7 +65,6 @@ import org.apache.webbeans.container.Bea
import org.apache.webbeans.container.InjectableBeanManager;
import org.apache.webbeans.container.InjectionResolver;
import org.apache.webbeans.corespi.se.DefaultJndiService;
-import org.apache.webbeans.decorator.WebBeansDecorator;
import org.apache.webbeans.decorator.WebBeansDecoratorConfig;
import org.apache.webbeans.deployment.StereoTypeModel;
import org.apache.webbeans.event.ObserverMethodImpl;
@@ -342,12 +341,9 @@ public class BeansDeployer
//Adding decorators to validate
Set<Decorator<?>> decorators = webBeansContext.getDecoratorsManager().getDecorators();
- for(Decorator decorator : decorators)
- {
- WebBeansDecorator wbDec = (WebBeansDecorator)decorator;
- beans.add(wbDec);
- }
-
+
+ beans.addAll(decorators);
+
logger.fine("Validation of the decorator's injection points has started.");
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java?rev=1434703&r1=1434702&r2=1434703&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java Thu Jan 17 14:57:20 2013
@@ -74,7 +74,6 @@ import org.apache.webbeans.component.thi
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.context.creational.CreationalContextImpl;
import org.apache.webbeans.decorator.DecoratorComparator;
-import org.apache.webbeans.decorator.WebBeansDecorator;
import org.apache.webbeans.event.NotificationManager;
import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.exception.definition.DuplicateDefinitionException;
@@ -418,20 +417,11 @@ public class BeanManagerImpl implements
{
webBeansContext.getAnnotationManager().checkDecoratorResolverParams(types, bindingTypes);
Set<Decorator<?>> intsSet = webBeansContext.getDecoratorsManager().findDeployedWebBeansDecorator(types, bindingTypes);
- Iterator<Decorator<?>> itSet = intsSet.iterator();
-
- List<Decorator<?>> decoratorList = new ArrayList<Decorator<?>>();
- while (itSet.hasNext())
- {
- WebBeansDecorator decorator = (WebBeansDecorator) itSet.next();
- decoratorList.add(decorator);
-
- }
+ List<Decorator<?>> decoratorList = new ArrayList<Decorator<?>>(intsSet);
Collections.sort(decoratorList, new DecoratorComparator(webBeansContext));
return decoratorList;
-
}
/**
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=1434703&r1=1434702&r2=1434703&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 17 14:57:20 2013
@@ -74,7 +74,7 @@ public class InjectionResolver
*/
private WebBeansContext webBeansContext;
- private final static Annotation[] DEFAULT_LITERAL_ARRAY = new Annotation[]{new DefaultLiteral()};
+ private final static Annotation[] DEFAULT_LITERAL_ARRAY = new Annotation[]{DefaultLiteral.INSTANCE};
private final static Annotation[] ANY_LITERAL_ARRAY = new Annotation[]{new AnyLiteral()};
/**
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java?rev=1434703&r1=1434702&r2=1434703&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java Thu Jan 17 14:57:20 2013
@@ -204,7 +204,7 @@ public class ConversationManager
public Conversation getConversationBeanReference()
{
BeanManager beanManager = webBeansContext.getBeanManagerImpl();
- Bean<Conversation> bean = (Bean<Conversation>)beanManager.getBeans(Conversation.class, new DefaultLiteral()).iterator().next();
+ Bean<Conversation> bean = (Bean<Conversation>)beanManager.getBeans(Conversation.class, DefaultLiteral.INSTANCE).iterator().next();
Conversation conversation =(Conversation) beanManager.getReference(bean, Conversation.class, beanManager.createCreationalContext(bean));
return conversation;
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DecoratorComparator.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DecoratorComparator.java?rev=1434703&r1=1434702&r2=1434703&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DecoratorComparator.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DecoratorComparator.java Thu Jan 17 14:57:20 2013
@@ -39,20 +39,16 @@ public class DecoratorComparator<T> impl
public int compare(Decorator<T> o1, Decorator<T> o2)
{
- WebBeansDecorator<T> src = (WebBeansDecorator<T>) o1;
- WebBeansDecorator<T> target = (WebBeansDecorator<T>) o2;
-
if (o1.equals(o2))
{
return 0;
}
else
{
- Class<?> o1Clazz = src.getClazz();
- Class<?> o2Clazz = target.getClazz();
+ Class<?> o1Clazz = o1.getBeanClass();
+ Class<?> o2Clazz = o2.getBeanClass();
return webBeansContext.getDecoratorsManager().compare(o1Clazz, o2Clazz);
-
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DecoratorsManager.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DecoratorsManager.java?rev=1434703&r1=1434702&r2=1434703&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DecoratorsManager.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DecoratorsManager.java Thu Jan 17 14:57:20 2013
@@ -21,20 +21,19 @@ package org.apache.webbeans.decorator;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CopyOnWriteArraySet;
-import javax.decorator.Decorator;
+import javax.enterprise.inject.spi.Decorator;
import org.apache.webbeans.annotation.DefaultLiteral;
import org.apache.webbeans.component.OwbBean;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.exception.WebBeansConfigurationException;
+import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.util.Asserts;
public class DecoratorsManager
@@ -50,7 +49,7 @@ public class DecoratorsManager
/**
* Active and enabled decorators
*/
- private Set<javax.enterprise.inject.spi.Decorator<?>> webBeansDecorators = new CopyOnWriteArraySet<javax.enterprise.inject.spi.Decorator<?>>();
+ private Set<Decorator<?>> webBeansDecorators = new CopyOnWriteArraySet<Decorator<?>>();
@@ -108,7 +107,7 @@ public class DecoratorsManager
for(Class<?> decoratorClazz : enabledDecorators)
{
//Validate decorator classes
- if(!decoratorClazz.isAnnotationPresent(Decorator.class) && !containsCustomDecoratorClass(decoratorClazz))
+ if(!decoratorClazz.isAnnotationPresent(javax.decorator.Decorator.class) && !containsCustomDecoratorClass(decoratorClazz))
{
throw new WebBeansConfigurationException("Given class : " + decoratorClazz + " is not a decorator class");
}
@@ -127,12 +126,12 @@ public class DecoratorsManager
return additionalDecoratorClasses.contains(clazz);
}
- public Set<javax.enterprise.inject.spi.Decorator<?>> getDecorators()
+ public Set<Decorator<?>> getDecorators()
{
return webBeansDecorators;
}
- public void addDecorator(javax.enterprise.inject.spi.Decorator decorator)
+ public void addDecorator(Decorator decorator)
{
webBeansDecorators.add(decorator);
if (decorator instanceof OwbBean)
@@ -141,17 +140,14 @@ public class DecoratorsManager
if(owbBean.isPassivationCapable())
{
- webBeansContext.getBeanManagerImpl().addPassivationInfo((OwbBean)decorator);
+ webBeansContext.getBeanManagerImpl().addPassivationInfo(decorator);
}
}
}
- public Set<javax.enterprise.inject.spi.Decorator<?>> findDeployedWebBeansDecorator(Set<Type> apiTypes, Annotation... anns)
+ public Set<Decorator<?>> findDeployedWebBeansDecorator(Set<Type> apiTypes, Annotation... anns)
{
- Set<javax.enterprise.inject.spi.Decorator<?>> set = new HashSet<javax.enterprise.inject.spi.Decorator<?>>();
-
- Iterator<javax.enterprise.inject.spi.Decorator<?>> it = Collections.unmodifiableSet(getDecorators()).iterator();
- WebBeansDecorator<?> decorator = null;
+ Set<Decorator<?>> set = new HashSet<Decorator<?>>();
List<Class<? extends Annotation>> bindingTypes = new ArrayList<Class<? extends Annotation>>();
Set<Annotation> listAnnot = new HashSet<Annotation>();
@@ -163,14 +159,12 @@ public class DecoratorsManager
if (listAnnot.isEmpty())
{
- listAnnot.add(new DefaultLiteral());
+ listAnnot.add(DefaultLiteral.INSTANCE);
}
- while (it.hasNext())
+ for (Decorator<?> decorator : getDecorators())
{
- decorator = (WebBeansDecorator<?>) it.next();
-
- if (decorator.isDecoratorMatch(apiTypes, listAnnot))
+ if (isDecoratorMatch(decorator, apiTypes, listAnnot))
{
set.add(decorator);
}
@@ -180,6 +174,67 @@ public class DecoratorsManager
}
+ private boolean isDecoratorMatch(Decorator<?> decorator, Set<Type> apiTypes, Set<Annotation> annotations)
+ {
+ if (!apiTypesMatchDelegateType(decorator, apiTypes))
+ {
+ return false;
+ }
+
+ for (Annotation bindingType : decorator.getDelegateQualifiers())
+ {
+ if (!bindingMatchesAnnotations(bindingType, annotations))
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ private boolean bindingMatchesAnnotations(Annotation bindingType, Set<Annotation> annotations)
+ {
+
+ for (Annotation annot : annotations)
+ {
+ if (AnnotationUtil.isQualifierEqual(annot, bindingType))
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Helper method to check if any of a list of Types are assignable to the
+ * delegate type.
+ *
+ * @param apiTypes Set of apiTypes to check against the delegate type
+ * @return true if one of the types is assignable to the delegate type
+ */
+ private boolean apiTypesMatchDelegateType(Decorator<?> decorator, Set<Type> apiTypes)
+ {
+ boolean ok = false;
+ for (Type apiType : apiTypes)
+ {
+ if (DecoratorResolverRules.compareType(decorator.getDelegateType(), apiType))
+ {
+ ok = true;
+ break;
+ }
+ }
+
+ if(ok)
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+
+
public void clear()
{
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java?rev=1434703&r1=1434702&r2=1434703&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java Thu Jan 17 14:57:20 2013
@@ -26,7 +26,6 @@ import org.apache.webbeans.config.WebBea
import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.exception.WebBeansException;
import org.apache.webbeans.logger.WebBeansLoggerFacade;
-import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.util.ClassUtil;
import javax.decorator.Delegate;
@@ -58,8 +57,10 @@ import java.util.logging.Level;
* @version $Rev$ $Date$
*
* @param <T> decorator type info
+ *
+ * @deprecated replaced by DecoratorBean
*/
-public class WebBeansDecorator<T> extends InjectionTargetBean<T> implements OwbDecorator<T>
+public class WebBeansDecorator<T> extends InjectionTargetBean<T> implements Decorator<T>
{
/** Decorator class */
private Class<?> clazz;
@@ -295,66 +296,6 @@ public class WebBeansDecorator<T> extend
}
}
- private boolean bindingMatchesAnnotations(Annotation bindingType, Set<Annotation> annotations)
- {
-
- for (Annotation annot : annotations)
- {
- if (AnnotationUtil.isQualifierEqual(annot, bindingType))
- {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Helper method to check if any of a list of Types are assignable to the
- * delegate type.
- *
- * @param apiTypes Set of apiTypes to check against the delegate type
- * @return true if one of the types is assignable to the delegate type
- */
- private boolean apiTypesMatchDelegateType(Set<Type> apiTypes)
- {
- boolean ok = false;
- for (Type apiType : apiTypes)
- {
- if (DecoratorResolverRules.compareType(getDelegateType(), apiType))
- {
- ok = true;
- break;
- }
- }
-
- if(ok)
- {
- return true;
- }
-
- return false;
- }
-
- public boolean isDecoratorMatch(Set<Type> apiTypes, Set<Annotation> annotations)
- {
-
- if (!apiTypesMatchDelegateType(apiTypes))
- {
- return false;
- }
-
- for (Annotation bindingType : getDelegateQualifiers())
- {
- if (!bindingMatchesAnnotations(bindingType, annotations))
- {
- return false;
- }
- }
-
- return true;
- }
-
public Set<Annotation> getDelegateQualifiers()
{
if(customDecorator != null)
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java?rev=1434703&r1=1434702&r2=1434703&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java Thu Jan 17 14:57:20 2013
@@ -353,7 +353,7 @@ public class ObserverMethodImpl<T> imple
if (annot.length == 0)
{
annot = new Annotation[1];
- annot[0] = new DefaultLiteral();
+ annot[0] = DefaultLiteral.INSTANCE;
}
else
{