1   package org.codehaus.xfire.util;
2   
3   import java.io.ByteArrayOutputStream;
4   import java.io.StringReader;
5   
6   import javax.xml.stream.FactoryConfigurationError;
7   import javax.xml.stream.XMLInputFactory;
8   import javax.xml.stream.XMLOutputFactory;
9   import javax.xml.stream.XMLStreamException;
10  import javax.xml.stream.XMLStreamReader;
11  import javax.xml.stream.XMLStreamWriter;
12  
13  import org.codehaus.xfire.AbstractXFireTest;
14  import org.dom4j.Document;
15  import org.dom4j.io.SAXReader;
16  
17  /***
18   * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
19   * @since Oct 26, 2004
20   */
21  public class STAXUtilsTest
22      extends AbstractXFireTest
23  {
24      public void testAmazonDoc() throws Exception
25      {
26          String outS = doCopy("amazon.xml");
27          
28          SAXReader sax = new SAXReader();
29          Document doc = sax.read( new StringReader(outS) );
30          
31          addNamespace("a", "http://xml.amazon.com/AWSECommerceService/2004-08-01");
32          assertValid("/a:ItemLookup", doc);
33          assertValid("/a:ItemLookup/a:Request/a:IdType", doc);
34      }
35  
36      public void testAmazonDoc2() throws Exception
37      {
38          String outS = doCopy("amazon2.xml");
39          
40          SAXReader sax = new SAXReader();
41          Document doc = sax.read( new StringReader(outS) );
42          
43          addNamespace("a", "http://webservices.amazon.com/AWSECommerceService/2004-10-19");
44          assertValid("//a:ItemLookupResponse", doc);
45          assertValid("//a:ItemLookupResponse/a:Items", doc);
46      }
47      
48      /***
49       * @return
50       * @throws FactoryConfigurationError
51       * @throws XMLStreamException
52       */
53      private String doCopy(String resource) throws FactoryConfigurationError, XMLStreamException
54      {
55          XMLInputFactory ifactory = XMLInputFactory.newInstance();
56          XMLStreamReader reader = ifactory.createXMLStreamReader(getClass().getResourceAsStream(resource));
57          
58          ByteArrayOutputStream out = new ByteArrayOutputStream();
59          XMLOutputFactory factory = XMLOutputFactory.newInstance();
60          XMLStreamWriter writer = factory.createXMLStreamWriter(out);
61          
62          writer.writeStartDocument();
63          STAXUtils.copy(reader, writer);
64          writer.writeEndDocument();
65          
66          writer.close();
67          String outS = out.toString();
68          
69          System.out.println(outS);
70          return outS;
71      }
72  }