Author: hlship
Date: Tue Jun  7 01:23:01 2011
New Revision: 1132851

URL: http://svn.apache.org/viewvc?rev=1132851&view=rev
Log:
TAP5-1528: Show parameters & events inherited from base classes

Modified:
    
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/TapestryDocTaglet.java

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=1132851&r1=1132850&r2=1132851&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
 Tue Jun  7 01:23:01 2011
@@ -43,12 +43,27 @@ public class ClassDescription
      */
     public final Map<String, String> events = 
CollectionFactory.newCaseInsensitiveMap();
 
+    public ClassDescription()
+    {
+        this.classDoc = null;
+    }
+
     public ClassDescription(ClassDoc classDoc, ClassDescriptionSource source)
     {
         this.classDoc = classDoc;
 
         loadEvents();
         loadParameters(source);
+
+        ClassDoc parentDoc = classDoc.superclass();
+
+        if (parentDoc != null)
+        {
+            ClassDescription parentDescription = 
source.getDescription(classDoc.superclass().qualifiedName());
+
+            mergeInto(events, parentDescription.events);
+            mergeInto(parameters, parentDescription.parameters);
+        }
     }
 
     private void loadEvents()
@@ -78,6 +93,18 @@ public class ClassDescription
         }
     }
 
+    private static <K, V> void mergeInto(Map<K, V> target, Map<K, V> source)
+    {
+        for (K key : source.keySet())
+        {
+            if (!target.containsKey(key))
+            {
+                V value = source.get(key);
+                target.put(key, value);
+            }
+        }
+    }
+
     private void loadParameters(ClassDescriptionSource source)
     {
         for (FieldDoc fd : classDoc.fields(false))
@@ -136,6 +163,10 @@ public class ClassDescription
         {
             ClassDescription componentCD = 
source.getDescription(currentClassName);
 
+            if (componentCD.classDoc == null)
+                throw new IllegalArgumentException(String.format("Published 
parameter '%s' from %s not found.", name,
+                        fd.qualifiedName()));
+
             if (componentCD.parameters.containsKey(name)) { return 
componentCD.parameters.get(name); }
 
             currentClassName = componentCD.classDoc.superclass().typeName();

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=1132851&r1=1132850&r2=1132851&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
 Tue Jun  7 01:23:01 2011
@@ -94,8 +94,14 @@ public class TapestryDocTaglet implement
 
         if (result == null)
         {
+            // System.err.printf("*** Search for CD %s ...\n", className);
+
             ClassDoc cd = firstSeen.findClass(className);
-            result = new ClassDescription(cd, this);
+
+            // System.err.printf("CD %s ... %s\n", className, cd == null ? 
"NOT found" : "found");
+
+            result = cd == null ? new ClassDescription() : new 
ClassDescription(cd, this);
+
             classDescriptions.put(className, result);
         }
 


Reply via email to