changeset 680:40b242363040 jdk9-b43

8051536: Convert JAXP function tests: javax.xml.parsers to jtreg(testng) tests Reviewed-by: lancea, joehw Contributed-by: frank.yuan@oracle.com
author joehw
date Thu, 11 Dec 2014 13:08:14 -0800
parents 2525ed9e4bb2
children 479ec57704fb f6b83b15628f
files test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/DBFNamespaceTest.java test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/DocumentBuilderFactory01.java test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/DocumentBuilderFactory02.java test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/DocumentBuilderImpl01.java test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/FactoryConfErrorTest.java test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/SAXParserFactTest.java test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/SAXParserTest.java test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/SAXParserTest02.java test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/SAXParserTest03.java test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/TestUtils.java test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderFactory01.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderFactory02.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderFactory03.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderFactory04.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderFactory05.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderFactory06.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderFactory07.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderFactory08.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderImpl01.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderImpl02.dtd test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderImpl02.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/correct.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/dbf10.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/dbf10.xsl test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/dbf10import.xsl test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/dbf10include.xsl test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/firstdtd.dtd test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/invalid.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/invalidns.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/namespace1.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/ns4.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/out/dbfactory02GF.out test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/out/dbfnstest01GF.out test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/out/dbfnstest02GF.out test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/parsertest.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/test.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/test.xsd test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/test1.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/valid.xml test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/validns.xml
diffstat 40 files changed, 2882 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/DBFNamespaceTest.java	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.parsers.ptests;
+
+import static jaxp.library.JAXPTestUtilities.FILE_SEP;
+import static jaxp.library.JAXPTestUtilities.USER_DIR;
+import static jaxp.library.JAXPTestUtilities.compareWithGold;
+import static jaxp.library.JAXPTestUtilities.failUnexpected;
+import static org.testng.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.sax.SAXResult;
+
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
+
+/**
+ * This tests DocumentBuilderFactory for namespace processing and no-namespace
+ * processing.
+ */
+public class DBFNamespaceTest {
+
+    /**
+     * Provide input for the cases that supporting namespace or not.
+     */
+    @DataProvider(name = "input-provider")
+    public Object[][] getInput() {
+        DocumentBuilderFactory dbf1 = DocumentBuilderFactory.newInstance();
+        String outputfile1 = USER_DIR + FILE_SEP + "dbfnstest01.out";
+        String goldfile1 = TestUtils.GOLDEN_DIR + FILE_SEP + "dbfnstest01GF.out";
+
+        DocumentBuilderFactory dbf2 = DocumentBuilderFactory.newInstance();
+        dbf2.setNamespaceAware(true);
+        String outputfile2 = USER_DIR + FILE_SEP + "dbfnstest02.out";
+        String goldfile2 = TestUtils.GOLDEN_DIR + FILE_SEP + "dbfnstest02GF.out";
+        return new Object[][] { { dbf1, outputfile1, goldfile1 }, { dbf2, outputfile2, goldfile2 } };
+    }
+
+    /**
+     * Test to parse and transform a document without supporting namespace and
+     * with supporting namespace.
+     */
+    @Test(dataProvider = "input-provider")
+    public void testNamespaceTest(DocumentBuilderFactory dbf, String outputfile, String goldfile) {
+        try {
+            Document doc = dbf.newDocumentBuilder().parse(new File(TestUtils.XML_DIR, "namespace1.xml"));
+            dummyTransform(doc, outputfile);
+            assertTrue(compareWithGold(goldfile, outputfile));
+        } catch (SAXException | IOException | ParserConfigurationException | TransformerFactoryConfigurationError | TransformerException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * This method transforms a Node without any xsl file and uses SAXResult to
+     * invoke the callbacks through a ContentHandler. If namespace processing is
+     * not chosen, namespaceURI in callbacks should be an empty string otherwise
+     * it should be namespaceURI.
+     *
+     * @throws TransformerFactoryConfigurationError
+     * @throws TransformerException
+     * @throws IOException
+     */
+    private void dummyTransform(Document document, String fileName) throws TransformerFactoryConfigurationError, TransformerException, IOException {
+        DOMSource domSource = new DOMSource(document);
+        Transformer transformer = TransformerFactory.newInstance().newTransformer();
+        File file = new File(fileName);
+        System.out.println("The fileName is " + file.getAbsolutePath());
+        transformer.transform(domSource, new SAXResult(MyCHandler.newInstance(file)));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/DocumentBuilderFactory01.java	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,451 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.parsers.ptests;
+
+import static jaxp.library.JAXPTestUtilities.FILE_SEP;
+import static jaxp.library.JAXPTestUtilities.failUnexpected;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileReader;
+import java.io.IOException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.testng.annotations.Test;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ * This checks the methods of DocumentBuilderFactoryImpl
+ */
+public class DocumentBuilderFactory01 {
+    /**
+     * Testcase to test the default functionality of schema support method.
+     */
+    @Test
+    public void testCheckSchemaSupport1() {
+        try {
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            dbf.setValidating(true);
+            dbf.setNamespaceAware(true);
+            dbf.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");
+            MyErrorHandler eh = MyErrorHandler.newInstance();
+            DocumentBuilder db = dbf.newDocumentBuilder();
+            db.setErrorHandler(eh);
+            Document doc = db.parse(new File(TestUtils.XML_DIR, "test.xml"));
+            assertFalse(eh.errorOccured);
+        } catch (ParserConfigurationException | SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase to test the default functionality of schema support method. In
+     * this case the schema source property is set.
+     */
+    @Test
+    public void testCheckSchemaSupport2() {
+        try {
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            dbf.setValidating(true);
+            dbf.setNamespaceAware(true);
+            dbf.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");
+            dbf.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaSource", new InputSource(new FileInputStream(
+                    new File(TestUtils.XML_DIR, "test.xsd"))));
+            MyErrorHandler eh = MyErrorHandler.newInstance();
+            DocumentBuilder db = dbf.newDocumentBuilder();
+            db.setErrorHandler(eh);
+            Document doc = db.parse(new File(TestUtils.XML_DIR, "test1.xml"));
+            assertFalse(eh.errorOccured);
+        } catch (IllegalArgumentException | ParserConfigurationException | SAXException | IOException e) {
+            failUnexpected(e);
+        }
+
+    }
+
+    /**
+     * Testcase to test the default functionality of schema support method. In
+     * this case the schema source property is set.
+     */
+    @Test
+    public void testCheckSchemaSupport3() {
+        try {
+            SAXParserFactory spf = SAXParserFactory.newInstance();
+            spf.setNamespaceAware(true);
+            spf.setValidating(true);
+            spf.setNamespaceAware(true);
+            SAXParser sp = spf.newSAXParser();
+            sp.setProperty("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");
+            sp.setProperty("http://java.sun.com/xml/jaxp/properties/schemaSource",
+                    new InputSource(new FileInputStream(new File(TestUtils.XML_DIR, "test.xsd"))));
+            DefaultHandler dh = new DefaultHandler();
+            sp.parse(new File(TestUtils.XML_DIR, "test1.xml"), dh);
+        } catch (ParserConfigurationException | SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase to test the default functionality of newInstance method. To test
+     * the isCoalescing method and setCoalescing This checks to see if the CDATA
+     * and text nodes got combined In that case it will print "<xml>This
+     * is not parsed</xml> yet".
+     */
+    @Test
+    public void testCheckDocumentBuilderFactory02() {
+        try {
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            dbf.setCoalescing(true);
+            DocumentBuilder docBuilder = dbf.newDocumentBuilder();
+            Document doc = docBuilder.parse(new File(TestUtils.XML_DIR, "DocumentBuilderFactory01.xml"));
+            Element e = (Element) doc.getElementsByTagName("html").item(0);
+            NodeList nl = e.getChildNodes();
+            assertEquals(nl.item(0).getNodeValue().trim(), "<xml>This is not parsed</xml> yet");
+        } catch (IOException | SAXException | ParserConfigurationException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase to test the isIgnoringComments. By default it is false.
+     */
+    @Test
+    public void testCheckDocumentBuilderFactory03() {
+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+        assertFalse(dbf.isIgnoringComments());
+    }
+
+    /**
+     * Testcase to test the isValidating. By default it is false, set it to true
+     * and then use a document which is not valid. It should throw a warning or
+     * an error at least. The test passes in case retval 0 is set in the error
+     * method .
+     */
+    @Test
+    public void testCheckDocumentBuilderFactory04() {
+        try {
+            MyErrorHandler eh = MyErrorHandler.newInstance();
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            dbf.setValidating(true);
+            DocumentBuilder db = dbf.newDocumentBuilder();
+            db.setErrorHandler(eh);
+            Document doc = db.parse(new File(TestUtils.XML_DIR, "DocumentBuilderFactory05.xml"));
+            assertTrue(eh.errorOccured);
+        } catch (ParserConfigurationException | IOException | SAXException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase to test the setValidating. By default it is false, use a
+     * document which is not valid. It should not throw a warning or an error.
+     * The test passes in case the retval equals 1 .
+     */
+    @Test
+    public void testCheckDocumentBuilderFactory16() {
+        try {
+            MyErrorHandler eh = MyErrorHandler.newInstance();
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            DocumentBuilder db = dbf.newDocumentBuilder();
+            db.setErrorHandler(eh);
+            Document doc = db.parse(new File(TestUtils.XML_DIR, "DocumentBuilderFactory05.xml"));
+            assertFalse(eh.errorOccured);
+        } catch (ParserConfigurationException | IOException | SAXException e) {
+            failUnexpected(e);
+        }
+
+    }
+
+    /**
+     * Testcase to test the setValidating. By default it is false, use a
+     * document which is valid. It should not throw a warning or an error. The
+     * test passes in case the retval equals 1.
+     */
+    @Test
+    public void testCheckDocumentBuilderFactory17() {
+        try {
+            MyErrorHandler eh = MyErrorHandler.newInstance();
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            DocumentBuilder db = dbf.newDocumentBuilder();
+            db.setErrorHandler(eh);
+            Document doc = db.parse(new File(TestUtils.XML_DIR, "DocumentBuilderFactory04.xml"));
+            assertFalse(eh.errorOccured);
+        } catch (ParserConfigurationException | IOException | SAXException e) {
+            failUnexpected(e);
+        }
+
+    }
+
+    /**
+     * To test the isExpandEntityReferences. By default it is true.
+     */
+    @Test
+    public void testCheckDocumentBuilderFactory05() {
+        try {
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            DocumentBuilder docBuilder = dbf.newDocumentBuilder();
+            Document doc = docBuilder.parse(new FileInputStream(new File(TestUtils.XML_DIR, "DocumentBuilderFactory02.xml")));
+            Element e = (Element) doc.getElementsByTagName("title").item(0);
+            NodeList nl = e.getChildNodes();
+            assertTrue(dbf.isExpandEntityReferences());
+            assertEquals(nl.item(0).getNodeValue().trim().charAt(0), 'W');
+        } catch (ParserConfigurationException | IOException | SAXException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase to test the default functionality of setValidating method. The
+     * xml file has a DTD which has namespaces defined. The parser takes care to
+     * check if the namespaces using elements and defined attributes are there
+     * or not.
+     */
+    @Test
+    public void testCheckDocumentBuilderFactory06() {
+        try {
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            dbf.setValidating(true);
+            DocumentBuilder db = dbf.newDocumentBuilder();
+            MyErrorHandler eh = MyErrorHandler.newInstance();
+            db.setErrorHandler(eh);
+            Document doc = db.parse(new File(TestUtils.XML_DIR, "DocumentBuilderFactory04.xml"));
+            assertTrue(doc instanceof Document);
+            assertFalse(eh.errorOccured);
+        } catch (ParserConfigurationException | IOException | SAXException e) {
+            failUnexpected(e);
+        }
+
+    }
+
+    /**
+     * Testcase to test the setExpandEntityReferences.
+     */
+    @Test
+    public void testCheckDocumentBuilderFactory07() {
+        try {
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            dbf.setExpandEntityReferences(true);
+            DocumentBuilder docBuilder = dbf.newDocumentBuilder();
+            Document doc = docBuilder.parse(new FileInputStream(new File(TestUtils.XML_DIR, "DocumentBuilderFactory02.xml")));
+            Element e = (Element) doc.getElementsByTagName("title").item(0);
+            NodeList nl = e.getChildNodes();
+            assertTrue(dbf.isExpandEntityReferences());
+            assertEquals(nl.item(0).getNodeValue().trim().charAt(0), 'W');
+        } catch (ParserConfigurationException | IOException | SAXException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase to test the setExpandEntityReferences.
+     */
+    @Test
+    public void testCheckDocumentBuilderFactory08() {
+        try {
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            dbf.setExpandEntityReferences(false);
+            DocumentBuilder docBuilder = dbf.newDocumentBuilder();
+            Document doc = docBuilder.parse(new FileInputStream(new File(TestUtils.XML_DIR, "DocumentBuilderFactory02.xml")));
+            Element e = (Element) doc.getElementsByTagName("title").item(0);
+            NodeList nl = e.getChildNodes();
+            assertNull(nl.item(0).getNodeValue());
+        } catch (ParserConfigurationException | IOException | SAXException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase to test the setIgnoringComments. By default it is set to false.
+     * explicitly setting it to false, it recognizes the comment which is in
+     * Element Node Hence the Element's child node is not null.
+     */
+    @Test
+    public void testCheckDocumentBuilderFactory09() {
+        try {
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            dbf.setIgnoringComments(false);
+            DocumentBuilder docBuilder = dbf.newDocumentBuilder();
+            Document doc = docBuilder.parse(new FileInputStream(new File(TestUtils.XML_DIR, "DocumentBuilderFactory07.xml")));
+            Element e = (Element) doc.getElementsByTagName("body").item(0);
+            NodeList nl = e.getChildNodes();
+            assertNotNull(nl.item(0).getNodeValue());
+        } catch (ParserConfigurationException | IOException | SAXException e) {
+            failUnexpected(e);
+        }
+
+    }
+
+    /**
+     * This tests for the parse(InputSource).
+     */
+    @Test
+    public void testCheckDocumentBuilderFactory10() {
+        try {
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            DocumentBuilder docBuilder = dbf.newDocumentBuilder();
+            Document doc = docBuilder.parse(new InputSource(new BufferedReader(new FileReader(new File(TestUtils.XML_DIR, "DocumentBuilderFactory07.xml")))));
+            assertTrue(doc instanceof Document);
+        } catch (IllegalArgumentException | ParserConfigurationException | IOException | SAXException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * This tests for the parse InputStream with SystemID as a second parameter.
+     */
+    @Test
+    public void testCheckDocumentBuilderFactory11() {
+        try {
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            DocumentBuilder docBuilder = dbf.newDocumentBuilder();
+            Document doc = docBuilder.parse(new FileInputStream(new File(TestUtils.XML_DIR, "dbf10import.xsl")), new File(TestUtils.XML_DIR).toURI()
+                    .toASCIIString());
+            assertTrue(doc instanceof Document);
+        } catch (IllegalArgumentException | ParserConfigurationException | IOException | SAXException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * This tests for the parse InputStream with empty SystemID as a second
+     * parameter.
+     */
+    @Test
+    public void testCheckDocumentBuilderFactory12() {
+        try {
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            DocumentBuilder docBuilder = dbf.newDocumentBuilder();
+            Document doc = docBuilder.parse(new FileInputStream(new File(TestUtils.XML_DIR, "dbf10import.xsl")), " ");
+            assertTrue(doc instanceof Document);
+        } catch (IllegalArgumentException | ParserConfigurationException | IOException | SAXException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * This tests for the parse(uri).
+     */
+    @Test
+    public void testCheckDocumentBuilderFactory13() {
+        try {
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            DocumentBuilder docBuilder = dbf.newDocumentBuilder();
+            Document doc = docBuilder.parse(new File(TestUtils.XML_DIR + FILE_SEP + "dbf10import.xsl").toURI().toASCIIString());
+            assertTrue(doc instanceof Document);
+        } catch (IllegalArgumentException | ParserConfigurationException | IOException | SAXException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * This tests for the parse (uri) with empty string as parameter should
+     * throw Sax Exception.
+     *
+     * @throws SAXException
+     *             If any parse errors occur.
+     */
+    @Test(expectedExceptions = SAXException.class)
+    public void testCheckDocumentBuilderFactory14() throws SAXException {
+        try {
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            DocumentBuilder docBuilder = dbf.newDocumentBuilder();
+            docBuilder.parse("");
+        } catch (ParserConfigurationException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * This tests for the parse (uri) with null uri as parameter should throw
+     * IllegalArgumentException.
+     *
+     */
+    @Test(expectedExceptions = IllegalArgumentException.class)
+    public void testCheckDocumentBuilderFactory15() {
+        try {
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            DocumentBuilder docBuilder = dbf.newDocumentBuilder();
+            String uri = null;
+            docBuilder.parse(uri);
+        } catch (ParserConfigurationException | SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase to test the setIgnoringComments. By default it is set to false,
+     * setting this to true, It does not recognize the comment, Here the
+     * nodelist has a length 0 because the ignoring comments is true.
+     */
+    @Test
+    public void testCheckIgnoringComments() {
+        try {
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            dbf.setIgnoringComments(true);
+            DocumentBuilder docBuilder = dbf.newDocumentBuilder();
+            Document doc = docBuilder.parse(new FileInputStream(new File(TestUtils.XML_DIR, "DocumentBuilderFactory08.xml")));
+            Element e = (Element) doc.getElementsByTagName("body").item(0);
+            NodeList nl = e.getChildNodes();
+            assertEquals(nl.getLength(), 0);
+        } catch (ParserConfigurationException | SAXException | IOException e) {
+            failUnexpected(e);
+        }
+
+    }
+
+    /**
+     * Testcase to test the default behaviour of setIgnoringComments. By default
+     * it is set to false, this is similar to case 9 but not setIgnoringComments
+     * explicitly, it does not recognize the comment.
+     */
+    @Test
+    public void testCheckIgnoringComments1() {
+        try {
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            DocumentBuilder docBuilder = dbf.newDocumentBuilder();
+            Document doc = docBuilder.parse(new FileInputStream(new File(TestUtils.XML_DIR, "DocumentBuilderFactory07.xml")));
+            Element e = (Element) doc.getElementsByTagName("body").item(0);
+            NodeList nl = e.getChildNodes();
+            assertFalse(dbf.isIgnoringComments());
+            assertNotNull(nl.item(0).getNodeValue());
+        } catch (ParserConfigurationException | SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/DocumentBuilderFactory02.java	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.parsers.ptests;
+
+import static jaxp.library.JAXPTestUtilities.FILE_SEP;
+import static jaxp.library.JAXPTestUtilities.USER_DIR;
+import static jaxp.library.JAXPTestUtilities.compareWithGold;
+import static jaxp.library.JAXPTestUtilities.failUnexpected;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.sax.SAXResult;
+
+import org.testng.annotations.Test;
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
+
+/**
+ * This tests the setIgnoringElementWhitespace and setIgnoringComments of
+ * DocumentBuilderFactory
+ */
+public class DocumentBuilderFactory02 {
+
+    /**
+     * This testcase tests for the isIgnoringElementContentWhitespace and the
+     * setIgnoringElementContentWhitespace. The xml file has all kinds of
+     * whitespace,tab and newline characters, it uses the MyNSContentHandler
+     * which does not invoke the characters callback when this
+     * setIgnoringElementContentWhitespace is set to true.
+     */
+    @Test
+    public void testCheckElementContentWhitespace() {
+        try {
+            String goldFile = TestUtils.GOLDEN_DIR + FILE_SEP + "dbfactory02GF.out";
+            String outputFile = USER_DIR + FILE_SEP + "dbfactory02.out";
+            MyErrorHandler eh = MyErrorHandler.newInstance();
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            dbf.setValidating(true);
+            assertFalse(dbf.isIgnoringElementContentWhitespace());
+            dbf.setIgnoringElementContentWhitespace(true);
+            DocumentBuilder db = dbf.newDocumentBuilder();
+            db.setErrorHandler(eh);
+            Document doc = db.parse(new File(TestUtils.XML_DIR, "DocumentBuilderFactory06.xml"));
+            assertFalse(eh.errorOccured);
+            DOMSource domSource = new DOMSource(doc);
+            TransformerFactory tfactory = TransformerFactory.newInstance();
+            Transformer transformer = tfactory.newTransformer();
+            SAXResult saxResult = new SAXResult();
+            saxResult.setHandler(MyCHandler.newInstance(new File(outputFile)));
+            transformer.transform(domSource, saxResult);
+            assertTrue(compareWithGold(goldFile, outputFile));
+        } catch (ParserConfigurationException | SAXException | IOException | TransformerException e) {
+            failUnexpected(e);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/DocumentBuilderImpl01.java	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.parsers.ptests;
+
+import static jaxp.library.JAXPTestUtilities.FILE_SEP;
+import static jaxp.library.JAXPTestUtilities.failUnexpected;
+import static org.testng.Assert.assertFalse;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+import org.w3c.dom.Document;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+/**
+ * This checks for the methods of DocumentBuilder
+ */
+public class DocumentBuilderImpl01 implements EntityResolver {
+
+    /**
+     * Provide DocumentBuilder.
+     *
+     * @throws ParserConfigurationException
+     */
+    @DataProvider(name = "builder-provider")
+    public Object[][] getBuilder() throws ParserConfigurationException {
+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+        DocumentBuilder docBuilder = dbf.newDocumentBuilder();
+        return new Object[][] { { docBuilder } };
+    }
+
+    /**
+     * Testcase to test the default functionality of isValidation method. Expect
+     * to return false because not setting the validation.
+     */
+    @Test(dataProvider = "builder-provider")
+    public void testCheckDocumentBuilderImpl01(DocumentBuilder docBuilder) {
+        assertFalse(docBuilder.isValidating());
+
+    }
+
+    /**
+     * Testcase to test the default functionality of isNamespaceAware method.
+     */
+    @Test(dataProvider = "builder-provider")
+    public void testCheckDocumentBuilderImpl02(DocumentBuilder docBuilder) {
+        assertFalse(docBuilder.isNamespaceAware());
+    }
+
+    /**
+     * Testcase to test the parse(InputStream).
+     */
+    @Test(dataProvider = "builder-provider")
+    public void testCheckDocumentBuilderImpl04(DocumentBuilder docBuilder) {
+        try {
+            Document doc = docBuilder.parse(new FileInputStream(new File(TestUtils.XML_DIR, "DocumentBuilderImpl01.xml")));
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase to test the parse(File).
+     */
+    @Test(dataProvider = "builder-provider")
+    public void testCheckDocumentBuilderImpl05(DocumentBuilder docBuilder) {
+        try {
+            Document doc = docBuilder.parse(new File(TestUtils.XML_DIR, "DocumentBuilderImpl01.xml"));
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase to test the parse(InputStream,systemId).
+     */
+    @Test(dataProvider = "builder-provider")
+    public void testCheckDocumentBuilderImpl06(DocumentBuilder docBuilder) {
+        try {
+            Document doc = docBuilder.parse(new FileInputStream(new File(TestUtils.XML_DIR, "DocumentBuilderImpl02.xml")), new File(TestUtils.XML_DIR).toURI()
+                    .toASCIIString() + FILE_SEP);
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase to test the setEntityResolver.
+     */
+    @Test(dataProvider = "builder-provider")
+    public void testCheckDocumentBuilderImpl07(DocumentBuilder docBuilder) {
+        docBuilder.setEntityResolver(this);
+        resolveEntity("publicId", "http://www.myhost.com/today");
+    }
+
+    public InputSource resolveEntity(String publicId, String systemId) {
+        if (systemId.equals("http://www.myhost.com/today"))
+            return new InputSource(systemId);
+        else
+            return null;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/FactoryConfErrorTest.java	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.parsers.ptests;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.FactoryConfigurationError;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.testng.annotations.AfterTest;
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.Test;
+
+/**
+ * Class containing the test cases for SAXParserFactory/DocumentBuilderFactory
+ * newInstance methods.
+ */
+public class FactoryConfErrorTest {
+
+    /**
+     * Set properties DocumentBuilderFactory and SAXParserFactory to invalid
+     * value before any test run.
+     */
+    @BeforeTest
+    public void setup() {
+        System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "xx");
+        System.setProperty("javax.xml.parsers.SAXParserFactory", "xx");
+    }
+
+    /**
+     * Restore properties DocumentBuilderFactory and SAXParserFactory to default
+     * value after all tests run.
+     */
+    @AfterTest
+    public void cleanup() {
+        System.clearProperty("javax.xml.parsers.DocumentBuilderFactory");
+        System.clearProperty("javax.xml.parsers.SAXParserFactory");
+    }
+
+    /**
+     * To test exception thrown if javax.xml.parsers.SAXParserFactory property
+     * is invalid.
+     */
+    @Test(expectedExceptions = FactoryConfigurationError.class)
+    public void testNewInstance01() {
+        SAXParserFactory.newInstance();
+    }
+
+    /**
+     * To test exeception thrown if javax.xml.parsers.DocumentBuilderFactory is
+     * invalid.
+     */
+    @Test(expectedExceptions = FactoryConfigurationError.class)
+    public void testNewInstance02() {
+        DocumentBuilderFactory.newInstance();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/SAXParserFactTest.java	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,268 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.parsers.ptests;
+
+import static jaxp.library.JAXPTestUtilities.failUnexpected;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.testng.annotations.Test;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXNotRecognizedException;
+import org.xml.sax.SAXNotSupportedException;
+
+/**
+ * Class containing the test cases for SAXParserFactory API
+ */
+public class SAXParserFactTest {
+
+    private static final String NAMESPACES = "http://xml.org/sax/features/namespaces";
+    private static final String NAMESPACE_PREFIXES = "http://xml.org/sax/features/namespace-prefixes";
+    private static final String STRING_INTERNING = "http://xml.org/sax/features/string-interning";
+    private static final String VALIDATION = "http://xml.org/sax/features/validation";
+    private static final String EXTERNAL_G_ENTITIES = "http://xml.org/sax/features/external-general-entities";
+    private static final String EXTERNAL_P_ENTITIES = "http://xml.org/sax/features/external-parameter-entities";
+
+    /**
+     * Testcase to test if newSAXParser() method returns SAXParser.
+     */
+    @Test
+    public void testParser01() {
+        try {
+            SAXParserFactory spf = SAXParserFactory.newInstance();
+            SAXParser saxparser = spf.newSAXParser();
+        } catch (ParserConfigurationException | SAXException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase to test the default functionality (No validation) of the parser.
+     */
+    @Test
+    public void testValidate01() {
+        SAXParserFactory spf = SAXParserFactory.newInstance();
+        assertFalse(spf.isValidating());
+    }
+
+    /**
+     * Testcase to test the functionality of setValidating and isvalidating
+     * methods.
+     */
+    @Test
+    public void testValidate02() {
+        SAXParserFactory spf = SAXParserFactory.newInstance();
+        spf.setValidating(true);
+        assertTrue(spf.isValidating());
+    }
+
+    /**
+     * Parser should not be namespaceaware by default.
+     */
+    @Test
+    public void testNamespace01() {
+        SAXParserFactory spf = SAXParserFactory.newInstance();
+        assertFalse(spf.isNamespaceAware());
+    }
+
+    /**
+     * Testcase to test the functionality of setNamespaceAware and
+     * isNamespaceAware methods.
+     */
+    @Test
+    public void testNamespace02() {
+        SAXParserFactory spf = SAXParserFactory.newInstance();
+        spf.setNamespaceAware(true);
+        assertTrue(spf.isNamespaceAware());
+    }
+
+    /**
+     * Testcase to test the functionality of setNamespaceAware and getFeature()
+     * methods for namespaces property.
+     */
+    @Test
+    public void testFeature01() {
+        try {
+            SAXParserFactory spf = SAXParserFactory.newInstance();
+            assertFalse(spf.getFeature(NAMESPACES));
+
+            spf.setNamespaceAware(true);
+            assertTrue(spf.getFeature(NAMESPACES));
+        } catch (ParserConfigurationException | SAXNotRecognizedException | SAXNotSupportedException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase to test the functionality of setFeature and getFeature methods
+     * for namespaces property.
+     */
+    @Test
+    public void testFeature02() {
+        try {
+            SAXParserFactory spf = SAXParserFactory.newInstance();
+
+            spf.setFeature(NAMESPACES, true);
+            assertTrue(spf.getFeature(NAMESPACES));
+
+            spf.setFeature(NAMESPACES, false);
+            assertFalse(spf.getFeature(NAMESPACES));
+        } catch (ParserConfigurationException | SAXNotRecognizedException | SAXNotSupportedException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase to test the functionality of setFeature and getFeature methods
+     * for namespace-prefixes property.
+     */
+    @Test
+    public void testFeature03() {
+        try {
+            SAXParserFactory spf = SAXParserFactory.newInstance();
+
+            spf.setFeature(NAMESPACE_PREFIXES, true);
+            assertTrue(spf.getFeature(NAMESPACE_PREFIXES));
+
+            spf.setFeature(NAMESPACE_PREFIXES, false);
+            assertFalse(spf.getFeature(NAMESPACE_PREFIXES));
+        } catch (ParserConfigurationException | SAXNotRecognizedException | SAXNotSupportedException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase to test the functionality of getFeature method for
+     * string-interning property.
+     */
+    @Test
+    public void testFeature04() {
+        try {
+            SAXParserFactory spf = SAXParserFactory.newInstance();
+            assertTrue(spf.getFeature(STRING_INTERNING));
+        } catch (ParserConfigurationException | SAXNotRecognizedException | SAXNotSupportedException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase to test the functionality of getFeature and setValidating
+     * methods for validation property.
+     */
+    @Test
+    public void testFeature05() {
+        try {
+            SAXParserFactory spf = SAXParserFactory.newInstance();
+            assertFalse(spf.getFeature(VALIDATION));
+            spf.setValidating(true);
+            assertTrue(spf.getFeature(VALIDATION));
+        } catch (ParserConfigurationException | SAXNotRecognizedException | SAXNotSupportedException e) {
+            failUnexpected(e);
+        }
+
+    }
+
+    /**
+     * Testcase to test the functionality of setFeature and getFeature methods
+     * for validation property.
+     */
+    @Test
+    public void testFeature06() {
+        try {
+            SAXParserFactory spf = SAXParserFactory.newInstance();
+
+            spf.setFeature(VALIDATION, true);
+            assertTrue(spf.getFeature(VALIDATION));
+
+            spf.setFeature(VALIDATION, false);
+            assertFalse(spf.getFeature(VALIDATION));
+        } catch (ParserConfigurationException | SAXNotRecognizedException | SAXNotSupportedException e) {
+            failUnexpected(e);
+        }
+
+    }
+
+    /**
+     * Testcase to test the functionality of getFeature method for
+     * external-general-entities property.
+     */
+    @Test
+    public void testFeature07() {
+        try {
+            SAXParserFactory spf = SAXParserFactory.newInstance();
+            assertTrue(spf.getFeature(EXTERNAL_G_ENTITIES));
+        } catch (ParserConfigurationException | SAXNotRecognizedException | SAXNotSupportedException e) {
+            failUnexpected(e);
+        }
+
+    }
+
+    /**
+     * Testcase to test the functionality of setFeature and getFeature methods
+     * for external-general-entities property.
+     */
+    @Test
+    public void testFeature08() {
+        try {
+            SAXParserFactory spf = SAXParserFactory.newInstance();
+            spf.setFeature(EXTERNAL_G_ENTITIES, false);
+            assertFalse(spf.getFeature(EXTERNAL_G_ENTITIES));
+        } catch (ParserConfigurationException | SAXNotRecognizedException | SAXNotSupportedException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase to test the functionality of getFeature method for
+     * external-parameter-entities property.
+     */
+    @Test
+    public void testFeature09() {
+        try {
+            SAXParserFactory spf = SAXParserFactory.newInstance();
+            assertTrue(spf.getFeature(EXTERNAL_P_ENTITIES));
+        } catch (ParserConfigurationException | SAXNotRecognizedException | SAXNotSupportedException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase to test the functionality of setFeature method for
+     * external-parameter-entitie property.
+     */
+    @Test
+    public void testFeature10() {
+        try {
+            SAXParserFactory spf = SAXParserFactory.newInstance();
+            spf.setFeature(EXTERNAL_P_ENTITIES, false);
+        } catch (ParserConfigurationException | SAXNotRecognizedException | SAXNotSupportedException e) {
+            failUnexpected(e);
+        }
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/SAXParserTest.java	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,559 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.parsers.ptests;
+
+import static jaxp.library.JAXPTestUtilities.failUnexpected;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+import org.xml.sax.HandlerBase;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ * Class contains the test cases for SAXParser API
+ */
+public class SAXParserTest {
+
+    /**
+     * Provide SAXParser.
+     *
+     * @throws SAXException
+     * @throws ParserConfigurationException
+     */
+    @DataProvider(name = "parser-provider")
+    public Object[][] getParser() throws ParserConfigurationException, SAXException {
+        SAXParserFactory spf = SAXParserFactory.newInstance();
+        SAXParser saxparser = spf.newSAXParser();
+        return new Object[][] { { saxparser } };
+    }
+
+    /**
+     * Test case with FileInputStream null, parsing should fail and throw
+     * IllegalArgumentException.
+     *
+     * @throws IllegalArgumentException
+     */
+    @Test(expectedExceptions = IllegalArgumentException.class, dataProvider = "parser-provider")
+    public void testParse01(SAXParser saxparser) throws IllegalArgumentException {
+        try {
+            FileInputStream instream = null;
+            HandlerBase handler = new HandlerBase();
+            saxparser.parse(instream, handler);
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with an error in xml file, parsing should fail and throw
+     * SAXException.
+     *
+     * @throws SAXException
+     */
+    @Test(expectedExceptions = SAXException.class, dataProvider = "parser-provider")
+    public void testParse02(SAXParser saxparser) throws SAXException {
+        try {
+            HandlerBase handler = new HandlerBase();
+            FileInputStream instream = new FileInputStream(new File(TestUtils.XML_DIR, "invalid.xml"));
+            saxparser.parse(instream, handler);
+        } catch (IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with a valid in xml file, parser should parse the xml document.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testParse03(SAXParser saxparser) {
+        try {
+            HandlerBase handler = new HandlerBase();
+            saxparser.parse(new File(TestUtils.XML_DIR, "parsertest.xml"), handler);
+        } catch (IOException | SAXException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with valid input stream, parser should parse the xml document
+     * successfully.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testParse04(SAXParser saxparser) {
+        try {
+            HandlerBase handler = new HandlerBase();
+            FileInputStream instream = new FileInputStream(new File(TestUtils.XML_DIR, "correct.xml"));
+            saxparser.parse(instream, handler);
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with valid input source, parser should parse the xml document
+     * successfully.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testParse05(SAXParser saxparser) {
+        try {
+            HandlerBase handler = new HandlerBase();
+            FileInputStream instream = new FileInputStream(new File(TestUtils.XML_DIR, "parsertest.xml"));
+            saxparser.parse(instream, handler, new File(TestUtils.XML_DIR).toURI().toASCIIString());
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with uri null, parsing should fail and throw
+     * IllegalArgumentException.
+     *
+     * @throws IllegalArgumentException
+     */
+    @Test(expectedExceptions = IllegalArgumentException.class, dataProvider = "parser-provider")
+    public void testParse07(SAXParser saxparser) throws IllegalArgumentException {
+        try {
+            String uri = null;
+            HandlerBase handler = new HandlerBase();
+            saxparser.parse(uri, handler);
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with non-existant uri, parsing should fail and throw
+     * IOException.
+     *
+     * @throws SAXException
+     * @throws IOException
+     */
+    @Test(expectedExceptions = { SAXException.class, IOException.class }, dataProvider = "parser-provider")
+    public void testParse08(SAXParser saxparser) throws SAXException, IOException {
+        String uri = " ";
+
+        HandlerBase handler = new HandlerBase();
+        saxparser.parse(uri, handler);
+
+    }
+
+    /**
+     * Testcase with proper uri, parser should parse successfully.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testParse09(SAXParser saxparser) {
+        try {
+            File file = new File(TestUtils.XML_DIR, "correct.xml");
+            HandlerBase handler = new HandlerBase();
+            saxparser.parse(file.toURI().toASCIIString(), handler);
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with File null, parsing should fail and throw
+     * IllegalArgumentException.
+     *
+     * @throws IllegalArgumentException
+     */
+    @Test(expectedExceptions = IllegalArgumentException.class, dataProvider = "parser-provider")
+    public void testParse10(SAXParser saxparser) throws IllegalArgumentException {
+        try {
+            File file = null;
+            HandlerBase handler = new HandlerBase();
+            saxparser.parse(file, handler);
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with empty string as File, parsing should fail and throw
+     * SAXException.
+     *
+     * @throws SAXException
+     */
+    @Test(expectedExceptions = SAXException.class, dataProvider = "parser-provider")
+    public void testParse11(SAXParser saxparser) throws SAXException {
+        try {
+            HandlerBase handler = new HandlerBase();
+            File file = new File("");
+            saxparser.parse(file, handler);
+        } catch (IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with xml file that has errors parsing should fail and throw
+     * SAXException.
+     *
+     * @throws SAXException
+     */
+    @Test(expectedExceptions = SAXException.class, dataProvider = "parser-provider")
+    public void testParse12(SAXParser saxparser) throws SAXException {
+        try {
+            HandlerBase handler = new HandlerBase();
+            File file = new File(TestUtils.XML_DIR, "valid.xml");
+            saxparser.parse(file, handler);
+        } catch (IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with xml file that has no errors Parser should successfully
+     * parse the xml document.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testParse13(SAXParser saxparser) {
+        try {
+            HandlerBase handler = new HandlerBase();
+            File file = new File(TestUtils.XML_DIR, "correct.xml");
+            saxparser.parse(file, handler);
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+
+    }
+
+    /**
+     * Testcase with input source null, parsing should fail and throw
+     * IllegalArgumentException.
+     *
+     * @throws IllegalArgumentException
+     */
+    @Test(expectedExceptions = IllegalArgumentException.class, dataProvider = "parser-provider")
+    public void testParse14(SAXParser saxparser) throws IllegalArgumentException {
+        try {
+            InputSource is = null;
+            HandlerBase handler = new HandlerBase();
+            saxparser.parse(is, handler);
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with input source attached an invaild xml, parsing should fail
+     * and throw SAXException.
+     *
+     * @throws SAXException
+     */
+    @Test(expectedExceptions = SAXException.class, dataProvider = "parser-provider")
+    public void testParse15(SAXParser saxparser) throws SAXException {
+        try {
+            HandlerBase handler = new HandlerBase();
+            FileInputStream instream = new FileInputStream(new File(TestUtils.XML_DIR, "invalid.xml"));
+            InputSource is = new InputSource(instream);
+            saxparser.parse(is, handler);
+        } catch (IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with input source attached an vaild xml, parser should
+     * successfully parse the xml document.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testParse16(SAXParser saxparser) {
+        try {
+            HandlerBase handler = new HandlerBase();
+            FileInputStream instream = new FileInputStream(new File(TestUtils.XML_DIR, "correct.xml"));
+            InputSource is = new InputSource(instream);
+            saxparser.parse(is, handler);
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with FileInputStream null, parsing should fail and throw
+     * IllegalArgumentException.
+     *
+     * @throws IllegalArgumentException
+     */
+    @Test(expectedExceptions = IllegalArgumentException.class, dataProvider = "parser-provider")
+    public void testParse17(SAXParser saxparser) throws IllegalArgumentException {
+        try {
+            FileInputStream instream = null;
+            DefaultHandler handler = new DefaultHandler();
+            saxparser.parse(instream, handler);
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with an error in xml file, parsing should fail and throw
+     * SAXException.
+     *
+     * @throws SAXException
+     */
+    @Test(expectedExceptions = SAXException.class, dataProvider = "parser-provider")
+    public void testParse18(SAXParser saxparser) throws SAXException {
+        try {
+            DefaultHandler handler = new DefaultHandler();
+            FileInputStream instream = new FileInputStream(new File(TestUtils.XML_DIR, "invalid.xml"));
+            saxparser.parse(instream, handler);
+        } catch (IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with valid input stream, parser should parse the xml document
+     * successfully.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testParse19(SAXParser saxparser) {
+        try {
+            DefaultHandler handler = new DefaultHandler();
+            saxparser.parse(new File(TestUtils.XML_DIR, "parsertest.xml"), handler);
+        } catch (IOException | SAXException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with valid input stream, parser should parse the xml document
+     * successfully.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testParse20(SAXParser saxparser) {
+        try {
+            DefaultHandler handler = new DefaultHandler();
+            FileInputStream instream = new FileInputStream(new File(TestUtils.XML_DIR, "correct.xml"));
+            saxparser.parse(instream, handler);
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with valid input source, parser should parse the xml document
+     * successfully.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testParse21(SAXParser saxparser) {
+        try {
+            DefaultHandler handler = new DefaultHandler();
+            FileInputStream instream = new FileInputStream(new File(TestUtils.XML_DIR, "parsertest.xml"));
+            saxparser.parse(instream, handler, new File(TestUtils.XML_DIR).toURI().toASCIIString());
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+
+    }
+
+    /**
+     * Testcase with uri null, parsing should fail and throw
+     * IllegalArgumentException.
+     *
+     * @throws IllegalArgumentException
+     */
+    @Test(expectedExceptions = IllegalArgumentException.class, dataProvider = "parser-provider")
+    public void testParse23(SAXParser saxparser) throws IllegalArgumentException {
+        try {
+            String uri = null;
+            DefaultHandler handler = new DefaultHandler();
+            saxparser.parse(uri, handler);
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with non-existant uri, parsing should fail and throw
+     * SAXException or IOException.
+     *
+     * @throws SAXException
+     * @throws IOException
+     */
+    @Test(expectedExceptions = { SAXException.class, IOException.class }, dataProvider = "parser-provider")
+    public void testParse24(SAXParser saxparser) throws SAXException, IOException {
+        String uri = " ";
+        DefaultHandler handler = new DefaultHandler();
+        saxparser.parse(uri, handler);
+
+    }
+
+    /**
+     * Testcase with proper uri, parser should parse successfully.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testParse25(SAXParser saxparser) {
+        try {
+            File file = new File(TestUtils.XML_DIR, "correct.xml");
+
+            DefaultHandler handler = new DefaultHandler();
+            saxparser.parse(file.toURI().toASCIIString(), handler);
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with File null, parsing should fail and throw
+     * IllegalArgumentException.
+     *
+     * @throws IllegalArgumentException
+     */
+    @Test(expectedExceptions = IllegalArgumentException.class, dataProvider = "parser-provider")
+    public void testParse26(SAXParser saxparser) throws IllegalArgumentException {
+        try {
+            DefaultHandler handler = new DefaultHandler();
+            saxparser.parse((File) null, handler);
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with empty string as File, parsing should fail and throw
+     * SAXException.
+     *
+     * @throws SAXException
+     */
+    @Test(expectedExceptions = SAXException.class, dataProvider = "parser-provider")
+    public void testParse27(SAXParser saxparser) throws SAXException {
+        try {
+            DefaultHandler handler = new DefaultHandler();
+            File file = new File("");
+            saxparser.parse(file, handler);
+        } catch (IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with xml file that has errors, parsing should fail and throw
+     * SAXException.
+     *
+     * @throws SAXException
+     */
+    @Test(expectedExceptions = SAXException.class, dataProvider = "parser-provider")
+    public void testParse28(SAXParser saxparser) throws SAXException {
+        try {
+            DefaultHandler handler = new DefaultHandler();
+            File file = new File(TestUtils.XML_DIR, "valid.xml");
+            saxparser.parse(file, handler);
+        } catch (IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with xml file that has no errors, parser should successfully
+     * parse the xml document.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testParse29(SAXParser saxparser) {
+        try {
+            DefaultHandler handler = new DefaultHandler();
+            File file = new File(TestUtils.XML_DIR, "correct.xml");
+            saxparser.parse(file, handler);
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with input source null, parsing should fail and throw
+     * IllegalArgumentException.
+     *
+     * @throws IllegalArgumentException
+     */
+    @Test(expectedExceptions = IllegalArgumentException.class, dataProvider = "parser-provider")
+    public void testParse30(SAXParser saxparser) throws IllegalArgumentException {
+        try {
+            InputSource is = null;
+            DefaultHandler handler = new DefaultHandler();
+            saxparser.parse(is, handler);
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Testcase with an invalid xml file, parser should throw SAXException.
+     *
+     * @throws SAXException
+     */
+    @Test(expectedExceptions = SAXException.class, dataProvider = "parser-provider")
+    public void testParse31(SAXParser saxparser) throws SAXException {
+        try {
+            DefaultHandler handler = new DefaultHandler();
+            FileInputStream instream = new FileInputStream(new File(TestUtils.XML_DIR, "invalid.xml"));
+            InputSource is = new InputSource(instream);
+            saxparser.parse(is, handler);
+        } catch (IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Test case to parse an xml file that not use namespaces.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testParse32(SAXParser saxparser) {
+        try {
+            DefaultHandler handler = new DefaultHandler();
+            FileInputStream instream = new FileInputStream(new File(TestUtils.XML_DIR, "correct.xml"));
+            InputSource is = new InputSource(instream);
+            saxparser.parse(is, handler);
+        } catch (SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Test case to parse an xml file that uses namespaces.
+     */
+    @Test
+    public void testParse33() {
+        try {
+            SAXParserFactory spf = SAXParserFactory.newInstance();
+            spf.setNamespaceAware(true);
+            SAXParser saxparser = spf.newSAXParser();
+            HandlerBase handler = new HandlerBase();
+            FileInputStream instream = new FileInputStream(new File(TestUtils.XML_DIR, "ns4.xml"));
+            saxparser.parse(instream, handler);
+        } catch (ParserConfigurationException | SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/SAXParserTest02.java	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,283 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.parsers.ptests;
+
+import static jaxp.library.JAXPTestUtilities.failUnexpected;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+
+import javax.xml.parsers.FactoryConfigurationError;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+import org.xml.sax.Parser;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXNotRecognizedException;
+import org.xml.sax.SAXNotSupportedException;
+import org.xml.sax.XMLReader;
+import org.xml.sax.ext.DeclHandler;
+import org.xml.sax.ext.LexicalHandler;
+
+/**
+ * Class contains the test cases for SAXParser API
+ */
+public class SAXParserTest02 {
+    final String DOM_NODE = "http://xml.org/sax/properties/dom-node";
+    final String XML_STRING = "http://xml.org/sax/properties/xml-string";
+    final String DECL_HANDLER = "http://xml.org/sax/properties/declaration-handler";
+    final String LEXICAL_HANDLER = "http://xml.org/sax/properties/lexical-handler";
+
+    /**
+     * Provide SAXParser.
+     *
+     * @throws SAXException
+     * @throws ParserConfigurationException
+     */
+    @DataProvider(name = "parser-provider")
+    public Object[][] getParser() throws ParserConfigurationException, SAXException {
+        SAXParserFactory spf = SAXParserFactory.newInstance();
+        SAXParser saxparser = spf.newSAXParser();
+        return new Object[][] { { saxparser } };
+    }
+
+    /**
+     * Testcase to test the default functionality (No validation) of the parser.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testValidate01(SAXParser saxparser) {
+        try {
+            assertFalse(saxparser.isValidating());
+        } catch (FactoryConfigurationError e) {
+            failUnexpected(e);
+        }
+
+    }
+
+    /**
+     * Testcase to test the functionality of setValidating and isvalidating
+     * methods.
+     */
+    @Test
+    public void testValidate02() {
+        try {
+            SAXParserFactory spf = SAXParserFactory.newInstance();
+            spf.setValidating(true);
+            spf.newSAXParser();
+            assertTrue(spf.isValidating());
+        } catch (FactoryConfigurationError | ParserConfigurationException | SAXException e) {
+            failUnexpected(e);
+        }
+
+    }
+
+    /**
+     * Test case to test isNamespaceAware() method. By default, namespaces are
+     * not supported.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testNamespace01(SAXParser saxparser) {
+        try {
+            assertFalse(saxparser.isNamespaceAware());
+        } catch (FactoryConfigurationError e) {
+            failUnexpected(e);
+        }
+
+    }
+
+    /**
+     * Test case to test setnamespaceAware() method.
+     */
+    @Test
+    public void testNamespace02() {
+        try {
+            SAXParserFactory spf = SAXParserFactory.newInstance();
+            spf.setNamespaceAware(true);
+            SAXParser saxparser = spf.newSAXParser();
+            assertTrue(saxparser.isNamespaceAware());
+        } catch (FactoryConfigurationError | ParserConfigurationException | SAXException e) {
+            failUnexpected(e);
+        }
+
+    }
+
+    /**
+     * Test case to test if the getParser() method returns instance of Parser.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testParser01(SAXParser saxparser) {
+        try {
+            Parser parser = saxparser.getParser();
+        } catch (FactoryConfigurationError | SAXException e) {
+            failUnexpected(e);
+        }
+
+    }
+
+    /**
+     * Test case to test if the getXMLReader() method returns instance of
+     * XMLReader.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testXmlReader01(SAXParser saxparser) {
+        try {
+            XMLReader xmlReader = saxparser.getXMLReader();
+        } catch (FactoryConfigurationError | SAXException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Test whether the xml-string property is not supported.
+     *
+     * @throws SAXNotSupportedException
+     */
+    @Test(expectedExceptions = SAXNotSupportedException.class, dataProvider = "parser-provider")
+    public void testProperty01(SAXParser saxparser) throws SAXNotSupportedException {
+        try {
+            Object object = saxparser.getProperty(XML_STRING);
+        } catch (SAXNotRecognizedException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Test whether the dom-node property is not supported.
+     *
+     * @throws SAXNotSupportedException
+     */
+    @Test(expectedExceptions = SAXNotSupportedException.class, dataProvider = "parser-provider")
+    public void testProperty02(SAXParser saxparser) throws SAXNotSupportedException {
+        try {
+            Object object = saxparser.getProperty(DOM_NODE);
+        } catch (SAXNotRecognizedException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Test the default lexical-handler not exists.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testProperty03(SAXParser saxparser) {
+        try {
+            assertNull(saxparser.getProperty(LEXICAL_HANDLER));
+        } catch (SAXException e) {
+            failUnexpected(e);
+        }
+
+    }
+
+    /**
+     * Test the default declaration-handler not exists.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testProperty04(SAXParser saxparser) {
+
+        try {
+            assertNull(saxparser.getProperty(DECL_HANDLER));
+        } catch (SAXException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Test to set and get the lexical-handler.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testProperty05(SAXParser saxparser) {
+        try {
+            MyLexicalHandler myLexicalHandler = new MyLexicalHandler();
+            saxparser.setProperty(LEXICAL_HANDLER, myLexicalHandler);
+            Object object = saxparser.getProperty(LEXICAL_HANDLER);
+            assertTrue(object instanceof LexicalHandler);
+        } catch (SAXException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * Test to set and get the declaration-handler.
+     */
+    @Test(dataProvider = "parser-provider")
+    public void testProperty06(SAXParser saxparser) {
+        try {
+            MyDeclHandler myDeclHandler = new MyDeclHandler();
+            saxparser.setProperty(DECL_HANDLER, myDeclHandler);
+            Object object = saxparser.getProperty(DECL_HANDLER);
+            assertTrue(object instanceof DeclHandler);
+        } catch (SAXException e) {
+            failUnexpected(e);
+        }
+
+    }
+
+    /**
+     * Customized LexicalHandler used for test.
+     */
+    private class MyLexicalHandler implements LexicalHandler {
+
+        public void comment(char[] ch, int start, int length) {
+        }
+
+        public void endCDATA() {
+        }
+
+        public void endDTD() {
+        }
+
+        public void endEntity(String name) {
+        }
+
+        public void startCDATA() {
+        }
+
+        public void startDTD(String name, String publicId, String systemId) {
+        }
+
+        public void startEntity(String name) {
+        }
+    }
+
+    /**
+     * Customized DeclHandler used for test.
+     */
+    private class MyDeclHandler implements DeclHandler {
+
+        public void attributeDecl(String eName, String aName, String type, String valueDefault, String value) {
+        }
+
+        public void elementDecl(String name, String model) {
+        }
+
+        public void externalEntityDecl(String name, String publicId, String systemId) {
+        }
+
+        public void internalEntityDecl(String name, String value) {
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/SAXParserTest03.java	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,109 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.parsers.ptests;
+
+import static jaxp.library.JAXPTestUtilities.failUnexpected;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+import org.xml.sax.SAXException;
+
+/**
+ * Class contains the test cases for SAXParser API
+ */
+public class SAXParserTest03 {
+
+    /**
+     * Provide SAXParserFactory.
+     *
+     * @throws Exception
+     */
+    @DataProvider(name = "input-provider")
+    public Object[][] getFactory() {
+        SAXParserFactory spf = SAXParserFactory.newInstance();
+        spf.setValidating(true);
+        MyErrorHandler handler = MyErrorHandler.newInstance();
+        return new Object[][] { { spf, handler } };
+    }
+
+    /**
+     * parsertest.xml holds a valid document. This method tests the validating
+     * parser.
+     */
+    @Test(dataProvider = "input-provider")
+    public void testParseValidate01(SAXParserFactory spf, MyErrorHandler handler) {
+        try {
+            SAXParser saxparser = spf.newSAXParser();
+            saxparser.parse(new File(TestUtils.XML_DIR, "parsertest.xml"), handler);
+            assertFalse(handler.errorOccured);
+        } catch (ParserConfigurationException | SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * validns.xml holds a valid document with XML namespaces in it. This method
+     * tests the Validating parser with namespace processing on.
+     */
+    @Test(dataProvider = "input-provider")
+    public void testParseValidate02(SAXParserFactory spf, MyErrorHandler handler) {
+        try {
+            spf.setNamespaceAware(true);
+            SAXParser saxparser = spf.newSAXParser();
+            saxparser.parse(new File(TestUtils.XML_DIR, "validns.xml"), handler);
+            assertFalse(handler.errorOccured);
+        } catch (ParserConfigurationException | SAXException | IOException e) {
+            failUnexpected(e);
+        }
+    }
+
+    /**
+     * invalidns.xml holds an invalid document with XML namespaces in it. This
+     * method tests the validating parser with namespace processing on. It
+     * should throw validation error.
+     */
+    @Test(dataProvider = "input-provider")
+    public void testParseValidate03(SAXParserFactory spf, MyErrorHandler handler) {
+        try {
+            spf.setNamespaceAware(true);
+            SAXParser saxparser = spf.newSAXParser();
+            saxparser.parse(new File(TestUtils.XML_DIR, "invalidns.xml"), handler);
+            failUnexpected(new RuntimeException());
+        } catch (ParserConfigurationException | SAXException | IOException e) {
+            if (e instanceof SAXException) {
+                assertTrue(handler.errorOccured);
+            }
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/TestUtils.java	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,200 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package javax.xml.parsers.ptests;
+
+import static jaxp.library.JAXPTestUtilities.ERROR_MSG_HEADER;
+import static jaxp.library.JAXPTestUtilities.FILE_SEP;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.StandardCopyOption;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.helpers.DefaultHandler;
+import org.xml.sax.helpers.LocatorImpl;
+
+/**
+ * Utility interface which includes final variables of xml, golden file
+ * directories.
+ */
+interface TestUtils {
+    final String XML_DIR = System.getProperty("test.src", ".") + FILE_SEP + "javax/xml/parsers/xmlfiles";
+    final String GOLDEN_DIR = XML_DIR + FILE_SEP + "out";
+}
+
+/**
+ * Customized DefaultHandler which writes output document when methods are
+ * called by Transformer. Test may use output document to compare with golden
+ * file for verification.
+ */
+class MyCHandler extends DefaultHandler {
+
+    private final BufferedWriter bWriter;
+    private final Locator locator = new LocatorImpl();
+
+    private MyCHandler(File file) throws IOException {
+        bWriter = new BufferedWriter(new FileWriter(file));
+    }
+
+    public static MyCHandler newInstance(File file) throws IOException {
+        MyCHandler handler = new MyCHandler(file);
+        return handler;
+    }
+
+    public void characters(char[] ch, int start, int length) {
+        String s = new String(ch, start, length);
+        String str = String.format("characters...length is:%d\n<%s>", s.length(), s);
+        try {
+            bWriter.write(str, 0, str.length());
+            bWriter.newLine();
+        } catch (IOException e) {
+            throw new RuntimeException(ERROR_MSG_HEADER, e);
+        }
+    }
+
+    public void endDocument() {
+        String str = "endDocument...";
+        try {
+            bWriter.write(str, 0, str.length());
+            bWriter.newLine();
+            bWriter.flush();
+            bWriter.close();
+
+        } catch (IOException e) {
+            throw new RuntimeException(ERROR_MSG_HEADER, e);
+        }
+    }
+
+    public void endElement(String namespaceURI, String localName, String qName) {
+        String str = String.format("endElement...\nnamespaceURI: <%s> localName: <%s> qName: <%s>", namespaceURI, localName, qName);
+        try {
+            bWriter.write(str, 0, str.length());
+            bWriter.newLine();
+        } catch (IOException e) {
+            throw new RuntimeException(ERROR_MSG_HEADER, e);
+        }
+    }
+
+    public void endPrefixMapping(String prefix) {
+        String str = String.format("endPrefixMapping...\nprefix: <%s>", prefix);
+        try {
+            bWriter.write(str, 0, str.length());
+            bWriter.newLine();
+        } catch (IOException e) {
+            throw new RuntimeException(ERROR_MSG_HEADER, e);
+        }
+    }
+
+    public void ignorableWhitespace(char[] ch, int start, int length) {
+        String s = new String(ch, start, length);
+        String str = String.format("ignorableWhitespace...\n%s ignorable white space string length: %d", s, s.length());
+        try {
+            bWriter.write(str, 0, str.length());
+            bWriter.newLine();
+        } catch (IOException e) {
+            throw new RuntimeException(ERROR_MSG_HEADER, e);
+        }
+    }
+
+    public void processingInstruction(String target, String data) {
+        String str = String.format("processingInstruction...target:<%s> data: <%s>", target, data);
+        try {
+            bWriter.write(str, 0, str.length());
+            bWriter.newLine();
+        } catch (IOException e) {
+            throw new RuntimeException(ERROR_MSG_HEADER, e);
+        }
+    }
+
+    public void skippedEntity(String name) {
+        String str = String.format("skippedEntity...\nname: <%s>", name);
+        try {
+            bWriter.write(str, 0, str.length());
+            bWriter.newLine();
+        } catch (IOException e) {
+            throw new RuntimeException(ERROR_MSG_HEADER, e);
+        }
+    }
+
+    public void startDocument() {
+        String str = "startDocument...";
+        try {
+            bWriter.write(str, 0, str.length());
+            bWriter.newLine();
+        } catch (IOException e) {
+            throw new RuntimeException(ERROR_MSG_HEADER, e);
+        }
+    }
+
+    public void startElement(String namespaceURI, String localName, String qName, Attributes atts) {
+        String str = String.format("startElement...\nnamespaceURI: <%s> localName: <%s> qName: <%s> Number of Attributes: <%d> Line# <%d>", namespaceURI,
+                localName, qName, atts.getLength(), locator.getLineNumber());
+        try {
+            bWriter.write(str, 0, str.length());
+            bWriter.newLine();
+        } catch (IOException e) {
+            throw new RuntimeException(ERROR_MSG_HEADER, e);
+        }
+    }
+
+    public void startPrefixMapping(String prefix, String uri) {
+        String str = String.format("startPrefixMapping...\nprefix: <%s> uri: <%s>", prefix, uri);
+        try {
+            bWriter.write(str, 0, str.length());
+            bWriter.newLine();
+        } catch (IOException e) {
+            throw new RuntimeException(ERROR_MSG_HEADER, e);
+        }
+    }
+}
+
+/**
+ * Customized DefaultHandler used for SAXParseException testing.
+ */
+class MyErrorHandler extends DefaultHandler {
+    boolean errorOccured = false;
+
+    private MyErrorHandler() {
+    }
+
+    public static MyErrorHandler newInstance() {
+        return new MyErrorHandler();
+    }
+
+    public void error(SAXParseException e) {
+        errorOccured = true;
+    }
+
+    public void warning(SAXParseException e) {
+        errorOccured = true;
+    }
+
+    public void fatalError(SAXParseException e) {
+        errorOccured = true;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderFactory01.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<html>
+<![CDATA[ <xml>This is not parsed</xml>]]> yet
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderFactory02.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+	<!ENTITY ws "Wiliam SHAkespeare">
+	<!ELEMENT document (title)>
+	<!ELEMENT title (#PCDATA)>
+]>
+<document>
+	<title>&ws;</title>
+</document> 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderFactory03.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+	<!ENTITY ws "Wiliam SHAkespeare">
+	<!ELEMENT document (name)>
+	<!ELEMENT title (#PCDATA)>
+]>
+<document>
+	<title>&ws;</title>
+</document>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderFactory04.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!DOCTYPE note [
+<!ELEMENT note    (#PCDATA|to|ar:from|br:from|heading|body)*>
+<!ELEMENT to      (#PCDATA)>
+<!ELEMENT ar:from    (#PCDATA)>
+<!ELEMENT br:from    (#PCDATA)>
+<!ELEMENT heading (#PCDATA)>
+<!ELEMENT body    (#PCDATA)>
+<!ATTLIST note xmlns:ar CDATA #IMPLIED>
+<!ATTLIST note xmlns:br CDATA #IMPLIED>
+]>
+<note xmlns:ar="http://www.xml.com/books">
+      xmlns:br="http://www.abc.com">
+<to>Tove</to>
+<ar:from>Jani</ar:from>
+<br:from>Next</br:from>
+<heading>Reminder</heading>
+<body> weekend!</body>
+</note> 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderFactory05.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!DOCTYPE note [
+<!ELEMENT note    (to,from,heading,body)>
+<!ELEMENT to      (#PCDATA)>
+<!ELEMENT from    (#PCDATA)>
+<!ELEMENT heading (#PCDATA)>
+<!ELEMENT body    (#PCDATA)>
+]>
+<note xmlns:ar="http://www.xml.com/books">
+      xmlns:br="http://www.abc.com">
+<to>Tove</to>
+<ar:from>Jani</ar:from>
+<br:from>Next</br:from>
+<heading>Reminder</heading>
+<body> weekend!</body>
+</note> 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderFactory06.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!DOCTYPE note [
+<!ELEMENT note    (#PCDATA|to|with|ar:from|br:from|heading|body)*>
+<!ELEMENT to      (sender)>
+<!ELEMENT sender (#PCDATA)>
+<!ELEMENT with      (message)>
+<!ELEMENT message (#PCDATA)>
+<!ELEMENT ar:from    (tab)>
+<!ELEMENT tab (#PCDATA)>
+<!ELEMENT br:from    (#PCDATA)>
+<!ELEMENT heading (#PCDATA)>
+<!ELEMENT body    (#PCDATA)>
+<!ATTLIST note xmlns:ar CDATA #IMPLIED>
+<!ATTLIST note xmlns:br CDATA #IMPLIED>
+]>
+<note xmlns:ar="http://www.xml.com/books"
+      xmlns:br="http://www.abc.com">
+<to>
+
+<!--This is with whitespace-->
+<sender>John</sender>
+
+</to>
+<with>   <message>with whitespace</message>   </with>
+<ar:from>	<tab>Jani</tab></ar:from>
+<br:from>Next</br:from>
+<heading>Reminder</heading>
+<body> weekend!</body>
+</note> 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderFactory07.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE note [
+<!ELEMENT note    (to|heading|body)*>
+<!ELEMENT body    (#PCDATA)>
+]>
+<note>
+<to>Tove</to>
+<body><!--hello--></body>
+</note> 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderFactory08.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<note>
+<to>Tove</to>
+<body><!--hello--></body>
+</note> 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderImpl01.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<html>
+<![CDATA[ <xml>This is not parsed</xml>]]> yet
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderImpl02.dtd	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,12 @@
+<!ELEMENT document ANY>
+<!ELEMENT title (#PCDATA)>
+<!ELEMENT publisher (#PCDATA)>
+<!ELEMENT book (#PCDATA)>
+<!ELEMENT bookurn (#PCDATA)>
+<!ATTLIST book price CDATA "$100">
+<!ATTLIST book author CDATA "Herold">
+<!ATTLIST book number ID #REQUIRED>
+<!ATTLIST bookurn xmlns CDATA "10">
+<!ATTLIST bookurn xmlns:isbn CDATA "10">
+<!ENTITY w "William">
+<!ENTITY s "Shakespeare">
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/DocumentBuilderImpl02.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,28 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document SYSTEM "DocumentBuilderImpl02.dtd">
+<document>
+
+        Publishers of the Music of New York Women Composers
+
+        <title>The Publishers </title>
+
+        <publisher>
+        Alfred Publishing
+        &w;
+        15535 Morrison
+        South Oaks CA 91403
+        </publisher>
+
+        <book price="$100" author = "Herold" number = "no_11">
+                eXtensible Markup Language
+        </book>
+
+        <bookurn xmlns='urn:loc.gov:books'
+                   xmlns:isbn='urn:ISBN:0-395-36341-6'/>
+       
+
+        Publishers are not noted in report by time.
+
+</document>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/correct.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,23 @@
+<?xml version="1.0" standalone="yes"?>
+<document>
+	Publishers of the Music of New York Women Composers
+
+	<title>The Publishers </title>
+	
+	<publisher>
+	Alfred Publishing 
+	15535 Morrison
+	South Oaks CA 91403
+	</publisher>
+
+	<book price="$100" author = "Herold" number = "no_11"> 
+		eXtensible Markup Language 
+	</book>
+
+  	<bookurn xmlns='urn:loc.gov:books'
+        	   xmlns:isbn='urn:ISBN:0-395-36341-6'/> 
+	<xmlns:pages />
+
+	Publishers are not noted in report by time.
+
+</document>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/dbf10.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,13 @@
+<?xml version="1.0" standalone="yes" ?>
+<cities>
+	<city name="Paris" country="France"/>
+	<city name="Roma" country="Italia"/>
+	<city name="Nice" country="France"/>
+	<city name="Madrid" country="Espana"/>
+	<city name="Milano" country="Italia"/>
+	<city name="Firenze" country="Italia"/>
+	<city name="Napoli" country="Italia"/>
+	<city name="Lyon" country="France"/>
+	<city name="Barcelona" country="Espana"/>
+</cities>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/dbf10.xsl	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,21 @@
+<?xml version="1.0" ?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<xsl:output method="xml" indent="yes"/>
+<xsl:template match="/">
+<xsl:variable name="unique-countries"
+	select="/cities
+		/city[not(@country=preceding-sibling::city/@country)]
+		/@country"
+/>
+    <countries>
+	<xsl:for-each select="$unique-countries">
+	  <country name="{.}">
+		<xsl:for-each select="//city[@country=current()]">
+		  <city><xsl:value-of select="@name"/></city>
+		</xsl:for-each>
+	  </country> 
+	</xsl:for-each>
+    </countries>
+</xsl:template>
+</xsl:stylesheet>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/dbf10import.xsl	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+	<xsl:import href="temp/cities.xsl"/>
+</xsl:stylesheet>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/dbf10include.xsl	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+	<xsl:include href="temp/cities.xsl"/>
+</xsl:stylesheet>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/firstdtd.dtd	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,13 @@
+<!ELEMENT document ANY>
+<!ELEMENT title (#PCDATA)>
+<!ELEMENT publisher (#PCDATA)>
+<!ELEMENT book (#PCDATA)>
+<!ELEMENT bookurn (#PCDATA)>
+<!ELEMENT xmlns:pages (#PCDATA)>
+<!ATTLIST book price CDATA "$100">
+<!ATTLIST book author CDATA "Herold">
+<!ATTLIST book number ID #REQUIRED>
+<!ATTLIST bookurn xmlns CDATA "10">
+<!ATTLIST bookurn xmlns:isbn CDATA "10">
+<!ENTITY mkm "I am Krishna">
+<!ENTITY km "I am KrishnaMohan">
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/invalid.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,24 @@
+<?xml version="1.0" standalone="yes"?>
+<document>
+	Publishers of the Music of New York Women Composers
+
+	<title>The Publishers </title>
+	
+	<publisher>
+	Alfred Publishing 
+	&mkm; 
+	15535 Morrison
+	South Oaks CA 91403
+	</publisher>
+
+	<book price="$100" author = "Herold" number = "no_11"> 
+		eXtensible Markup Language 
+	</book>
+
+  	<bookurn xmlns='urn:loc.gov:books'
+        	   xmlns:isbn='urn:ISBN:0-395-36341-6'/> 
+	<xmlns:pages />
+
+	Publishers are not noted in report by time.
+
+</document>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/invalidns.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!DOCTYPE book [
+<!ELEMENT book (#PCDATA | ar:rating | fr:rating | zr:rating)* >
+<!ATTLIST ar:rating 
+	  xmlns:ar CDATA #FIXED "http://www.amazon.com/">
+<!ATTLIST fr:rating 
+	  xmlns:fr CDATA #FIXED "http://www.fatbrain.com/">
+<!ELEMENT ar:rating (#PCDATA)>
+<!ELEMENT fr:rating (#PCDATA)>
+<!ELEMENT zr:rating (#PCDATA)>
+]>
+<book> 
+   <ar:rating>4star</ar:rating>
+   <fr:rating>3star</fr:rating>
+   <zr:rating>2star</zr:rating>
+</book> 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/namespace1.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<html xmlns="http://www.w3.org/TR/REC-html40"
+      xmlns:b="urn:BooksAreUs.org:BookInfo">
+  <head>
+    <title>Typography</title>
+  </head>
+
+  <body>
+    <p> Welcome to the world of typography! Here is a book that you may find useful.</p>
+    <b:title style="font-family: sans-serif;">Digital Typography</b:title> 
+    <b:author>Donald Knuth</b:author>
+    <?netscape http://www.hotmail.com?>
+  </body>
+
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/ns4.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,8 @@
+<section><title>Book-Signing Event</title>
+  <signing>
+    <author title="Mr" name="Vikram Seth" />
+    <book title="A Suitable Boy" price="$22.95" /></signing>
+  <signing>
+    <author title="Dr" name="Oliver Sacks" />
+    <book title="The Island of the Color-Blind" price="$12.95" /></signing>
+  </section>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/out/dbfactory02GF.out	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,83 @@
+startDocument...
+startPrefixMapping...
+prefix: <ar> uri: <http://www.xml.com/books>
+startPrefixMapping...
+prefix: <br> uri: <http://www.abc.com>
+startElement...
+namespaceURI: <> localName: <note> qName: <note> Number of Attributes: <2> Line# <0>
+characters...length is:1
+<
+>
+startElement...
+namespaceURI: <> localName: <to> qName: <to> Number of Attributes: <0> Line# <0>
+startElement...
+namespaceURI: <> localName: <sender> qName: <sender> Number of Attributes: <0> Line# <0>
+characters...length is:4
+<John>
+endElement...
+namespaceURI: <> localName: <sender> qName: <sender>
+endElement...
+namespaceURI: <> localName: <to> qName: <to>
+characters...length is:1
+<
+>
+startElement...
+namespaceURI: <> localName: <with> qName: <with> Number of Attributes: <0> Line# <0>
+startElement...
+namespaceURI: <> localName: <message> qName: <message> Number of Attributes: <0> Line# <0>
+characters...length is:15
+<with whitespace>
+endElement...
+namespaceURI: <> localName: <message> qName: <message>
+endElement...
+namespaceURI: <> localName: <with> qName: <with>
+characters...length is:1
+<
+>
+startElement...
+namespaceURI: <http://www.xml.com/books> localName: <from> qName: <ar:from> Number of Attributes: <0> Line# <0>
+startElement...
+namespaceURI: <> localName: <tab> qName: <tab> Number of Attributes: <0> Line# <0>
+characters...length is:4
+<Jani>
+endElement...
+namespaceURI: <> localName: <tab> qName: <tab>
+endElement...
+namespaceURI: <http://www.xml.com/books> localName: <from> qName: <ar:from>
+characters...length is:1
+<
+>
+startElement...
+namespaceURI: <http://www.abc.com> localName: <from> qName: <br:from> Number of Attributes: <0> Line# <0>
+characters...length is:4
+<Next>
+endElement...
+namespaceURI: <http://www.abc.com> localName: <from> qName: <br:from>
+characters...length is:1
+<
+>
+startElement...
+namespaceURI: <> localName: <heading> qName: <heading> Number of Attributes: <0> Line# <0>
+characters...length is:8
+<Reminder>
+endElement...
+namespaceURI: <> localName: <heading> qName: <heading>
+characters...length is:1
+<
+>
+startElement...
+namespaceURI: <> localName: <body> qName: <body> Number of Attributes: <0> Line# <0>
+characters...length is:9
+< weekend!>
+endElement...
+namespaceURI: <> localName: <body> qName: <body>
+characters...length is:1
+<
+>
+endElement...
+namespaceURI: <> localName: <note> qName: <note>
+endPrefixMapping...
+prefix: <br>
+endPrefixMapping...
+prefix: <ar>
+endDocument...
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/out/dbfnstest01GF.out	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,79 @@
+startDocument...
+startPrefixMapping...
+prefix: <> uri: <http://www.w3.org/TR/REC-html40>
+startPrefixMapping...
+prefix: <b> uri: <urn:BooksAreUs.org:BookInfo>
+startElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <html> qName: <html> Number of Attributes: <2> Line# <0>
+characters...length is:3
+<
+  >
+startElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <head> qName: <head> Number of Attributes: <0> Line# <0>
+characters...length is:5
+<
+    >
+startElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <title> qName: <title> Number of Attributes: <0> Line# <0>
+characters...length is:10
+<Typography>
+endElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <title> qName: <title>
+characters...length is:3
+<
+  >
+endElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <head> qName: <head>
+characters...length is:4
+<
+
+  >
+startElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <body> qName: <body> Number of Attributes: <0> Line# <0>
+characters...length is:5
+<
+    >
+startElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <p> qName: <p> Number of Attributes: <0> Line# <0>
+characters...length is:77
+< Welcome to the world of typography! Here is a book that you may find useful.>
+endElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <p> qName: <p>
+characters...length is:5
+<
+    >
+startElement...
+namespaceURI: <urn:BooksAreUs.org:BookInfo> localName: <title> qName: <b:title> Number of Attributes: <1> Line# <0>
+characters...length is:18
+<Digital Typography>
+endElement...
+namespaceURI: <urn:BooksAreUs.org:BookInfo> localName: <title> qName: <b:title>
+characters...length is:6
+< 
+    >
+startElement...
+namespaceURI: <urn:BooksAreUs.org:BookInfo> localName: <author> qName: <b:author> Number of Attributes: <0> Line# <0>
+characters...length is:12
+<Donald Knuth>
+endElement...
+namespaceURI: <urn:BooksAreUs.org:BookInfo> localName: <author> qName: <b:author>
+characters...length is:5
+<
+    >
+processingInstruction...target:<netscape> data: <http://www.hotmail.com>
+characters...length is:3
+<
+  >
+endElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <body> qName: <body>
+characters...length is:2
+<
+
+>
+endElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <html> qName: <html>
+endPrefixMapping...
+prefix: <b>
+endPrefixMapping...
+prefix: <>
+endDocument...
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/out/dbfnstest02GF.out	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,79 @@
+startDocument...
+startPrefixMapping...
+prefix: <> uri: <http://www.w3.org/TR/REC-html40>
+startPrefixMapping...
+prefix: <b> uri: <urn:BooksAreUs.org:BookInfo>
+startElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <html> qName: <html> Number of Attributes: <2> Line# <0>
+characters...length is:3
+<
+  >
+startElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <head> qName: <head> Number of Attributes: <0> Line# <0>
+characters...length is:5
+<
+    >
+startElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <title> qName: <title> Number of Attributes: <0> Line# <0>
+characters...length is:10
+<Typography>
+endElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <title> qName: <title>
+characters...length is:3
+<
+  >
+endElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <head> qName: <head>
+characters...length is:4
+<
+
+  >
+startElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <body> qName: <body> Number of Attributes: <0> Line# <0>
+characters...length is:5
+<
+    >
+startElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <p> qName: <p> Number of Attributes: <0> Line# <0>
+characters...length is:77
+< Welcome to the world of typography! Here is a book that you may find useful.>
+endElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <p> qName: <p>
+characters...length is:5
+<
+    >
+startElement...
+namespaceURI: <urn:BooksAreUs.org:BookInfo> localName: <title> qName: <b:title> Number of Attributes: <1> Line# <0>
+characters...length is:18
+<Digital Typography>
+endElement...
+namespaceURI: <urn:BooksAreUs.org:BookInfo> localName: <title> qName: <b:title>
+characters...length is:6
+< 
+    >
+startElement...
+namespaceURI: <urn:BooksAreUs.org:BookInfo> localName: <author> qName: <b:author> Number of Attributes: <0> Line# <0>
+characters...length is:12
+<Donald Knuth>
+endElement...
+namespaceURI: <urn:BooksAreUs.org:BookInfo> localName: <author> qName: <b:author>
+characters...length is:5
+<
+    >
+processingInstruction...target:<netscape> data: <http://www.hotmail.com>
+characters...length is:3
+<
+  >
+endElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <body> qName: <body>
+characters...length is:2
+<
+
+>
+endElement...
+namespaceURI: <http://www.w3.org/TR/REC-html40> localName: <html> qName: <html>
+endPrefixMapping...
+prefix: <b>
+endPrefixMapping...
+prefix: <>
+endDocument...
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/parsertest.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,25 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document SYSTEM "firstdtd.dtd">
+<document>
+	Publishers of the Music of New York Women Composers
+
+	<title>The Publishers </title>
+	
+	<publisher>
+	Alfred Publishing 
+	&mkm; 
+	15535 Morrison
+	South Oaks CA 91403
+	</publisher>
+
+	<book price="$100" author = "Herold" number = "no_11"> 
+		eXtensible Markup Language 
+	</book>
+
+  	<bookurn xmlns='urn:loc.gov:books'
+        	   xmlns:isbn='urn:ISBN:0-395-36341-6'/> 
+	<xmlns:pages />
+
+	Publishers are not noted in report by time.
+
+</document>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/test.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+ <contact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="test.xsd">
+<name> John </name>
+<phone>444-121-3434</phone>
+</contact>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/test.xsd	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+<xs:element name="contact">
+<xs:complexType>
+<xs:sequence>
+  <xs:element name="name" type="xs:string"/>
+  <xs:element name="phone" type="xs:string"/>
+</xs:sequence>
+</xs:complexType>
+</xs:element>
+</xs:schema>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/test1.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+ <contact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="junk.xsd">
+<name> John </name>
+<phone>444-121-3434</phone>
+</contact>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/valid.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,24 @@
+<?xml version="1.0" standalone="yes"?>
+<document>
+	Publishers of the Music of New York Women Composers
+
+	<title>The Publishers </title>
+	
+	<publisher>
+	Alfred Publishing 
+	&mkm; 
+	15535 Morrison
+	South Oaks CA 91403
+	</publisher>
+
+	<book price="$100" author = "Herold" number = "no_11"> 
+		eXtensible Markup Language 
+	</book>
+
+  	<bookurn xmlns='urn:loc.gov:books'
+        	   xmlns:isbn='urn:ISBN:0-395-36341-6'/> 
+	<xmlns:pages />
+
+	Publishers are not noted in report by time.
+
+</document>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/functional/javax/xml/parsers/xmlfiles/validns.xml	Thu Dec 11 13:08:14 2014 -0800
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE book [
+<!ELEMENT book (#PCDATA| ar:rating| fr:rating)* >
+<!ATTLIST ar:rating 
+	  xmlns:ar CDATA #FIXED "http://www.amazon.com/">
+<!ATTLIST fr:rating 
+	  xmlns:fr CDATA #FIXED "http://www.fatbrain.com/">
+<!ELEMENT ar:rating (#PCDATA)>
+<!ELEMENT fr:rating (#PCDATA)>
+]>
+<book> 
+   <ar:rating>4star</ar:rating>
+   <fr:rating>3star</fr:rating>
+</book>