Converted to X4ODriver language base and prepared for write support.

This commit is contained in:
Willem Cazander 2013-04-06 23:07:06 +02:00
parent 6f4eca935e
commit f2844c61f2
118 changed files with 4370 additions and 2411 deletions

View file

@ -58,7 +58,7 @@ public class EldDocGenerator {
writer.writeOverviewNamespace(basePath, context);
writer.writeOverviewTree(basePath, context);
for (ElementLanguageModule mod:context.getElementLanguageModules()) {
for (ElementLanguageModule mod:context.getLanguage().getElementLanguageModules()) {
writer.writeOverviewModule(basePath, mod);

View file

@ -139,7 +139,7 @@ public class EldDocHtmlWriter {
public void writeIndex(File basePath,ElementLanguage context) throws IOException {
PrintWriter pw = createPrintWriter(basePath,"index.html");
try {
String title = context.getLanguageConfiguration().getLanguage()+" "+context.getLanguageConfiguration().getLanguageVersion()+" ELD";
String title = context.getLanguage().getLanguageName()+" "+context.getLanguage().getLanguageVersion()+" ELD";
printHeader(pw,"Index ("+title+")","");
printPageIndexTitle(pw,title,null,null);
@ -149,7 +149,7 @@ public class EldDocHtmlWriter {
int eleConfigs = 0;
int elements = 0;
int namespaces = 0;
for (ElementLanguageModule mod:context.getElementLanguageModules()) {
for (ElementLanguageModule mod:context.getLanguage().getElementLanguageModules()) {
attrHandlers += mod.getElementAttributeHandlers().size();
bindHandlers += mod.getElementBindingHandlers().size();
interFaces += mod.getElementInterfaces().size();
@ -162,9 +162,9 @@ public class EldDocHtmlWriter {
pw.print("<p>Welcome to the EldDocs</p>");
printTableStart(pw,"Language Stats");
printTableRowSummary(pw,"Language:",""+context.getLanguageConfiguration().getLanguage());
printTableRowSummary(pw,"LanguageVersion:",""+context.getLanguageConfiguration().getLanguageVersion());
printTableRowSummary(pw,"Modules:",""+context.getElementLanguageModules().size());
printTableRowSummary(pw,"Language:",""+context.getLanguage().getLanguageName());
printTableRowSummary(pw,"LanguageVersion:",""+context.getLanguage().getLanguageVersion());
printTableRowSummary(pw,"Modules:",""+context.getLanguage().getElementLanguageModules().size());
printTableRowSummary(pw,"Namespaces:",""+namespaces);
printTableRowSummary(pw,"Elements:",""+elements);
printTableRowSummary(pw,"ElementInterfaces:",""+interFaces);
@ -184,11 +184,11 @@ public class EldDocHtmlWriter {
public void writeOverviewModule(File basePath,ElementLanguage context) throws IOException {
PrintWriter pw = createPrintWriter(basePath,"module-overview.html");
try {
String title = context.getLanguageConfiguration().getLanguage()+" "+context.getLanguageConfiguration().getLanguageVersion()+" ELD";
String title = context.getLanguage().getLanguageName()+" "+context.getLanguage().getLanguageVersion()+" ELD";
printHeader(pw,"Overview Modules ("+title+")","");
printPageIndexTitle(pw,title,null,null);
printTableStart(pw,"Modules");
List<ElementLanguageModule> mods = context.getElementLanguageModules();
List<ElementLanguageModule> mods = context.getLanguage().getElementLanguageModules();
Collections.sort(mods,new ElementLanguageModuleComparator());
for (ElementLanguageModule mod:mods) {
printTableRowOverview(pw,toSafeUri(mod.getId())+"/index.html",mod.getId(),mod.getName());
@ -206,10 +206,10 @@ public class EldDocHtmlWriter {
PrintWriter pw = createPrintWriter(basePath,"namespace-overview.html");
String pathPrefix = "";
try {
String title = context.getLanguageConfiguration().getLanguage()+" "+context.getLanguageConfiguration().getLanguageVersion()+" ELD";
String title = context.getLanguage().getLanguageName()+" "+context.getLanguage().getLanguageVersion()+" ELD";
printHeader(pw,"Overview Namespace("+title+")",pathPrefix);
printPageIndexTitle(pw,title,null,null);
List<ElementLanguageModule> mods = context.getElementLanguageModules();
List<ElementLanguageModule> mods = context.getLanguage().getElementLanguageModules();
Collections.sort(mods,new ElementLanguageModuleComparator());
for (ElementLanguageModule mod:mods) {
printNamespaces(pw,mod.getElementNamespaceContexts(),pathPrefix,mod);
@ -226,12 +226,12 @@ public class EldDocHtmlWriter {
PrintWriter pw = createPrintWriter(basePath,"tree-overview.html");
String pathPrefix = "";
try {
String title = context.getLanguageConfiguration().getLanguage()+" "+context.getLanguageConfiguration().getLanguageVersion()+" ELD";
String title = context.getLanguage().getLanguageName()+" "+context.getLanguage().getLanguageVersion()+" ELD";
printHeader(pw,"Overview Tree ("+title+")",pathPrefix);
printPageIndexTitle(pw,title,null,null);
List<TreeNode> rootNodes = new ArrayList<TreeNode>(3);
for (ElementLanguageModule mod:context.getElementLanguageModules()) {
for (ElementLanguageModule mod:context.getLanguage().getElementLanguageModules()) {
for (ElementNamespaceContext ns:mod.getElementNamespaceContexts()) {
if (ns.getLanguageRoot()!=null && ns.getLanguageRoot()) {
// found language root elements.
@ -298,7 +298,7 @@ public class EldDocHtmlWriter {
if (node.indent>20) {
return result; // hard fail limit
}
for (ElementLanguageModule mod:node.context.getElementLanguageModules()) {
for (ElementLanguageModule mod:node.context.getLanguage().getElementLanguageModules()) {
for (ElementNamespaceContext ns:mod.getElementNamespaceContexts()) {
for (ElementClass ec:ns.getElementClasses()) {
TreeNode n=null;
@ -316,7 +316,7 @@ public class EldDocHtmlWriter {
continue;
}
// Check interfaces of parent , and see if child tag is there.
for (ElementInterface ei:node.context.findElementInterfaces(ec.getObjectClass())) {
for (ElementInterface ei:node.context.getLanguage().findElementInterfaces(ec.getObjectClass())) {
List<String> eiTags = ei.getElementParents(node.namespace.getUri());
if (eiTags!=null && eiTags.contains(node.elementClass.getTag())) {
n = new TreeNode();
@ -333,7 +333,7 @@ public class EldDocHtmlWriter {
if (node.elementClass.getObjectClass()==null) {
continue;
}
List<ElementBindingHandler> binds = node.context.findElementBindingHandlers(node.elementClass.getObjectClass(), ec.getObjectClass());
List<ElementBindingHandler> binds = node.context.getLanguage().findElementBindingHandlers(node.elementClass.getObjectClass(), ec.getObjectClass());
if (binds.isEmpty()==false) {
n = new TreeNode();
n.context=node.context;
@ -370,7 +370,7 @@ public class EldDocHtmlWriter {
private List<TreeNode> findParents(TreeNode node) {
List<TreeNode> result = new ArrayList<TreeNode>(10);
TreeNode n=null;
for (ElementLanguageModule mod:node.context.getElementLanguageModules()) {
for (ElementLanguageModule mod:node.context.getLanguage().getElementLanguageModules()) {
for (ElementNamespaceContext ns:mod.getElementNamespaceContexts()) {
List<String> tags = node.elementClass.getElementParents(ns.getUri());
@ -392,7 +392,7 @@ public class EldDocHtmlWriter {
// Check interfaces of parent , and see if child tag is there.
if (node.elementClass.getObjectClass()!=null) {
for (ElementInterface ei:node.context.findElementInterfaces(node.elementClass.getObjectClass())) {
for (ElementInterface ei:node.context.getLanguage().findElementInterfaces(node.elementClass.getObjectClass())) {
List<String> eiTags = ei.getElementParents(ns.getUri());
if (eiTags!=null && eiTags.contains(ec.getTag())) {
n = new TreeNode();
@ -413,7 +413,7 @@ public class EldDocHtmlWriter {
if (node.elementClass.getObjectClass()==null) {
continue;
}
List<ElementBindingHandler> binds = node.context.findElementBindingHandlers(ec.getObjectClass(),node.elementClass.getObjectClass());
List<ElementBindingHandler> binds = node.context.getLanguage().findElementBindingHandlers(ec.getObjectClass(),node.elementClass.getObjectClass());
if (binds.isEmpty()==false) {
n = new TreeNode();
n.context=node.context;

View file

@ -28,9 +28,8 @@ import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import org.x4o.xml.core.X4OParserSupport;
import org.x4o.xml.core.X4OParserSupportException;
import org.x4o.xml.core.config.X4OLanguageClassLoader;
import org.x4o.xml.X4ODriver;
import org.x4o.xml.X4ODriverManager;
import org.x4o.xml.element.ElementLanguage;
import org.x4o.xml.element.ElementException;
@ -40,21 +39,21 @@ import org.x4o.xml.element.ElementException;
* @author Willem Cazander
* @version 1.0 Aug 22, 2012
*/
public class X4OLanguageEldDocWriter {
public class X4ODocWriterExecutor {
private Class<?> languageParserSupport = null;
private String language = null;
private String languageVersion = null;
private File basePath;
@SuppressWarnings("unchecked")
static public void main(String argu[]) {
X4OLanguageEldDocWriter languageSchema = new X4OLanguageEldDocWriter();
X4ODocWriterExecutor languageSchema = new X4ODocWriterExecutor();
List<String> arguList = Arrays.asList(argu);
Iterator<String> arguIterator = arguList.iterator();
while (arguIterator.hasNext()) {
String arg = arguIterator.next();
if ("-path".equals(arg)) {
if ("-path".equals(arg) || "-p".equals(arg)) {
if (arguIterator.hasNext()==false) {
System.out.println("No argument for -path given.");
System.out.println("No argument for "+arg+" given.");
System.exit(1);
return;
}
@ -67,26 +66,20 @@ public class X4OLanguageEldDocWriter {
languageSchema.setBasePath(schemaBasePath);
continue;
}
if ("-class".equals(arg)) {
if ("-language".equals(arg) || "-l".equals(arg)) {
if (arguIterator.hasNext()==false) {
System.out.println("No argument for -class given.");
System.exit(1);
return;
}
String apiClass = arguIterator.next();
try {
languageSchema.setLanguageParserSupport((Class<X4OParserSupport>) X4OLanguageClassLoader.loadClass(apiClass));
} catch (ClassNotFoundException e) {
System.out.println("Schema api class is not found: "+apiClass);
System.out.println("No argument for "+arg+" given.");
System.exit(1);
return;
}
String languageName = arguIterator.next();
languageSchema.setLanguage(languageName);
continue;
}
}
try {
languageSchema.execute();
} catch (X4OParserSupportException e) {
} catch (ElementException e) {
System.out.println("Error while schema writing: "+e.getMessage());
e.printStackTrace();
System.exit(1);
@ -94,37 +87,41 @@ public class X4OLanguageEldDocWriter {
}
}
public void execute() throws X4OParserSupportException {
try {
// Load the support language context
X4OParserSupport languageSupport = (X4OParserSupport)getLanguageParserSupport().newInstance();
ElementLanguage context = languageSupport.loadElementLanguageSupport();
public void execute() throws ElementException {
X4ODriver<?> driver = X4ODriverManager.getX4ODriver(getLanguage());
ElementLanguage context = driver.createLanguageContext(getLanguageVersion());
// Start doc generator
EldDocGenerator generator = new EldDocGenerator(context);
generator.writeDoc(getBasePath());
} catch (InstantiationException e) {
throw new X4OParserSupportException(e);
} catch (IllegalAccessException e) {
throw new X4OParserSupportException(e);
} catch (ElementException e) {
throw new X4OParserSupportException(e);
}
// Start doc generator
EldDocGenerator generator = new EldDocGenerator(context);
generator.writeDoc(getBasePath());
}
/**
* @return the languageParserSupport
* @return the languageVersion
*/
public Class<?> getLanguageParserSupport() {
return languageParserSupport;
public String getLanguageVersion() {
return languageVersion;
}
/**
* @param languageParserSupport the languageParserSupport to set
* @param languageVersion the languageVersion to set
*/
public void setLanguageParserSupport(Class<?> languageParserSupport) {
this.languageParserSupport = languageParserSupport;
public void setLanguageVersion(String languageVersion) {
this.languageVersion = languageVersion;
}
/**
* @return the language
*/
public String getLanguage() {
return language;
}
/**
* @param language the language to set
*/
public void setLanguage(String language) {
this.language = language;
}
/**

View file

@ -25,11 +25,11 @@ package org.x4o.xml.eld.doc;
import java.io.File;
import org.x4o.xml.eld.EldParserSupport;
import org.x4o.xml.eld.EldParserSupportCore;
import org.x4o.xml.test.TestParserSupport;
import org.x4o.xml.test.swixml.SwiXmlParserSupport2;
import org.x4o.xml.test.swixml.SwiXmlParserSupport3;
import org.x4o.xml.eld.CelDriver;
import org.x4o.xml.eld.EldDriver;
import org.x4o.xml.test.TestDriver;
import org.x4o.xml.test.swixml.SwiXmlDriver;
import junit.framework.TestCase;
@ -54,42 +54,44 @@ public class EldDocTest extends TestCase {
}
public void testCelDoc() throws Exception {
X4OLanguageEldDocWriter writer = new X4OLanguageEldDocWriter();
X4ODocWriterExecutor writer = new X4ODocWriterExecutor();
writer.setBasePath(getTempPath("junit-cel"));
writer.setLanguageParserSupport(EldParserSupportCore.class);
writer.setLanguage(CelDriver.LANGUAGE_NAME);
writer.execute();
}
public void testEldDoc() throws Exception {
X4OLanguageEldDocWriter writer = new X4OLanguageEldDocWriter();
X4ODocWriterExecutor writer = new X4ODocWriterExecutor();
writer.setBasePath(getTempPath("junit-eld"));
writer.setLanguageParserSupport(EldParserSupport.class);
writer.setLanguage(EldDriver.LANGUAGE_NAME);
writer.execute();
}
public void testUnitDoc() throws Exception {
X4OLanguageEldDocWriter writer = new X4OLanguageEldDocWriter();
X4ODocWriterExecutor writer = new X4ODocWriterExecutor();
writer.setBasePath(getTempPath("junit-test"));
writer.setLanguageParserSupport(TestParserSupport.class);
writer.setLanguage(TestDriver.LANGUAGE_NAME);
writer.execute();
}
public void testSwiXml2Doc() throws Exception {
X4OLanguageEldDocWriter writer = new X4OLanguageEldDocWriter();
X4ODocWriterExecutor writer = new X4ODocWriterExecutor();
writer.setBasePath(getTempPath("junit-swixml2"));
writer.setLanguageParserSupport(SwiXmlParserSupport2.class);
writer.setLanguage(SwiXmlDriver.LANGUAGE_NAME);
writer.setLanguageVersion(SwiXmlDriver.LANGUAGE_VERSION_2);
writer.execute();
}
public void testSwiXml3Doc() throws Exception {
X4OLanguageEldDocWriter writer = new X4OLanguageEldDocWriter();
X4ODocWriterExecutor writer = new X4ODocWriterExecutor();
writer.setBasePath(getTempPath("junit-swixml3"));
writer.setLanguageParserSupport(SwiXmlParserSupport3.class);
writer.setLanguage(SwiXmlDriver.LANGUAGE_NAME);
writer.setLanguageVersion(SwiXmlDriver.LANGUAGE_VERSION_3);
writer.execute();
}
public void testEldDocMain() throws Exception {
X4OLanguageEldDocWriter.main(new String[] {"-path",getTempPath("junit-test-main").getAbsolutePath(),"-class",EldParserSupport.class.getName()});
X4ODocWriterExecutor.main(new String[] {"-p",getTempPath("junit-test-main").getAbsolutePath(),"-l",EldDriver.LANGUAGE_NAME});
}
}