Changeset 29
- Timestamp:
- 02/02/09 17:34:38 (3 years ago)
- Files:
-
- trunk/asdoclet.ipr (modified) (1 diff)
- trunk/lib/metaas.jar (modified) (previous)
- trunk/out/templates/cs/class.vm (modified) (1 diff)
- trunk/src/org/fluffnstuff/asdoclet/generator/AsGenerator.java (modified) (2 diffs)
- trunk/src/org/fluffnstuff/asdoclet/generator/Generator.java (modified) (1 diff)
- trunk/src/org/fluffnstuff/asdoclet/generator/VelocityGenerator.java (modified) (2 diffs)
- trunk/src/org/fluffnstuff/asdoclet/generator/velocity/PropertyDescriptor.java (modified) (3 diffs)
- trunk/src/org/fluffnstuff/asdoclet/handler/AbstractHandler.java (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/asdoclet.ipr
r20 r29 491 491 </CLASSES> 492 492 <JAVADOC /> 493 <SOURCES /> 493 <SOURCES> 494 <root url="file://C:/Users/harald/Documents/Development/metaas/src/main/java" /> 495 </SOURCES> 494 496 <jarDirectory url="file://$PROJECT_DIR$/lib" recursive="false" /> 495 497 </library> trunk/out/templates/cs/class.vm
r23 r29 16 16 public const $fieldDescriptor.qualifiedTypeName#if($fieldDescriptor.typeArguments)<#foreach($arg in $fieldDescriptor.typeArguments)#if($velocityCount>1), #end$arg#end>#end $fieldDescriptor.fieldName#if($fieldDescriptor.value) = $fieldDescriptor.value#end; 17 17 #else 18 $fieldDescriptor.modifier $fieldDescriptor.qualifiedTypeName#if($fieldDescriptor.typeArguments)<#foreach($arg in $fieldDescriptor.typeArguments)#if($velocityCount>1), #end$arg#end>#end $fieldDescriptor.propertyName { get { return $fieldDescriptor.fieldName; } set { this.$fieldDescriptor.fieldName = value; } }19 18 $fieldDescriptor.modifier $fieldDescriptor.qualifiedTypeName#if($fieldDescriptor.typeArguments)<#foreach($arg in $fieldDescriptor.typeArguments)#if($velocityCount>1), #end$arg#end>#end $fieldDescriptor.fieldName#if($fieldDescriptor.value) = $fieldDescriptor.value#end; 19 #end 20 20 #end 21 21 #foreach($propertyDescriptor in $typeDescriptor.propertyDescriptors) 22 $propertyDescriptor.modifier #if($propertyDescriptor.override)override#{else}virtual#end $propertyDescriptor.qualifiedTypeName#if($propertyDescriptor.typeArguments)<#foreach($arg in $propertyDescriptor.typeArguments)#if($velocityCount>1), #end$arg#end>#end $propertyDescriptor.propertyName { #if($propertyDescriptor.getter)get { return this.$propertyDescriptor.fieldName; }#end#if($propertyDescriptor.setter)set { this.$propertyDescriptor.fieldName = value; }#end } 22 23 #end 23 24 #foreach($methodDescriptor in $typeDescriptor.methodDescriptors) trunk/src/org/fluffnstuff/asdoclet/generator/AsGenerator.java
r24 r29 84 84 } 85 85 86 public void addField(int modifier, String fieldType, Collection<String> typeArguments, String propertyName, String value, String comment) { 87 if (!"null".equals(fieldType)) { 88 ASClassType classType = (ASClassType) type; 89 90 classType.newField("_" + propertyName, Visibility.PRIVATE, fieldType); 91 92 Visibility visibility = getVisibility(modifier); 93 ASMethod getter = classType.newMethod("get " + propertyName, visibility, fieldType); 94 getter.addStmt("return _" + propertyName + ";"); 95 if (!StringUtils.isEmpty(comment)) getter.setDescription(comment.trim()); 96 97 ASMethod setter = classType.newMethod("set " + propertyName, visibility, "void"); 98 setter.addParam("value", fieldType); 99 setter.addStmt("_" + propertyName + "=value;"); 100 } 101 } 102 103 public void addGetter(int modifier, String returnType, Collection<String> typeArguments, String propertyName) { 104 beginMethod(modifier, returnType, typeArguments, "get " + propertyName); 86 public void addField(int modifier, String fieldType, Collection<String> typeArguments, String fieldName, String value, String comment) { 87 ASClassType classType = (ASClassType) type; 88 if (classType.getField(fieldName) == null) classType.newField(fieldName, getVisibility(modifier), fieldType); 89 } 90 91 public void addGetter(int modifier, String fieldType, Collection<String> typeArguments, String propertyName, String comment, boolean override) { 92 if (type instanceof ASClassType) { 93 addField(Modifier.PRIVATE, fieldType, null, "_" + propertyName, null, null); 94 beginMethod(modifier, fieldType, typeArguments, "get " + propertyName); 95 method.setOverride(override); 96 method.addStmt("return _" + propertyName + ";"); 97 } else { 98 beginMethod(modifier, fieldType, typeArguments, "get " + propertyName); 99 } 100 101 setMethodDescription(comment); 105 102 } 106 103 … … 120 117 } 121 118 122 public void addSetter(int modifier, String returnType, Collection<String> typeArguments, String propertyName) { 123 beginMethod(modifier, returnType, typeArguments, "set " + propertyName); 119 public void addSetter(int modifier, String fieldType, Collection<String> typeArguments, String propertyName, String comment, boolean override) { 120 if (type instanceof ASClassType) { 121 addField(Modifier.PRIVATE, fieldType, null, "_" + propertyName, null, null); 122 beginMethod(modifier, "void", typeArguments, "set " + propertyName); 123 method.setOverride(override); 124 method.addParam("value", fieldType); 125 method.addStmt("_" + propertyName + "=value;"); 126 } else { 127 beginMethod(modifier, "void", typeArguments, "set " + propertyName); 128 method.addParam("value", fieldType); 129 } 130 131 setMethodDescription(comment); 124 132 } 125 133 trunk/src/org/fluffnstuff/asdoclet/generator/Generator.java
r24 r29 4 4 5 5 public interface Generator { 6 void addBody(String body);6 void addBody(String body); 7 7 8 void addConstant(String constantType, Collection<String> typeArguments, String name, String value, String comment);8 void addConstant(String constantType, Collection<String> typeArguments, String name, String value, String comment); 9 9 10 void addEnumField(String name, String comment);10 void addEnumField(String name, String comment); 11 11 12 void addField(int modifier, String fieldType, Collection<String> typeArguments, String propertyName, String value, String comment);12 void addField(int modifier, String fieldType, Collection<String> typeArguments, String propertyName, String value, String comment); 13 13 14 void addGetter(int modifier, String returnType, Collection<String> typeArguments, String propertyName);14 void addGetter(int modifier, String fieldType, Collection<String> typeArguments, String propertyName, String comment, boolean override); 15 15 16 void addInterface(String name);16 void addInterface(String name); 17 17 18 void addParameter(String type, Collection<String> typeArguments, String name);18 void addParameter(String type, Collection<String> typeArguments, String name); 19 19 20 void addSetter(int modifier, String returnType, Collection<String> typeArguments, String propertyName);20 void addSetter(int modifier, String fieldType, Collection<String> typeArguments, String propertyName, String comment, boolean override); 21 21 22 void addTypeAnnotation(String tag);22 void addTypeAnnotation(String tag); 23 23 24 void beginClass(String name, boolean bindable, Collection<String> typeArguments);24 void beginClass(String name, boolean bindable, Collection<String> typeArguments); 25 25 26 void beginEnum(String name);26 void beginEnum(String name); 27 27 28 void beginInterface(String name, Collection<String> typeArguments);28 void beginInterface(String name, Collection<String> typeArguments); 29 29 30 void beginMethod(int modifier, String returnType, Collection<String> typeArguments, String methodName);30 void beginMethod(int modifier, String returnType, Collection<String> typeArguments, String methodName); 31 31 32 void beginProxy(String proxyName, Collection<String> typeArguments, String returnType, String baseType, Collection<String> proxyImports, String interfaceType);32 void beginProxy(String proxyName, Collection<String> typeArguments, String returnType, String baseType, Collection<String> proxyImports, String interfaceType); 33 33 34 void endClass(Collection<String> imports);34 void endClass(Collection<String> imports); 35 35 36 void endEnum();36 void endEnum(); 37 37 38 void endInterface(Collection<String> imports);38 void endInterface(Collection<String> imports); 39 39 40 void endMethod();40 void endMethod(); 41 41 42 void endProxy(Collection<String> proxyImports);42 void endProxy(Collection<String> proxyImports); 43 43 44 void generate() throws Exception;44 void generate() throws Exception; 45 45 46 String getAnnotation(String name, Collection<String> imports);46 String getAnnotation(String name, Collection<String> imports); 47 47 48 String getName();48 String getName(); 49 49 50 String getType(String name, int dimensions, boolean primitive, boolean generic, boolean enumeration, Collection<String> imports);50 String getType(String name, int dimensions, boolean primitive, boolean generic, boolean enumeration, Collection<String> imports); 51 51 52 void setMethodDescription(String description);52 void setMethodDescription(String description); 53 53 54 void setSuperclass(String name, boolean exception);54 void setSuperclass(String name, boolean exception); 55 55 56 void setTypeDescription(String description);56 void setTypeDescription(String description); 57 57 } trunk/src/org/fluffnstuff/asdoclet/generator/VelocityGenerator.java
r24 r29 95 95 96 96 public void addField(int modifier, String fieldType, Collection<String> typeArguments, String propertyName, String value, String comment) { 97 if (!"null".equals(fieldType)) { 98 fieldDescriptor = new FieldDescriptor(modifier, fieldType, typeArguments, propertyName, value); 99 setFieldDescription(comment); 100 101 typeDescriptor.addFieldDescriptor(fieldDescriptor); 102 } 103 } 104 105 public void addGetter(int modifier, String returnType, Collection<String> typeArguments, String propertyName) { 106 if (!"null".equals(returnType)) { 107 PropertyDescriptor propertyDescriptor = new PropertyDescriptor(modifier, returnType, typeArguments, propertyName); 108 propertyDescriptor.setGetter(true); 109 typeDescriptor.addPropertyDescriptor(propertyDescriptor); 97 fieldDescriptor = new FieldDescriptor(modifier, fieldType, typeArguments, propertyName, value); 98 setFieldDescription(comment); 99 100 typeDescriptor.addFieldDescriptor(fieldDescriptor); 101 } 102 103 public void addGetter(int modifier, String returnType, Collection<String> typeArguments, String propertyName, String description, boolean override) { 104 PropertyDescriptor propertyDescriptor = new PropertyDescriptor(modifier, returnType, typeArguments, propertyName); 105 propertyDescriptor.setGetter(true); 106 propertyDescriptor.setOverride(propertyDescriptor.isOverride() || override); 107 propertyDescriptor.setDescription(description); 108 typeDescriptor.addPropertyDescriptor(propertyDescriptor); 109 110 if (typeDescriptor instanceof ClassDescriptor) { 111 addField(Modifier.PRIVATE, returnType, typeArguments, propertyName, null, description); 110 112 } 111 113 } … … 120 122 } 121 123 122 public void addSetter(int modifier, String returnType, Collection<String> typeArguments, String propertyName) { 123 if (!"null".equals(returnType)) { 124 PropertyDescriptor propertyDescriptor = new PropertyDescriptor(modifier, returnType, typeArguments, propertyName); 125 propertyDescriptor.setSetter(true); 126 typeDescriptor.addPropertyDescriptor(propertyDescriptor); 124 public void addSetter(int modifier, String returnType, Collection<String> typeArguments, String propertyName, String description, boolean override) { 125 PropertyDescriptor propertyDescriptor = new PropertyDescriptor(modifier, "void", typeArguments, propertyName); 126 propertyDescriptor.setSetter(true); 127 propertyDescriptor.setOverride(propertyDescriptor.isOverride() || override); 128 propertyDescriptor.setDescription(description); 129 typeDescriptor.addPropertyDescriptor(propertyDescriptor); 130 131 if (typeDescriptor instanceof ClassDescriptor) { 132 addField(Modifier.PRIVATE, returnType, typeArguments, propertyName, null, description); 127 133 } 128 134 } trunk/src/org/fluffnstuff/asdoclet/generator/velocity/PropertyDescriptor.java
r24 r29 9 9 private boolean getter; 10 10 private boolean setter; 11 private boolean override; 11 12 12 13 public PropertyDescriptor(int modifier, String type, Collection<String> typeArguments, String fieldName) { … … 17 18 } 18 19 20 public String getFieldName() { 21 return fieldName; 22 } 23 19 24 public boolean isGetter() { 20 25 return getter; … … 23 28 public void setGetter(boolean getter) { 24 29 this.getter = getter; 30 } 31 32 public boolean isOverride() { 33 return override; 34 } 35 36 public void setOverride(boolean override) { 37 this.override = override; 25 38 } 26 39 trunk/src/org/fluffnstuff/asdoclet/handler/AbstractHandler.java
r24 r29 58 58 } 59 59 60 if (classDoc.isInterface()) {61 String name = methodDoc.name();60 String name = methodDoc.name(); 61 String comment = methodDoc.commentText(); 62 62 63 if (name.startsWith("set")) { 64 getGenerator().addSetter(0, fieldType, arguments, propertyName); 65 } else if (name.startsWith("get") || name.startsWith("is")) { 66 getGenerator().addGetter(0, fieldType, arguments, propertyName); 63 if (!"null".equals(fieldType) && (name.startsWith("get") || name.startsWith("is"))) { 64 String setterName = "set" + propertyName.substring(0, 1).toUpperCase() + propertyName.substring(1); 65 66 67 if (classDoc.isInterface()) { 68 getGenerator().addGetter(0, fieldType, arguments, propertyName, comment, false); 69 if (findMethod(setterName, classDoc)) getGenerator().addSetter(0, fieldType, arguments, propertyName, comment, false); 70 } else { 71 boolean overridden = isOverridden(classDoc, name); 72 getGenerator().addGetter(Modifier.PUBLIC, fieldType, arguments, propertyName, comment, overridden); 73 // always generate setter, serialization doesn't work otherwise 74 getGenerator().addSetter(Modifier.PUBLIC, fieldType, arguments, propertyName, comment, overridden); 67 75 } 68 } else {69 // getGenerator().addGetter(Modifier.PUBLIC, fieldType, arguments, propertyName);70 // getGenerator().addSetter(Modifier.PUBLIC, fieldType, arguments, propertyName);71 getGenerator().addField(Modifier.PUBLIC, fieldType, arguments, propertyName, null, methodDoc.commentText());72 76 } 73 77 } … … 147 151 } 148 152 153 private boolean findMethod(String name, ClassDoc superClass) { 154 for (MethodDoc superMethod : superClass.methods()) { 155 if (name.equals(superMethod.name())) { 156 return true; 157 } 158 } 159 return false; 160 } 161 162 private boolean isOverridden(ClassDoc classDoc, String name) { 163 for (ClassDoc superClass = classDoc.superclass(); superClass != null; superClass = superClass.superclass()) { 164 if (findMethod(name, superClass)) return true; 165 } 166 return false; 167 } 168 149 169 protected void processClassComment(ClassDoc classDoc) { 150 170 StringBuilder description = new StringBuilder();