Changeset 8
- Timestamp:
- 07/26/08 23:24:56 (4 years ago)
- Files:
-
- trunk/out/templates/cs/class.vm (modified) (2 diffs)
- trunk/out/templates/cs/interface.vm (modified) (1 diff)
- trunk/out/templates/cs/proxy.vm (added)
- trunk/src/org/fluffnstuff/asdoclet/AsDoclet.java (modified) (7 diffs)
- trunk/src/org/fluffnstuff/asdoclet/generator/AsGenerator.java (modified) (7 diffs)
- trunk/src/org/fluffnstuff/asdoclet/generator/Generator.java (modified) (2 diffs)
- trunk/src/org/fluffnstuff/asdoclet/generator/VelocityGenerator.java (modified) (10 diffs)
- trunk/src/org/fluffnstuff/asdoclet/generator/velocity/ClassDescriptor.java (modified) (1 diff)
- trunk/src/org/fluffnstuff/asdoclet/generator/velocity/Descriptor.java (modified) (2 diffs)
- trunk/src/org/fluffnstuff/asdoclet/generator/velocity/EnumDescriptor.java (modified) (1 diff)
- trunk/src/org/fluffnstuff/asdoclet/generator/velocity/FieldDescriptor.java (modified) (2 diffs)
- trunk/src/org/fluffnstuff/asdoclet/generator/velocity/InterfaceDescriptor.java (modified) (1 diff)
- trunk/src/org/fluffnstuff/asdoclet/generator/velocity/MethodDescriptor.java (modified) (1 diff)
- trunk/src/org/fluffnstuff/asdoclet/generator/velocity/ParameterDescriptor.java (modified) (1 diff)
- trunk/src/org/fluffnstuff/asdoclet/generator/velocity/ProxyDescriptor.java (added)
- trunk/src/org/fluffnstuff/asdoclet/generator/velocity/TypeDescriptor.java (modified) (1 diff)
- trunk/src/org/fluffnstuff/asdoclet/handler/AbstractHandler.java (modified) (3 diffs)
- trunk/src/org/fluffnstuff/asdoclet/handler/ClassHandler.java (modified) (5 diffs)
- trunk/src/org/fluffnstuff/asdoclet/handler/EnumHandler.java (modified) (1 diff)
- trunk/src/org/fluffnstuff/asdoclet/handler/InterfaceHandler.java (modified) (6 diffs)
- trunk/src/org/fluffnstuff/asdoclet/map/ClassTypeMap.java (modified) (1 diff)
- trunk/src/org/fluffnstuff/asdoclet/map/TypeMap.java (modified) (3 diffs)
- trunk/src/org/fluffnstuff/asdoclet/util/EnumUtil.java (deleted)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/out/templates/cs/class.vm
r6 r8 6 6 public class $typeDescriptor.typeName#if($typeDescriptor.superClass) : $typeDescriptor.superClass#foreach($interface in $typeDescriptor.interfaces), $interface#end#else#foreach($interface in $typeDescriptor.interfaces)#if($velocityCount == 1) : #{else}, #end$interface#end#end { 7 7 #foreach($fieldDescriptor in $typeDescriptor.fieldDescriptors) 8 $fieldDescriptor.modifier $fieldDescriptor.qualifiedTypeName $fieldDescriptor.fieldName;8 $fieldDescriptor.modifier $fieldDescriptor.qualifiedTypeName#if($fieldDescriptor.typeArguments)<#foreach($arg in $fieldDescriptor.typeArguments)#if($velocityCount>1), #end$arg#end>#end $fieldDescriptor.fieldName; 9 9 #end 10 10 … … 14 14 */ 15 15 #end 16 $methodDescriptor.modifier $methodDescriptor.qualifiedTypeName ${methodDescriptor.methodName}(#foreach($parameterDescriptor in $methodDescriptor.parameterDescriptors)#if($velocityCount>1), #end$parameterDescriptor.qualifiedTypeName$parameterDescriptor.parameterName#end);16 $methodDescriptor.modifier $methodDescriptor.qualifiedTypeName#if($methodDescriptor.typeArguments)<#foreach($arg in $methodDescriptor.typeArguments)#if($velocityCount>1), #end$arg#end>#end ${methodDescriptor.methodName}(#foreach($parameterDescriptor in $methodDescriptor.parameterDescriptors)#if($velocityCount>1), #end$parameterDescriptor.qualifiedTypeName#if($parameterDescriptor.typeArguments)<#foreach($arg in $parameterDescriptor.typeArguments)#if($velocityCount>1), #end$arg#end>#end $parameterDescriptor.parameterName#end); 17 17 #end 18 18 } trunk/out/templates/cs/interface.vm
r6 r8 10 10 */ 11 11 #end 12 $methodDescriptor.modifier $methodDescriptor.qualifiedTypeName ${methodDescriptor.methodName}(#foreach($parameterDescriptor in $methodDescriptor.parameterDescriptors)#if($velocityCount>1), #end$parameterDescriptor.qualifiedTypeName$parameterDescriptor.parameterName#end);12 $methodDescriptor.modifier $methodDescriptor.qualifiedTypeName#if($methodDescriptor.typeArguments)<#foreach($arg in $methodDescriptor.typeArguments)#if($velocityCount>1), #end$arg#end>#end ${methodDescriptor.methodName}(#foreach($parameterDescriptor in $methodDescriptor.parameterDescriptors)#if($velocityCount>1), #end$parameterDescriptor.qualifiedTypeName#if($parameterDescriptor.typeArguments)<#foreach($arg in $parameterDescriptor.typeArguments)#if($velocityCount>1), #end$arg#end>#end $parameterDescriptor.parameterName#end); 13 13 #end 14 14 } trunk/src/org/fluffnstuff/asdoclet/AsDoclet.java
r6 r8 3 3 import com.sun.javadoc.ClassDoc; 4 4 import com.sun.javadoc.DocErrorReporter; 5 import com.sun.javadoc.LanguageVersion; 5 6 import com.sun.javadoc.RootDoc; 6 7 import org.fluffnstuff.asdoclet.generator.AsGenerator; … … 10 11 import org.fluffnstuff.asdoclet.map.ClassTypeMap; 11 12 import org.fluffnstuff.asdoclet.map.TypeMap; 12 import org.fluffnstuff.asdoclet.util.EnumUtil;13 13 14 14 public class AsDoclet { … … 17 17 private static final String PARAM_GENERATOR = "-generator"; 18 18 private static final String PARAM_MAP = "-map"; 19 private static final String PARAM_GENERIC_MAP = "-genericmap"; 19 20 private static final String PARAM_ANNOTATION_MAP = "-annotationmap"; 20 21 … … 50 51 if (strings.length == 2) typeMap.addTypeMapping(strings[0], strings[1]); 51 52 } 53 if (opt[0].equals(PARAM_GENERIC_MAP)) { 54 String[] strings = opt[1].split(":"); 55 if (strings.length == 2) typeMap.addGenericTypeMapping(strings[0], strings[1]); 56 } 52 57 if (opt[0].equals(PARAM_ANNOTATION_MAP)) { 53 58 String[] strings = opt[1].split(":"); … … 69 74 if (classDoc.isInterface()) { 70 75 handler = new InterfaceHandler(generator); 71 } else if ( EnumUtil.isEnum(classDoc.qualifiedTypeName())) {76 } else if (classDoc.isEnum()) { 72 77 handler = new EnumHandler(generator); 73 78 } else { … … 85 90 if (PARAM_GENERATOR.equals(option)) length = 2; 86 91 if (PARAM_MAP.equals(option)) length = 2; 92 if (PARAM_GENERIC_MAP.equals(option)) length = 2; 87 93 if (PARAM_ANNOTATION_MAP.equals(option)) length = 2; 88 94 … … 96 102 } 97 103 104 public static LanguageVersion languageVersion() { 105 return LanguageVersion.JAVA_1_5; 106 } 107 98 108 private AsDoclet() { 99 109 } trunk/src/org/fluffnstuff/asdoclet/generator/AsGenerator.java
r7 r8 81 81 } 82 82 83 public void addField(int modifier, String fieldType, String propertyName) {83 public void addField(int modifier, String fieldType, Collection<String> typeArguments, String propertyName) { 84 84 field = ((ASClassType) type).newField(propertyName, getVisibility(modifier), fieldType); 85 85 } … … 95 95 } 96 96 97 public void addParameter(String type, String name) {97 public void addParameter(String type, Collection<String> typeArguments, String name) { 98 98 method.addParam(name, type); 99 99 if (proxyUnit != null) proxyMethod.addParam(name, type); … … 104 104 } 105 105 106 public void beginClass(String name ) {106 public void beginClass(String name, Collection<String> typeArguments) { 107 107 newClass(name, false); 108 108 } … … 112 112 } 113 113 114 public void beginInterface(String name ) {114 public void beginInterface(String name, Collection<String> typeArguments) { 115 115 unit = project.newInterface(name); 116 116 type = unit.getType(); 117 117 } 118 118 119 public void beginMethod(int modifier, String returnType, String methodName) {119 public void beginMethod(int modifier, String returnType, Collection<String> typeArguments, String methodName) { 120 120 method = type.newMethod(methodName, getVisibility(modifier), returnType); 121 121 … … 128 128 } 129 129 130 public void beginProxy(String proxyName, String returnType, String baseType, Collection<String> proxyImports, String interfaceType) {130 public void beginProxy(String proxyName, Collection<String> typeArguments, String returnType, String baseType, Collection<String> proxyImports, String interfaceType) { 131 131 ASCompilationUnit eventUnit = project.newClass(proxyName + "Events"); 132 132 proxyUnit = project.newClass(proxyName); … … 201 201 202 202 public String getAnnotation(String name, Collection<String> imports) { 203 return annotationMap.getType(name, false, imports);203 return annotationMap.getType(name, false, false, false, imports); 204 204 } 205 205 … … 208 208 } 209 209 210 public String getType(String name, int dimensions, boolean primitive, Collection<String> imports) {210 public String getType(String name, int dimensions, boolean primitive, boolean generic, boolean enumeration, Collection<String> imports) { 211 211 if (dimensions > 0) return "Array"; 212 return typeMap.getType(name, primitive, imports);212 return typeMap.getType(name, primitive, generic, enumeration, imports); 213 213 } 214 214 trunk/src/org/fluffnstuff/asdoclet/generator/Generator.java
r7 r8 8 8 void addEnumField(String name); 9 9 10 void addField(int modifier, String fieldType, String propertyName);10 void addField(int modifier, String fieldType, Collection<String> typeArguments, String propertyName); 11 11 12 12 void addInterface(String name); 13 13 14 void addParameter(String type, String name);14 void addParameter(String type, Collection<String> typeArguments, String name); 15 15 16 16 void addTypeAnnotation(String tag); 17 17 18 void beginClass(String name );18 void beginClass(String name, Collection<String> typeArguments); 19 19 20 20 void beginEnum(String name); 21 21 22 void beginInterface(String name );22 void beginInterface(String name, Collection<String> typeArguments); 23 23 24 void beginMethod(int modifier, String returnType, String methodName);24 void beginMethod(int modifier, String returnType, Collection<String> typeArguments, String methodName); 25 25 26 void beginProxy(String proxyName, String returnType, String baseType, Collection<String> proxyImports, String interfaceType);26 void beginProxy(String proxyName, Collection<String> typeArguments, String returnType, String baseType, Collection<String> proxyImports, String interfaceType); 27 27 28 28 void endClass(Collection<String> imports); … … 42 42 String getName(); 43 43 44 String getType(String name, int dimensions, boolean primitive, Collection<String> imports);44 String getType(String name, int dimensions, boolean primitive, boolean generic, boolean enumeration, Collection<String> imports); 45 45 46 46 void setFieldDescription(String description); trunk/src/org/fluffnstuff/asdoclet/generator/VelocityGenerator.java
r7 r8 52 52 53 53 private void initCsTypeMap() { 54 typeMap.addTypeMapping("?", "object"); 55 54 56 typeMap.addTypeMapping("boolean", "bool"); 55 57 … … 63 65 typeMap.addTypeMapping("java.lang.Short", "short?"); 64 66 typeMap.addTypeMapping("java.lang.Object", "object"); 65 typeMap.addTypeMapping("java.lang.String", " System.String");67 typeMap.addTypeMapping("java.lang.String", "string"); 66 68 typeMap.addTypeMapping("java.lang.Exception", "System.Exception"); 67 69 … … 71 73 typeMap.addTypeMapping("java.util.Map", "System.Collections.IDictionary"); 72 74 typeMap.addTypeMapping("java.util.Set", "System.Collections.ICollection"); 75 76 typeMap.addGenericTypeMapping("java.util.Collection", "System.Collections.Generic.ICollection"); 77 typeMap.addGenericTypeMapping("java.util.List", "System.Collections.Generic.IList"); 78 typeMap.addGenericTypeMapping("java.util.Map", "System.Collections.Generic.IDictionary"); 79 typeMap.addGenericTypeMapping("java.util.Set", "System.Collections.Generic.ICollection"); 73 80 } 74 81 … … 80 87 81 88 public void addEnumField(String name) { 82 addField(0, null, n ame);83 } 84 85 public void addField(int modifier, String fieldType, String propertyName) {86 fieldDescriptor = new FieldDescriptor(modifier, fieldType, propertyName);89 addField(0, null, null, name); 90 } 91 92 public void addField(int modifier, String fieldType, Collection<String> typeArguments, String propertyName) { 93 fieldDescriptor = new FieldDescriptor(modifier, fieldType, typeArguments, propertyName); 87 94 typeDescriptor.addFieldDescriptor(fieldDescriptor); 88 95 } … … 92 99 } 93 100 94 public void addParameter(String type, String name) {95 parameterDescriptor = new ParameterDescriptor(type, name);101 public void addParameter(String type, Collection<String> typeArguments, String name) { 102 parameterDescriptor = new ParameterDescriptor(type, typeArguments, name); 96 103 methodDescriptor.addParameterDescriptor(parameterDescriptor); 97 104 } … … 101 108 } 102 109 103 public void beginClass(String name ) {104 beginType(new ClassDescriptor(name ));110 public void beginClass(String name, Collection<String> typeArguments) { 111 beginType(new ClassDescriptor(name, typeArguments)); 105 112 } 106 113 … … 109 116 } 110 117 111 public void beginInterface(String name ) {112 beginType(new InterfaceDescriptor(name ));113 } 114 115 public void beginMethod(int modifier, String returnType, String methodName) {116 methodDescriptor = new MethodDescriptor(modifier, returnType, methodName);118 public void beginInterface(String name, Collection<String> typeArguments) { 119 beginType(new InterfaceDescriptor(name, typeArguments)); 120 } 121 122 public void beginMethod(int modifier, String returnType, Collection<String> typeArguments, String methodName) { 123 methodDescriptor = new MethodDescriptor(modifier, returnType, typeArguments, methodName); 117 124 typeDescriptor.addMethodDescriptor(methodDescriptor); 118 } 119 120 public void beginProxy(String proxyName, String returnType, String baseType, Collection<String> proxyImports, String interfaceType) { 121 // ASCompilationUnit eventUnit = project.newClass(proxyName + "Events"); 122 // eventType = (ASClassType) eventUnit.getType(); 123 124 proxyTypeDescriptor = new ClassDescriptor(proxyName); 125 if (proxyTypeDescriptor != null) proxyTypeDescriptor.addMethodDescriptor(methodDescriptor); 126 } 127 128 public void beginProxy(String proxyName, Collection<String> typeArguments, String returnType, String baseType, Collection<String> proxyImports, String interfaceType) { 129 proxyTypeDescriptor = new ProxyDescriptor(proxyName, typeArguments); 125 130 proxyTypeDescriptor.addInterface(interfaceType); 126 131 … … 133 138 134 139 if (!Constants.TYPE_VOID.equals(returnType)) proxyImports.add(returnType); 135 136 // ASMethod callMethod = proxyType.newMethod(Constants.METHOD_CALL, Visibility.PROTECTED, returnType);137 // callMethod.addParam("name", "String");138 // callMethod.addParam("...args", null);139 // callMethod.addStmt("throw new Error(\"Not Implemented\");");140 141 // ASMethod resultMethod = proxyType.newMethod(Constants.METHOD_ON_RESULT, Visibility.PROTECTED, Constants.TYPE_VOID);142 // resultMethod.addParam("result", "Object");143 144 // ASMethod statusMethod = proxyType.newMethod(Constants.METHOD_ON_STATUS, Visibility.PROTECTED, Constants.TYPE_VOID);145 // statusMethod.addParam("status", "Object");146 140 } 147 141 148 142 public void endClass(Collection<String> imports) { 143 typeDescriptor = null; 149 144 } 150 145 151 146 public void endEnum() { 147 typeDescriptor = null; 152 148 } 153 149 154 150 public void endInterface(Collection<String> imports) { 151 typeDescriptor = null; 155 152 } 156 153 157 154 public void endMethod() { 155 methodDescriptor = null; 158 156 } 159 157 160 158 public void endProxy(Collection<String> proxyImports) { 159 proxyTypeDescriptor = null; 161 160 } 162 161 … … 188 187 189 188 public String getAnnotation(String name, Collection<String> imports) { 190 return annotationMap.getType(name, false, imports);189 return annotationMap.getType(name, false, false, false, imports); 191 190 } 192 191 … … 195 194 } 196 195 197 public String getType(String name, int dimensions, boolean primitive, Collection<String> imports) {198 return typeMap.getType(name, primitive, imports);196 public String getType(String name, int dimensions, boolean primitive, boolean generic, boolean enumeration, Collection<String> imports) { 197 return typeMap.getType(name, primitive, generic, enumeration, imports); 199 198 } 200 199 trunk/src/org/fluffnstuff/asdoclet/generator/velocity/ClassDescriptor.java
r5 r8 1 1 package org.fluffnstuff.asdoclet.generator.velocity; 2 3 import java.util.Collection; 2 4 3 5 public class ClassDescriptor extends TypeDescriptor { 4 6 private String superClass; 5 7 6 public ClassDescriptor(String className ) {7 super(className );8 public ClassDescriptor(String className, Collection<String> typeArguments) { 9 super(className, typeArguments); 8 10 } 9 11 trunk/src/org/fluffnstuff/asdoclet/generator/velocity/Descriptor.java
r5 r8 9 9 private String typeName; 10 10 private String description; 11 private Collection<String> typeArguments; 11 12 private Collection<String> annotations = new ArrayList<String>(); 12 13 13 public Descriptor(String typeName ) {14 public Descriptor(String typeName, Collection<String> typeArguments) { 14 15 this.typeName = typeName; 16 this.typeArguments = typeArguments; 15 17 } 16 18 … … 25 27 public void setDescription(String description) { 26 28 this.description = description; 29 } 30 31 public Collection<String> getTypeArguments() { 32 return typeArguments; 27 33 } 28 34 trunk/src/org/fluffnstuff/asdoclet/generator/velocity/EnumDescriptor.java
r5 r8 3 3 public class EnumDescriptor extends TypeDescriptor { 4 4 public EnumDescriptor(String typeName) { 5 super(typeName );5 super(typeName, null); 6 6 } 7 7 trunk/src/org/fluffnstuff/asdoclet/generator/velocity/FieldDescriptor.java
r4 r8 2 2 3 3 import java.lang.reflect.Modifier; 4 import java.util.Collection; 4 5 5 6 public class FieldDescriptor extends Descriptor { … … 7 8 private int modifier; 8 9 9 public FieldDescriptor(int modifier, String type, String fieldName) {10 super(type );10 public FieldDescriptor(int modifier, String type, Collection<String> typeArguments, String fieldName) { 11 super(type, typeArguments); 11 12 12 13 this.fieldName = fieldName; trunk/src/org/fluffnstuff/asdoclet/generator/velocity/InterfaceDescriptor.java
r5 r8 1 1 package org.fluffnstuff.asdoclet.generator.velocity; 2 2 3 import java.util.Collection; 4 3 5 public class InterfaceDescriptor extends TypeDescriptor { 4 public InterfaceDescriptor(String typeName ) {5 super(typeName );6 public InterfaceDescriptor(String typeName, Collection<String> typeArguments) { 7 super(typeName, typeArguments); 6 8 } 7 9 trunk/src/org/fluffnstuff/asdoclet/generator/velocity/MethodDescriptor.java
r4 r8 7 7 private Collection<ParameterDescriptor> parameterDescriptors = new ArrayList<ParameterDescriptor>(); 8 8 9 public MethodDescriptor(int modifier, String returnType, String methodName) {10 super(modifier, returnType, methodName);9 public MethodDescriptor(int modifier, String returnType, Collection<String> typeArguments, String methodName) { 10 super(modifier, returnType, typeArguments, methodName); 11 11 } 12 12 trunk/src/org/fluffnstuff/asdoclet/generator/velocity/ParameterDescriptor.java
r4 r8 1 1 package org.fluffnstuff.asdoclet.generator.velocity; 2 3 import java.util.Collection; 2 4 3 5 public class ParameterDescriptor extends Descriptor { 4 6 private String parameterName; 5 7 6 public ParameterDescriptor(String parameterType, String parameterName) {7 super(parameterType );8 public ParameterDescriptor(String parameterType, Collection<String> typeArguments, String parameterName) { 9 super(parameterType, typeArguments); 8 10 this.parameterName = parameterName; 9 11 } trunk/src/org/fluffnstuff/asdoclet/generator/velocity/TypeDescriptor.java
r5 r8 9 9 private Collection<String> interfaces = new ArrayList<String>(); 10 10 11 public TypeDescriptor(String typeName ) {12 super(typeName );11 public TypeDescriptor(String typeName, Collection<String> typeArguments) { 12 super(typeName, typeArguments); 13 13 } 14 14 trunk/src/org/fluffnstuff/asdoclet/handler/AbstractHandler.java
r7 r8 2 2 3 3 import com.sun.javadoc.ClassDoc; 4 import com.sun.javadoc.ParameterizedType; 4 5 import com.sun.javadoc.Type; 5 6 import org.fluffnstuff.asdoclet.generator.Generator; 7 8 import java.util.ArrayList; 9 import java.util.Collection; 6 10 7 11 public abstract class AbstractHandler implements Handler { … … 16 20 protected Generator getGenerator() { 17 21 return generator; 22 } 23 24 protected Collection<String> getTypeArguments(Type returnType) { 25 ParameterizedType type = returnType.asParameterizedType(); 26 Collection<String> args = null; 27 if (type != null) { 28 args = new ArrayList<String>(); 29 for (Type arg : type.typeArguments()) { 30 args.add(getGenerator().getType(arg.qualifiedTypeName(), getDimensions(arg), arg.isPrimitive(), false, isEnum(arg), null)); 31 } 32 } 33 return args; 34 } 35 36 protected int getDimensions(Type returnType) { 37 return returnType.dimension().length() / 2; 38 } 39 40 protected boolean isEnum(Type type) { 41 return type.asClassDoc() != null && type.asClassDoc().isEnum(); 18 42 } 19 43 … … 34 58 if (description.length() > 0) getGenerator().setTypeDescription(description.toString()); 35 59 } 36 37 protected int getDimensions(Type returnType) {38 return returnType.dimension().length() / 2;39 }40 60 } trunk/src/org/fluffnstuff/asdoclet/handler/ClassHandler.java
r7 r8 25 25 String ignore = TagParser.getStringCommand(Constants.COMMAND_IGNORE, "", commands); 26 26 27 getGenerator().beginClass(classDoc.qualifiedTypeName()); 27 Collection<String> arguments = getTypeArguments(classDoc); 28 getGenerator().beginClass(classDoc.qualifiedTypeName(), arguments); 28 29 30 // todo move that to generator 29 31 if (bindable) getGenerator().addTypeAnnotation("Bindable"); 30 32 getGenerator().addTypeAnnotation("RemoteClass(alias=\"" + classDoc.qualifiedTypeName() + "\")"); … … 47 49 String propertyName = getBeanPropertyName(methodDoc); 48 50 if (propertyName != null) { 51 Type returnType = methodDoc.returnType(); 49 52 String fieldType = getFieldType(methodDoc, findField(classDoc, propertyName), imports, methodCommands); 50 getGenerator().addField(Modifier.PUBLIC, fieldType, propertyName); 53 Collection<String> arguments = null; 54 55 if (fieldType == null) { 56 arguments = getTypeArguments(returnType); 57 fieldType = getGenerator().getType(returnType.qualifiedTypeName(), getDimensions(returnType), returnType.isPrimitive(), arguments != null, isEnum(returnType), imports); 58 } 59 60 getGenerator().addField(Modifier.PUBLIC, fieldType, arguments, propertyName); 51 61 52 62 processFieldComment(methodDoc); … … 70 80 private String getFieldType(MethodDoc methodDoc, FieldDoc fieldDoc, Collection<String> imports, Map<String, String> methodCommands) { 71 81 String overriddenType = TagParser.getStringCommand(Constants.COMMAND_TYPE, methodCommands); 72 Type returnType = methodDoc.returnType();73 82 String fieldType; 74 83 … … 78 87 if (fieldType == null && fieldDoc != null) { 79 88 fieldType = checkAnnotations(imports, fieldDoc.annotations()); 80 }81 82 if (fieldType == null) {83 fieldType = getGenerator().getType(returnType.qualifiedTypeName(), getDimensions(returnType), returnType.isPrimitive(), imports);84 89 } 85 90 } else { … … 122 127 123 128 private void processSuperClass(ClassDoc classDoc, String ignore) { 124 ClassDoc superClassDoc = classDoc.superclass();125 if ( superClassDoc!= null) {126 String superClassName = superClassDoc.qualifiedTypeName();129 Type type = classDoc.superclassType(); 130 if (type != null) { 131 String superClassName = type.qualifiedTypeName(); 127 132 if (!superClassName.equals(Object.class.getName())) { 128 superClassName = getGenerator().getType(superClassName, 0, false, null);133 superClassName = getGenerator().getType(superClassName, 0, false, false, false, null); 129 134 if (!Object.class.getName().equals(superClassName) && !ignore.contains(superClassName)) getGenerator().setSuperclass(superClassName); 130 135 } trunk/src/org/fluffnstuff/asdoclet/handler/EnumHandler.java
r6 r8 16 16 processClassComment(classDoc); 17 17 18 for (FieldDoc fieldDoc : classDoc. fields()) getGenerator().addEnumField(fieldDoc.name());18 for (FieldDoc fieldDoc : classDoc.enumConstants()) getGenerator().addEnumField(fieldDoc.name()); 19 19 20 20 getGenerator().endEnum(); trunk/src/org/fluffnstuff/asdoclet/handler/InterfaceHandler.java
r7 r8 7 7 import org.fluffnstuff.asdoclet.generator.Generator; 8 8 9 import java.util.Collection; 10 import java.util.HashMap; 11 import java.util.Map; 12 import java.util.TreeSet; 9 import java.util.*; 13 10 14 11 public class InterfaceHandler extends AbstractHandler { … … 36 33 37 34 String interfaceName = classDoc.qualifiedTypeName(); 38 39 getGenerator().beginInterface(interfaceName );35 Collection<String> arguments = getTypeArguments(classDoc); 36 getGenerator().beginInterface(interfaceName, arguments); 40 37 41 38 processClassComment(classDoc); … … 45 42 String baseType = TagParser.getStringCommand(Constants.COMMAND_PROXY_BASE_CLASS, commands); 46 43 47 String interfaceType = getGenerator().getType(interfaceName, 0, false, proxyImports);48 getGenerator().beginProxy(proxyName, a syncReturnType, baseType, proxyImports, interfaceType);44 String interfaceType = getGenerator().getType(interfaceName, 0, false, false, isEnum(classDoc), proxyImports); 45 getGenerator().beginProxy(proxyName, arguments, asyncReturnType, baseType, proxyImports, interfaceType); 49 46 } 50 47 … … 70 67 71 68 private void processInterfaces(ClassDoc classDoc, Map<String, String> commands, String asyncReturnType, Collection<String> proxyImports, Collection<String> imports) { 72 for ( ClassDoc interfaceDoc : classDoc.interfaces()) {73 if (!commands.containsKey(Constants.COMMAND_IGNORE) || !commands.get(Constants.COMMAND_IGNORE).contains( interfaceDoc.qualifiedTypeName())) {74 String interfaceClass = getGenerator().getType( interfaceDoc.qualifiedTypeName(), 0, false, null);69 for (Type type : classDoc.interfaceTypes()) { 70 if (!commands.containsKey(Constants.COMMAND_IGNORE) || !commands.get(Constants.COMMAND_IGNORE).contains(type.qualifiedTypeName())) { 71 String interfaceClass = getGenerator().getType(type.qualifiedTypeName(), 0, false, false, false, null); 75 72 getGenerator().addInterface(interfaceClass); 76 73 77 processInterfaceInternal( interfaceDoc, asyncReturnType, commands, proxyImports, imports);74 processInterfaceInternal(type.asClassDoc(), asyncReturnType, commands, proxyImports, imports); 78 75 } 79 76 } … … 83 80 for (MethodDoc methodDoc : classDoc.methods()) { 84 81 Type returnType = methodDoc.returnType(); 85 String type = getGenerator().getType(returnType.qualifiedTypeName(), getDimensions(returnType), returnType.isPrimitive(), null); 86 processMethod(methodDoc, commands, imports, type, asyncReturnType); 82 Collection<String> args = getTypeArguments(returnType); 83 String type = getGenerator().getType(returnType.qualifiedTypeName(), getDimensions(returnType), returnType.isPrimitive(), args != null, isEnum(returnType), null); 84 processMethod(methodDoc, commands, imports, type, args, asyncReturnType); 87 85 } 88 86 } 89 87 90 private void processMethod(MethodDoc methodDoc, Map<String, String> commands, Collection<String> imports, String returnType, String asyncReturnType) {88 private void processMethod(MethodDoc methodDoc, Map<String, String> commands, Collection<String> imports, String returnType, Collection<String> typeArguments, String asyncReturnType) { 91 89 Map<String, String> methodCommands = new HashMap<String, String>(commands); 92 90 … … 99 97 if (async) { 100 98 if (!Constants.TYPE_VOID.equals(asyncReturnType)) imports.add(asyncReturnType); 99 getGenerator().beginMethod(0, asyncReturnType, new ArrayList<String>(), methodDoc.name()); 101 100 } else { 102 asyncReturnType = returnType;101 getGenerator().beginMethod(0, returnType, typeArguments, methodDoc.name()); 103 102 } 104 105 getGenerator().beginMethod(0, asyncReturnType, methodDoc.name());106 103 107 104 for (Parameter parameter : methodDoc.parameters()) { 108 105 Type parameterType = parameter.type(); 109 String type = getGenerator().getType(parameterType.qualifiedTypeName(), getDimensions(parameterType), parameterType.isPrimitive(), imports); 110 getGenerator().addParameter(type, parameter.name()); 106 Collection<String> parameterArguments = getTypeArguments(parameterType); 107 String type = getGenerator().getType(parameterType.qualifiedTypeName(), getDimensions(parameterType), parameterType.isPrimitive(), parameterArguments != null, isEnum(parameterType), imports); 108 getGenerator().addParameter(type, parameterArguments, parameter.name()); 111 109 } 112 110 trunk/src/org/fluffnstuff/asdoclet/map/ClassTypeMap.java
r6 r8 5 5 public class ClassTypeMap extends TypeMap { 6 6 @Override 7 public String getType(String typeName, boolean primitive, Collection<String> imports) {8 String asType = super.getType(typeName, primitive, imports);7 public String getType(String typeName, boolean primitive, boolean generic, boolean enumeration, Collection<String> imports) { 8 String asType = super.getType(typeName, primitive, generic, enumeration, imports); 9 9 10 10 if (asType == null) { trunk/src/org/fluffnstuff/asdoclet/map/TypeMap.java
r6 r8 1 1 package org.fluffnstuff.asdoclet.map; 2 3 import org.fluffnstuff.asdoclet.util.EnumUtil;4 2 5 3 import java.util.Collection; … … 9 7 public class TypeMap { 10 8 protected final Map<String, String> typeMap = new HashMap<String, String>(); 9 protected final Map<String, String> genericTypeMap = new HashMap<String, String>(); 11 10 private String enumType; 12 11 … … 15 14 } 16 15 16 public void addGenericTypeMapping(String javaType, String asType) { 17 if (!genericTypeMap.containsKey(javaType)) genericTypeMap.put(javaType, asType); 18 } 19 17 20 public void addTypeMapping(String javaType, String asType) { 18 21 if (!typeMap.containsKey(javaType)) typeMap.put(javaType, asType); 19 22 } 20 23 21 public String getType(String typeName, boolean primitive, Collection<String> imports) {24 public String getType(String typeName, boolean primitive, boolean generic, boolean enumeration, Collection<String> imports) { 22 25 String asType = null; 23 26 24 if (enumType != null && EnumUtil.isEnum(typeName)) {27 if (enumType != null && enumeration) { 25 28 asType = enumType; 29 } else if (generic && genericTypeMap.containsKey(typeName)) { 30 asType = genericTypeMap.get(typeName); 26 31 } else if (typeMap.containsKey(typeName)) { 27 32 asType = typeMap.get(typeName);