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 {        


Reply via email to