curcuru 00/12/15 08:31:48
Added: test/java/src/org/apache/qetest/trax/sax
SAXTransformerFactoryAPITest.java
Log:
API Coverage test for SAXTransformerFactory
Revision Changes Path
1.1
xml-xalan/test/java/src/org/apache/qetest/trax/sax/SAXTransformerFactoryAPITest.java
Index: SAXTransformerFactoryAPITest.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 2000 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Xalan" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation and was
* originally based on software copyright (c) 2000, Lotus
* Development Corporation., http://www.lotus.com. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
/*
*
* SAXTransformerFactoryAPITest.java
*
*/
package org.apache.qetest.trax.sax;
// Support for test reporting and harness classes
import org.apache.qetest.*;
import org.apache.qetest.xsl.*;
import org.apache.qetest.trax.*;
// Import all relevant TRAX packages
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.sax.*;
import javax.xml.transform.stream.*;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
// Use Xalan's own serializers for SAX ContentHandler output
import org.apache.xalan.serialize.SerializerFactory;
import org.apache.xalan.serialize.Serializer;
import org.apache.xalan.templates.OutputProperties;
// Needed SAX, DOM, JAXP classes
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLFilter;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
// java classes
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
//-------------------------------------------------------------------------
/**
* API Coverage test for SAXTransformerFactory.
* @author [EMAIL PROTECTED]
* @author [EMAIL PROTECTED]
* @version $Id: SAXTransformerFactoryAPITest.java,v 1.1 2000/12/15 16:31:47
curcuru Exp $
*/
public class SAXTransformerFactoryAPITest extends XSLProcessorTestBase
{
/**
* Provides nextName(), currentName() functionality for tests
* that may produce any number of output files.
*/
protected OutputNameManager outNames;
/**
* Basic test file: cities.xml/xsl/out.
*/
protected XSLTestfileInfo citiesFileInfo = new XSLTestfileInfo();
/**
* Alternate test file: citiesinclude.xsl.
*/
protected String citiesIncludeFileName = null;
/**
* Alternate gold file: citiesSerialized.out.
*/
protected String citiesSerializedFileName = null;
/** Subdirectory under test\tests\api for our xsl/xml files. */
public static final String TRAX_SAX_SUBDIR = "trax" + File.separator +
"sax";
/** Just initialize test name, comment, numTestCases. */
public SAXTransformerFactoryAPITest()
{
numTestCases = 1; // REPLACE_num
testName = "SAXTransformerFactoryAPITest";
testComment = "API Coverage test for SAXTransformerFactory";
}
/**
* Initialize this test - Set names of xml/xsl test files,
* REPLACE_other_test_file_init.
*
* @param p Properties to initialize from (if needed)
* @return false if we should abort the test; true otherwise
*/
public boolean doTestFileInit(Properties p)
{
// NOTE: 'reporter' variable is already initialized at this point
// Used for all tests; just dump files in trax subdir
File outSubDir = new File(outputDir + File.separator +
TRAX_SAX_SUBDIR);
if (!outSubDir.mkdirs())
reporter.logWarningMsg("Could not create output dir: " +
outSubDir);
// Initialize an output name manager to that dir with .out extension
outNames = new OutputNameManager(outputDir + File.separator +
TRAX_SAX_SUBDIR
+ File.separator + testName, ".out");
String testBasePath = inputDir
+ File.separator
+ TRAX_SAX_SUBDIR
+ File.separator;
String goldBasePath = goldDir
+ File.separator
+ TRAX_SAX_SUBDIR
+ File.separator;
citiesFileInfo.inputName = testBasePath + "cities.xsl";
citiesFileInfo.xmlName = testBasePath + "cities.xml";
citiesFileInfo.goldName = goldBasePath + "cities.out"; // Tests
001 - 009
citiesIncludeFileName = testBasePath + File.separator + "impincl"
+ File.separator + "citiesinclude.xsl"; //
Test 004, etc.
citiesSerializedFileName = goldBasePath + "citiesSerialized.out";
// Tests 010 - 013
try
{
TransformerFactory tf = TransformerFactory.newInstance();
if (!(tf.getFeature(SAXSource.FEATURE)
&& tf.getFeature(SAXResult.FEATURE)))
{ // The rest of this test relies on SAX
reporter.logErrorMsg("SAX*.FEATURE not supported! Some tests
may be invalid!");
}
}
catch (Throwable t)
{
reporter.checkFail(
"Problem creating factory; Some tests may be invalid!");
reporter.logThrowable(reporter.ERRORMSG, t,
"Problem creating factory; Some tests may
be invalid!");
}
return true;
}
/**
* Call various Sun tests of SAX-related classes.
*
* @return false if we should abort the test; true otherwise
*/
public boolean testCase1()
{
reporter.testCaseInit("Call various Sun tests of SAX-related
classes");
// Just call each method in order, with appropriate input
// and output filenames
// Each method will call check() itself, and log any problems
SAXTFactoryTest001(citiesFileInfo.xmlName, citiesFileInfo.inputName,
citiesFileInfo.goldName);
SAXTFactoryTest002(citiesFileInfo.xmlName, citiesFileInfo.inputName,
citiesFileInfo.goldName);
SAXTFactoryTest003(citiesFileInfo.xmlName, citiesFileInfo.inputName,
citiesFileInfo.goldName);
SAXTFactoryTest004(citiesFileInfo.xmlName, citiesFileInfo.inputName,
citiesFileInfo.goldName);
SAXTFactoryTest005(citiesFileInfo.xmlName, citiesFileInfo.inputName,
citiesFileInfo.goldName);
SAXTFactoryTest006(citiesFileInfo.xmlName, citiesFileInfo.inputName,
citiesFileInfo.goldName);
SAXTFactoryTest007(citiesFileInfo.xmlName, citiesFileInfo.inputName,
citiesFileInfo.goldName);
SAXTFactoryTest008(citiesFileInfo.xmlName, citiesFileInfo.inputName,
citiesFileInfo.goldName);
SAXTFactoryTest009(citiesFileInfo.xmlName, citiesFileInfo.inputName,
citiesFileInfo.goldName);
SAXTFactoryTest010(citiesFileInfo.xmlName, citiesFileInfo.inputName,
citiesFileInfo.goldName);
SAXTFactoryTest011(citiesFileInfo.xmlName, citiesFileInfo.inputName,
citiesFileInfo.goldName);
SAXTFactoryTest012(citiesFileInfo.xmlName, citiesFileInfo.inputName,
citiesFileInfo.goldName);
SAXTFactoryTest013(citiesFileInfo.xmlName, citiesFileInfo.inputName,
citiesFileInfo.goldName);
reporter.testCaseClose();
return true;
}
/**
* SAXTFactoryTest001 test.
* This tests newTransformerhandler() method which takes StreamSource as
argument. This is a positive test
*/
public void SAXTFactoryTest001(String xmlName, String xslName, String
goldName)
{
// Log the test we're about to do
reporter.logStatusMsg("SAXTFactoryTest001: This tests
newTransformerhandler() method which takes StreamSource as argument. This is a
positive test");
int returnValue = Logger.INCP_RESULT;
TransformerFactory tfactory = TransformerFactory.newInstance();
try
{
XMLReader reader = XMLReaderFactory.createXMLReader();
SAXTransformerFactory saxTFactory =
(SAXTransformerFactory)tfactory;
TransformerHandler handler = saxTFactory.newTransformerHandler(
new StreamSource(xslName));
//Result result = new StreamResult(System.out);
// Send results out to the next output name
Result result = new StreamResult(new
FileOutputStream(outNames.nextName()));
handler.setResult(result);
reader.setContentHandler(handler);
// Log what output is about to be created
reporter.logInfoMsg("reader.parse() into: " +
outNames.currentName());
reader.parse(xmlName);
// Validate the output by comparing against gold
returnValue = fileChecker.check(reporter,
new File(outNames.currentName()),
new File(goldName),
"SAXTFactoryTest001: into " +
outNames.currentName());
// If validation failed or had a problem, also log out
// the reason for the fail or error
if ((returnValue == Logger.FAIL_RESULT)
|| (returnValue == Logger.ERRR_RESULT))
{
reporter.logStatusMsg("SAXTFactoryTest001: failure reason:" +
fileChecker.getExtendedInfo());
}
}
catch (Throwable t)
{
reporter.checkFail("SAXTFactoryTest001 threw: " + t.toString());
reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest001
threw");
}
}// end of SAXTFactoryTest001()
/**
* SAXTFactoryTest002 test.
* This tests newTransformerhandler() method which takes SAXSource as
argument. This is a positive test
*/
public void SAXTFactoryTest002(String xmlName, String xslName, String
goldName)
{
// Log the test we're about to do
reporter.logStatusMsg("SAXTFactoryTest002: This tests
newTransformerhandler() method which takes SAXSource as argument. This is a
positive test");
int returnValue = Logger.INCP_RESULT;
TransformerFactory tfactory = TransformerFactory.newInstance();
try
{
XMLReader reader = XMLReaderFactory.createXMLReader();
SAXTransformerFactory saxTFactory = (SAXTransformerFactory)
tfactory;
InputSource is = new InputSource(new FileInputStream(xslName));
SAXSource ss = new SAXSource();
ss.setInputSource(is);
TransformerHandler handler =
saxTFactory.newTransformerHandler(ss);
Result result = new StreamResult(new
FileOutputStream(outNames.nextName()));
handler.setResult(result);
reader.setContentHandler(handler);
// Log what output is about to be created
reporter.logInfoMsg("SAXTFactoryTest002 into: " +
outNames.currentName());
reader.parse(xmlName);
// Validate the output by comparing against gold
returnValue = fileChecker.check(reporter,
new File(outNames.currentName()),
new File(goldName),
"SAXTFactoryTest002: into " +
outNames.currentName());
// If validation failed or had a problem, also log out
// the reason for the fail or error
if ((returnValue == Logger.FAIL_RESULT)
|| (returnValue == Logger.ERRR_RESULT))
{
reporter.logStatusMsg("SAXTFactoryTest002: failure reason:" +
fileChecker.getExtendedInfo());
}
}
catch (Throwable t)
{
reporter.checkFail("SAXTFactoryTest002 threw: " + t.toString());
reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest002
threw");
}
}// end of SAXTFactoryTest002()
/**
* SAXTFactoryTest003 test.
* This tests newTransformerhandler() method which takes DOMSource as
argument. No relative URIs used. This is a positive test
*/
public void SAXTFactoryTest003(String xmlName, String xslName, String
goldName)
{
// Log the test we're about to do
reporter.logStatusMsg("SAXTFactoryTest003: This tests
newTransformerhandler() method which takes DOMSource as argument. No relative
URIs used. This is a positive test");
reporter.logStatusMsg("Note: Need to verify that URI's are still
correct from porting -sc");
int returnValue = Logger.INCP_RESULT;
TransformerFactory tfactory = TransformerFactory.newInstance();
LoggingErrorListener loggingErrListener = new
LoggingErrorListener(reporter);
tfactory.setErrorListener(loggingErrListener);
try
{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true); // Ensure we get namespaces! May be
required for some Xerces versions
DocumentBuilder docBuilder = dbf.newDocumentBuilder();
reporter.logTraceMsg("docBuilder.parse(new File(" + xslName +
"))");
Document document = docBuilder.parse(new File(xslName));
Node node = (Node)document;
DOMSource domSource = new DOMSource(node);
SAXTransformerFactory saxTFactory =
(SAXTransformerFactory)tfactory;
TransformerHandler handler =
saxTFactory.newTransformerHandler(domSource);
Result result = new StreamResult(new
FileOutputStream(outNames.nextName()));
handler.setResult(result);
XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setContentHandler(handler);
// Log what output is about to be created
reporter.logTraceMsg("reader.parse(" + xmlName + ") into: " +
outNames.currentName());
reader.parse(xmlName);
// Validate the output by comparing against gold
returnValue = fileChecker.check(reporter,
new File(outNames.currentName()),
new File(goldName),
"SAXTFactoryTest003: into " +
outNames.currentName());
// If validation failed or had a problem, also log out
// the reason for the fail or error
if ((returnValue == Logger.FAIL_RESULT)
|| (returnValue == Logger.ERRR_RESULT))
{
reporter.logStatusMsg("SAXTFactoryTest003: failure reason:" +
fileChecker.getExtendedInfo());
}
}
catch (Throwable t)
{
reporter.checkFail("SAXTFactoryTest003 threw: " + t.toString());
reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest003
threw");
}
}// end of SAXTFactoryTest003()
/**
* SAXTFactoryTest004 test.
* This tests newTransformerhandler() method which takes DOMSource as
argument. Here a relative URI is used in citiesinclude.xsl file. setSystemId is
not used for DOMSource. It should throw an exception. This is a negative test
*/
public void SAXTFactoryTest004(String xmlName, String xslName, String
goldName)
{
// Log the test we're about to do
reporter.logStatusMsg("SAXTFactoryTest004: This tests
newTransformerhandler() method which takes DOMSource as argument. Here a
relative URI is used in citiesinclude.xsl file. setSystemId is not used for
DOMSource. It should throw an exception. This is a negative test");
// Grab an extra outName, so the numbers line up - purely cosmetic,
not really needed
String tmpOutName = outNames.nextName();
int returnValue = Logger.INCP_RESULT;
TransformerFactory tfactory = TransformerFactory.newInstance();
LoggingErrorListener loggingErrListener = new
LoggingErrorListener(reporter);
tfactory.setErrorListener(loggingErrListener);
try
{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true); // Ensure we get namespaces! May be
required for some Xerces versions
DocumentBuilder docBuilder = dbf.newDocumentBuilder();
reporter.logTraceMsg("docBuilder.parse(new File(" +
citiesIncludeFileName + "))");
Document document = docBuilder.parse(new
File(citiesIncludeFileName)); // note specific file name used
Node node = (Node) document;
DOMSource domSource = new DOMSource(node);
// setSystemId is not used for DOMSource
SAXTransformerFactory saxTFactory = (SAXTransformerFactory)
tfactory;
TransformerHandler handler =
saxTFactory.newTransformerHandler(domSource);
Result result = new StreamResult(new
FileOutputStream(tmpOutName));
handler.setResult(result);
XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setContentHandler(handler);
// Log what output is about to be created
reporter.logTraceMsg("reader.parse(" + xmlName + ") into: " +
outNames.currentName());
reader.parse(xmlName);
reporter.checkFail("Should have thrown exception because systemId
not set!");
// Validate the output by comparing against gold
returnValue = fileChecker.check(reporter,
new File(outNames.currentName()),
new File(goldName),
"SAXTFactoryTest004: into " +
outNames.currentName());
}
catch (Throwable t)
{
reporter.checkPass("SAXTFactoryTest004 properly threw: " +
t.toString());
reporter.logStatusMsg("@todo validate specific exception type");
reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest004
threw");
}
}// end of SAXTFactoryTest004()
/**
* SAXTFactoryTest005 test.
* This tests newTransformerhandler() method which takes DOMSource as
argument. Here a relative URI is used in citiesinclude.xsl file. setSystemId
is used for DOMSource. It should run well. This is a positive test
*/
public void SAXTFactoryTest005(String xmlName, String xslName, String
goldName)
{
// Log the test we're about to do
reporter.logStatusMsg("SAXTFactoryTest005: This tests
newTransformerhandler() method which takes DOMSource as argument. Here a
relative URI is used in citiesinclude.xsl file. setSystemId is used for
DOMSource. It should run well. This is a positive test");
int returnValue = Logger.INCP_RESULT;
TransformerFactory tfactory = TransformerFactory.newInstance();
LoggingErrorListener loggingErrListener = new
LoggingErrorListener(reporter);
tfactory.setErrorListener(loggingErrListener);
try
{
SAXTransformerFactory saxTFactory = (SAXTransformerFactory)
tfactory;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true); // Ensure we get namespaces! May be
required for some Xerces versions
DocumentBuilder docBuilder = dbf.newDocumentBuilder();
reporter.logTraceMsg("docBuilder.parse(new File(" +
citiesIncludeFileName + "))");
Document document = docBuilder.parse(new
File(citiesIncludeFileName));
Node node = (Node) document;
DOMSource domSource = new DOMSource(node);
// String testDirPath = System.getProperty("Tests_Dir"); //
@todo: update to new names
// domSource.setSystemId("file:///" + testDirPath); // @todo:
update to new names
domSource.setSystemId(citiesIncludeFileName);
TransformerHandler handler =
saxTFactory.newTransformerHandler(domSource);
Result result = new StreamResult(new
FileOutputStream(outNames.nextName()));
handler.setResult(result);
XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setContentHandler(handler);
// Log what output is about to be created
reporter.logTraceMsg("reader.parse(" + xmlName + ") into: " +
outNames.currentName());
reader.parse(xmlName);
// Validate the output by comparing against gold
returnValue = fileChecker.check(reporter,
new File(outNames.currentName()),
new File(goldName),
"SAXTFactoryTest005: into " +
outNames.currentName());
// If validation failed or had a problem, also log out
// the reason for the fail or error
if ((returnValue == Logger.FAIL_RESULT)
|| (returnValue == Logger.ERRR_RESULT))
{
reporter.logStatusMsg("SAXTFactoryTest005: failure reason:" +
fileChecker.getExtendedInfo());
}
}
catch (Throwable t)
{
reporter.checkFail("SAXTFactoryTest005 threw: " + t.toString());
reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest005
threw");
}
}// end of SAXTFactoryTest005()
/**
* SAXTFactoryTest006 test.
* This tests newTransformerhandler() method which takes DOMSource as
argument. Here a relative URI is used in citiesinclude.xsl file. setSystemId
is used for DOMSource. Here Constructor that takes systemId as argument is used
for creating DOMSource. It should run well. This is a positive test
*/
public void SAXTFactoryTest006(String xmlName, String xslName, String
goldName)
{
// Log the test we're about to do
reporter.logStatusMsg("SAXTFactoryTest006: This tests
newTransformerhandler() method which takes DOMSource as argument. Here a
relative URI is used in citiesinclude.xsl file. setSystemId is used for
DOMSource. Here Constructor that takes systemId as argument is used for
creating DOMSource. It should run well. This is a positive test");
int returnValue = Logger.INCP_RESULT;
TransformerFactory tfactory = TransformerFactory.newInstance();
try
{
SAXTransformerFactory saxTFactory = (SAXTransformerFactory)
tfactory;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true); // Ensure we get namespaces! May be
required for some Xerces versions
DocumentBuilder docBuilder = dbf.newDocumentBuilder();
reporter.logTraceMsg("docBuilder.parse(new File(" +
citiesIncludeFileName + "))");
Document document = docBuilder.parse(new
File(citiesIncludeFileName));
Node node = (Node) document;
// String testDirPath = System.getProperty("Tests_Dir"); // @todo
update systemId
// DOMSource domSource = new DOMSource(node, "file:///" +
testDirPath); // @todo update systemId
DOMSource domSource = new DOMSource(node, citiesIncludeFileName);
TransformerHandler handler =
saxTFactory.newTransformerHandler(domSource);
Result result = new StreamResult(new
FileOutputStream(outNames.nextName()));
handler.setResult(result);
XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setContentHandler(handler);
// Log what output is about to be created
reporter.logTraceMsg("reader.parse(" + xmlName + ") into: " +
outNames.currentName());
reader.parse(xmlName);
// Validate the output by comparing against gold
returnValue = fileChecker.check(reporter,
new File(outNames.currentName()),
new File(goldName),
"SAXTFactoryTest006: into " +
outNames.currentName());
// If validation failed or had a problem, also log out
// the reason for the fail or error
if ((returnValue == Logger.FAIL_RESULT)
|| (returnValue == Logger.ERRR_RESULT))
{
reporter.logStatusMsg("SAXTFactoryTest006: failure reason:" +
fileChecker.getExtendedInfo());
}
}
catch (Throwable t)
{
reporter.checkFail("SAXTFactoryTest006 threw: " + t.toString());
reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest006
threw");
}
}// end of SAXTFactoryTest006()
/**
* SAXTFactoryTest007 test.
* This tests newTransformerhandler() method which takes DOMSource as
argument. Here a relative URI is used in citiesinclude.xsl file. setSystemId
is used for DOMSource. Here Constructor that takes systemId as argument is used
for creating DOMSource. It should run well. This is a positive test
*/
public void SAXTFactoryTest007(String xmlName, String xslName, String
goldName)
{
// Log the test we're about to do
reporter.logStatusMsg("SAXTFactoryTest007: This tests
newTransformerhandler() method which takes DOMSource as argument. Here a
relative URI is used in citiesinclude.xsl file. setSystemId is used for
DOMSource. Here Constructor that takes systemId as argument is used for
creating DOMSource. It should run well. This is a positive test");
int returnValue = Logger.INCP_RESULT;
TransformerFactory tfactory = TransformerFactory.newInstance();
try
{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true); // Ensure we get namespaces! May be
required for some Xerces versions
DocumentBuilder docBuilder = dbf.newDocumentBuilder();
reporter.logTraceMsg("docBuilder.parse(new File(" +
citiesIncludeFileName + "))");
Document document = docBuilder.parse(new
File(citiesIncludeFileName));
Node node = (Node) document;
DOMSource domSource = new DOMSource(node);
XMLReader reader = XMLReaderFactory.createXMLReader();
SAXTransformerFactory saxTFactory = (SAXTransformerFactory)
tfactory;
//For xml file.
reporter.logTraceMsg("docBuilder.parse(" + xmlName + ")");
Document xmlDocument = docBuilder.parse(new File(xmlName));
Node xmlNode = (Node) xmlDocument;
DOMSource xmlDomSource = new DOMSource(xmlNode);
//Please look into this later...You want to use
newTransformerhandler()
TransformerHandler handler = saxTFactory.newTransformerHandler();
Transformer transformer = handler.getTransformer();
Result result = new StreamResult(new
FileOutputStream(outNames.nextName()));
// Log what output is about to be created
reporter.logTraceMsg("transformer.transform(xmlDomSource,
StreamResult) into: " + outNames.currentName());
transformer.transform(xmlDomSource, result);
// Validate the output by comparing against gold
returnValue = fileChecker.check(reporter,
new File(outNames.currentName()),
new File(goldName),
"SAXTFactoryTest007: into " +
outNames.currentName());
// If validation failed or had a problem, also log out
// the reason for the fail or error
if ((returnValue == Logger.FAIL_RESULT)
|| (returnValue == Logger.ERRR_RESULT))
{
reporter.logStatusMsg("SAXTFactoryTest007: failure reason:" +
fileChecker.getExtendedInfo());
}
}
catch (Throwable t)
{
reporter.checkFail("SAXTFactoryTest007 threw: " + t.toString());
reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest007
threw");
}
}// end of SAXTFactoryTest007()
/**
* SAXTFactoryTest008 test.
* XDESCRIPTION
*/
public void SAXTFactoryTest008(String xmlName, String xslName, String
goldName)
{
// Log the test we're about to do
reporter.logStatusMsg("SAXTFactoryTest008: XDESCRIPTION");
int returnValue = Logger.INCP_RESULT;
TransformerFactory tfactory = TransformerFactory.newInstance();
try
{
SAXTransformerFactory saxTFactory = (SAXTransformerFactory)
tfactory;
TemplatesHandler thandler = saxTFactory.newTemplatesHandler();
XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setContentHandler(thandler);
reporter.logTraceMsg("reader.parse(" + xslName + ")");
reader.parse(xslName);
TransformerHandler tfhandler =
saxTFactory.newTransformerHandler(thandler.getTemplates());
Result result = new StreamResult(new
FileOutputStream(outNames.nextName()));
tfhandler.setResult(result);
reader.setContentHandler(tfhandler);
// Log what output is about to be created
reporter.logTraceMsg("reader.parse(" + xmlName + ") into: " +
outNames.currentName());
reader.parse(xmlName);
// Validate the output by comparing against gold
returnValue = fileChecker.check(reporter,
new File(outNames.currentName()),
new File(goldName),
"SAXTFactoryTest008: into " +
outNames.currentName());
// If validation failed or had a problem, also log out
// the reason for the fail or error
if ((returnValue == Logger.FAIL_RESULT)
|| (returnValue == Logger.ERRR_RESULT))
{
reporter.logStatusMsg("SAXTFactoryTest008: failure reason:" +
fileChecker.getExtendedInfo());
}
}
catch (Throwable t)
{
reporter.checkFail("SAXTFactoryTest008 threw: " + t.toString());
reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest008
threw");
}
}// end of SAXTFactoryTest008()
/**
* SAXTFactoryTest009 test.
* XDESCRIPTION
*/
public void SAXTFactoryTest009(String xmlName, String xslName, String
goldName)
{
// Log the test we're about to do
reporter.logStatusMsg("SAXTFactoryTest009: XDESCRIPTION");
int returnValue = Logger.INCP_RESULT;
TransformerFactory tfactory = TransformerFactory.newInstance();
try
{
XMLReader reader = XMLReaderFactory.createXMLReader();
SAXTransformerFactory saxTFactory = (SAXTransformerFactory)
tfactory;
TemplatesHandler thandler = saxTFactory.newTemplatesHandler();
// String testDirPath = System.getProperty("Tests_Dir"); // @todo
update systemId
// thandler.setSystemId("file:///" + testDirPath); // @todo
update systemId
thandler.setSystemId(citiesIncludeFileName); // @todo update
systemId
reader.setContentHandler(thandler);
reporter.logTraceMsg("reader.parse(" + citiesIncludeFileName +
")");
reader.parse(citiesIncludeFileName);
TransformerHandler tfhandler =
saxTFactory.newTransformerHandler(thandler.getTemplates());
Result result = new StreamResult(new
FileOutputStream(outNames.nextName()));
tfhandler.setResult(result);
reader.setContentHandler(tfhandler);
// Log what output is about to be created
reporter.logTraceMsg("reader.parse(" + xmlName + ") into: " +
outNames.currentName());
reader.parse(xmlName);
// Validate the output by comparing against gold
returnValue = fileChecker.check(reporter,
new File(outNames.currentName()),
new File(goldName),
"SAXTFactoryTest009: into " +
outNames.currentName());
// If validation failed or had a problem, also log out
// the reason for the fail or error
if ((returnValue == Logger.FAIL_RESULT)
|| (returnValue == Logger.ERRR_RESULT))
{
reporter.logStatusMsg("SAXTFactoryTest009: failure reason:" +
fileChecker.getExtendedInfo());
}
}
catch (Throwable t)
{
reporter.checkFail("SAXTFactoryTest009 threw: " + t.toString());
reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest009
threw");
}
}// end of SAXTFactoryTest009()
/**
* SAXTFactoryTest010 test.
* The transformer will use a SAX parser as it's reader
*/
public void SAXTFactoryTest010(String xmlName, String xslName, String
goldName)
{
// Log the test we're about to do
reporter.logStatusMsg("SAXTFactoryTest010: The transformer will use a
SAX parser as it's reader");
int returnValue = Logger.INCP_RESULT;
TransformerFactory tfactory = TransformerFactory.newInstance();
try
{
// The transformer will use a SAX parser as it's reader.
XMLReader reader = XMLReaderFactory.createXMLReader();
// Set the result handling to be a serialization to the file
output stream.
Serializer serializer = SerializerFactory.getSerializer
(OutputProperties.getDefaultMethodProperties("xml"));
serializer.setOutputStream(new
FileOutputStream(outNames.nextName()));
// reader.setContentHandler(new
ExampleContentHandler(outNames.nextName())); // @todo update content handler!!!!
reader.setContentHandler(serializer.asContentHandler()); // @todo
update content handler!!!!
SAXTransformerFactory saxTFactory = (SAXTransformerFactory)
tfactory;
reporter.logTraceMsg("saxTFactory.newXMLFilter(new StreamSource("
+ xslName + "))");
XMLFilter filter = saxTFactory.newXMLFilter(new
StreamSource(xslName));
filter.setParent(reader);
// Now, when you call transformer.parse, it will set itself as
// the content handler for the parser object (it's "parent"), and
// will then call the parse method on the parser.
// Log what output is about to be created
reporter.logTraceMsg("filter.parse(" + xmlName + ") into: " +
outNames.currentName());
filter.parse(new InputSource(xmlName));
// Validate the output by comparing against gold
returnValue = fileChecker.check(reporter,
new File(outNames.currentName()),
new
File(citiesSerializedFileName),
"SAXTFactoryTest010: into " +
outNames.currentName());
// If validation failed or had a problem, also log out
// the reason for the fail or error
if ((returnValue == Logger.FAIL_RESULT)
|| (returnValue == Logger.ERRR_RESULT))
{
reporter.logStatusMsg("SAXTFactoryTest010: failure reason:" +
fileChecker.getExtendedInfo());
}
}
catch (Throwable t)
{
reporter.checkFail("SAXTFactoryTest010 threw: " + t.toString());
reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest010
threw");
}
}// end of SAXTFactoryTest010()
/**
* SAXTFactoryTest011 test.
* The transformer will use a SAX parser as it's reader
*/
public void SAXTFactoryTest011(String xmlName, String xslName, String
goldName)
{
// Log the test we're about to do
reporter.logStatusMsg("SAXTFactoryTest011: The transformer will use a
SAX parser as it's reader");
int returnValue = Logger.INCP_RESULT;
TransformerFactory tfactory = TransformerFactory.newInstance();
try
{
// The transformer will use a SAX parser as it's reader.
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true); // Ensure we get namespaces! May be
required for some Xerces versions
DocumentBuilder docBuilder = dbf.newDocumentBuilder();
reporter.logTraceMsg("docBuilder.parse(new File(" + xslName +
"))");
Document document = docBuilder.parse(new File(xslName));
Node node = (Node) document;
DOMSource domSource = new DOMSource(node);
SAXTransformerFactory saxTFactory = (SAXTransformerFactory)
tfactory;
XMLFilter filter = saxTFactory.newXMLFilter(domSource);
XMLReader reader = XMLReaderFactory.createXMLReader();
// Set the result handling to be a serialization to the file
output stream.
Serializer serializer = SerializerFactory.getSerializer
(OutputProperties.getDefaultMethodProperties("xml"));
serializer.setOutputStream(new
FileOutputStream(outNames.nextName()));
// reader.setContentHandler(new
ExampleContentHandler(outNames.nextName())); // @todo update content handler!!!!
reader.setContentHandler(serializer.asContentHandler()); // @todo
update content handler!!!!
filter.setParent(reader);
// Now, when you call transformer.parse, it will set itself as
// the content handler for the parser object (it's "parent"), and
// will then call the parse method on the parser.
// Log what output is about to be created
reporter.logTraceMsg("filter.parse(" + xmlName + ") into: " +
outNames.currentName());
filter.parse(new InputSource(xmlName));
// Validate the output by comparing against gold
returnValue = fileChecker.check(reporter,
new File(outNames.currentName()),
new
File(citiesSerializedFileName),
"SAXTFactoryTest011: into " +
outNames.currentName());
// If validation failed or had a problem, also log out
// the reason for the fail or error
if ((returnValue == Logger.FAIL_RESULT)
|| (returnValue == Logger.ERRR_RESULT))
{
reporter.logStatusMsg("SAXTFactoryTest011: failure reason:" +
fileChecker.getExtendedInfo());
}
}
catch (Throwable t)
{
reporter.checkFail("SAXTFactoryTest011 threw: " + t.toString());
reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest011
threw");
}
}// end of SAXTFactoryTest011()
/**
* SAXTFactoryTest012 test.
* The transformer will use a SAX parser as it's reader
*/
public void SAXTFactoryTest012(String xmlName, String xslName, String
goldName)
{
// Log the test we're about to do
reporter.logStatusMsg("SAXTFactoryTest012: The transformer will use a
SAX parser as it's reader");
int returnValue = Logger.INCP_RESULT;
TransformerFactory tfactory = TransformerFactory.newInstance();
try
{
// The transformer will use a SAX parser as it's reader.
InputSource is = new InputSource(new FileInputStream(xslName));
SAXSource saxSource = new SAXSource();
saxSource.setInputSource(is);
SAXTransformerFactory saxTFactory = (SAXTransformerFactory)
tfactory;
reporter.logTraceMsg("newXMLFilter(..." + xslName + ")");
XMLFilter filter = saxTFactory.newXMLFilter(saxSource);
XMLReader reader = XMLReaderFactory.createXMLReader();
// Set the result handling to be a serialization to the file
output stream.
Serializer serializer = SerializerFactory.getSerializer
(OutputProperties.getDefaultMethodProperties("xml"));
serializer.setOutputStream(new
FileOutputStream(outNames.nextName()));
// reader.setContentHandler(new
ExampleContentHandler(outNames.nextName())); // @todo update content handler!!!!
reader.setContentHandler(serializer.asContentHandler()); // @todo
update content handler!!!!
filter.setParent(reader);
// Now, when you call transformer.parse, it will set itself as
// the content handler for the parser object (it's "parent"), and
// will then call the parse method on the parser.
// Log what output is about to be created
reporter.logTraceMsg("filter.parse(" + xmlName + ") into: " +
outNames.currentName());
filter.parse(new InputSource(xmlName));
// Validate the output by comparing against gold
returnValue = fileChecker.check(reporter,
new File(outNames.currentName()),
new
File(citiesSerializedFileName),
"SAXTFactoryTest012: into " +
outNames.currentName());
// If validation failed or had a problem, also log out
// the reason for the fail or error
if ((returnValue == Logger.FAIL_RESULT)
|| (returnValue == Logger.ERRR_RESULT))
{
reporter.logStatusMsg("SAXTFactoryTest012: failure reason:" +
fileChecker.getExtendedInfo());
}
}
catch (Throwable t)
{
reporter.checkFail("SAXTFactoryTest012 threw: " + t.toString());
reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest012
threw");
}
}// end of SAXTFactoryTest012()
/**
* SAXTFactoryTest013 test.
* The transformer will use a SAX parser as it's reader
*/
public void SAXTFactoryTest013(String xmlName, String xslName, String
goldName)
{
// Log the test we're about to do
reporter.logStatusMsg("SAXTFactoryTest013: The transformer will use a
SAX parser as it's reader");
int returnValue = Logger.INCP_RESULT;
TransformerFactory tfactory = TransformerFactory.newInstance();
try
{
// The transformer will use a SAX parser as it's reader.
XMLReader reader = XMLReaderFactory.createXMLReader();
SAXTransformerFactory saxTFactory = (SAXTransformerFactory)
tfactory;
TemplatesHandler thandler = saxTFactory.newTemplatesHandler();
// String testDirPath = System.getProperty("Tests_Dir"); // @todo
update systemId
// I have put this as it was complaining about systemid
// thandler.setSystemId("file:///" + testDirPath); // @todo
update systemId
thandler.setSystemId(xslName); // @todo update systemId
reader.setContentHandler(thandler);
reporter.logTraceMsg("reader.parse(" + xslName + ")");
reader.parse(xslName);
XMLFilter filter =
saxTFactory.newXMLFilter(thandler.getTemplates());
filter.setParent(reader);
// Set the result handling to be a serialization to the file
output stream.
Serializer serializer = SerializerFactory.getSerializer
(OutputProperties.getDefaultMethodProperties("xml"));
serializer.setOutputStream(new
FileOutputStream(outNames.nextName()));
// filter.setContentHandler(new
ExampleContentHandler(outNames.nextName())); // @todo update content handler!!!!
filter.setContentHandler(serializer.asContentHandler()); // @todo
update content handler!!!!
// Log what output is about to be created
reporter.logTraceMsg("filter.parse(" + xmlName + ") into: " +
outNames.currentName());
filter.parse(new InputSource(new FileInputStream(xmlName)));
// Validate the output by comparing against gold
returnValue = fileChecker.check(reporter,
new File(outNames.currentName()),
new
File(citiesSerializedFileName),
"SAXTFactoryTest013: into " +
outNames.currentName());
// If validation failed or had a problem, also log out
// the reason for the fail or error
if ((returnValue == Logger.FAIL_RESULT)
|| (returnValue == Logger.ERRR_RESULT))
{
reporter.logStatusMsg("SAXTFactoryTest013: failure reason:" +
fileChecker.getExtendedInfo());
}
}
catch (Throwable t)
{
reporter.checkFail("SAXTFactoryTest013 threw: " + t.toString());
reporter.logThrowable(reporter.ERRORMSG, t, "SAXTFactoryTest013
threw");
}
}// end of SAXTFactoryTest013()
/**
* Convenience method to print out usage information - update if needed.
* @return String denoting usage of this test class
*/
public String usage()
{
return ("Common [optional] options supported by
SAXTransformerFactoryAPITest:\n"
+ "(Note: assumes inputDir=.\\tests\\api)\n"
+ super.usage()); // Grab our parent classes usage as well
}
/**
* Main method to run test from the command line.
* @param args command line argument array
*/
public static void main(String[] args)
{
SAXTransformerFactoryAPITest app = new SAXTransformerFactoryAPITest();
app.doMain(args);
}
}