diff --git a/proposal/xdocs/build.xml b/proposal/xdocs/build.xml
index f9a49d054..8639034b7 100644
--- a/proposal/xdocs/build.xml
+++ b/proposal/xdocs/build.xml
@@ -42,6 +42,8 @@
+
+
@@ -75,6 +77,7 @@
+
diff --git a/proposal/xdocs/src/org/apache/tools/ant/xdoclet/TaskTagsHandler.java b/proposal/xdocs/src/org/apache/tools/ant/xdoclet/TaskTagsHandler.java
index 306221e3b..b25c4a22c 100644
--- a/proposal/xdocs/src/org/apache/tools/ant/xdoclet/TaskTagsHandler.java
+++ b/proposal/xdocs/src/org/apache/tools/ant/xdoclet/TaskTagsHandler.java
@@ -55,10 +55,11 @@ package org.apache.tools.ant.xdoclet;
import com.sun.javadoc.*;
import org.apache.tools.ant.IntrospectionHelper;
+import org.apache.tools.ant.types.EnumeratedAttribute;
import xdoclet.XDocletException;
import xdoclet.XDocletTagSupport;
-import xdoclet.util.TypeConversionUtil;
import xdoclet.tags.AbstractProgramElementTagsHandler;
+import xdoclet.tags.MethodTagsHandler;
import java.util.ArrayList;
import java.util.Arrays;
@@ -69,12 +70,12 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
+import java.lang.reflect.InvocationTargetException;
/**
* Custom tag handler for XDoclet templates for Ant-specific processing.
*
* @author Erik Hatcher
- * @created February 17, 2002
*
* @todo clean up logic so that all setters are gathered first (even
* superclass) and sorted along wih them
@@ -179,6 +180,100 @@ public class TaskTagsHandler extends XDocletTagSupport {
return elementName.toLowerCase();
}
+ static private Map attributeDisplayMap = new HashMap();
+ static private Map elementDisplayMap = new HashMap();
+
+ static {
+ attributeDisplayMap.put("java.lang.String","String");
+ attributeDisplayMap.put("boolean","boolean");
+ attributeDisplayMap.put("org.apache.tools.ant.types.Path","Path");
+ attributeDisplayMap.put("org.apache.tools.ant.types.Reference","Reference");
+ attributeDisplayMap.put("java.io.File","File");
+ attributeDisplayMap.put("java.util.Date","Date");
+ attributeDisplayMap.put("java.net.URL","URL");
+ attributeDisplayMap.put("java.lang.Long","long");
+ attributeDisplayMap.put("java.lang.Integer","int");
+ attributeDisplayMap.put("java.lang.Float","float");
+ attributeDisplayMap.put("java.lang.Double","double");
+
+ elementDisplayMap.put("org.apache.tools.ant.types.Path","Path");
+ elementDisplayMap.put("org.apache.tools.ant.types.FileSet","Fileset");
+ elementDisplayMap.put("org.apache.tools.ant.taskdefs.Property", "see <property>");
+ elementDisplayMap.put("org.apache.tools.ant.types.Mapper","Mapper");
+ elementDisplayMap.put("org.apache.tools.ant.types.PatternSet", "Patternset");
+ elementDisplayMap.put("org.apache.tools.ant.types.FileList","Filelist");
+ elementDisplayMap.put("org.apache.tools.ant.types.FilterChain", "FilterChain");
+ elementDisplayMap.put("org.apache.tools.ant.types.FilterSet", "Filterset");
+ elementDisplayMap.put("org.apache.tools.ant.types.ZipFileSet", "ZipFileset");
+ elementDisplayMap.put("org.apache.tools.ant.types.DirSet", "Dirset");
+ elementDisplayMap.put("org.apache.tools.ant.types.XMLCatalog", "XMLCatalog");
+ }
+
+ public String displayAttributeType() throws XDocletException {
+ String methodType = getCurrentMethod().parameters()[0].type().qualifiedTypeName();
+ String display = (String) attributeDisplayMap.get(methodType);
+ if (display == null) {
+
+ System.out.println("type = " + methodType);
+ Class clazz = getAttributeClass(methodType);
+ if (clazz == null) {
+ return methodType;
+ }
+
+ Object instance = null;
+ try {
+ instance = clazz.newInstance();
+ } catch (InstantiationException e) {
+ } catch (IllegalAccessException e) {
+ }
+
+ if (instance != null && instance instanceof EnumeratedAttribute) {
+ EnumeratedAttribute enum = (EnumeratedAttribute) instance;
+ String[] values = enum.getValues();
+ display = "";
+ for (int i=0; i < values.length; i++) {
+ display += """ + values[i] + """;
+ if (i != (values.length - 1)) {
+ display += ", ";
+ }
+ }
+ return display;
+ }
+
+ display = "";
+ }
+ return display;
+ }
+
+ private Class getAttributeClass(String type) throws XDocletException {
+ Class clazz = null;
+ try {
+ clazz = Class.forName(type);
+ } catch (ClassNotFoundException e) {
+ int lastDotPosition = type.lastIndexOf('.');
+ if (lastDotPosition < 0) {
+ // probably a primitive
+ return null;
+ }
+ type = type.substring(0,lastDotPosition) + "$" + type.substring(lastDotPosition + 1);
+ try {
+ clazz = Class.forName(type);
+ } catch (ClassNotFoundException e1) {
+ throw new XDocletException(e1.getMessage());
+ }
+ }
+ return clazz;
+ }
+
+ public String displayElementType() throws XDocletException {
+ String elementType = elementType();
+ String display = (String) elementDisplayMap.get(elementType);
+ if (display == null) {
+ display = "";
+ }
+ return display;
+ }
+
/**
* Provides the element type for the current method
*/
@@ -194,7 +289,7 @@ public class TaskTagsHandler extends XDocletTagSupport {
* Provides the element type for the current method. If the return type
* is null, the first parameter is used.
*/
- private ClassDoc elementClassDoc() throws XDocletException {
+ private ClassDoc elementClassDoc() {
ClassDoc classDoc = null;
String methodName = getCurrentMethod().name();
if (methodName.startsWith("addConfigured") ||
@@ -215,26 +310,29 @@ public class TaskTagsHandler extends XDocletTagSupport {
* Provides the Ant task name.
*
* @see #getTaskName(ClassDoc)
- * @doc:tag type="content"
*/
public String taskName() throws XDocletException {
return getTaskName(getCurrentClass());
}
+ public String propertyName() {
+ return MethodTagsHandler.getPropertyNameFor( getCurrentMethod() ).toLowerCase();
+ }
+
private static String[] fluffPrefixes = { "set a","set the","sets a","sets the" };
public String shortMethodDescription() throws XDocletException {
- Tag[] tags = getCurrentMethod().firstSentenceTags();
- String desc = null;
+ Tag[] tags = getCurrentMethod().firstSentenceTags();
+ String desc = null;
- if( tags != null && tags.length > 0 ) {
- desc = tags[0].text();
+ if( tags != null && tags.length > 0 ) {
+ desc = tags[0].text();
}
- if( desc == null || desc.length() == 0 )
- {
- desc = "no description";
- }
+ if( desc == null || desc.length() == 0 )
+ {
+ desc = "no description";
+ }
desc = desc.trim();
String descLower = desc.toLowerCase();
@@ -248,7 +346,11 @@ public class TaskTagsHandler extends XDocletTagSupport {
desc = desc.substring(0,1).toUpperCase() + desc.substring(1);
- return desc;
+ if (!desc.endsWith(".")) {
+ desc += ".";
+ }
+
+ return desc;
}
/**
@@ -428,7 +530,7 @@ public class TaskTagsHandler extends XDocletTagSupport {
continue;
}
- System.out.println("elementName = " + elementName);
+// System.out.println("elementName = " + elementName);
String elementType = null;
if (adder) {
if (method.parameters().length != 1) {
@@ -444,7 +546,7 @@ public class TaskTagsHandler extends XDocletTagSupport {
}
String mapElementType = elementTypeMap.getProperty(elementName);
- System.out.println("elementType = " + elementType + " mapElementType = " + mapElementType);
+// System.out.println("elementType = " + elementType + " mapElementType = " + mapElementType);
if (mapElementType == null) {
continue;
}
diff --git a/proposal/xdocs/templates/task_xdoc.template b/proposal/xdocs/templates/task_xdoc.template
index 0e7b5a37d..f97a31658 100644
--- a/proposal/xdocs/templates/task_xdoc.template
+++ b/proposal/xdocs/templates/task_xdoc.template
@@ -15,8 +15,9 @@
- deprecated="true">
+ deprecated="true"
+ briefType="">
]]>
@@ -29,6 +30,7 @@
deprecated="true"
+ briefType=""
abstract="true">