1 /* 2 * Copyright 2002-2010 the original author or authors. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package org.springframework.util.xml; 18 19 import java.io.StringReader; 20 import java.io.StringWriter; 21 import javax.xml.parsers.DocumentBuilder; 22 import javax.xml.parsers.DocumentBuilderFactory; 23 import javax.xml.stream.XMLEventReader; 24 import javax.xml.stream.XMLInputFactory; 25 import javax.xml.stream.XMLStreamReader; 26 import javax.xml.transform.Transformer; 27 import javax.xml.transform.TransformerFactory; 28 import javax.xml.transform.dom.DOMResult; 29 import javax.xml.transform.stream.StreamResult; 30 31 import static org.custommonkey.xmlunit.XMLAssert.*; 32 import org.junit.Before; 33 import org.junit.Test; 34 import org.w3c.dom.Document; 35 import org.xml.sax.InputSource; 36 37 public class StaxSourceTests { 38 39 private static final String XML = "<root xmlns='namespace'><child/></root>"; 40 41 private Transformer transformer; 42 43 private XMLInputFactory inputFactory; 44 45 private DocumentBuilder documentBuilder; 46 47 @Before setUp()48 public void setUp() throws Exception { 49 TransformerFactory transformerFactory = TransformerFactory.newInstance(); 50 transformer = transformerFactory.newTransformer(); 51 inputFactory = XMLInputFactory.newInstance(); 52 DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); 53 documentBuilderFactory.setNamespaceAware(true); 54 documentBuilder = documentBuilderFactory.newDocumentBuilder(); 55 } 56 57 @Test streamReaderSourceToStreamResult()58 public void streamReaderSourceToStreamResult() throws Exception { 59 XMLStreamReader streamReader = inputFactory.createXMLStreamReader(new StringReader(XML)); 60 StaxSource source = new StaxSource(streamReader); 61 assertEquals("Invalid streamReader returned", streamReader, source.getXMLStreamReader()); 62 assertNull("EventReader returned", source.getXMLEventReader()); 63 StringWriter writer = new StringWriter(); 64 transformer.transform(source, new StreamResult(writer)); 65 assertXMLEqual("Invalid result", XML, writer.toString()); 66 } 67 68 @Test streamReaderSourceToDOMResult()69 public void streamReaderSourceToDOMResult() throws Exception { 70 XMLStreamReader streamReader = inputFactory.createXMLStreamReader(new StringReader(XML)); 71 StaxSource source = new StaxSource(streamReader); 72 assertEquals("Invalid streamReader returned", streamReader, source.getXMLStreamReader()); 73 assertNull("EventReader returned", source.getXMLEventReader()); 74 75 Document expected = documentBuilder.parse(new InputSource(new StringReader(XML))); 76 Document result = documentBuilder.newDocument(); 77 transformer.transform(source, new DOMResult(result)); 78 assertXMLEqual("Invalid result", expected, result); 79 } 80 81 @Test eventReaderSourceToStreamResult()82 public void eventReaderSourceToStreamResult() throws Exception { 83 XMLEventReader eventReader = inputFactory.createXMLEventReader(new StringReader(XML)); 84 StaxSource source = new StaxSource(eventReader); 85 assertEquals("Invalid eventReader returned", eventReader, source.getXMLEventReader()); 86 assertNull("StreamReader returned", source.getXMLStreamReader()); 87 StringWriter writer = new StringWriter(); 88 transformer.transform(source, new StreamResult(writer)); 89 assertXMLEqual("Invalid result", XML, writer.toString()); 90 } 91 92 @Test eventReaderSourceToDOMResult()93 public void eventReaderSourceToDOMResult() throws Exception { 94 XMLEventReader eventReader = inputFactory.createXMLEventReader(new StringReader(XML)); 95 StaxSource source = new StaxSource(eventReader); 96 assertEquals("Invalid eventReader returned", eventReader, source.getXMLEventReader()); 97 assertNull("StreamReader returned", source.getXMLStreamReader()); 98 99 Document expected = documentBuilder.parse(new InputSource(new StringReader(XML))); 100 Document result = documentBuilder.newDocument(); 101 transformer.transform(source, new DOMResult(result)); 102 assertXMLEqual("Invalid result", expected, result); 103 } 104 }