Changeset 44
- Timestamp:
- 02/12/09 01:24:39 (3 years ago)
- Files:
-
- trunk (modified) (1 prop)
- trunk/out/templates/cs/class.vm (modified) (1 diff)
- trunk/out/templates/cs/enum.vm (modified) (1 diff)
- trunk/out/templates/cs/interface.vm (modified) (1 diff)
- trunk/out/templates/cs/proxy.vm (modified) (1 diff)
- trunk/src/org/fluffnstuff/asdoclet/generator/utils/GeneratorUtils.java (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk
- Property svn:ignore changed from
*.iml
*.iws
*.jar
test
to
*.iml
*.iws
*.jar
test
sample
- Property svn:ignore changed from
trunk/out/templates/cs/class.vm
r43 r44 20 20 #end 21 21 #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) 23 23 #end 24 24 #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) 26 26 #end 27 27 #* trunk/out/templates/cs/enum.vm
r43 r44 20 20 #end 21 21 #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) 23 23 #end 24 24 #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) 26 26 #end 27 27 #* trunk/out/templates/cs/interface.vm
r43 r44 20 20 #end 21 21 #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) 23 23 #end 24 24 #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) 26 26 #end 27 27 #* trunk/out/templates/cs/proxy.vm
r43 r44 20 20 #end 21 21 #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) 23 23 #end 24 24 #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) 26 26 #end 27 27 #* trunk/src/org/fluffnstuff/asdoclet/generator/utils/GeneratorUtils.java
r43 r44 6 6 import java.util.Collection; 7 7 import java.util.HashMap; 8 import java.util.HashSet; 8 9 import java.util.Map; 9 10 … … 12 13 13 14 import com.sun.javadoc.ClassDoc; 15 import com.sun.javadoc.MethodDoc; 14 16 import com.sun.javadoc.ParameterizedType; 15 17 import com.sun.javadoc.Type; 16 18 import com.sun.javadoc.TypeVariable; 17 19 import com.sun.javadoc.WildcardType; 18 import com.sun.javadoc.MethodDoc;19 20 20 21 public 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 21 26 public static org.fluffnstuff.asdoclet.generator.Type getType(String name, Generator generator) { 22 27 if (name == null) return org.fluffnstuff.asdoclet.generator.Type.NULL; … … 32 37 if (generator.isDebug()) System.out.println(MessageFormat.format("Parameters {0}", Arrays.toString(doc.typeParameters()))); 33 38 for (Type argument : doc.typeParameters()) { 34 processArgument(argument, generator, arguments, bounds );39 processArgument(argument, generator, arguments, bounds, new HashSet<String>()); 35 40 } 36 41 … … 41 46 } 42 47 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) { 44 49 if (generator.isDebug()) System.out.println(MessageFormat.format("Processing argument {0} <{1}>", argument.qualifiedTypeName(), argument.getClass().getCanonicalName())); 45 50 46 org.fluffnstuff.asdoclet.generator.Type argumentType = getType(argument, generator );51 org.fluffnstuff.asdoclet.generator.Type argumentType = getType(argument, generator, visited); 47 52 if (argumentType != org.fluffnstuff.asdoclet.generator.Type.NULL) { 48 getTypeBounds(argument, generator, bounds );53 getTypeBounds(argument, generator, bounds, visited); 49 54 if (arguments != null) arguments.add(argumentType); 50 55 } 51 56 } 52 57 53 p ublic 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) { 54 59 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()); 55 63 56 64 Map<String, org.fluffnstuff.asdoclet.generator.Type> bounds = new HashMap<String, org.fluffnstuff.asdoclet.generator.Type>(); … … 61 69 if (generator.isDebug()) System.out.println(MessageFormat.format("Arguments {0}", Arrays.toString(parameterizedType.typeArguments()))); 62 70 for (Type argument : parameterizedType.typeArguments()) { 63 processArgument(argument, generator, arguments, bounds );71 processArgument(argument, generator, arguments, bounds, visited); 64 72 } 65 73 } else if (type instanceof ClassDoc) { … … 67 75 if (generator.isDebug()) System.out.println(MessageFormat.format("Parameters {0}", Arrays.toString(classDoc.typeParameters()))); 68 76 for (Type argument : classDoc.typeParameters()) { 69 processArgument(argument, generator, arguments, bounds );77 processArgument(argument, generator, arguments, bounds, visited); 70 78 } 71 79 } … … 90 98 } 91 99 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) { 93 101 Type[] types = null; 94 102 if (argument instanceof TypeVariable) { … … 102 110 103 111 if (boundType != null) { 104 org.fluffnstuff.asdoclet.generator.Type bound = getType(boundType, generator );112 org.fluffnstuff.asdoclet.generator.Type bound = getType(boundType, generator, visited); 105 113 106 114 if (bound != org.fluffnstuff.asdoclet.generator.Type.NULL) {