package test.wsdd;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.w3c.dom.Document;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;
/**
* Make sure that WSDD.xsd is up-to-date
*/
public class TestXSD extends TestCase {
static final String JAXP_SCHEMA_LANGUAGE =
"http://java.sun.com/xml/jaxp/properties/schemaLanguage";
static final String W3C_XML_SCHEMA =
"http://www.w3.org/2001/XMLSchema";
static final String JAXP_SCHEMA_SOURCE =
"http://java.sun.com/xml/jaxp/properties/schemaSource";
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
public TestXSD(String name) {
super(name);
}
public static Test suite() {
return new TestSuite(TestXSD.class);
}
protected void setUp() throws Exception {
String schemaSource = "wsdd/WSDD.xsd";
// Set namespaceAware to true to get a DOM Level 2 tree with nodes
// containing namesapce information. This is necessary because the
// default value from JAXP 1.0 was defined to be false.
dbf.setNamespaceAware(true);
dbf.setValidating(true);
dbf.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
// Specify other factory configuration settings
File f = new File(schemaSource);
dbf.setAttribute(JAXP_SCHEMA_SOURCE, f.toURL().toExternalForm());
}
public static void main(String[] args) throws Exception {
TestXSD tester = new TestXSD("TestXSD");
tester.setUp();
tester.testWSDD();
}
public void testWSDD() throws Exception {
File f = new File(".");
recurse(f);
}
private void recurse(File f) throws Exception {
if (f.isDirectory()) {
File[] files = f.listFiles();
for (int i = 0; i < files.length; i++) {
recurse(files[i]);
}
} else if (f.getName().endsWith(".wsdd")) {
checkValidity(f);
}
}
private void checkValidity(File f) throws Exception {
System.out.println("========== Checking " + f.getAbsolutePath() + "=================");
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(f);
assertTrue(doc != null);
}
}
|