IgnoreExternalDTDTest.java revision 779:2b61bfcaa586
1181377Sdas/*
2181377Sdas * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
3181377Sdas * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4181377Sdas *
5181377Sdas * This code is free software; you can redistribute it and/or modify it
6181377Sdas * under the terms of the GNU General Public License version 2 only, as
7181377Sdas * published by the Free Software Foundation.
8181377Sdas *
9181377Sdas * This code is distributed in the hope that it will be useful, but WITHOUT
10181377Sdas * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11181377Sdas * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12181377Sdas * version 2 for more details (a copy is included in the LICENSE file that
13181377Sdas * accompanied this code).
14181377Sdas *
15181377Sdas * You should have received a copy of the GNU General Public License version
16181377Sdas * 2 along with this work; if not, write to the Free Software Foundation,
17181377Sdas * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18181377Sdas *
19181377Sdas * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20181377Sdas * or visit www.oracle.com if you need additional information or have any
21181377Sdas * questions.
22181377Sdas */
23181377Sdas
24181377Sdaspackage stream;
25181377Sdas
26181377Sdasimport java.io.StringReader;
27181377Sdas
28181377Sdasimport javax.xml.stream.XMLInputFactory;
29181377Sdasimport javax.xml.stream.XMLStreamConstants;
30181377Sdasimport javax.xml.stream.XMLStreamException;
31181377Sdasimport javax.xml.stream.XMLStreamReader;
32181377Sdas
33181377Sdasimport org.testng.annotations.Test;
34181377Sdas
35181377Sdas/*
36181377Sdas * @summary Test feature ignore-external-dtd.
37181377Sdas */
38181377Sdaspublic class IgnoreExternalDTDTest {
39181377Sdas
40181377Sdas    final static String FACTORY_KEY = "javax.xml.stream.XMLInputFactory";
41181377Sdas    static final String IGNORE_EXTERNAL_DTD = "ignore-external-dtd";
42284810Stijl    static final String ZEPHYR_PROPERTY_PREFIX = "http://java.sun.com/xml/stream/properties/";
43181377Sdas
44    @Test
45    public void testFeaturePositive() throws Exception {
46        XMLInputFactory xif = XMLInputFactory.newInstance();
47        xif.setProperty(ZEPHYR_PROPERTY_PREFIX + IGNORE_EXTERNAL_DTD, Boolean.TRUE);
48        parse(xif);
49    }
50
51    @Test
52    public void testFeatureNegative() throws Exception {
53        XMLInputFactory xif = XMLInputFactory.newInstance();
54        xif.setProperty(ZEPHYR_PROPERTY_PREFIX + IGNORE_EXTERNAL_DTD, Boolean.FALSE);
55        try {
56            parse(xif);
57            // refer to 6440324, absent of that change, an exception would be
58            // thrown;
59            // due to the change made for 6440324, parsing will continue without
60            // exception
61            // fail();
62        } catch (XMLStreamException e) {
63            // the error is expected that no DTD was found
64        }
65    }
66
67    private void parse(XMLInputFactory xif) throws XMLStreamException {
68        XMLStreamReader xsr = xif.createXMLStreamReader(new StringReader("<?xml version='1.0'?><!DOCTYPE root PUBLIC 'abc' 'def'><abc />"));
69        while (xsr.next() != XMLStreamConstants.END_DOCUMENT)
70            ;
71    }
72
73}
74