You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2011/05/22 21:09:35 UTC
svn commit: r1126177 - in /tapestry/tapestry5/trunk:
tapestry-component-report/src/main/java/org/apache/tapestry/mojo/
tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/
Author: hlship
Date: Sun May 22 19:09:35 2011
New Revision: 1126177
URL: http://svn.apache.org/viewvc?rev=1126177&view=rev
Log:
TAP5-1528: Output the remaining parameter columns
Modified:
tapestry/tapestry5/trunk/tapestry-component-report/src/main/java/org/apache/tapestry/mojo/ParametersDoclet.java
tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ClassDescription.java
tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ParameterDescription.java
tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/TapestryDocTaglet.java
Modified: tapestry/tapestry5/trunk/tapestry-component-report/src/main/java/org/apache/tapestry/mojo/ParametersDoclet.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-component-report/src/main/java/org/apache/tapestry/mojo/ParametersDoclet.java?rev=1126177&r1=1126176&r2=1126177&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-component-report/src/main/java/org/apache/tapestry/mojo/ParametersDoclet.java (original)
+++ tapestry/tapestry5/trunk/tapestry-component-report/src/main/java/org/apache/tapestry/mojo/ParametersDoclet.java Sun May 22 19:09:35 2011
@@ -4,7 +4,7 @@
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
-// http://www.apache.org/licenses/LICENSE-2.0
+// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
@@ -59,10 +59,12 @@ public class ParametersDoclet extends Do
private void emitClass(ClassDoc classDoc)
{
- if (!classDoc.isPublic()) return;
+ if (!classDoc.isPublic())
+ return;
// Components must be root classes, not nested classes.
- if (classDoc.containingClass() != null) return;
+ if (classDoc.containingClass() != null)
+ return;
// Check for a no-args public constructor
@@ -77,24 +79,27 @@ public class ParametersDoclet extends Do
}
}
- if (!found) return;
+ if (!found)
+ return;
Map<String, String> annotationValues = findTapestryAnnotation(classDoc, "SupportsInformalParameters");
-
+
boolean deprecated = isDeprecated(classDoc);
println("<class name='%s' super-class='%s' supports-informal-parameters='%s' since='%s' deprecated='%s'>",
- classDoc.qualifiedTypeName(),
- classDoc.superclass().qualifiedTypeName(), annotationValues != null, getSinceTagValue(classDoc), deprecated);
+ classDoc.qualifiedTypeName(), classDoc.superclass().qualifiedTypeName(), annotationValues != null,
+ getSinceTagValue(classDoc), deprecated);
print("<description>");
printDescription(classDoc);
println("</description>", classDoc.commentText());
for (FieldDoc fd : classDoc.fields())
{
- if (fd.isStatic()) continue;
+ if (fd.isStatic())
+ continue;
- if (!fd.isPrivate()) continue;
+ if (!fd.isPrivate())
+ continue;
Map<String, String> parameterAnnotationsValues = findTapestryAnnotation(fd, "Parameter");
@@ -118,21 +123,20 @@ public class ParametersDoclet extends Do
emitEvents(classDoc);
-
println("</class>");
}
-
+
private boolean isDeprecated(ProgramElementDoc classDoc)
{
- return (findAnnotation(classDoc, "java.lang.Deprecated") != null) || (0 < classDoc.tags("deprecated").length);
+ return (findAnnotation(classDoc, "java.lang.Deprecated") != null)
+ || (0 < classDoc.tags("deprecated").length);
}
private void emitEvents(ClassDoc classDoc)
{
for (AnnotationDesc annotation : classDoc.annotations())
{
- if (!annotation.annotationType().qualifiedTypeName().equals(
- "org.apache.tapestry5.annotations.Events"))
+ if (!annotation.annotationType().qualifiedTypeName().equals("org.apache.tapestry5.annotations.Events"))
{
continue;
}
@@ -145,7 +149,6 @@ public class ParametersDoclet extends Do
AnnotationValue annotationValue = pair.value();
AnnotationValue[] values = (AnnotationValue[]) annotationValue.value();
-
for (AnnotationValue eventValue : values)
{
String event = (String) eventValue.value();
@@ -164,28 +167,28 @@ public class ParametersDoclet extends Do
{
String names = get(componentAnnotationValues, "publishParameters", "");
- if (names == null || names.equals("")) return;
+ if (names == null || names.equals(""))
+ return;
String embeddedTypeName = fd.type().qualifiedTypeName();
for (String name : names.split("\\s*,\\s*"))
{
- print("<published-parameter name='%s' component-class='%s'/>",
- name,
- embeddedTypeName);
+ print("<published-parameter name='%s' component-class='%s'/>", name, embeddedTypeName);
}
}
private void emitParameter(FieldDoc fd, Map<String, String> parameterAnnotationValues)
{
String name = parameterAnnotationValues.get("name");
- if (name == null) name = fd.name().replaceAll("^[$_]*", "");
+ if (name == null)
+ name = fd.name().replaceAll("^[$_]*", "");
- print("<parameter name='%s' type='%s' default='%s' required='%s' cache='%s' " +
- "default-prefix='%s' since='%s' deprecated='%s'>",
- name, fd.type().qualifiedTypeName(), get(parameterAnnotationValues, "value", ""),
- get(parameterAnnotationValues, "required", "false"), get(parameterAnnotationValues, "cache", "true"),
- get(parameterAnnotationValues, "defaultPrefix", "prop"), getSinceTagValue(fd), isDeprecated(fd));
+ print("<parameter name='%s' type='%s' default='%s' required='%s' cache='%s' "
+ + "default-prefix='%s' since='%s' deprecated='%s'>", name, fd.type().qualifiedTypeName(),
+ get(parameterAnnotationValues, "value", ""), get(parameterAnnotationValues, "required", "false"),
+ get(parameterAnnotationValues, "cache", "true"),
+ get(parameterAnnotationValues, "defaultPrefix", "prop"), getSinceTagValue(fd), isDeprecated(fd));
// Body of a parameter is the comment text.
@@ -198,7 +201,7 @@ public class ParametersDoclet extends Do
{
return getTagValue(doc, "since");
}
-
+
private String getTagValue(Doc doc, String tagName)
{
Tag[] tags = doc.tags(tagName);
@@ -208,17 +211,18 @@ public class ParametersDoclet extends Do
private String get(Map<String, String> map, String key, String defaultValue)
{
- if (map.containsKey(key)) return map.get(key);
+ if (map.containsKey(key))
+ return map.get(key);
return defaultValue;
}
-
+
private Map<String, String> findTapestryAnnotation(ProgramElementDoc doc, String name)
- {
- return findAnnotation(doc, "org.apache.tapestry5.annotations." + name);
- }
-
- private Map<String, String> findAnnotation(ProgramElementDoc doc, String name)
+ {
+ return findAnnotation(doc, "org.apache.tapestry5.annotations." + name);
+ }
+
+ private Map<String, String> findAnnotation(ProgramElementDoc doc, String name)
{
for (AnnotationDesc annotation : doc.annotations())
{
@@ -273,7 +277,8 @@ public class ParametersDoclet extends Do
continue;
}
- if (seeTag.referencedClassName() != null) builder.append(seeTag.referencedClassName());
+ if (seeTag.referencedClassName() != null)
+ builder.append(seeTag.referencedClassName());
if (seeTag.referencedMemberName() != null)
{
@@ -305,7 +310,8 @@ public class ParametersDoclet extends Do
public static int optionLength(String option)
{
- if (option.equals(OUTPUT_PATH_OPTION)) return 2;
+ if (option.equals(OUTPUT_PATH_OPTION))
+ return 2;
return 0;
}
@@ -314,13 +320,15 @@ public class ParametersDoclet extends Do
{
for (String[] group : options)
{
- if (group[0].equals(OUTPUT_PATH_OPTION)) outputPath = group[1];
+ if (group[0].equals(OUTPUT_PATH_OPTION))
+ outputPath = group[1];
// Do we need to check for other unexpected options?
// TODO: Check for duplicate -o?
}
- if (outputPath == null) reporter.printError(String.format("Usage: javadoc %s path", OUTPUT_PATH_OPTION));
+ if (outputPath == null)
+ reporter.printError(String.format("Usage: javadoc %s path", OUTPUT_PATH_OPTION));
return true;
}
Modified: tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ClassDescription.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ClassDescription.java?rev=1126177&r1=1126176&r2=1126177&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ClassDescription.java (original)
+++ tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ClassDescription.java Sun May 22 19:09:35 2011
@@ -101,7 +101,7 @@ public class ClassDescription
if (name == null)
name = fd.name().replaceAll("^[$_]*", "");
- ParameterDescription pd = new ParameterDescription(name, fd.type().qualifiedTypeName(), get(values,
+ ParameterDescription pd = new ParameterDescription(fd, name, fd.type().qualifiedTypeName(), get(values,
"value", ""), get(values, "defaultPrefix", BindingConstants.PROP), getBoolean(values,
"required", false), getBoolean(values, "allowNull", true), getBoolean(values, "cache", true),
getSinceTagValue(fd), isDeprecated(fd));
@@ -175,10 +175,4 @@ public class ClassDescription
return result;
}
-
- public String getClassName()
- {
- return classDoc.qualifiedName();
- }
-
}
Modified: tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ParameterDescription.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ParameterDescription.java?rev=1126177&r1=1126176&r2=1126177&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ParameterDescription.java (original)
+++ tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ParameterDescription.java Sun May 22 19:09:35 2011
@@ -14,8 +14,18 @@
package org.apache.tapestry5.javadoc;
+import java.io.IOException;
+import java.io.Writer;
+import java.util.regex.Pattern;
+
+import com.sun.javadoc.FieldDoc;
+import com.sun.javadoc.SeeTag;
+import com.sun.javadoc.Tag;
+
public class ParameterDescription
{
+ public final FieldDoc field;
+
public final String name;
public final String type;
@@ -34,9 +44,12 @@ public class ParameterDescription
public final boolean deprecated;
- public ParameterDescription(String name, String type, String defaultValue, String defaultPrefix, boolean required,
- boolean allowNull, boolean cache, String since, boolean deprecated)
+ private static final Pattern STRIPPER = Pattern.compile("(<.*?>|&.*?;)", Pattern.DOTALL);
+
+ public ParameterDescription(FieldDoc fieldDoc, String name, String type, String defaultValue, String defaultPrefix,
+ boolean required, boolean allowNull, boolean cache, String since, boolean deprecated)
{
+ this.field = fieldDoc;
this.name = name;
this.type = type;
this.defaultValue = defaultValue;
@@ -47,4 +60,49 @@ public class ParameterDescription
this.since = since;
this.deprecated = deprecated;
}
+
+ public void writeDescription(Writer writer) throws IOException
+ {
+ StringBuilder builder = new StringBuilder();
+
+ for (Tag tag : field.inlineTags())
+ {
+ if (tag.name().equals("Text"))
+ {
+ builder.append(tag.text());
+ continue;
+ }
+
+ if (tag.name().equals("@link"))
+ {
+ SeeTag seeTag = (SeeTag) tag;
+
+ String label = seeTag.label();
+ if (label != null && !label.equals(""))
+ {
+ builder.append(label);
+ continue;
+ }
+
+ if (seeTag.referencedClassName() != null)
+ builder.append(seeTag.referencedClassName());
+
+ if (seeTag.referencedMemberName() != null)
+ {
+ builder.append("#");
+ builder.append(seeTag.referencedMemberName());
+ }
+ }
+ }
+
+ String text = builder.toString();
+
+ // Fix it up a little.
+
+ // Remove any simple open or close tags found in the text, as well as any XML entities.
+
+ String stripped = STRIPPER.matcher(text).replaceAll("");
+
+ writer.write(stripped);
+ }
}
Modified: tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/TapestryDocTaglet.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/TapestryDocTaglet.java?rev=1126177&r1=1126176&r2=1126177&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/TapestryDocTaglet.java (original)
+++ tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/TapestryDocTaglet.java Sun May 22 19:09:35 2011
@@ -18,6 +18,7 @@ import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
+import java.util.List;
import java.util.Map;
import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
@@ -161,7 +162,7 @@ public class TapestryDocTaglet implement
writer.write("<dt><b>Parameters:</b></dt><dd>");
- writer.write("<table>"
+ writer.write("<table border='1' cellpadding='3' cellspacing='0'>"
+ "<tr><th>Name</th><th>Type</th><th>Flags</th><th>Default</th><th>Default Prefix</th><th>Since</th><th>Description</th></tr>");
for (String name : InternalUtils.sortedKeys(cd.parameters))
@@ -181,7 +182,27 @@ public class TapestryDocTaglet implement
element(writer, "td", pd.name);
element(writer, "td", pd.type);
- writer.write("</tr>");
+ List<String> flags = CollectionFactory.newList();
+
+ if (pd.required)
+ flags.add("Required");
+
+ if (!pd.cache)
+ flags.add("NOT Cached");
+
+ if (!pd.allowNull)
+ flags.add("NOT Allow Null");
+
+ element(writer, "td", InternalUtils.join(flags));
+ element(writer, "td", pd.defaultValue);
+ element(writer, "td", pd.defaultPrefix);
+ element(writer, "td", pd.since);
+
+ writer.write("<td>");
+
+ pd.writeDescription(writer);
+
+ writer.write("</td></tr>");
}
private void writeEvents(ClassDescription cd, Writer writer) throws IOException