1 /* 2 * Copyright (c) 2014, 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 24 package stream; 25 26 import org.testng.annotations.Test; 27 import org.testng.Assert; 28 29 import java.io.File; 30 import java.io.FileInputStream; 31 import java.io.FileNotFoundException; 32 33 import javax.xml.stream.FactoryConfigurationError; 34 import javax.xml.stream.XMLEventReader; 35 import javax.xml.stream.XMLInputFactory; 36 import javax.xml.stream.XMLStreamConstants; 37 import javax.xml.stream.XMLStreamException; 38 import javax.xml.stream.events.XMLEvent; 39 import javax.xml.stream.util.EventReaderDelegate; 40 41 /* 42 * @summary Test EventReaderDelegate. 43 */ 44 public class EventReaderDelegateTest { 45 46 public EventReaderDelegateTest(String name) { 47 } 48 49 @Test 50 public void testGetElementText() { 51 try { 52 XMLInputFactory ifac = XMLInputFactory.newFactory(); 53 XMLEventReader reader = ifac.createXMLEventReader(new FileInputStream(new File(getClass().getResource("toys.xml").getFile()))); 54 EventReaderDelegate delegate = new EventReaderDelegate(reader); 55 while (delegate.hasNext()) { 56 XMLEvent event = (XMLEvent) delegate.next(); 57 switch (event.getEventType()) { 58 case XMLStreamConstants.START_ELEMENT: { 59 String name = event.asStartElement().getName().toString(); 60 if (name.equals("name") || name.equals("price")) { 61 System.out.println(delegate.getElementText()); 62 } else { 63 try { 64 delegate.getElementText(); 65 } catch (XMLStreamException e) { 66 System.out.println("Expected XMLStreamException in getElementText()"); 67 } 68 } 69 70 } 71 } 72 } 73 delegate.close(); 74 } catch (FileNotFoundException e) { 75 e.printStackTrace(); 76 Assert.fail("FileNotFoundException in testGetElementText()"); 77 } catch (XMLStreamException e) { 78 e.printStackTrace(); 79 Assert.fail("XMLStreamException in testGetElementText()"); 80 } catch (FactoryConfigurationError e) { 81 e.printStackTrace(); 82 Assert.fail("FactoryConfigurationError in testGetElementText()"); 83 } 84 85 } 86 87 @Test 88 public void testRemove() { 89 try { 90 XMLInputFactory ifac = XMLInputFactory.newFactory(); 91 XMLEventReader reader = ifac.createXMLEventReader(new FileInputStream(new File(getClass().getResource("toys.xml").getFile()))); 92 EventReaderDelegate delegate = new EventReaderDelegate(reader); 93 delegate.remove(); 94 } catch (FileNotFoundException e) { 95 e.printStackTrace(); 96 Assert.fail("FileNotFoundException in testRemove()"); 97 } catch (XMLStreamException e) { 98 e.printStackTrace(); 99 Assert.fail("XMLStreamException in testRemove()"); 100 } catch (FactoryConfigurationError e) { 101 e.printStackTrace(); 102 Assert.fail("FactoryConfigurationError in testRemove()"); 103 } catch (UnsupportedOperationException e) { 104 System.out.println("Expected exception in remove()"); 105 } 106 107 } 108 109 @Test 110 public void testPeek() { 111 try { 112 XMLInputFactory ifac = XMLInputFactory.newFactory(); 113 XMLEventReader reader = ifac.createXMLEventReader(new FileInputStream(new File(getClass().getResource("toys.xml").getFile()))); 114 EventReaderDelegate delegate = new EventReaderDelegate(); 115 delegate.setParent(reader); 116 while (delegate.hasNext()) { 117 XMLEvent peekevent = delegate.peek(); 118 XMLEvent event = (XMLEvent) delegate.next(); 119 if (peekevent != event) { 120 Assert.fail("peek() does not return same XMLEvent with next()"); 121 } 122 } 123 delegate.close(); 124 } catch (FileNotFoundException e) { 125 e.printStackTrace(); 126 Assert.fail("FileNotFoundException in testPeek()"); 127 } catch (XMLStreamException e) { 128 e.printStackTrace(); 129 Assert.fail("XMLStreamException in testPeek()"); 130 } catch (FactoryConfigurationError e) { 131 e.printStackTrace(); 132 Assert.fail("FactoryConfigurationError in testPeek()"); 133 } 134 } 135 136 @Test 137 public void testNextTag() { 138 try { 139 XMLInputFactory ifac = XMLInputFactory.newFactory(); 140 ifac.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, Boolean.FALSE); 141 XMLEventReader reader = ifac.createXMLEventReader(new FileInputStream(new File(getClass().getResource("toys.xml").getFile()))); 142 EventReaderDelegate delegate = new EventReaderDelegate(reader); 143 if ((Boolean) (delegate.getProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES)) != Boolean.FALSE) { 144 Assert.fail("getProperty() does not return correct value"); 145 } 146 while (delegate.hasNext()) { 147 XMLEvent event = delegate.peek(); 148 if (event.isEndElement() || event.isStartElement()) { 149 XMLEvent nextevent = delegate.nextTag(); 150 if (!(nextevent.getEventType() == XMLStreamConstants.START_ELEMENT || nextevent.getEventType() == XMLStreamConstants.END_ELEMENT)) { 151 Assert.fail("nextTag() does not return correct event type"); 152 } 153 } else { 154 delegate.next(); 155 } 156 } 157 delegate.close(); 158 } catch (FileNotFoundException e) { 159 e.printStackTrace(); 160 Assert.fail("FileNotFoundException in testNextTag()"); 161 } catch (XMLStreamException e) { 162 e.printStackTrace(); 163 Assert.fail("XMLStreamException in testNextTag()"); 164 } catch (FactoryConfigurationError e) { 165 e.printStackTrace(); 166 Assert.fail("FactoryConfigurationError in testNextTag()"); 167 } 168 } 169 170 @Test 171 public void testNextEvent() { 172 try { 173 XMLInputFactory ifac = XMLInputFactory.newFactory(); 174 ifac.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, Boolean.FALSE); 175 XMLEventReader reader = ifac.createXMLEventReader(new FileInputStream(new File(getClass().getResource("toys.xml").getFile()))); 176 EventReaderDelegate delegate = new EventReaderDelegate(); 177 delegate.setParent(reader); 178 if ((Boolean) (delegate.getParent().getProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES)) != Boolean.FALSE) { 179 Assert.fail("XMLEventReader.getProperty() does not return correct value"); 180 } 181 if ((Boolean) (delegate.getProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES)) != Boolean.FALSE) { 182 Assert.fail("EventReaderDelegate.getProperty() does not return correct value"); 183 } 184 while (delegate.hasNext()) { 185 XMLEvent event = delegate.nextEvent(); 186 switch (event.getEventType()) { 187 case XMLStreamConstants.START_ELEMENT: { 188 System.out.println(event.asStartElement().getName()); 189 break; 190 } 191 case XMLStreamConstants.END_ELEMENT: { 192 System.out.println(event.asEndElement().getName()); 193 break; 194 } 195 case XMLStreamConstants.END_DOCUMENT: { 196 System.out.println(event.isEndDocument()); 197 break; 198 } 199 case XMLStreamConstants.START_DOCUMENT: { 200 System.out.println(event.isStartDocument()); 201 break; 202 } 203 case XMLStreamConstants.CHARACTERS: { 204 System.out.println(event.asCharacters().getData()); 205 break; 206 } 207 case XMLStreamConstants.COMMENT: { 208 System.out.println(event.toString()); 209 break; 210 } 211 } 212 213 } 214 delegate.close(); 215 } catch (FileNotFoundException e) { 216 e.printStackTrace(); 217 Assert.fail("FileNotFoundException in testNextEvent()"); 218 } catch (XMLStreamException e) { 219 e.printStackTrace(); 220 Assert.fail("XMLStreamException in testNextEvent()"); 221 } catch (FactoryConfigurationError e) { 222 e.printStackTrace(); 223 Assert.fail("FactoryConfigurationError in testNextEvent()"); 224 } 225 226 } 227 }