You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by rm...@apache.org on 2015/04/10 00:01:16 UTC

svn commit: r1672505 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: config/BeansDeployer.java container/InjectionResolver.java

Author: rmannibucau
Date: Thu Apr  9 22:01:15 2015
New Revision: 1672505

URL: http://svn.apache.org/r1672505
Log:
better matching for producer alternatives - works for fields too

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java

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=1672505&r1=1672504&r2=1672505&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 Apr  9 22:01:15 2015
@@ -1541,7 +1541,15 @@ public class BeansDeployer
                 Map<ProducerMethodBean<?>,AnnotatedMethod<?>> annotatedMethods =
                         new HashMap<ProducerMethodBean<?>, AnnotatedMethod<?>>();
 
-                final Priority priority = annotatedType.getAnnotation(Priority.class);
+                if (!producerFields.isEmpty() || !producerMethods.isEmpty())
+                {
+                    final Priority priority = annotatedType.getAnnotation(Priority.class);
+                    if (priority != null && !webBeansContext.getAlternativesManager()
+                            .isAlternative(annotatedType.getJavaClass(), Collections.<Class<? extends Annotation>>emptySet()))
+                    {
+                        webBeansContext.getAlternativesManager().addPriorityClazzAlternative(annotatedType.getJavaClass(), priority);
+                    }
+                }
 
                 for(ProducerMethodBean<?> producerMethod : producerMethods)
                 {
@@ -1550,10 +1558,6 @@ public class BeansDeployer
                             + "ProducerMethods. Look at logs for further details");
 
                     annotatedMethods.put(producerMethod, method);
-                    if (priority != null)
-                    {
-                        webBeansContext.getAlternativesManager().addPriorityClazzAlternative(method.getJavaMember().getReturnType(), priority);
-                    }
                 }
 
                 Map<ProducerFieldBean<?>,AnnotatedField<?>> annotatedFields =
@@ -1568,10 +1572,6 @@ public class BeansDeployer
                             webBeansContext.getAnnotatedElementFactory().newAnnotatedField(
                                     producerField.getCreatorField(),
                                     webBeansContext.getAnnotatedElementFactory().newAnnotatedType(producerField.getBeanClass())));
-                    if (priority != null)
-                    {
-                        webBeansContext.getAlternativesManager().addPriorityClazzAlternative(producerField.getCreatorField().getType(), priority);
-                    }
                 }
 
                 Map<ObserverMethod<?>,AnnotatedMethod<?>> observerMethodsMap =

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=1672505&r1=1672504&r2=1672505&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 Apr  9 22:01:15 2015
@@ -568,8 +568,7 @@ public class InjectionResolver
         {
             for (Bean<? extends X> bean: beans)
             {
-                final Class<?> type = OwbBean.class.isInstance(bean) ? OwbBean.class.cast(bean) .getReturnType() : bean.getBeanClass();
-                if (alternativeClazz.equals(type))
+                if (alternativeClazz.equals(bean.getBeanClass()))
                 {
                     return new SingleItemSet<Bean<? extends X>>(bean);
                 }