diff --git a/proposal/xdocs/build.xml b/proposal/xdocs/build.xml
index c1f9ca60a..494da643b 100644
--- a/proposal/xdocs/build.xml
+++ b/proposal/xdocs/build.xml
@@ -18,22 +18,19 @@
location="${template.dir}/task_xdoc.template"/>
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -49,6 +46,10 @@
+
+
@@ -56,7 +57,8 @@
-
diff --git a/proposal/xdocs/src/org/apache/tools/ant/xdoclet/AntSubTask.java b/proposal/xdocs/src/org/apache/tools/ant/xdoclet/AntSubTask.java
index aa20719ed..086c182f7 100644
--- a/proposal/xdocs/src/org/apache/tools/ant/xdoclet/AntSubTask.java
+++ b/proposal/xdocs/src/org/apache/tools/ant/xdoclet/AntSubTask.java
@@ -83,15 +83,31 @@ public class AntSubTask extends TemplateSubTask {
* - and only throw BuildException if at all
*/
protected boolean matchesGenerationRules(ClassDoc clazz) throws XDocletException {
- MethodDoc[] methods = clazz.methods();
if (clazz.isAbstract()) {
return false;
}
+ return isAntTask(clazz);;
+ }
+
+ /**
+ * @todo pull out to utility method
+ * @todo add more logic (like execute method signature)
+ */
+ public static final boolean isAntTask(ClassDoc clazz) {
+ if (clazz.isAbstract()) {
+ return false;
+ }
+
+ // no inner classes (for now - but is this possible? desired?)
+ if (clazz.containingClass() != null) {
+ return false;
+ }
+
+ MethodDoc[] methods = clazz.methods();
for (int i = 0; i < methods.length; i++) {
if ("execute".equals(methods[i].name())) {
- System.out.println("Task: " + clazz.name());
return true;
}
}
@@ -104,12 +120,17 @@ public class AntSubTask extends TemplateSubTask {
* default class name.
*/
protected String getGeneratedFileName(ClassDoc clazz) throws XDocletException {
- PackageDoc pak = clazz.containingPackage();
- String packageName = PackageTagsHandler.packageNameAsPathFor(pak);
- String taskName = AntTagsHandler.getTaskName(clazz);
- String filename = MessageFormat.format(getDestinationFile(), new Object[]{taskName});
+ String filename = getDestinationFile();
+ String dir = getDestDir().getAbsolutePath();
+
+ if (filename.indexOf("{0}") != -1) {
+ PackageDoc pak = clazz.containingPackage();
+ dir = PackageTagsHandler.packageNameAsPathFor(pak);
+ String taskName = AntTagsHandler.getTaskName(clazz);
+ filename = MessageFormat.format(getDestinationFile(), new Object[]{taskName});
+ }
- return new File(packageName, filename).toString();
+ return new File(dir, filename).toString();
}
}
diff --git a/proposal/xdocs/src/org/apache/tools/ant/xdoclet/AntTagsHandler.java b/proposal/xdocs/src/org/apache/tools/ant/xdoclet/AntTagsHandler.java
index ed11a85de..2b4ebedfd 100644
--- a/proposal/xdocs/src/org/apache/tools/ant/xdoclet/AntTagsHandler.java
+++ b/proposal/xdocs/src/org/apache/tools/ant/xdoclet/AntTagsHandler.java
@@ -57,6 +57,7 @@ import com.sun.javadoc.ClassDoc;
import com.sun.javadoc.MethodDoc;
import xdoclet.XDocletException;
import xdoclet.XDocletTagSupport;
+import xdoclet.tags.AbstractProgramElementTagsHandler;
import java.util.ArrayList;
import java.util.Arrays;
@@ -80,6 +81,24 @@ import java.util.Properties;
*/
public class AntTagsHandler extends XDocletTagSupport {
+ /**
+ * @todo add check for execute method
+ */
+ public void forAllTasks(String template, Properties attributes) throws XDocletException {
+ ClassDoc[] classes = AbstractProgramElementTagsHandler.getAllClasses();
+ ClassDoc cur_class = null;
+
+ for (int i = 0; i < classes.length; i++) {
+ cur_class = classes[i];
+ setCurrentClass(cur_class);
+
+ if (AntSubTask.isAntTask(cur_class)) {
+ generate(template);
+ }
+ }
+ }
+
+
/**
* Iterates over all Ant attributes.
*
@@ -120,21 +139,22 @@ public class AntTagsHandler extends XDocletTagSupport {
}
}
+
/**
* Provides the element name for the current method
*/
public String elementName() throws XDocletException {
String methodName = getCurrentMethod().name();
- System.out.println(">>>> " + methodName);
String elementName = "";
if (methodName.startsWith("addConfigured")) {
- elementName = methodName.substring(13,methodName.length());
- } else if (methodName.startsWith("add")) {
- elementName = methodName.substring(3,methodName.length());
- } else if (methodName.startsWith("create")) {
- elementName = methodName.substring(6,methodName.length());
+ elementName = methodName.substring(13, methodName.length());
+ }
+ else if (methodName.startsWith("add")) {
+ elementName = methodName.substring(3, methodName.length());
+ }
+ else if (methodName.startsWith("create")) {
+ elementName = methodName.substring(6, methodName.length());
}
- System.out.println(" = " + elementName);
return elementName.toLowerCase();
}
diff --git a/proposal/xdocs/templates/defaults_properties.template b/proposal/xdocs/templates/defaults_properties.template
index 1f207411d..ca90ed8fe 100644
--- a/proposal/xdocs/templates/defaults_properties.template
+++ b/proposal/xdocs/templates/defaults_properties.template
@@ -1,5 +1,4 @@
-
-
+
=
-
+