[infinispan-commits] Infinispan SVN: r1152 - trunk/tools/src/main/java/org/infinispan/tools/doclet/config.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Thu Nov 12 11:54:21 EST 2009


Author: manik.surtani at jboss.com
Date: 2009-11-12 11:54:21 -0500 (Thu, 12 Nov 2009)
New Revision: 1152

Modified:
   trunk/tools/src/main/java/org/infinispan/tools/doclet/config/ConfigHtmlGenerator.java
Log:
Added debug msgs

Modified: trunk/tools/src/main/java/org/infinispan/tools/doclet/config/ConfigHtmlGenerator.java
===================================================================
--- trunk/tools/src/main/java/org/infinispan/tools/doclet/config/ConfigHtmlGenerator.java	2009-11-12 13:56:35 UTC (rev 1151)
+++ trunk/tools/src/main/java/org/infinispan/tools/doclet/config/ConfigHtmlGenerator.java	2009-11-12 16:54:21 UTC (rev 1152)
@@ -1,5 +1,25 @@
 package org.infinispan.tools.doclet.config;
 
+import com.sun.javadoc.ClassDoc;
+import com.sun.javadoc.FieldDoc;
+import com.sun.javadoc.RootDoc;
+import com.sun.javadoc.Tag;
+import com.sun.xml.xsom.XSAttributeDecl;
+import com.sun.xml.xsom.XSFacet;
+import com.sun.xml.xsom.XSRestrictionSimpleType;
+import com.sun.xml.xsom.XSSchemaSet;
+import com.sun.xml.xsom.parser.XSOMParser;
+import org.infinispan.Version;
+import org.infinispan.config.AbstractConfigurationBean;
+import org.infinispan.config.InfinispanConfiguration;
+import org.infinispan.tools.doclet.html.HtmlGenerator;
+import org.infinispan.tools.schema.AbstractTreeWalker;
+import org.infinispan.tools.schema.TreeNode;
+import org.infinispan.tools.schema.XSOMSchemaTreeWalker;
+import org.infinispan.util.ClassFinder;
+import org.infinispan.util.FileLookup;
+import org.infinispan.util.TypedProperties;
+
 import java.io.InputStream;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
@@ -12,44 +32,26 @@
 import java.util.Scanner;
 import java.util.Set;
 
-import org.infinispan.Version;
-import org.infinispan.config.AbstractConfigurationBean;
-import org.infinispan.config.InfinispanConfiguration;
-import org.infinispan.tools.doclet.html.HtmlGenerator;
-import org.infinispan.tools.schema.AbstractTreeWalker;
-import org.infinispan.tools.schema.TreeNode;
-import org.infinispan.tools.schema.XSOMSchemaTreeWalker;
-import org.infinispan.util.ClassFinder;
-import org.infinispan.util.FileLookup;
-import org.infinispan.util.TypedProperties;
-
-import com.sun.javadoc.ClassDoc;
-import com.sun.javadoc.FieldDoc;
-import com.sun.javadoc.RootDoc;
-import com.sun.javadoc.Tag;
-import com.sun.xml.xsom.XSAttributeDecl;
-import com.sun.xml.xsom.XSFacet;
-import com.sun.xml.xsom.XSRestrictionSimpleType;
-import com.sun.xml.xsom.XSSchemaSet;
-import com.sun.xml.xsom.parser.XSOMParser;
-
 /**
  * Infinispan configuration reference guide generator
- * 
+ *
  * @author Vladimir Blagojevic
  * @since 4.0
  */
 @SuppressWarnings("restriction")
 public class ConfigHtmlGenerator extends HtmlGenerator {
-   
+
    private static final String CONFIG_REF = "configRef";
    private static final String CONFIG_PROPERTY_REF = "configPropertyRef";
 
+   private static final int LEVEL_MULT = 3;
+   private static final boolean DEBUG = Boolean.parseBoolean(System.getProperty("infinispan.tools.configdoc.debug", "false"));
+
    String classpath;
    RootDoc rootDoc;
 
    public ConfigHtmlGenerator(String encoding, String title, String bottom, String footer,
-            String header, String metaDescription, List<String> metaKeywords, String classpath) {
+                              String header, String metaDescription, List<String> metaKeywords, String classpath) {
       super(encoding, title, bottom, footer, header, metaDescription, metaKeywords);
       this.classpath = classpath;
 
@@ -65,7 +67,7 @@
 
    protected List<Class<?>> getConfigBeans() throws Exception {
       return ClassFinder.isAssignableFrom(ClassFinder.infinispanClasses(classpath),
-               AbstractConfigurationBean.class);
+                                          AbstractConfigurationBean.class);
    }
 
    protected String generateContents() {
@@ -83,7 +85,7 @@
 
          XMLTreeOutputWalker tw = new XMLTreeOutputWalker(sb);
          FileLookup fl = new FileLookup();
-         InputStream file = fl.lookupFile("schema/infinispan-config-" + Version.getMajorVersion()+ ".xsd");
+         InputStream file = fl.lookupFile("schema/infinispan-config-" + Version.getMajorVersion() + ".xsd");
          XSOMParser reader = new XSOMParser();
          reader.parse(file);
          XSSchemaSet xss = reader.getResult();
@@ -97,22 +99,24 @@
 
          PruneTreeWalker ptw = new PruneTreeWalker("property");
          ptw.postOrderTraverse(root);
-         
+
          sb.append("<div class=\"" + "source" + "\"><pre>");
          // print xml tree into StringBuilder
-         tw.preOrderTraverse(root);         
+         tw.preOrderTraverse(root);
          sb.append("</pre></div>");
-                 
 
+
          for (TreeNode n : root) {
-            
+
             //do not generate element for properties element 
             if (n.getName().equals("properties"))
                continue;
 
+            debug("element = " + n.getName(), 0);
+
             // Name, description, parent and child elements node
             generateHeaderForConfigurationElement(sb, tw, n);
-            
+
             //now attributes
             if (!n.getAttributes().isEmpty()) {
                generateAttributeTableRows(sb, n);
@@ -147,7 +151,7 @@
                      if (n.getName().equalsIgnoreCase(thisNode)) {
                         // parent specified
                         if (parentNode != null
-                                 && parentNode.equalsIgnoreCase(n.getParent().getName())) {
+                              && parentNode.equalsIgnoreCase(n.getParent().getName())) {
                            n.setBeanClass(clazz);
                         } else if (parentNode == null) {
                            n.setBeanClass(clazz);
@@ -161,16 +165,16 @@
    }
 
    private void generatePropertiesTableRows(StringBuilder sb, TreeNode n) {
-      FieldDoc fieldDoc = fieldDocWithTag(n.getBeanClass(),CONFIG_PROPERTY_REF);
+      FieldDoc fieldDoc = fieldDocWithTag(n.getBeanClass(), CONFIG_PROPERTY_REF);
       if (fieldDoc != null) {
          sb.append("\n<table class=\"bodyTable\"> ");
          sb.append("<tr class=\"a\"><th>Property</th><th>Description</th></tr>\n");
          Tag[] tags = fieldDoc.tags(CONFIG_PROPERTY_REF);
          for (Tag t : tags) {
-            Map<String,String> m = parseTag(t.text().trim());
+            Map<String, String> m = parseTag(t.text().trim());
             sb.append("<tr class=\"b\">");
             sb.append("<td>").append(m.get("name")).append("</td>\n");
-            sb.append("<td>").append(m.get("desc")).append("</td>\n");            
+            sb.append("<td>").append(m.get("desc")).append("</td>\n");
             sb.append("</tr>\n");
          }
          sb.append("</table></div>");
@@ -199,34 +203,38 @@
       Set<XSAttributeDecl> attributes = n.getAttributes();
       for (XSAttributeDecl a : attributes) {
          sb.append("<tr class=\"b\">");
-         
+
          //name, type...
          sb.append("<td>").append("<code>" + a.getName() + "</code>").append("</td>\n");
          sb.append("<td>").append("<code>" + a.getType().getName() + "</code>");
-         
+
          boolean isRestricted = false;
          XSRestrictionSimpleType restriction = a.getType().asRestriction();
          Collection<? extends XSFacet> declaredFacets = restriction.getDeclaredFacets();
          for (XSFacet facet : declaredFacets) {
-            if(facet.getName().equalsIgnoreCase("enumeration")){
+            if (facet.getName().equalsIgnoreCase("enumeration")) {
                isRestricted = true;
                break;
-            }            
+            }
          }
+
+         debug ("attribute = " + a.getName() + "(restricted = " + isRestricted + ")", 1);
+
          // restriction on type...
-         if(isRestricted){
+         if (isRestricted) {
             sb.append("* (");
             for (XSFacet facet : declaredFacets) {
                sb.append(facet.getValue().toString() + '|');
-            }            
-            sb.deleteCharAt(sb.length()-1);
-            sb.append(")</td>\n");         
-         } else{
+            }
+            sb.deleteCharAt(sb.length() - 1);
+            sb.append(")</td>\n");
+         } else {
             sb.append("</td>\n");
-         }           
+         }
 
          // if default value specified in annotation use it
          if (a.getDefaultValue() != null) {
+            debug("annotation-defined default = " + a.getDefaultValue(), 2);
             sb.append("<td>").append(a.getDefaultValue().toString()).append("</td>\n");
          }
 
@@ -239,28 +247,41 @@
                defaultValue = fieldValue(field, object);
                if (defaultValue != null) {
                   sb.append("<td>").append(defaultValue.toString()).append("</td>\n");
+                  debug("field-defined default = " + defaultValue, 2);
                } else {
+                  debug("field-defined default is null!", 2);
                   sb.append("<td>").append("null").append("</td>\n");
                }
-            } catch (Exception e) {               
+            } catch (Exception e) {
+               debug("Caught exception!", 2);
+               e.printStackTrace();
                sb.append("<td>").append("N/A").append("</td>\n");
-            } 
+            }
          }
 
          // and finally description
          FieldDoc fieldDoc = findFieldDocRecursively(bean, a.getName(), CONFIG_REF);
          if (fieldDoc != null) {
             Tag[] tags = fieldDoc.tags(CONFIG_REF);
-            Map<String,String> p = parseTag(tags[0].text().trim());            
-            sb.append("<td>").append(p.get("desc")).append("</td>\n");                                         
-         }        
+            Map<String, String> p = parseTag(tags[0].text().trim());
+            sb.append("<td>").append(p.get("desc")).append("</td>\n");
+         }
          sb.append("</tr>\n");
       }
       sb.append("</table></div>");
    }
 
+   private void debug(String s, int level) {
+      if (DEBUG) {
+         StringBuilder sb = new StringBuilder();
+         for (int i = 0; i < level * LEVEL_MULT; i++) sb.append(" ");
+         sb.append("> ").append(s);
+         System.out.println(sb.toString());
+      }
+   }
+
    public Map<String, String> parseTag(String tag) {
-      
+
       //javadoc parser for our tags
       Map<String, String> p = new HashMap<String, String>();
       Scanner sc = new Scanner(tag);
@@ -285,7 +306,7 @@
       }
       return p;
    }
-   
+
    private void generateHeaderForConfigurationElement(StringBuilder sb, XMLTreeOutputWalker tw, TreeNode n) {
       sb.append("\n<a name=\"").append("ce_" + n.getParent().getName() + "_" + n.getName() + "\">" + "</a>");
       sb.append("<div class=\"section\"><h3><a name=\"" + n.getName() + "\"></a>" + n.getName() + "</h3>");
@@ -293,16 +314,16 @@
       Class<?> beanClass = n.getBeanClass();
       //System.out.println("Generating " + n + " bean is " + beanClass);
       ClassDoc classDoc = rootDoc.classNamed(beanClass.getName());
-      Tag[] tags = classDoc.tags(CONFIG_REF);      
+      Tag[] tags = classDoc.tags(CONFIG_REF);
       for (Tag tag : tags) {
          String text = tag.text().trim();
-         Map<String,String> m = parseTag(text);    
-         sb.append(m.get("desc"));                                                   
+         Map<String, String> m = parseTag(text);
+         sb.append(m.get("desc"));
       }
 
       if (n.getParent().getParent() != null) {
-         sb.append(" Parent element is " + "<a href=\"").append("#ce_" + n.getParent().getParent().getName() 
-                  + "_" + n.getParent().getName() + "\">" + "&lt;" + n.getParent().getName() + "&gt;" + "</a>.");
+         sb.append(" Parent element is " + "<a href=\"").append("#ce_" + n.getParent().getParent().getName()
+               + "_" + n.getParent().getName() + "\">" + "&lt;" + n.getParent().getName() + "&gt;" + "</a>.");
       }
 
       if (!n.getChildren().isEmpty()) {
@@ -310,8 +331,8 @@
          int childCount = n.getChildren().size();
          int count = 1;
          for (TreeNode tn : n.getChildren()) {
-            sb.append("<a href=\"").append( "#ce_" + tn.getParent().getName() + "_" 
-                     + tn.getName() + "\">" + "&lt;"+ tn.getName() + "&gt;" + "</a>");
+            sb.append("<a href=\"").append("#ce_" + tn.getParent().getName() + "_"
+                  + tn.getName() + "\">" + "&lt;" + tn.getName() + "&gt;" + "</a>");
             if (count < childCount) {
                sb.append(",");
             } else {
@@ -348,12 +369,12 @@
       for (FieldDoc fd : classDoc.fields()) {
          if (fd.name().equalsIgnoreCase(fieldName)) {
             return fd;
-         }         
+         }
          for (Tag t : fd.tags(tagName)) {
-            Map <String,String> m = parseTag(t.text().trim());
+            Map<String, String> m = parseTag(t.text().trim());
             if (m.containsKey("name")) {
                String value = m.get("name").trim();
-               if(fieldName.equalsIgnoreCase(value)){
+               if (fieldName.equalsIgnoreCase(value)) {
                   return fd;
                }
             }



More information about the infinispan-commits mailing list