1 /*
   2  * Copyright (c) 2014, 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 java.io.FileNotFoundException;
  28 import java.io.IOException;
  29 import javax.xml.parsers.DocumentBuilder;
  30 import javax.xml.parsers.DocumentBuilderFactory;
  31 import javax.xml.parsers.ParserConfigurationException;
  32 import javax.xml.transform.Transformer;
  33 import javax.xml.transform.TransformerConfigurationException;
  34 import javax.xml.transform.TransformerFactory;
  35 import javax.xml.transform.dom.DOMSource;
  36 import static javax.xml.transform.ptests.TransformerTestConst.XML_DIR;
  37 import javax.xml.transform.sax.SAXSource;
  38 import javax.xml.transform.stream.StreamSource;
  39 import static jaxp.library.JAXPTestUtilities.failUnexpected;
  40 import static org.testng.Assert.assertEquals;
  41 import static org.testng.Assert.assertNull;
  42 import org.testng.annotations.Test;
  43 import org.w3c.dom.Document;
  44 import org.w3c.dom.Node;
  45 import org.xml.sax.InputSource;
  46 import org.xml.sax.SAXException;
  47 
  48 /** 
  49  * Class containing the test cases for SAXParserFactory API 
  50  */
  51 public class TfClearParamTest {
  52     /**
  53      * Test xslt file.
  54      */
  55     private final String XSL_FILE = XML_DIR + "cities.xsl";
  56 
  57     /**
  58      * Long parameter name embedded with a URI.
  59      */
  60     private final String LONG_PARAM_NAME = "{http://xyz.foo.com/yada/baz.html}foo";
  61 
  62     /**
  63      * Short parameter name.
  64      */
  65     private final String SHORT_PARAM_NAME = "foo";
  66 
  67     /**
  68      * Parameter value.
  69      */
  70     private final String PARAM_VALUE = "xyz";
  71 
  72     /**
  73      * Obtains transformer's parameter with the same name that set before. Value
  74      * should be same as set one.
  75      */
  76     @Test
  77     public void clear01() {
  78         try {
  79             Transformer transformer = TransformerFactory.newInstance().newTransformer();
  80             transformer.setParameter(LONG_PARAM_NAME, PARAM_VALUE);
  81             assertEquals(transformer.getParameter(LONG_PARAM_NAME).toString(), PARAM_VALUE);
  82         } catch (TransformerConfigurationException ex) {
  83             failUnexpected(ex);
  84         }
  85 
  86     }
  87 
  88     /**
  89      * Obtains transformer's parameter with the a name that wasn't set before.
  90      * Null is expected.
  91      */
  92     @Test
  93     public void clear02() {
  94         try {
  95             Transformer transformer = TransformerFactory.newInstance().newTransformer();
  96             transformer.setParameter(LONG_PARAM_NAME, PARAM_VALUE);
  97             transformer.clearParameters();
  98             assertNull(transformer.getParameter(LONG_PARAM_NAME));
  99         } catch (TransformerConfigurationException ex){
 100             failUnexpected(ex);
 101         }
 102     }
 103 
 104     /**
 105      * Obtains transformer's parameter whose initiated with a stream source with
 106      * the a name that set before. Value should be same as set one.
 107      */
 108     @Test
 109     public void clear03() {
 110         try {
 111             Transformer transformer = TransformerFactory.newInstance().
 112                     newTransformer(new StreamSource(new File(XSL_FILE)));
 113 
 114             transformer.setParameter(LONG_PARAM_NAME, PARAM_VALUE);
 115             assertEquals(transformer.getParameter(LONG_PARAM_NAME), PARAM_VALUE);
 116         } catch (TransformerConfigurationException ex){
 117             failUnexpected(ex);
 118         }
 119     }
 120 
 121     /**
 122      * Obtains transformer's parameter whose initiated with a stream source with
 123      * the a name that wasn't set before. Null is expected.
 124      */
 125     @Test
 126     public void clear04() {
 127         try {
 128             Transformer transformer = TransformerFactory.newInstance().
 129                     newTransformer(new StreamSource(new File(XSL_FILE)));
 130             transformer.setParameter(LONG_PARAM_NAME, PARAM_VALUE);
 131             transformer.clearParameters();
 132             assertNull(transformer.getParameter(LONG_PARAM_NAME));
 133         } catch (TransformerConfigurationException ex){
 134             failUnexpected(ex);
 135         }
 136 
 137     }
 138 
 139     /**
 140      * Obtains transformer's parameter whose initiated with a sax source with
 141      * the a name that set before. Value should be same as set one.
 142      */
 143     @Test
 144     public void clear05() {
 145         try {
 146             InputSource is = new InputSource(new FileInputStream(XSL_FILE));
 147             SAXSource saxSource = new SAXSource();
 148             saxSource.setInputSource(is);
 149 
 150             Transformer transformer = TransformerFactory.newInstance().newTransformer(saxSource);
 151 
 152             transformer.setParameter(LONG_PARAM_NAME, PARAM_VALUE);
 153             assertEquals(transformer.getParameter(LONG_PARAM_NAME), PARAM_VALUE);
 154         } catch (FileNotFoundException | TransformerConfigurationException ex){
 155             failUnexpected(ex);
 156         }
 157     }
 158 
 159     /**
 160      * Obtains transformer's parameter whose initiated with a sax source with
 161      * the a name that wasn't set before. Null is expected.
 162      */
 163     @Test
 164     public void clear06() {
 165         try {
 166             InputSource is = new InputSource(new FileInputStream(XSL_FILE));
 167             SAXSource saxSource = new SAXSource();
 168             saxSource.setInputSource(is);
 169 
 170             Transformer transformer = TransformerFactory.newInstance().newTransformer(saxSource);
 171 
 172             transformer.setParameter(LONG_PARAM_NAME, PARAM_VALUE);
 173             transformer.clearParameters();
 174             assertNull(transformer.getParameter(LONG_PARAM_NAME));
 175         } catch (FileNotFoundException | TransformerConfigurationException ex){
 176             failUnexpected(ex);
 177         }
 178     }
 179 
 180     /**
 181      * Obtains transformer's parameter whose initiated with a dom source with
 182      * the a name that set before. Value should be same as set one.
 183      */
 184     @Test
 185     public void clear07() {
 186         try {
 187             TransformerFactory tfactory = TransformerFactory.newInstance();
 188 
 189             DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 190             dbf.setNamespaceAware(true);
 191             DocumentBuilder db = dbf.newDocumentBuilder();
 192             Document document = db.parse(new File(XSL_FILE));
 193             DOMSource domSource = new DOMSource((Node)document);
 194 
 195             Transformer transformer = tfactory.newTransformer(domSource);
 196 
 197             transformer.setParameter(LONG_PARAM_NAME, PARAM_VALUE);
 198             assertEquals(transformer.getParameter(LONG_PARAM_NAME), PARAM_VALUE);
 199         } catch (IOException | ParserConfigurationException
 200                 | TransformerConfigurationException | SAXException ex){
 201             failUnexpected(ex);
 202         }
 203     }
 204 
 205     /**
 206      * Obtains transformer's parameter whose initiated with a dom source with
 207      * the a name that wasn't set before. Null is expected.
 208      */
 209     @Test
 210     public void clear08() {
 211         try {
 212             TransformerFactory tfactory = TransformerFactory.newInstance();
 213 
 214             DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 215             dbf.setNamespaceAware(true);
 216             DocumentBuilder db = dbf.newDocumentBuilder();
 217             Document document = db.parse(new File(XSL_FILE));
 218             DOMSource domSource = new DOMSource((Node)document);
 219 
 220             Transformer transformer = tfactory.newTransformer(domSource);
 221             transformer.setParameter(LONG_PARAM_NAME, PARAM_VALUE);
 222             transformer.clearParameters();
 223             assertNull(transformer.getParameter(LONG_PARAM_NAME));
 224         } catch (IOException | ParserConfigurationException 
 225                 | TransformerConfigurationException | SAXException ex){
 226             failUnexpected(ex);
 227         }
 228     }
 229 
 230     /**
 231      * Obtains transformer's parameter with a short name that set before. Value
 232      * should be same as set one.
 233      */
 234     @Test
 235     public void clear09() {
 236         try {
 237             TransformerFactory tfactory = TransformerFactory.newInstance();
 238             Transformer transformer = tfactory.newTransformer();
 239 
 240             transformer.setParameter(SHORT_PARAM_NAME, PARAM_VALUE);
 241             assertEquals(transformer.getParameter(SHORT_PARAM_NAME).toString(), PARAM_VALUE);
 242         } catch (TransformerConfigurationException ex){
 243             failUnexpected(ex);
 244         }
 245     }
 246 
 247     /**
 248      * Obtains transformer's parameter with a short name that set with an integer 
 249      * object before. Value should be same as the set integer object.
 250      */
 251     @Test
 252     public void clear10() {
 253         try {
 254             TransformerFactory tfactory = TransformerFactory.newInstance();
 255             Transformer transformer = tfactory.newTransformer();
 256 
 257             int intObject = 5;
 258             transformer.setParameter(SHORT_PARAM_NAME, intObject);
 259             assertEquals(transformer.getParameter(SHORT_PARAM_NAME), intObject);
 260         } catch (TransformerConfigurationException ex){
 261             failUnexpected(ex);
 262         }
 263     }
 264 }