ehatcher 2002/06/18 21:34:57
Modified: proposal/xdocs Tag: ANT_15_BRANCH build.xml
proposal/xdocs/templates Tag: ANT_15_BRANCH
task_xdoc.template
proposal/xdocs/src/org/apache/tools/ant/xdoclet Tag:
ANT_15_BRANCH TaskTagsHandler.java
Log:
lots of tweaks and hacks to get this all working. i know, should not commit
on the 1.5 branch, but i've already committed these files once and HEAD has not
been touched. refactorings are certainly in order, but so far its generating
nice output at least.
Revision Changes Path
No revision
No revision
1.9.2.1 +10 -7 jakarta-ant/proposal/xdocs/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/jakarta-ant/proposal/xdocs/build.xml,v
retrieving revision 1.9
retrieving revision 1.9.2.1
diff -u -r1.9 -r1.9.2.1
--- build.xml 23 Mar 2002 03:14:46 -0000 1.9
+++ build.xml 19 Jun 2002 04:34:57 -0000 1.9.2.1
@@ -45,6 +45,9 @@
<pathelement location="${build.dir}"/>
</path>
+ <property name="the.classpath" refid="xdoclet.classpath"/>
+ <echo>the.classpath = ${the.classpath}</echo>
+
<taskdef name="document"
classname="xdoclet.doc.DocumentDocletTask"
classpathref="xdoclet.classpath"/>
@@ -71,7 +74,7 @@
classpathref="xdoclet.classpath">
<fileset dir="${src.dir}">
<include name="**/*.java" unless="class.name"/>
- <include name="**/${class.name}.java" if="class.name"/>
+ <include name="**/*${class.name}*.java" if="class.name"/>
</fileset>
<!-- Generate XML task descriptor files -->
@@ -79,9 +82,9 @@
destinationfile="{0}.xml"/>
<!-- Generate XML datatype descriptor files -->
- <datatypes templateFile="${datatype_xdoc.template}"
+<!-- <datatypes templateFile="${datatype_xdoc.template}"
destdir="${gen.dir}/datatypes"
- destinationfile="{0}.xml"/>
+ destinationfile="{0}.xml"/> -->
<!-- @todo - with some additional logic in these subtasks, they
could be used similar to above instead of <template> -->
@@ -91,14 +94,14 @@
destinationfile="task_defaults.properties"/>
<!-- Generate datatype defaults.properties -->
- <template
subTaskClassName="org.apache.tools.ant.xdoclet.DatatypeSubTask"
+<!-- <template
subTaskClassName="org.apache.tools.ant.xdoclet.DatatypeSubTask"
templateFile="${type.properties.template}"
- destinationfile="type_defaults.properties"/>
+ destinationfile="type_defaults.properties"/> -->
<!-- Generate to-do list -->
- <info destdir="${gen.dir}/todo/ant"
+<!-- <info destdir="${gen.dir}/todo/ant"
header="To-do List"
- projectname="Ant"/>
+ projectname="Ant"/> -->
</xdocs>
</target>
No revision
No revision
1.5.2.2 +4 -12 jakarta-ant/proposal/xdocs/templates/task_xdoc.template
Index: task_xdoc.template
===================================================================
RCS file: /home/cvs/jakarta-ant/proposal/xdocs/templates/task_xdoc.template,v
retrieving revision 1.5.2.1
retrieving revision 1.5.2.2
diff -u -r1.5.2.1 -r1.5.2.2
--- task_xdoc.template 3 Jun 2002 03:28:45 -0000 1.5.2.1
+++ task_xdoc.template 19 Jun 2002 04:34:57 -0000 1.5.2.2
@@ -1,7 +1,8 @@
<XDtTagDef:tagDef namespace="Ant"
handler="org.apache.tools.ant.xdoclet.TaskTagsHandler"/>
<task name="<XDtAnt:taskName/>" category="<XDtAnt:categoryName/>"
classname="<XDtClass:fullClassName/>"
- <XDtClass:ifHasClassTag
tagName="deprecated">deprecated="true"</XDtClass:ifHasClassTag>>
+ <XDtClass:ifHasClassTag
tagName="deprecated">deprecated="true"</XDtClass:ifHasClassTag>
+ <XDtType:ifIsOfType
type="org.apache.tools.ant.taskdefs.MatchingTask">matchingTask="true"</XDtType:ifIsOfType>>
<XDtMerge:merge file="{0}.xml" generateMergedFile="false"></XDtMerge:merge>
@@ -16,6 +17,7 @@
<XDtAnt:forAllAttributes>
<attribute name="<XDtMethod:propertyName/>"
type="<XDtParameter:forAllMethodParams><XDtParameter:methodParamType/></XDtParameter:forAllMethodParams>"
<XDtMethod:ifHasMethodTag
tagName="deprecated">deprecated="true"</XDtMethod:ifHasMethodTag>>
+
<short-description><![CDATA[<XDtAnt:shortMethodDescription/>]]></short-description>
<description><![CDATA[
<XDtMethod:methodComment no-comment-signs="true"/>
]]></description>
@@ -29,18 +31,8 @@
<XDtMethod:ifHasMethodTag
tagName="deprecated">deprecated="true"</XDtMethod:ifHasMethodTag>
<XDtClass:pushClass value="<XDtAnt:elementType/>">
<XDtClass:ifIsClassAbstract>abstract="true"</XDtClass:ifIsClassAbstract>>
- <XDtAnt:ifHasAttributes>
- <attributes>
- <XDtAnt:forAllAttributes>
- <attribute name="<XDtMethod:propertyName/>"
type="<XDtParameter:forAllMethodParams><XDtParameter:methodParamType/></XDtParameter:forAllMethodParams>">
- <description><![CDATA[
- <XDtMethod:methodComment no-comment-signs="true"/>
- ]]></description>
- </attribute>
- </XDtAnt:forAllAttributes>
- </attributes>
- </XDtAnt:ifHasAttributes>
</XDtClass:pushClass>
+
<short-description><![CDATA[<XDtAnt:shortMethodDescription/>]]></short-description>
<description>
<![CDATA[<XDtMethod:methodComment no-comment-signs="true"/>]]>
</description>
No revision
No revision
1.1.2.5 +70 -11
jakarta-ant/proposal/xdocs/src/org/apache/tools/ant/xdoclet/TaskTagsHandler.java
Index: TaskTagsHandler.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/xdocs/src/org/apache/tools/ant/xdoclet/TaskTagsHandler.java,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -u -r1.1.2.4 -r1.1.2.5
--- TaskTagsHandler.java 17 Jun 2002 05:46:57 -0000 1.1.2.4
+++ TaskTagsHandler.java 19 Jun 2002 04:34:57 -0000 1.1.2.5
@@ -53,12 +53,11 @@
*/
package org.apache.tools.ant.xdoclet;
-import com.sun.javadoc.ClassDoc;
-import com.sun.javadoc.MethodDoc;
-import com.sun.javadoc.Parameter;
+import com.sun.javadoc.*;
import org.apache.tools.ant.IntrospectionHelper;
import xdoclet.XDocletException;
import xdoclet.XDocletTagSupport;
+import xdoclet.util.TypeConversionUtil;
import xdoclet.tags.AbstractProgramElementTagsHandler;
import java.util.ArrayList;
@@ -222,6 +221,36 @@
return getTaskName(getCurrentClass());
}
+ private static String[] fluffPrefixes = { "set a","set the","sets
a","sets the" };
+
+ public String shortMethodDescription() throws XDocletException {
+ Tag[] tags = getCurrentMethod().firstSentenceTags();
+ String desc = null;
+
+ if( tags != null && tags.length > 0 ) {
+ desc = tags[0].text();
+ }
+
+ if( desc == null || desc.length() == 0 )
+ {
+ desc = "no description";
+ }
+
+ desc = desc.trim();
+ String descLower = desc.toLowerCase();
+ for (int i=0; i < fluffPrefixes.length; i++) {
+ String prefix = fluffPrefixes[i].toLowerCase() + " ";
+ if (descLower.startsWith(prefix)) {
+ desc = desc.substring(prefix.length());
+ break;
+ }
+ }
+
+ desc = desc.substring(0,1).toUpperCase() + desc.substring(1);
+
+ return desc;
+ }
+
/**
* Provides the Ant task name.
*
@@ -286,7 +315,7 @@
try {
is =
IntrospectionHelper.getHelper(Class.forName(cur_class.qualifiedName()));
} catch (ClassNotFoundException e) {
- throw new XDocletException(e.getMessage());
+ throw new XDocletException(e,e.getMessage());
}
// Regroup the attributes, since IntrospectionHelper
@@ -320,7 +349,14 @@
}
String attributeType = method.parameters()[0].typeName();
- if
(!attributeType.equals(attributeTypeMap.getProperty(attributeName))) {
+ String mapAttribute =
attributeTypeMap.getProperty(attributeName);
+ if (mapAttribute == null) {
+ continue;
+ }
+
+ // inner classes are noted with $ in our map, but not
+ // n the parameter type name.
+ if (!attributeType.equals(mapAttribute.replace('$','.'))) {
continue;
}
@@ -392,7 +428,7 @@
continue;
}
- //System.out.println("elementName = " + elementName);
+ System.out.println("elementName = " + elementName);
String elementType = null;
if (adder) {
if (method.parameters().length != 1) {
@@ -407,8 +443,15 @@
continue;
}
- //System.out.println(elementName + " = " + elementType);
- if
(!elementType.equals(elementTypeMap.getProperty(elementName))) {
+ String mapElementType = elementTypeMap.getProperty(elementName);
+ System.out.println("elementType = " + elementType + "
mapElementType = " + mapElementType);
+ if (mapElementType == null) {
+ continue;
+ }
+
+ // inner classes are noted with $ in our map, but not
+ // the parameter type name.
+ if (!elementType.equals(mapElementType.replace('$','.'))) {
continue;
}
@@ -432,16 +475,21 @@
while (cur_class != null) {
// hardcoded to stop when it hits Task, nothing there
// or above that needs to be processed
- if
(cur_class.qualifiedName().equals("org.apache.tools.ant.Task")) {
+ if
(cur_class.qualifiedName().equals("org.apache.tools.ant.Task") ||
+
cur_class.qualifiedName().equals("org.apache.tools.ant.taskdefs.MatchingTask"))
{
break;
}
List curMethods = Arrays.asList(cur_class.methods());
for (int j = 0; j < curMethods.size(); j++) {
MethodDoc method = (MethodDoc) curMethods.get(j);
+ if (isDeprecated(method)) {
+ continue;
+ }
+ String methodName = method.name();
if (method.containingClass() == cur_class) {
- if (already.containsKey(method) == false) {
- already.put(method, method);
+ if (already.containsKey(methodName) == false) {
+ already.put(methodName, method);
methods.add(method);
}
}
@@ -451,6 +499,17 @@
}
return sortMethods(methods);
+ }
+
+ private boolean isDeprecated (MethodDoc method) {
+ Tag[] tags = method.tags();
+ for (int i=0; i < tags.length; i++) {
+ System.out.println("tag = " + tags[i].name());
+ if (tags[i].name().equals("@deprecated")) {
+ return true;
+ }
+ }
+ return false;
}
private MethodDoc[] sortMethods(List methods) {
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>