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