Trail:

Changeset 44

Show
Ignore:
Timestamp:
02/12/09 01:24:39 (3 years ago)
Author:
harald
Message:

--

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk

    • Property svn:ignore changed from
      *.iml
      *.iws
      *.jar
      test
      to
      *.iml
      *.iws
      *.jar
      test
      sample
  • trunk/out/templates/cs/class.vm

    r43 r44  
    2020#end 
    2121#macro(method $descriptor) 
    22 #if($descriptor.genericType.arguments)#generics($descriptor.genericType) #end#type($descriptor) ${descriptor.upperMethodName}(#params($descriptor))#bounds($descriptor.genericType) 
     22#type($descriptor) ${descriptor.upperMethodName}#generics($descriptor.genericType)(#params($descriptor))#bounds($descriptor.genericType) 
    2323#end 
    2424#macro(property $descriptor) 
    25 #if($descriptor.genericType.arguments)#generics($descriptor.genericType) #end#type($descriptor) ${descriptor.propertyName}#bounds($descriptor.genericType) 
     25#type($descriptor) ${descriptor.propertyName}#generics($descriptor.genericType)#bounds($descriptor.genericType) 
    2626#end 
    2727#* 
  • trunk/out/templates/cs/enum.vm

    r43 r44  
    2020#end 
    2121#macro(method $descriptor) 
    22 #if($descriptor.genericType.arguments)#generics($descriptor.genericType) #end#type($descriptor) ${descriptor.upperMethodName}(#params($descriptor))#bounds($descriptor.genericType) 
     22#type($descriptor) ${descriptor.upperMethodName}#generics($descriptor.genericType)(#params($descriptor))#bounds($descriptor.genericType) 
    2323#end 
    2424#macro(property $descriptor) 
    25 #if($descriptor.genericType.arguments)#generics($descriptor.genericType) #end#type($descriptor) ${descriptor.propertyName}#bounds($descriptor.genericType) 
     25#type($descriptor) ${descriptor.propertyName}#generics($descriptor.genericType)#bounds($descriptor.genericType) 
    2626#end 
    2727#* 
  • trunk/out/templates/cs/interface.vm

    r43 r44  
    2020#end 
    2121#macro(method $descriptor) 
    22 #if($descriptor.genericType.arguments)#generics($descriptor.genericType) #end#type($descriptor) ${descriptor.upperMethodName}(#params($descriptor))#bounds($descriptor.genericType) 
     22#type($descriptor) ${descriptor.upperMethodName}#generics($descriptor.genericType)(#params($descriptor))#bounds($descriptor.genericType) 
    2323#end 
    2424#macro(property $descriptor) 
    25 #if($descriptor.genericType.arguments)#generics($descriptor.genericType) #end#type($descriptor) ${descriptor.propertyName}#bounds($descriptor.genericType) 
     25#type($descriptor) ${descriptor.propertyName}#generics($descriptor.genericType)#bounds($descriptor.genericType) 
    2626#end 
    2727#* 
  • trunk/out/templates/cs/proxy.vm

    r43 r44  
    2020#end 
    2121#macro(method $descriptor) 
    22 #if($descriptor.genericType.arguments)#generics($descriptor.genericType) #end#type($descriptor) ${descriptor.upperMethodName}(#params($descriptor))#bounds($descriptor.genericType) 
     22#type($descriptor) ${descriptor.upperMethodName}#generics($descriptor.genericType)(#params($descriptor))#bounds($descriptor.genericType) 
    2323#end 
    2424#macro(property $descriptor) 
    25 #if($descriptor.genericType.arguments)#generics($descriptor.genericType) #end#type($descriptor) ${descriptor.propertyName}#bounds($descriptor.genericType) 
     25#type($descriptor) ${descriptor.propertyName}#generics($descriptor.genericType)#bounds($descriptor.genericType) 
    2626#end 
    2727#* 
  • trunk/src/org/fluffnstuff/asdoclet/generator/utils/GeneratorUtils.java

    r43 r44  
    66import java.util.Collection; 
    77import java.util.HashMap; 
     8import java.util.HashSet; 
    89import java.util.Map; 
    910 
     
    1213 
    1314import com.sun.javadoc.ClassDoc; 
     15import com.sun.javadoc.MethodDoc; 
    1416import com.sun.javadoc.ParameterizedType; 
    1517import com.sun.javadoc.Type; 
    1618import com.sun.javadoc.TypeVariable; 
    1719import com.sun.javadoc.WildcardType; 
    18 import com.sun.javadoc.MethodDoc; 
    1920 
    2021public final class GeneratorUtils { 
     22        public static org.fluffnstuff.asdoclet.generator.Type getType(Type type, Generator generator) { 
     23                return getType(type, generator, new HashSet<String>()); 
     24        } 
     25 
    2126        public static org.fluffnstuff.asdoclet.generator.Type getType(String name, Generator generator) { 
    2227                if (name == null) return org.fluffnstuff.asdoclet.generator.Type.NULL; 
     
    3237                if (generator.isDebug()) System.out.println(MessageFormat.format("Parameters {0}", Arrays.toString(doc.typeParameters()))); 
    3338                for (Type argument : doc.typeParameters()) { 
    34                         processArgument(argument, generator, arguments, bounds); 
     39                        processArgument(argument, generator, arguments, bounds, new HashSet<String>()); 
    3540                } 
    3641 
     
    4146        } 
    4247 
    43         private static void processArgument(Type argument, Generator generator, Collection<org.fluffnstuff.asdoclet.generator.Type> arguments, Map<String, org.fluffnstuff.asdoclet.generator.Type> bounds) { 
     48        private static void processArgument(Type argument, Generator generator, Collection<org.fluffnstuff.asdoclet.generator.Type> arguments, Map<String, org.fluffnstuff.asdoclet.generator.Type> bounds, Collection<String> visited) { 
    4449                if (generator.isDebug()) System.out.println(MessageFormat.format("Processing argument {0} <{1}>", argument.qualifiedTypeName(), argument.getClass().getCanonicalName())); 
    4550 
    46                 org.fluffnstuff.asdoclet.generator.Type argumentType = getType(argument, generator); 
     51                org.fluffnstuff.asdoclet.generator.Type argumentType = getType(argument, generator, visited); 
    4752                if (argumentType != org.fluffnstuff.asdoclet.generator.Type.NULL) { 
    48                         getTypeBounds(argument, generator, bounds); 
     53                        getTypeBounds(argument, generator, bounds, visited); 
    4954                        if (arguments != null) arguments.add(argumentType); 
    5055                } 
    5156        } 
    5257 
    53         public static org.fluffnstuff.asdoclet.generator.Type getType(Type type, Generator generator) { 
     58        private static org.fluffnstuff.asdoclet.generator.Type getType(Type type, Generator generator, Collection<String> visited) { 
    5459                if (generator.isDebug()) System.out.println(MessageFormat.format("Generating type {0} <{1}>", type.qualifiedTypeName(), type.getClass().getCanonicalName())); 
     60 
     61                if (visited.contains(type.toString())) return getType(type.qualifiedTypeName(), generator); 
     62                visited.add(type.toString()); 
    5563 
    5664                Map<String, org.fluffnstuff.asdoclet.generator.Type> bounds = new HashMap<String, org.fluffnstuff.asdoclet.generator.Type>(); 
     
    6169                        if (generator.isDebug()) System.out.println(MessageFormat.format("Arguments {0}", Arrays.toString(parameterizedType.typeArguments()))); 
    6270                        for (Type argument : parameterizedType.typeArguments()) { 
    63                                 processArgument(argument, generator, arguments, bounds); 
     71                                processArgument(argument, generator, arguments, bounds, visited); 
    6472                        } 
    6573                } else if (type instanceof ClassDoc) { 
     
    6775                        if (generator.isDebug()) System.out.println(MessageFormat.format("Parameters {0}", Arrays.toString(classDoc.typeParameters()))); 
    6876                        for (Type argument : classDoc.typeParameters()) { 
    69                                 processArgument(argument, generator, arguments, bounds); 
     77                                processArgument(argument, generator, arguments, bounds, visited); 
    7078                        } 
    7179                } 
     
    9098        } 
    9199 
    92         private static void getTypeBounds(Type argument, Generator generator, Map<String, org.fluffnstuff.asdoclet.generator.Type> bounds) { 
     100        private static void getTypeBounds(Type argument, Generator generator, Map<String, org.fluffnstuff.asdoclet.generator.Type> bounds, Collection<String> visited) { 
    93101                Type[] types = null; 
    94102                if (argument instanceof TypeVariable) { 
     
    102110 
    103111                        if (boundType != null) { 
    104                                 org.fluffnstuff.asdoclet.generator.Type bound = getType(boundType, generator); 
     112                                org.fluffnstuff.asdoclet.generator.Type bound = getType(boundType, generator, visited); 
    105113 
    106114                                if (bound != org.fluffnstuff.asdoclet.generator.Type.NULL) {