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 2012/12/28 21:50:00 UTC

svn commit: r1426627 - in /openwebbeans/branches/owb_1.1.x: ./ webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/proxy/ webbeans-impl/src/main/java/org/apache/webbeans/container/ webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/ ...

Author: arne
Date: Fri Dec 28 20:50:00 2012
New Revision: 1426627

URL: http://svn.apache.org/viewvc?rev=1426627&view=rev
Log:
OWB-742: Fixed @Alternative resolution for Instance access

Added:
    openwebbeans/branches/owb_1.1.x/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/common/AlternativeBean.java
      - copied unchanged from r1426624, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/common/AlternativeBean.java
    openwebbeans/branches/owb_1.1.x/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/common/SimpleBean.java
      - copied unchanged from r1426624, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/common/SimpleBean.java
    openwebbeans/branches/owb_1.1.x/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/common/SimpleInjectionTarget.java
      - copied unchanged from r1426624, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/common/SimpleInjectionTarget.java
    openwebbeans/branches/owb_1.1.x/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/common/SimpleInterface.java
      - copied unchanged from r1426624, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/common/SimpleInterface.java
    openwebbeans/branches/owb_1.1.x/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeInstanceTest.java
      - copied unchanged from r1426624, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeInstanceTest.java
    openwebbeans/branches/owb_1.1.x/webbeans-impl/src/test/resources/org/apache/webbeans/newtests/concepts/alternatives/tests/simpleAlternative.xml
      - copied unchanged from r1426624, openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/newtests/concepts/alternatives/tests/simpleAlternative.xml
Modified:
    openwebbeans/branches/owb_1.1.x/   (props changed)
    openwebbeans/branches/owb_1.1.x/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/proxy/   (props changed)
    openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java
    openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java
    openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java   (props changed)
    openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/   (props changed)

Propchange: openwebbeans/branches/owb_1.1.x/
------------------------------------------------------------------------------
  Merged /openwebbeans/trunk:r1426624

Propchange: openwebbeans/branches/owb_1.1.x/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/proxy/
------------------------------------------------------------------------------
  Merged /openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/proxy:r1426624

Modified: openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java
URL: http://svn.apache.org/viewvc/openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java?rev=1426627&r1=1426626&r2=1426627&view=diff
==============================================================================
--- openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java (original)
+++ openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java Fri Dec 28 20:50:00 2012
@@ -641,11 +641,28 @@ public class InjectionResolver
 
     public <X> Bean<? extends X> resolve(Set<Bean<? extends X>> beans)
     {
-        if (beans == null || beans.isEmpty())
+        Set set = resolveAll(beans);
+        
+        if (set.isEmpty())
         {
             return null;
         }
 
+        if(set.size() > 1)
+        {
+            throwAmbiguousResolutionException(set);
+        }
+
+        return (Bean<? extends X>)set.iterator().next();
+    }
+
+    public <X> Set<Bean<? extends X>> resolveAll(Set<Bean<? extends X>> beans)
+    {
+        if (beans == null || beans.isEmpty())
+        {
+            return Collections.emptySet();
+        }
+
         Set set = new HashSet<Bean<Object>>();
         for(Bean<? extends X> obj : beans)
         {
@@ -656,7 +673,7 @@ public class InjectionResolver
 
         if (set == null || set.isEmpty())
         {
-            return null;
+            return Collections.emptySet();
         }
 
         if(set.size() > 1)
@@ -664,15 +681,9 @@ public class InjectionResolver
             set = findBySpecialization(set);
         }
 
-        if(set.size() > 1)
-        {
-            throwAmbiguousResolutionException(set);
-        }
-
-        return (Bean<? extends X>)set.iterator().next();
+        return set;
     }
 
-
     private boolean isAltBeanInInjectionPointBDA(String bdaBeansXMLFilePath, Bean<?> altBean)
     {
 

Modified: openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java?rev=1426627&r1=1426626&r2=1426627&view=diff
==============================================================================
--- openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java (original)
+++ openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java Fri Dec 28 20:50:00 2012
@@ -31,6 +31,7 @@ import java.util.Set;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.Instance;
 import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.InjectionPoint;
 import javax.enterprise.util.TypeLiteral;
 
 import org.apache.webbeans.config.WebBeansContext;
@@ -38,6 +39,7 @@ import org.apache.webbeans.container.Bea
 import org.apache.webbeans.container.InjectionResolver;
 import org.apache.webbeans.context.creational.CreationalContextImpl;
 import org.apache.webbeans.util.ClassUtil;
+import org.apache.webbeans.util.InjectionExceptionUtils;
 import org.apache.webbeans.util.OwbCustomObjectInputStream;
 import org.apache.webbeans.util.WebBeansUtil;
 
@@ -107,10 +109,13 @@ class InstanceImpl<T> implements Instanc
         
         Set<Bean<?>> beans = resolveBeans();
 
-        webBeansContext.getResolutionUtil().checkResolvedBeans(beans, ClassUtil.getClazz(injectionClazz), anns, null);
         BeanManagerImpl beanManager = webBeansContext.getBeanManagerImpl();
-
         Bean<?> bean = beanManager.resolve(beans);
+            
+        if (bean == null)
+        {
+            InjectionExceptionUtils.throwUnsatisfiedResolutionException(ClassUtil.getClazz(injectionClazz), (InjectionPoint) null, anns);
+        }
 
         // since Instance<T> is Dependent, we we gonna use the parent CreationalContext by default
         CreationalContext<?> creationalContext = parentCreationalContext;
@@ -147,7 +152,7 @@ class InstanceImpl<T> implements Instanc
 
         InjectionResolver resolver = injectionResolver;
         Set<Bean<?>> beans = resolver.implResolveByType(injectionClazz, injectionPointClazz, anns);
-        return beans;
+        return resolver.resolveAll(beans);
     }
     
     /**

Propchange: openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java
------------------------------------------------------------------------------
  Merged /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java:r1426624

Propchange: openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/
------------------------------------------------------------------------------
  Merged /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy:r1426624