1 /*
   2  * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 package javax.xml.transform.ptests;
  24 
  25 import java.io.File;
  26 import java.io.FileInputStream;
  27 import javax.xml.parsers.DocumentBuilder;
  28 import javax.xml.parsers.DocumentBuilderFactory;
  29 import javax.xml.transform.Transformer;
  30 import javax.xml.transform.TransformerConfigurationException;
  31 import javax.xml.transform.TransformerFactory;
  32 import javax.xml.transform.dom.DOMSource;
  33 import static javax.xml.transform.ptests.TransformerTestConst.XML_DIR;
  34 import javax.xml.transform.sax.SAXSource;
  35 import javax.xml.transform.stream.StreamSource;
  36 import jaxp.library.JAXPFileReadOnlyBaseTest;
  37 import static org.testng.Assert.assertEquals;
  38 import static org.testng.Assert.assertNull;
  39 import org.testng.annotations.Test;
  40 import org.w3c.dom.Document;
  41 import org.w3c.dom.Node;
  42 import org.xml.sax.InputSource;
  43 
  44 /**
  45  * Class containing the test cases for SAXParserFactory API
  46  */
  47 public class TfClearParamTest extends JAXPFileReadOnlyBaseTest {
  48     /**
  49      * Test style-sheet file name.
  50      */
  51     private final String XSL_FILE = XML_DIR + "cities.xsl";
  52 
  53     /**
  54      * Long parameter name embedded with a URI.
  55      */
  56     private final String LONG_PARAM_NAME = "{http://xyz.foo.com/yada/baz.html}foo";
  57 
  58     /**
  59      * Short parameter name.
  60      */
  61     private final String SHORT_PARAM_NAME = "foo";
  62 
  63     /**
  64      * Parameter value.
  65      */
  66     private final String PARAM_VALUE = "xyz";
  67 
  68     /**
  69      * Obtains transformer's parameter with the same name that set before. Value
  70      * should be same as set one.
  71      * @throws TransformerConfigurationException If for some reason the
  72      *         TransformerHandler can not be created.
  73      */
  74     @Test
  75     public void clear01() throws TransformerConfigurationException {
  76         Transformer transformer = TransformerFactory.newInstance().newTransformer();
  77         transformer.setParameter(LONG_PARAM_NAME, PARAM_VALUE);
  78         assertEquals(transformer.getParameter(LONG_PARAM_NAME).toString(), PARAM_VALUE);
  79     }
  80 
  81     /**
  82      * Obtains transformer's parameter with the a name that wasn't set before.
  83      * Null is expected.
  84      * @throws TransformerConfigurationException If for some reason the
  85      *         TransformerHandler can not be created.
  86      */
  87     @Test
  88     public void clear02() throws TransformerConfigurationException {
  89         Transformer transformer = TransformerFactory.newInstance().newTransformer();
  90         transformer.setParameter(LONG_PARAM_NAME, PARAM_VALUE);
  91         transformer.clearParameters();
  92         assertNull(transformer.getParameter(LONG_PARAM_NAME));
  93     }
  94 
  95     /**
  96      * Obtains transformer's parameter with a short name that set before. Value
  97      * should be same as set one.
  98      * @throws TransformerConfigurationException If for some reason the
  99      *         TransformerHandler can not be created.
 100      */
 101     @Test
 102     public void clear03() throws TransformerConfigurationException {
 103         TransformerFactory tfactory = TransformerFactory.newInstance();
 104         Transformer transformer = tfactory.newTransformer();
 105 
 106         transformer.setParameter(SHORT_PARAM_NAME, PARAM_VALUE);
 107         assertEquals(transformer.getParameter(SHORT_PARAM_NAME).toString(), PARAM_VALUE);
 108     }
 109 
 110     /**
 111      * Obtains transformer's parameter with a short name that set with an integer
 112      * object before. Value should be same as the set integer object.
 113      * @throws TransformerConfigurationException If for some reason the
 114      *         TransformerHandler can not be created.
 115      */
 116     @Test
 117     public void clear04() throws TransformerConfigurationException {
 118         Transformer transformer = TransformerFactory.newInstance().newTransformer();
 119 
 120         int intObject = 5;
 121         transformer.setParameter(SHORT_PARAM_NAME, intObject);
 122         assertEquals(transformer.getParameter(SHORT_PARAM_NAME), intObject);
 123     }
 124 
 125     /**
 126      * Obtains transformer's parameter whose initiated with a stream source with
 127      * the a name that set before. Value should be same as set one.
 128      * @throws TransformerConfigurationException If for some reason the
 129      *         TransformerHandler can not be created.
 130      */
 131     @Test (groups = {"readLocalFiles"})
 132     public void clear05() throws TransformerConfigurationException {
 133         Transformer transformer = TransformerFactory.newInstance().
 134                 newTransformer(new StreamSource(new File(XSL_FILE)));
 135 
 136         transformer.setParameter(LONG_PARAM_NAME, PARAM_VALUE);
 137         assertEquals(transformer.getParameter(LONG_PARAM_NAME), PARAM_VALUE);
 138     }
 139 
 140     /**
 141      * Obtains transformer's parameter whose initiated with a stream source with
 142      * the a name that wasn't set before. Null is expected.
 143      * @throws TransformerConfigurationException If for some reason the
 144      *         TransformerHandler can not be created.
 145      */
 146     @Test (groups = {"readLocalFiles"})
 147     public void clear06() throws TransformerConfigurationException {
 148         Transformer transformer = TransformerFactory.newInstance().
 149                 newTransformer(new StreamSource(new File(XSL_FILE)));
 150         transformer.setParameter(LONG_PARAM_NAME, PARAM_VALUE);
 151         transformer.clearParameters();
 152         assertNull(transformer.getParameter(LONG_PARAM_NAME));
 153     }
 154 
 155     /**
 156      * Obtains transformer's parameter whose initiated with a sax source with
 157      * the a name that set before. Value should be same as set one.
 158      * @throws Exception If any errors occur.
 159      */
 160     @Test (groups = {"readLocalFiles"})
 161     public void clear07() throws Exception {
 162         try (FileInputStream fis = new FileInputStream(XSL_FILE)) {
 163             SAXSource saxSource = new SAXSource();
 164             saxSource.setInputSource(new InputSource(fis));
 165 
 166             Transformer transformer = TransformerFactory.newInstance().newTransformer(saxSource);
 167             transformer.setParameter(LONG_PARAM_NAME, PARAM_VALUE);
 168             assertEquals(transformer.getParameter(LONG_PARAM_NAME), PARAM_VALUE);
 169         }
 170     }
 171 
 172     /**
 173      * Obtains transformer's parameter whose initiated with a sax source with
 174      * the a name that wasn't set before. Null is expected.
 175      * @throws Exception If any errors occur.
 176      */
 177     @Test (groups = {"readLocalFiles"})
 178     public void clear08() throws Exception {
 179         try (FileInputStream fis = new FileInputStream(XSL_FILE)) {
 180             SAXSource saxSource = new SAXSource();
 181             saxSource.setInputSource(new InputSource(fis));
 182 
 183             Transformer transformer = TransformerFactory.newInstance().newTransformer(saxSource);
 184             transformer.setParameter(LONG_PARAM_NAME, PARAM_VALUE);
 185             transformer.clearParameters();
 186             assertNull(transformer.getParameter(LONG_PARAM_NAME));
 187         }
 188     }
 189 
 190     /**
 191      * Obtains transformer's parameter whose initiated with a dom source with
 192      * the a name that set before. Value should be same as set one.
 193      * @throws Exception If any errors occur.
 194      */
 195     @Test (groups = {"readLocalFiles"})
 196     public void clear09() throws Exception {
 197         TransformerFactory tfactory = TransformerFactory.newInstance();
 198 
 199         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 200         dbf.setNamespaceAware(true);
 201         DocumentBuilder db = dbf.newDocumentBuilder();
 202         Document document = db.parse(new File(XSL_FILE));
 203         DOMSource domSource = new DOMSource((Node)document);
 204 
 205         Transformer transformer = tfactory.newTransformer(domSource);
 206 
 207         transformer.setParameter(LONG_PARAM_NAME, PARAM_VALUE);
 208         assertEquals(transformer.getParameter(LONG_PARAM_NAME), PARAM_VALUE);
 209     }
 210 
 211     /**
 212      * Obtains transformer's parameter whose initiated with a dom source with
 213      * the a name that wasn't set before. Null is expected.
 214      * @throws Exception If any errors occur.
 215      */
 216     @Test (groups = {"readLocalFiles"})
 217     public void clear10() throws Exception {
 218         TransformerFactory tfactory = TransformerFactory.newInstance();
 219 
 220         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 221         dbf.setNamespaceAware(true);
 222         DocumentBuilder db = dbf.newDocumentBuilder();
 223         Document document = db.parse(new File(XSL_FILE));
 224         DOMSource domSource = new DOMSource((Node)document);
 225 
 226         Transformer transformer = tfactory.newTransformer(domSource);
 227         transformer.setParameter(LONG_PARAM_NAME, PARAM_VALUE);
 228         transformer.clearParameters();
 229         assertNull(transformer.getParameter(LONG_PARAM_NAME));
 230     }
 231 }