You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ek...@apache.org on 2005/10/25 18:29:28 UTC
svn commit: r328405 - in /beehive/trunk/netui/src/testRecorder: ./
org/apache/beehive/netui/tools/testrecorder/shared/schemas/
org/apache/beehive/netui/tools/testrecorder/shared/xmlbeans/ schema/
Author: ekoneil
Date: Tue Oct 25 09:29:09 2005
New Revision: 328405
URL: http://svn.apache.org/viewcvs?rev=328405&view=rev
Log:
Move the test recorder XSDs that are no longer XMLBeans and migrate the testRecorderWebapps.xsd file to DOM parsing / validation.
BB: self
Test: NetUI DRT pass
Added:
beehive/trunk/netui/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/schemas/
beehive/trunk/netui/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/schemas/testRecorderDefaultConfig.xsd
- copied unchanged from r328368, beehive/trunk/netui/src/testRecorder/schema/testRecorderDefaultConfig.xsd
beehive/trunk/netui/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/schemas/testRecorderServer.xsd
- copied unchanged from r328368, beehive/trunk/netui/src/testRecorder/schema/testRecorderServer.xsd
beehive/trunk/netui/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/schemas/testRecorderWebapps.xsd
- copied, changed from r328368, beehive/trunk/netui/src/testRecorder/schema/testRecorderWebapps.xsd
Removed:
beehive/trunk/netui/src/testRecorder/schema/testRecorderDefaultConfig.xsd
beehive/trunk/netui/src/testRecorder/schema/testRecorderServer.xsd
beehive/trunk/netui/src/testRecorder/schema/testRecorderWebapps.xsd
Modified:
beehive/trunk/netui/src/testRecorder/build.xml
beehive/trunk/netui/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/xmlbeans/XMLHelper.java
beehive/trunk/netui/src/testRecorder/schema/testRecorderTests.xsd
Modified: beehive/trunk/netui/src/testRecorder/build.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/testRecorder/build.xml?rev=328405&r1=328404&r2=328405&view=diff
==============================================================================
--- beehive/trunk/netui/src/testRecorder/build.xml (original)
+++ beehive/trunk/netui/src/testRecorder/build.xml Tue Oct 25 09:29:09 2005
@@ -42,6 +42,10 @@
<include name="**/*.java"/>
</javac>
+ <copy todir="${module.classes.dir}">
+ <fileset dir="${module.dir}" includes="org/**/*.xsd"/>
+ </copy>
+
<copy todir="${module.classes.dir}/org/apache/beehive/netui/tools/testrecorder/shared/schemas">
<fileset dir="${module.dir}/schema"/>
</copy>
Copied: beehive/trunk/netui/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/schemas/testRecorderWebapps.xsd (from r328368, beehive/trunk/netui/src/testRecorder/schema/testRecorderWebapps.xsd)
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/schemas/testRecorderWebapps.xsd?p2=beehive/trunk/netui/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/schemas/testRecorderWebapps.xsd&p1=beehive/trunk/netui/src/testRecorder/schema/testRecorderWebapps.xsd&r1=328368&r2=328405&rev=328405&view=diff
==============================================================================
--- beehive/trunk/netui/src/testRecorder/schema/testRecorderWebapps.xsd (original)
+++ beehive/trunk/netui/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/schemas/testRecorderWebapps.xsd Tue Oct 25 09:29:09 2005
@@ -45,4 +45,10 @@
</xs:sequence>
</xs:complexType>
+ <xs:simpleType name="nonZeroLengthString">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+
</xs:schema>
Modified: beehive/trunk/netui/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/xmlbeans/XMLHelper.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/xmlbeans/XMLHelper.java?rev=328405&r1=328404&r2=328405&view=diff
==============================================================================
--- beehive/trunk/netui/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/xmlbeans/XMLHelper.java (original)
+++ beehive/trunk/netui/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/xmlbeans/XMLHelper.java Tue Oct 25 09:29:09 2005
@@ -32,8 +32,28 @@
import org.apache.beehive.netui.tools.testrecorder.shared.util.StringHelper;
import org.apache.beehive.netui.tools.testrecorder.shared.util.DomUtils;
-import org.apache.beehive.netui.tools.testrecorder.shared.config.*;
-import org.apache.beehive.netui.tools.testrecorder.shared.*;
+import org.apache.beehive.netui.tools.testrecorder.shared.Logger;
+import org.apache.beehive.netui.tools.testrecorder.shared.Constants;
+import org.apache.beehive.netui.tools.testrecorder.shared.RecordSessionBean;
+import org.apache.beehive.netui.tools.testrecorder.shared.SessionXMLException;
+import org.apache.beehive.netui.tools.testrecorder.shared.RequestData;
+import org.apache.beehive.netui.tools.testrecorder.shared.ResponseData;
+import org.apache.beehive.netui.tools.testrecorder.shared.TestResults;
+import org.apache.beehive.netui.tools.testrecorder.shared.PlaybackSessionBean;
+import org.apache.beehive.netui.tools.testrecorder.shared.SessionBean;
+import org.apache.beehive.netui.tools.testrecorder.shared.NVPair;
+import org.apache.beehive.netui.tools.testrecorder.shared.config.ServerDefinition;
+import org.apache.beehive.netui.tools.testrecorder.shared.config.WebappDefinition;
+import org.apache.beehive.netui.tools.testrecorder.shared.config.ConfigException;
+import org.apache.beehive.netui.tools.testrecorder.shared.config.RuntimeConfigException;
+import org.apache.beehive.netui.tools.testrecorder.shared.config.TestDefinitions;
+import org.apache.beehive.netui.tools.testrecorder.shared.config.Config;
+import org.apache.beehive.netui.tools.testrecorder.shared.config.Webapps;
+import org.apache.beehive.netui.tools.testrecorder.shared.config.ServerConfig;
+import org.apache.beehive.netui.tools.testrecorder.shared.config.WebappConfig;
+import org.apache.beehive.netui.tools.testrecorder.shared.config.Categories;
+import org.apache.beehive.netui.tools.testrecorder.shared.config.Category;
+import org.apache.beehive.netui.tools.testrecorder.shared.config.TestDefinition;
import org.apache.beehive.netui.tools.testrecorder.x2004.*;
import org.apache.beehive.netui.tools.testrecorder.x2004.TestType;
import org.apache.beehive.netui.tools.testrecorder.x2004.diffsession.RecorderDiffDocument;
@@ -279,7 +299,8 @@
return list;
}
- public static void createRecordFile(File recordFile, RecordSessionBean bean) throws IOException {
+ public static void createRecordFile(File recordFile, RecordSessionBean bean)
+ throws IOException {
XmlOptions xmlOptions = new XmlOptions();
xmlOptions.setSavePrettyPrint();
xmlOptions.setSavePrettyPrintIndent(3);
@@ -287,7 +308,8 @@
doc.save(recordFile, xmlOptions);
}
- public static void createPlaybackFile(File playbackFile, PlaybackSessionBean bean) throws IOException {
+ public static void createPlaybackFile(File playbackFile, PlaybackSessionBean bean)
+ throws IOException {
XmlOptions xmlOptions = new XmlOptions();
xmlOptions.setSavePrettyPrint();
xmlOptions.setSavePrettyPrintIndent(3);
@@ -310,7 +332,8 @@
doc.save(playbackFile, xmlOptions);
}
- public static void createDiffFile(File diffFile, PlaybackSessionBean bean) throws IOException {
+ public static void createDiffFile(File diffFile, PlaybackSessionBean bean)
+ throws IOException {
XmlOptions xmlOptions = new XmlOptions();
xmlOptions.setSavePrettyPrint();
xmlOptions.setSavePrettyPrintIndent(3);
@@ -342,8 +365,7 @@
doc.save(diffFile, xmlOptions);
}
- private static RecorderSessionDocument createRecorderSessionDocument(RecordSessionBean bean,
- XmlOptions options) {
+ private static RecorderSessionDocument createRecorderSessionDocument(RecordSessionBean bean, XmlOptions options) {
RecorderSessionDocument doc = createRecorderSessionDocument((SessionBean) bean, options);
RecorderSessionDocument.RecorderSession session = doc.getRecorderSession();
session.setTestCount(bean.getTestCount());
@@ -442,21 +464,7 @@
if (is == null)
throw new RuntimeConfigException("ERROR: unable to obtain the resource stream for resource( " + Constants.WEBAPPS_FILE + " )");
- Webapps webapps = null;
- try {
- webapps = XMLHelper.getWebapps(is, Constants.WEBAPPS_FILE, config);
- }
- catch (ConfigException e) {
- throw new RuntimeConfigException(e.getMessage(), e);
- }
- catch (IOException e) {
- LOGGER.fatal("ERROR: encountered IOException processing resource( " + Constants.WEBAPPS_FILE + " )", e);
- throw new RuntimeConfigException("ERROR: encountered IOException processing resource( " +
- Constants.WEBAPPS_FILE + " ), message( " + e.getMessage(), e);
- }
- finally {
- try {is.close();} catch (IOException ignore) {}
- }
+ Webapps webapps = XMLHelper.getWebapps(is, Constants.WEBAPPS_FILE, config);
if (LOGGER.isInfoEnabled())
LOGGER.info("webapps( " + webapps + " )");
@@ -468,7 +476,9 @@
}
TestDefinitions testDefinitions = null;
try {
- testDefinitions = getTestDefinitionsInstance(is, Constants.TESTS_FILE, webapps,
+ testDefinitions = getTestDefinitionsInstance(is,
+ Constants.TESTS_FILE,
+ webapps,
config.getBaseDirectory().getAbsolutePath());
}
catch (ConfigException e) {
@@ -547,68 +557,112 @@
return config;
}
- public static Webapps getWebapps(InputStream is, String resourceIdentifier, Config config)
- throws ConfigException, IOException {
- ServerDocument doc = null;
+ public static Webapps getWebapps(final InputStream xmlInputStream, final String xmlResourcePath, Config config) {
+
+ Document document = null;
+ final String xsdResourcePath = Constants.SCHEMA_LOCATION + "/" + Constants.WEBAPPS_SCHEMA_NAME;
+ InputStream xsdInputStream = XMLHelper.class.getClassLoader().getResourceAsStream(xsdResourcePath);
try {
- XmlOptions loadOptions = new XmlOptions();
- loadOptions.setLoadLineNumbers();
- doc = ServerDocument.Factory.parse(is, loadOptions);
- }
- catch (XmlException e) {
- LOGGER.fatal("test recorder parse error", e);
- ConfigException ce = new ConfigException("ERROR: failed parsing test recorder webapp configuration XML, file( "
- + resourceIdentifier + " )", e);
- LOGGER.fatal(ce);
- throw ce;
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ dbf.setValidating(true);
+ dbf.setNamespaceAware(true);
+ dbf.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
+ dbf.setAttribute(JAXP_SCHEMA_SOURCE, xsdInputStream);
+
+ DocumentBuilder db = dbf.newDocumentBuilder();
+ db.setErrorHandler(new ErrorHandler() {
+ public void warning(SAXParseException exception) {
+ if(LOGGER.isInfoEnabled())
+ LOGGER.info("Validation warning validating config file \"" + xmlResourcePath +
+ "\" against XML Schema \"" + xsdResourcePath);
+ }
+
+ public void error(SAXParseException exception) {
+ throw new IllegalStateException("Validation errors occurred parsing the config file \"" +
+ xmlResourcePath + "\". Cause: " + exception, exception);
+ }
+
+ public void fatalError(SAXParseException exception) {
+ throw new IllegalStateException("Validation errors occurred parsing the config file \"" +
+ xmlResourcePath + "\". Cause: " + exception, exception);
+ }
+ });
+
+ db.setEntityResolver(new EntityResolver() {
+ public InputSource resolveEntity(String publicId, String systemId) {
+ if(systemId.endsWith(Constants.SERVER_SCHEMA_NAME)) {
+ InputStream inputStream = XMLHelper.class.getClassLoader().getResourceAsStream(xsdResourcePath);
+ return new InputSource(inputStream);
+ }
+ else return null;
+ }
+ });
+
+ document = db.parse(xmlInputStream);
}
- finally {
- if (is != null)
- is.close();
+ catch(Exception e) {
+ assert e instanceof ParserConfigurationException;
+ throw new IllegalStateException("Exception occurred parsing document. Cause: " + e, e);
}
- assert doc != null;
-
- validate(doc, resourceIdentifier,
- "ERROR: test recorder webapp config document is not valid against the schema");
+ Element elem = document.getDocumentElement();
+ String name = DomUtils.getChildElementText(document.getDocumentElement(), "name");
+ String hostname = DomUtils.getChildElementText(document.getDocumentElement(), "hostname");
+ String portString = DomUtils.getChildElementText(document.getDocumentElement(), "port");
+ int port = Integer.parseInt(portString);
- ServerDocument.Server serverXML = doc.getServer();
- ServerConfig server = new ServerConfig(serverXML.getName(), serverXML.getHostname(), serverXML.getPort());
+ ServerConfig server = new ServerConfig(name, hostname, port);
- Config defaultConfig = config;
- WebappType[] webappTypes = serverXML.getWebapps().getWebappArray();
ArrayList webappList = new ArrayList();
- for (int i = 0; i < webappTypes.length; i++) {
- WebappType webappType = webappTypes[i];
+ Config defaultConfig = config;
+ elem = DomUtils.getChildElementByName(elem, "webapps");
+ NodeList webappElements = elem.getElementsByTagName("webapp");
+ for(int i = 0; i < webappElements.getLength(); i++) {
+ Element webappElem = (Element)webappElements.item(i);
Config webappConfig = null;
- if (webappType.getOverrideDefaultConfig() == null)
+ Element overrideDefaultConfig = DomUtils.getChildElementByName(webappElem, "overrideDefaultConfig");
+ if (overrideDefaultConfig == null)
webappConfig = defaultConfig;
else {
String[] suffixes = null;
String servletURI = null;
- if (webappType.getOverrideDefaultConfig().getSuffixList() != null) {
- suffixes = webappType.getOverrideDefaultConfig().getSuffixList().getSuffixArray();
- servletURI = webappType.getOverrideDefaultConfig().getServletURI();
+ Element suffixListElem = DomUtils.getChildElementByName(overrideDefaultConfig, "suffixListElem");
+
+ if (suffixListElem != null && suffixListElem.getElementsByTagName("suffix").getLength() > 0) {
+ NodeList suffixList = suffixListElem.getElementsByTagName("suffix");
+ suffixes = new String[suffixList.getLength()];
+ for(int j = 0; j < suffixes.length; j++) {
+ suffixes[j] = DomUtils.getElementText((Element)suffixList.item(i));
+ }
+ servletURI = DomUtils.getChildElementText(overrideDefaultConfig, "servletURI");
}
+
webappConfig = new Config(suffixes, servletURI, defaultConfig.getBaseDirectory().getAbsolutePath());
}
- WebappConfig webapp = new WebappConfig(webappType.getName().trim(),
- webappType.getDescription().trim(),
- server,
- webappType.getTestMode(),
- webappType.getContextRoot().trim(),
- webappType.getTestDefinitionsDirectory().trim(),
- webappConfig);
+ String testModeString = DomUtils.getChildElementText(webappElem, "testMode");
+ boolean testMode = Boolean.parseBoolean(testModeString);
+
+ WebappConfig webapp = new WebappConfig(
+ DomUtils.getChildElementText(webappElem, "name"),
+ DomUtils.getChildElementText(webappElem, "description"),
+ server,
+ testMode,
+ DomUtils.getChildElementText(webappElem, "contextRoot"),
+ DomUtils.getChildElementText(webappElem, "testDefinitionsDirectory"),
+ webappConfig);
+
webappList.add(webapp);
}
return new Webapps(webappList);
}
- public static TestDefinitions getTestDefinitionsInstance(InputStream is, String resourceIdentifier,
- Webapps webapps, String baseDirPath)
+ public static TestDefinitions getTestDefinitionsInstance(InputStream is,
+ String resourceIdentifier,
+ Webapps webapps,
+ String baseDirPath)
throws ConfigException, IOException {
TestDefinitionsDocument doc = null;
try {
Modified: beehive/trunk/netui/src/testRecorder/schema/testRecorderTests.xsd
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/testRecorder/schema/testRecorderTests.xsd?rev=328405&r1=328404&r2=328405&view=diff
==============================================================================
--- beehive/trunk/netui/src/testRecorder/schema/testRecorderTests.xsd (original)
+++ beehive/trunk/netui/src/testRecorder/schema/testRecorderTests.xsd Tue Oct 25 09:29:09 2005
@@ -54,4 +54,10 @@
</xs:sequence>
</xs:complexType>
+ <xs:simpleType name="nonZeroLengthString">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+
</xs:schema>