[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() + "\">" + "<" + n.getParent().getName() + ">" + "</a>.");
+ sb.append(" Parent element is " + "<a href=\"").append("#ce_" + n.getParent().getParent().getName()
+ + "_" + n.getParent().getName() + "\">" + "<" + n.getParent().getName() + ">" + "</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() + "\">" + "<"+ tn.getName() + ">" + "</a>");
+ sb.append("<a href=\"").append("#ce_" + tn.getParent().getName() + "_"
+ + tn.getName() + "\">" + "<" + tn.getName() + ">" + "</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