DuplicateNSDeclarationTest.java revision 968:874082a9b565
1265555Sambrisko/* 2265555Sambrisko * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. 3265555Sambrisko * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4265555Sambrisko * 5265555Sambrisko * This code is free software; you can redistribute it and/or modify it 6265555Sambrisko * under the terms of the GNU General Public License version 2 only, as 7265555Sambrisko * published by the Free Software Foundation. 8265555Sambrisko * 9265555Sambrisko * This code is distributed in the hope that it will be useful, but WITHOUT 10265555Sambrisko * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11265555Sambrisko * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12265555Sambrisko * version 2 for more details (a copy is included in the LICENSE file that 13265555Sambrisko * accompanied this code). 14265555Sambrisko * 15265555Sambrisko * You should have received a copy of the GNU General Public License version 16265555Sambrisko * 2 along with this work; if not, write to the Free Software Foundation, 17265555Sambrisko * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18265555Sambrisko * 19265555Sambrisko * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20265555Sambrisko * or visit www.oracle.com if you need additional information or have any 21265555Sambrisko * questions. 22265555Sambrisko */ 23265555Sambrisko 24265555Sambriskopackage stream.XMLOutputFactoryTest; 25265555Sambrisko 26265555Sambriskoimport java.io.ByteArrayOutputStream; 27265555Sambrisko 28265555Sambriskoimport javax.xml.stream.XMLOutputFactory; 29265555Sambriskoimport javax.xml.stream.XMLStreamException; 30265555Sambriskoimport javax.xml.stream.XMLStreamWriter; 31265555Sambriskoimport javax.xml.transform.stream.StreamResult; 32265555Sambrisko 33265555Sambriskoimport org.testng.Assert; 34265555Sambriskoimport org.testng.annotations.Listeners; 35265555Sambriskoimport org.testng.annotations.Test; 36265555Sambrisko 37265555Sambrisko/* 38265555Sambrisko * @test 39265555Sambrisko * @library /javax/xml/jaxp/libs /javax/xml/jaxp/unittest 40265555Sambrisko * @run testng/othervm -DrunSecMngr=true stream.XMLOutputFactoryTest.DuplicateNSDeclarationTest 41265555Sambrisko * @run testng/othervm stream.XMLOutputFactoryTest.DuplicateNSDeclarationTest 42265555Sambrisko * @summary Test the writing of duplicate namespace declarations when IS_REPAIRING_NAMESPACES is ture. 43265555Sambrisko */ 44265555Sambrisko@Listeners({jaxp.library.BasePolicy.class}) 45265555Sambriskopublic class DuplicateNSDeclarationTest { 46265555Sambrisko 47265555Sambrisko @Test 48265555Sambrisko public void testDuplicateNSDeclaration() { 49265555Sambrisko 50265555Sambrisko // expect only 1 Namespace Declaration 51265555Sambrisko final String EXPECTED_OUTPUT = "<?xml version=\"1.0\" ?>" + "<ns1:foo" + " xmlns:ns1=\"http://example.com/\">" + "</ns1:foo>"; 52265555Sambrisko 53265555Sambrisko // have XMLOutputFactory repair Namespaces 54265555Sambrisko XMLOutputFactory ofac = XMLOutputFactory.newInstance(); 55265555Sambrisko ofac.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, new Boolean(true)); 56265555Sambrisko 57265555Sambrisko // send output to a Stream 58265555Sambrisko ByteArrayOutputStream buffer = new ByteArrayOutputStream(); 59265555Sambrisko StreamResult sr = new StreamResult(buffer); 60265555Sambrisko XMLStreamWriter w = null; 61265555Sambrisko 62265555Sambrisko // write a duplicate Namespace Declaration 63265555Sambrisko try { 64265555Sambrisko w = ofac.createXMLStreamWriter(sr); 65265555Sambrisko w.writeStartDocument(); 66265555Sambrisko w.writeStartElement("ns1", "foo", "http://example.com/"); 67265555Sambrisko w.writeNamespace("ns1", "http://example.com/"); 68265555Sambrisko w.writeNamespace("ns1", "http://example.com/"); 69265555Sambrisko w.writeEndElement(); 70265555Sambrisko w.writeEndDocument(); 71265555Sambrisko w.close(); 72265555Sambrisko } catch (XMLStreamException xmlStreamException) { 73265555Sambrisko xmlStreamException.printStackTrace(); 74265555Sambrisko Assert.fail(xmlStreamException.toString()); 75265555Sambrisko } 76265555Sambrisko 77265555Sambrisko // debugging output for humans 78265555Sambrisko System.out.println(); 79265555Sambrisko System.out.println("actual: \"" + buffer.toString() + "\""); 80265555Sambrisko System.out.println("expected: \"" + EXPECTED_OUTPUT + "\""); 81265555Sambrisko 82265555Sambrisko // are results as expected? 83265555Sambrisko Assert.assertEquals(EXPECTED_OUTPUT, buffer.toString()); 84265555Sambrisko } 85265555Sambrisko} 86265555Sambrisko 87265555Sambrisko