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 2014/09/03 17:29:25 UTC

svn commit: r1622280 - in /openwebbeans/trunk/webbeans-impl/src: main/java/org/apache/webbeans/util/GenericsUtil.java test/java/org/apache/webbeans/test/injection/generics/ArrayOuttOfBouncExceptionFromMLTest.java

Author: arne
Date: Wed Sep  3 15:29:25 2014
New Revision: 1622280

URL: http://svn.apache.org/r1622280
Log:
OWB-998: Fixed type resolution

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/GenericsUtil.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/injection/generics/ArrayOuttOfBouncExceptionFromMLTest.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/GenericsUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/GenericsUtil.java?rev=1622280&r1=1622279&r2=1622280&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/GenericsUtil.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/GenericsUtil.java Wed Sep  3 15:29:25 2014
@@ -276,6 +276,7 @@ public final class GenericsUtil
         {
             return false;
         }
+        boolean swapParams = !isDelegate;
         Type[] injectionPointTypeArguments = injectionPointType.getActualTypeArguments();
         Type[] beanTypeArguments = beanType.getActualTypeArguments();
         for (int i = 0; i < injectionPointTypeArguments.length; i++)
@@ -285,20 +286,20 @@ public final class GenericsUtil
 
             // for this special case it's actually an 'assignable to', thus we swap the params, see CDI-389
             // but this special rule does not apply to Delegate injection points...
-            if (!isDelegate &&
+            if (swapParams &&
                 (injectionPointTypeArgument instanceof Class || injectionPointTypeArgument instanceof TypeVariable) &&
                 beanTypeArgument instanceof TypeVariable)
             {
                 for (Type upperBound: ((TypeVariable<?>)beanTypeArgument).getBounds())
                 {
-                    if (!isAssignableFrom(isDelegate, upperBound, injectionPointTypeArgument))
+                    if (!isAssignableFrom(swapParams, upperBound, injectionPointTypeArgument))
                     {
                         return false;
                     }
                 }
 
             }
-            else if (!isDelegate && injectionPointTypeArgument instanceof TypeVariable)
+            else if (swapParams && injectionPointTypeArgument instanceof TypeVariable)
             {
                 return false;
             }

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/injection/generics/ArrayOuttOfBouncExceptionFromMLTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/injection/generics/ArrayOuttOfBouncExceptionFromMLTest.java?rev=1622280&r1=1622279&r2=1622280&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/injection/generics/ArrayOuttOfBouncExceptionFromMLTest.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/injection/generics/ArrayOuttOfBouncExceptionFromMLTest.java Wed Sep  3 15:29:25 2014
@@ -19,7 +19,6 @@
 package org.apache.webbeans.test.injection.generics;
 
 import org.apache.webbeans.test.AbstractUnitTest;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import javax.inject.Inject;
@@ -31,7 +30,6 @@ import java.util.HashMap;
 import static org.junit.Assert.assertNotNull;
 
 // http://openejb.979440.n4.nabble.com/ArrayIndexOutOfBoundsException-on-TomEE-1-6-0-td4665080.html
-@Ignore("OWB-998")
 public class ArrayOuttOfBouncExceptionFromMLTest extends AbstractUnitTest
 {
     @Inject