|
What this is
Other links
The source code
/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun
* Microsystems, Inc. All Rights Reserved.
*/
import java.io.*;
import java.net.URL;
import java.util.*;
import junit.framework.*;
import org.netbeans.junit.*;
import org.netbeans.modules.schema2beans.*;
import org.netbeans.modules.schema2beansdev.*;
import org.netbeans.modules.schema2beansdev.beangraph.*;
public class TestMain extends NbTestCase {
public TestMain(java.lang.String testName) {
super(testName);
}
public static void main(java.lang.String[] args) {
junit.textui.TestRunner.run(suite());
}
public static Test suite() {
TestSuite suite = new NbTestSuite(TestMain.class);
return suite;
}
public void testPurchaseOrder() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestPurchaseOrder", true, true, true);
}
public void testInvoice() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
config.setAttributesAsProperties(true);
config.setGenerateValidate(true);
config.setProcessComments(true);
config.setProcessDocType(true);
BeanGraph bg = new BeanGraph();
SchemaTypeMappingType stm = new SchemaTypeMappingType();
stm.setSchemaTypeNamespace("http://www.w3.org/2001/XMLSchema");
stm.setSchemaTypeName("integer");
stm.setJavaType("int");
bg.addSchemaTypeMapping(stm);
config.addReadBeanGraphs(bg);
generalTest("TestInvoice", true, config);
}
public void testBookXMLSchema() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestBookXMLSchema", true, false, false);
}
public void testBook() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestBook");
}
public void testEvents() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestEvents");
}
public void testMerge() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestMerge");
}
public void testAttr() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestAttr", false, false, true);
}
public void testMdd() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestMdd");
}
public void testValid() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestValid");
}
public void testFind() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestFind");
}
public void testVeto() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestVeto");
}
public void testContrivedApp() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestContrivedApp");
}
public void testEncoding() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestEncoding");
}
public void testExceptions() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestExceptions");
}
public void testEmpty() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestEmpty");
}
public void testNamespace() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
config.setAttributesAsProperties(true);
config.setRemoveUnreferencedNodes(true);
config.setGenerateValidate(true);
generalTest("TestNamespace", true, config);
}
public void testExtensionSample() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestExtensionSample", true, true, true);
}
public void testExtension() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
config.setAttributesAsProperties(true);
config.setGenerateValidate(true);
config.setProcessComments(true);
config.setProcessDocType(true);
config.setGenerateCommonInterface("CommonBean");
generalTest("TestExtension", true, config);
}
public void testWebApp() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
config.setAttributesAsProperties(true);
config.setGenerateCommonInterface("CommonBean");
config.setRemoveUnreferencedNodes(true);
generalTest("TestWebApp", true, config);
}
public void testWebAppDelegator() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
config.buyPremium();
config.setGenerateDelegator(true);
config.setGenerateHasChanged(true);
generalTest("TestWebAppDelegator", true, config);
}
public void testWebAppDelegatorBaseBean() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
config.buyPremium();
config.setGenerateDelegator(true);
config.setOutputType(GenBeans.Config.OUTPUT_TRADITIONAL_BASEBEAN);
generalTest("TestWebAppDelegatorBaseBean", true, config);
}
public void testFinalWebApp() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
config.setAttributesAsProperties(true);
config.setGenerateCommonInterface("CommonBean");
config.setGenerateValidate(true);
config.setProcessComments(true);
config.setProcessDocType(true);
config.addReadBeanGraphFiles(new File(dataDir, "TestFinalWebAppBeanGraph.xml"));
generalTest("TestFinalWebApp", true, config);
}
public void testPositions() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
config.buyPremium();
config.setKeepElementPositions(true);
generalTest("TestPositions", false, config);
}
public void testOr() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
config.setGenerateValidate(true);
generalTest("TestOr", false, config);
}
public void testGroupUnbounded() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
config.setAttributesAsProperties(true);
config.setGenerateValidate(true);
generalTest("TestGroupUnbounded", true, config);
}
public void testApplication1_4() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestApplication1_4", true, true, true);
}
public void testMergeExtendBaseBean() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
config.setAttributesAsProperties(true);
config.setGenerateValidate(true);
config.setGenerateCommonInterface("CommonBean");
config.setExtendBaseBean(true);
config.setUseInterfaces(true);
config.setDumpToString(true);
generalTest("TestMergeExtendBaseBean", false, config);
}
public void testBeanWrapper() throws IOException, Schema2BeansException, InterruptedException {
String testName = "TestBeanWrapper";
try {
System.out.println("Starting "+testName);
File workDir = getWorkDir();
System.out.println("workDir="+workDir.toString());
File schemaFile;
File beanTreeFile = File.createTempFile("beanTree", "txt");
InputStream dtdIn;
InputStream mddIn;
GenBeans.Config config = new GenBeans.Config();
config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
config.setAttributesAsProperties(true);
config.setGenerateCommonInterface("CommonBean");
config.setGenerateInterfaces(true);
config.setGeneratePropertyEvents(true);
config.setAuto(true);
config.setStandalone(false);
schemaFile = new File(dataDir, "simple.xsd");
dtdIn = new FileInputStream(schemaFile);
config.setFileIn(dtdIn);
config.setInputURI(schemaFile.toString());
config.setMddIn(null);
config.setSchemaType(GenBeans.Config.XML_SCHEMA);
config.setRootDir(new File(workDir.toString()));
String simpleBeanGraph = dataDir + File.pathSeparator + "simpleBeanGraph.xml";
config.setWriteBeanGraphFile(new File(simpleBeanGraph));
ref("Calling GenBeans.doIt");
GenBeans.doIt(config);
beanTreeFile.delete();
config = new GenBeans.Config();
config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
config.setAttributesAsProperties(true);
config.setGenerateCommonInterface("CommonBean");
config.setGenerateInterfaces(true);
config.setGeneratePropertyEvents(true);
config.setAuto(true);
config.setStandalone(false);
schemaFile = new File(dataDir, "TestNamespace.xsd");
dtdIn = new FileInputStream(schemaFile);
config.setFileIn(dtdIn);
config.setInputURI(schemaFile.toString());
//mddIn = new FileInputStream(new File(dataDir, "TestBeanWrapper.mdd"));
//config.setMddIn(mddIn);
config.setSchemaType(GenBeans.Config.XML_SCHEMA);
config.setRootDir(workDir);
config.setDumpBeanTree(beanTreeFile);
config.addReadBeanGraphFiles(new File(simpleBeanGraph));
ref("Calling GenBeans.doIt");
GenBeans.doIt(config);
ref("Bean Tree:");
ref(beanTreeFile);
ref("Compiling");
String cmd = "javac -classpath "+workDir.toString()+File.pathSeparator+dataDir.toString()+File.pathSeparator+theClassPath+" "+dataDir.toString()+"/"+testName+".java";
int result = runCommand(cmd);
ref("Finished compiling: "+result);
cmd = "java -classpath "+workDir.toString()+File.pathSeparator+dataDir.toString()+File.pathSeparator+theClassPath+" "+testName+" "+dataDir.toString()+"/";
result = runCommand(cmd);
ref("Finished running "+testName+": "+result);
System.out.println("Finished.\n");
} catch (Exception e) {
ref(e.getMessage());
e.printStackTrace();
}
}
public void generalTest(String testName) throws IOException, Schema2BeansException, InterruptedException {
generalTest(testName, false, false, false);
}
public void generalTest(String testName, boolean xmlSchema,
boolean pureJavaBeans, boolean attrProp) throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
if (pureJavaBeans) {
config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
}
if (attrProp) {
config.setAttributesAsProperties(true);
}
generalTest(testName, xmlSchema, config);
}
public void generalTest(String testName, boolean xmlSchema,
GenBeans.Config config) throws IOException, Schema2BeansException, InterruptedException {
String testOnly = System.getProperty("TestMain.testOnly");
if (testOnly != null && !testOnly.equals(testName))
return;
try {
System.out.println("Starting "+testName);
File workDir = getWorkDir();
//File diffCommandFile = new File(workDir, "diffCommand");
//Writer cmdOut = new FileWriter(diffCommandFile);
//cmdOut.write("ediff "+workDir.toString());
//cmdOut.close();
config.setAuto(true);
config.setStandalone(false);
//config.setTraceParse(true);
//config.setTraceGen(true);
//config.setThrowErrors(true);
System.out.println("workDir="+workDir.toString());
File schemaFile;
if (xmlSchema) {
schemaFile = new File(dataDir, testName+".xsd");
InputStream dtdIn = new FileInputStream(schemaFile);
config.setFileIn(dtdIn);
config.setSchemaType(GenBeans.Config.XML_SCHEMA);
} else {
schemaFile = new File(dataDir, testName+".dtd");
InputStream dtdIn = new FileInputStream(schemaFile);
config.setFileIn(dtdIn);
config.setSchemaType(GenBeans.Config.DTD);
}
try {
InputStream mddIn = new FileInputStream(new File(dataDir, testName+".mdd"));
System.out.println("Found mdd file");
config.setMddIn(mddIn);
} catch (FileNotFoundException e) {
// It's okay if there is no mdd file present
}
config.setInputURI(schemaFile.toString());
config.setRootDir(workDir);
//config.setPackagePath();
//config.setMessageOut(getRef());
//if (testName.equals("TestBookXMLSchema")) {
// config.setTraceParse(true);
// config.setTraceGen(true);
//}
File beanTreeFile = File.createTempFile("beanTree", "txt");
config.setDumpBeanTree(beanTreeFile);
ref("Calling GenBeans.doIt");
GenBeans.doIt(config);
ref("Bean Tree:");
ref(beanTreeFile);
beanTreeFile.delete();
ref("Compiling");
String cmd = "javac -classpath "+workDir.toString()+File.pathSeparator+dataDir.toString()+File.pathSeparator+theClassPath+" "+dataDir.toString()+"/"+testName+".java";
int result = runCommand(cmd);
ref("Finished compiling: "+result);
//runCommand("ls -l "+dataDir);
cmd = "java -classpath "+workDir.toString()+File.pathSeparator+dataDir.toString()+File.pathSeparator+theClassPath+" "+testName+" "+dataDir.toString()+"/";
result = runCommand(cmd);
ref("Finished running "+testName+": "+result);
System.out.println("Finished.\n");
} catch (Exception e) {
ref(e.getMessage());
e.printStackTrace();
}
}
private int runCommand(String cmd) throws java.io.IOException, java.lang.InterruptedException {
System.out.println(cmd);
Process proc = Runtime.getRuntime().exec(cmd);
Writer out = new BufferedWriter(new OutputStreamWriter(getRef(), "UTF-8"));
Thread outThread = new Thread(new InputMonitor("out: ", proc.getInputStream(), out));
outThread.start();
Thread errThread = new Thread(new InputMonitor("err: ", proc.getErrorStream(), out));
errThread.start();
int result = proc.waitFor();
out.flush();
// Wait upto 32s for that thread to finish before going on.
outThread.join(32000);
errThread.join(32000);
return result;
}
static class InputMonitor implements Runnable {
private String prefix;
private InputStream is;
private Writer out;
public InputMonitor(String prefix, InputStream is, Writer out) {
this.prefix = prefix;
this.is = is;
this.out = out;
}
public void run() {
try {
int c;
boolean freshLine = true;
while ((c = is.read()) != -1) {
if (freshLine) {
out.write(prefix);
freshLine = false;
}
char ch = (char)c;
if (ch == '\n')
freshLine = true;
out.write(ch);
}
out.flush();
} catch (java.io.IOException e) {
try {
out.write(e.getMessage());
} catch (java.io.IOException e2) {
// try only once.
}
}
}
}
protected File dataDir;
protected String theClassPath = "";
protected void setUp() {
String packageName = "";
if (null != getClass().getPackage())
packageName = getClass().getPackage().getName();
// when running this code inside IDE, getResource method returns URL in NBFS
// format, so we need to convert it to filename
// when running this code inside code mode, nothing happens
String dataDirName = NbTestCase.convertNBFSURL(TestMain.class.getResource("data"));
dataDir = new File(dataDirName);
System.out.println("dataDirName="+dataDirName);
theClassPath += classPathEntryFromURL(org.netbeans.modules.schema2beans.BaseBean.class);
theClassPath += File.pathSeparator + classPathEntryFromURL(org.openide.filesystems.FileObject.class);
//theClassPath += File.pathSeparator + classPathEntryFromURL(javax.xml.namespace.QName.class);
//theClassPath += File.pathSeparator + classPathEntryFromURL(org.w3c.dom.Node.class);
//theClassPath += File.pathSeparator + classPathEntryFromURL(javax.xml.parsers.DocumentBuilderFactory.newInstance().getClass());
//theClassPath += File.pathSeparator + classPathEntryFromURL(org.w3c.dom.ranges.DocumentRange.class);
System.out.println("classpath="+theClassPath);
}
private String classPathEntryFromURL(Class cls) {
String shortName = cls.getName().substring(1+cls.getName().lastIndexOf('.'));
URL url = cls.getResource(shortName + ".class");
String file = url.getFile();
if (url.getProtocol().equals("jar")) {
// example: file = 'jar:/usr/local/j2sdkee1.3.1/lib/j2ee.jar!/org/w3c/dom/Node.class'
String jarFile = file.substring(file.indexOf(':')+1);
jarFile = jarFile.substring(0, jarFile.indexOf('!'));
return jarFile;
} else if (url.getProtocol().equals("file")) {
// example: file='/home/cliffwd/cvs/dublin/nb_all/schema2beans/rt/src/org/netbeans/modules/schema2beans/GenBeans.class'
String result = file.substring(0, file.length() - cls.getName().length() - 6);
return result;
} else {
return file;
}
}
protected void tearDown() {
compareReferenceFiles();
}
public void ref(File f) throws IOException {
Reader r = new FileReader(f);
char buf[] = new char[1024];
StringBuffer s = new StringBuffer();
int len;
while ((len = r.read(buf, 0, 1024)) > 0) {
s.append(buf, 0, len);
}
r.close();
ref(s.toString());
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.