You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by gn...@apache.org on 2016/03/09 16:22:23 UTC

svn commit: r1734265 - in /aries/trunk/blueprint/blueprint-core/src: main/java/org/apache/aries/blueprint/container/GenericType.java test/java/org/apache/aries/blueprint/container/GenericTypeTest.java

Author: gnodet
Date: Wed Mar  9 15:22:22 2016
New Revision: 1734265

URL: http://svn.apache.org/viewvc?rev=1734265&view=rev
Log:
[ARIES-1500] Fix parsing of wildcard types

Modified:
    aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/GenericType.java
    aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/GenericTypeTest.java

Modified: aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/GenericType.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/GenericType.java?rev=1734265&r1=1734264&r2=1734265&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/GenericType.java (original)
+++ aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/GenericType.java Wed Mar  9 15:22:22 2016
@@ -104,6 +104,16 @@ public class GenericType extends Reified
         if (primitiveClasses.containsKey(type)) {
             return new GenericType(primitiveClasses.get(type));
         }
+        // Extends
+        if (type.startsWith("? extends ")) {
+            String raw = type.substring("? extends ".length());
+            return new GenericType(((ClassLoader) loader).loadClass(raw), BoundType.Extends);
+        }
+        // Super
+        if (type.startsWith("? super ")) {
+            String raw = type.substring("? extends ".length());
+            return new GenericType(((ClassLoader) loader).loadClass(raw), BoundType.Super);
+        }
         // Class
         if (loader instanceof ClassLoader) {
             return new GenericType(((ClassLoader) loader).loadClass(type));

Modified: aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/GenericTypeTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/GenericTypeTest.java?rev=1734265&r1=1734264&r2=1734265&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/GenericTypeTest.java (original)
+++ aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/container/GenericTypeTest.java Wed Mar  9 15:22:22 2016
@@ -62,6 +62,11 @@ public class GenericTypeTest extends Tes
         assertEquals(List[].class, type.getRawClass());
         assertEquals(1, type.size());
         assertEquals(Integer.class, type.getActualTypeArgument(0).getActualTypeArgument(0).getRawClass());
+
+        type = parse("java.util.List<? extends java.lang.Number>");
+        assertEquals(List.class, type.getRawClass());
+        assertEquals(1, type.size());
+        assertEquals(Number.class, type.getActualTypeArgument(0).getRawClass());
     }
 
     public void testBasic() throws Exception {