Title: [1356] trunk/qdox/src/main/java/com/thoughtworks/qdox/model: Introduce JavaParameterizedType
Revision
1356
Author
rfscholte
Date
2011-10-02 12:54:29 -0500 (Sun, 02 Oct 2011)

Log Message

Introduce JavaParameterizedType

Modified Paths


Added Paths

Diff

Added: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/JavaParameterizedType.java (0 => 1356)

--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/JavaParameterizedType.java	                        (rev 0)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/JavaParameterizedType.java	2011-10-02 17:54:29 UTC (rev 1356)
@@ -0,0 +1,10 @@
+package com.thoughtworks.qdox.model;
+
+import java.util.List;
+
+public interface JavaParameterizedType extends JavaType
+{
+
+    List<JavaType> getActualTypeArguments();
+
+}

Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/JavaType.java (1355 => 1356)

--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/JavaType.java	2011-10-02 15:52:25 UTC (rev 1355)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/JavaType.java	2011-10-02 17:54:29 UTC (rev 1356)
@@ -13,6 +13,4 @@
     String getValue();
 
     String getGenericValue();
-
-    List<JavaType> getActualTypeArguments();
 }
\ No newline at end of file

Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/Type.java (1355 => 1356)

--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/Type.java	2011-10-02 15:52:25 UTC (rev 1355)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/Type.java	2011-10-02 17:54:29 UTC (rev 1356)
@@ -27,7 +27,7 @@
 
 import com.thoughtworks.qdox.library.ClassLibrary;
 
-public class Type implements JavaClass, JavaType, Serializable {
+public class Type implements JavaClass, JavaType, JavaParameterizedType, Serializable {
 
     public static final Type VOID = new Type("void");
 
@@ -169,7 +169,7 @@
     protected static <D extends JavaGenericDeclaration> String getGenericValue( JavaType base, List<TypeVariable<D>> typeVariableList )
     {
         StringBuffer result = new StringBuffer( getResolvedValue( base, typeVariableList ) );
-        for ( Iterator<JavaType> iter = base.getActualTypeArguments().iterator(); iter.hasNext(); )
+        for ( Iterator<JavaType> iter = getActualTypeArguments( base ).iterator(); iter.hasNext(); )
         {
             result.append( Type.resolve( base, typeVariableList ) );
             if ( iter.hasNext() )
@@ -180,6 +180,20 @@
         return result.toString();
     }
     
+    private static List<JavaType> getActualTypeArguments( JavaType base )
+    {
+        List<JavaType> result;
+        if ( base instanceof JavaParameterizedType )
+        {
+            result = ( (JavaParameterizedType) base ).getActualTypeArguments();
+        }
+        else
+        {
+            result = Collections.emptyList();
+        }
+        return result;
+    }
+
     protected static <D extends JavaGenericDeclaration> String getResolvedValue( JavaType base, List<TypeVariable<D>> typeParameters )
     {
         String result = base.getValue();
@@ -431,7 +445,7 @@
             if ( callingClass.getSuperClass() != null
                 && fqn.equals( callingClass.getSuperClass().getFullyQualifiedName() ) )
             {
-                result = callingClass.getSuperClass().getActualTypeArguments().get( typeIndex );
+                result = getActualTypeArguments( callingClass.getSuperClass() ).get( typeIndex );
             }
             else
             {
@@ -439,7 +453,7 @@
                 {
                     if ( fqn.equals( implement.getFullyQualifiedName() ) )
                     {
-                        result = resolve( implement.getActualTypeArguments().get( typeIndex ), implement, implement );
+                        result = resolve( getActualTypeArguments( implement ).get( typeIndex ), implement, implement );
                         break;
                     }
                 }
@@ -447,14 +461,15 @@
             }
         }
 
-        if ( !base.getActualTypeArguments().isEmpty() )
+        List<JavaType> actualTypeArguments = getActualTypeArguments(base); 
+        if ( !actualTypeArguments.isEmpty() )
         {
             Type typeResult =
                 new Type( base.getFullyQualifiedName(), base.getValue(), ((Type)base).getDimensions(),
                           ((Type)base).getJavaClassParent() );
 
             List<JavaType> actualTypes = new LinkedList<JavaType>();
-            for ( JavaType actualArgType : base.getActualTypeArguments() )
+            for ( JavaType actualArgType : actualTypeArguments )
             {
                 actualTypes.add( resolve( actualArgType, declaringClass, callingClass ) );
             }
@@ -510,10 +525,11 @@
         StringBuffer result = new StringBuffer();
         TypeVariable<?> variable = resolve( base, typeParameters );
         result.append( variable == null ? base.getValue() : variable.getBounds().get(0).getValue() );
-        if ( !base.getActualTypeArguments().isEmpty() )
+        List<JavaType> actualTypeArguments = getActualTypeArguments( base );
+        if ( !actualTypeArguments.isEmpty() )
         {
             result.append( "<" );
-            for ( Iterator<JavaType> iter = base.getActualTypeArguments().iterator(); iter.hasNext(); )
+            for ( Iterator<JavaType> iter = actualTypeArguments.iterator(); iter.hasNext(); )
             {
                 result.append( getGenericValue( iter.next(), typeParameters) );
                 if ( iter.hasNext() )
@@ -538,10 +554,11 @@
         StringBuffer result = new StringBuffer();
         TypeVariable<D> variable = resolve( base, typeParameters );
         result.append( variable == null ? base.getFullyQualifiedName() : variable.getBounds().get(0).getFullyQualifiedName() );
-        if ( !base.getActualTypeArguments().isEmpty() )
+        List<JavaType> actualTypeArguments = getActualTypeArguments( base );
+        if ( !actualTypeArguments.isEmpty() )
         {
             result.append( "<" );
-            for ( Iterator<JavaType> iter = base.getActualTypeArguments().iterator(); iter.hasNext(); )
+            for ( Iterator<JavaType> iter = actualTypeArguments.iterator(); iter.hasNext(); )
             {
                 result.append( getResolvedFullyQualifiedName( iter.next(), typeParameters) );
                 if ( iter.hasNext() )


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to