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/02 09:07:32 UTC

svn commit: r1621935 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: config/OwbParametrizedTypeImpl.java config/OwbWildcardTypeImpl.java util/GenericsUtil.java

Author: arne
Date: Tue Sep  2 07:07:32 2014
New Revision: 1621935

URL: http://svn.apache.org/r1621935
Log:
OWB-946: Fixed ParameterizedTypesInjectionToParameterizedWithWildcardTest

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OwbParametrizedTypeImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OwbWildcardTypeImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/GenericsUtil.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OwbParametrizedTypeImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OwbParametrizedTypeImpl.java?rev=1621935&r1=1621934&r2=1621935&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OwbParametrizedTypeImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OwbParametrizedTypeImpl.java Tue Sep  2 07:07:32 2014
@@ -116,7 +116,14 @@ public class OwbParametrizedTypeImpl imp
             int length = actualTypes.length;
             for(int i=0;i<length;i++)
             {
-                buffer.append(actualTypes[i].toString());
+                if (actualTypes[i] instanceof Class)
+                {
+                    buffer.append(((Class<?>)actualTypes[i]).getSimpleName());
+                }
+                else
+                {
+                    buffer.append(actualTypes[i].toString());
+                }
                 if(i != actualTypes.length-1)
                 {
                     buffer.append(",");

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OwbWildcardTypeImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OwbWildcardTypeImpl.java?rev=1621935&r1=1621934&r2=1621935&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OwbWildcardTypeImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OwbWildcardTypeImpl.java Tue Sep  2 07:07:32 2014
@@ -62,7 +62,15 @@ public class OwbWildcardTypeImpl impleme
                 {
                     buffer.append(',');
                 }
-                buffer.append(' ').append(upperBound);
+                buffer.append(' ');
+                if (upperBound instanceof Class)
+                {
+                    buffer.append(((Class<?>)upperBound).getSimpleName());
+                }
+                else
+                {
+                    buffer.append(upperBound);
+                }
             }
         }
         if (lowerBounds.length > 0)
@@ -79,7 +87,15 @@ public class OwbWildcardTypeImpl impleme
                 {
                     buffer.append(',');
                 }
-                buffer.append(' ').append(lowerBound);
+                buffer.append(' ');
+                if (lowerBound instanceof Class)
+                {
+                    buffer.append(((Class<?>)lowerBound).getSimpleName());
+                }
+                else
+                {
+                    buffer.append(lowerBound);
+                }
             }
         }
         return buffer.toString();

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=1621935&r1=1621934&r2=1621935&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 Tue Sep  2 07:07:32 2014
@@ -336,28 +336,16 @@ public final class GenericsUtil
 
     private static boolean isAssignableFrom(boolean isDelegate, WildcardType injectionPointType, Type beanType)
     {
+        if (beanType instanceof TypeVariable)
+        {
+            return isAssignableFrom(isDelegate, injectionPointType, (TypeVariable<?>)beanType);
+        }
         for (Type bounds: injectionPointType.getLowerBounds())
         {
             if (!isAssignableFrom(isDelegate, beanType, bounds))
             {
                 return false;
             }
-            /*
-            Set<Type> beanTypeClosure = getTypeClosure(beanType);
-            boolean isAssignable = false;
-            for (Type beanSupertype: beanTypeClosure)
-            {
-                if (isAssignableFrom(isDelegate, beanSupertype, bounds))
-                {
-                    isAssignable = true;
-                    break;
-                }
-            }
-            if (!isAssignable)
-            { 
-                return false;
-            }
-            */
         }
         for (Type bounds: injectionPointType.getUpperBounds())
         {
@@ -383,6 +371,34 @@ public final class GenericsUtil
     }
     
     /**
+     * CDI 1.1 Spec. 5.2.4, third bullet point
+     */
+    private static boolean isAssignableFrom(boolean isDelegate, WildcardType injectionPointType, TypeVariable<?> beanType)
+    {
+        for (Type upperBound: injectionPointType.getUpperBounds())
+        {
+            for (Type bound: beanType.getBounds())
+            {
+                if (!isAssignableFrom(isDelegate, upperBound, bound) && !isAssignableFrom(isDelegate, bound, upperBound))
+                {
+                    return false;
+                }
+            }
+        }
+        for (Type lowerBound: injectionPointType.getLowerBounds())
+        {
+            for (Type bound: beanType.getBounds())
+            {
+                if (!isAssignableFrom(isDelegate, bound, lowerBound))
+                {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+    
+    /**
      * @return <tt>true</tt>, if the specified type declaration contains an unresolved type variable.
      */
     public static boolean containsTypeVariable(Type type)