View Javadoc

1   /*
2    * $Id$
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.module.xml.transformer;
12  
13  import org.mule.api.transformer.TransformerException;
14  import org.mule.config.i18n.MessageFactory;
15  import org.mule.module.xml.stax.ReversibleXMLStreamReader;
16  import org.mule.module.xml.util.XMLUtils;
17  
18  import java.io.InputStream;
19  
20  import javax.xml.stream.XMLStreamException;
21  import javax.xml.stream.XMLStreamReader;
22  import javax.xml.transform.Source;
23  
24  import org.w3c.dom.Document;
25  
26  public class XmlToXMLStreamReader extends AbstractXmlTransformer
27  {
28      private boolean reversible;
29      
30      public XmlToXMLStreamReader()
31      {
32          super();
33          registerSourceType(Source.class);
34          registerSourceType(InputStream.class);
35          registerSourceType(Document.class);
36          registerSourceType(byte[].class);
37          registerSourceType(String.class);
38  
39          setReturnClass(XMLStreamReader.class);
40          
41      }
42  
43      protected Object doTransform(Object payload, String encoding) throws TransformerException
44      {
45          try 
46          {
47              XMLStreamReader xsr = XMLUtils.toXMLStreamReader(getXMLInputFactory(), payload);
48              if (xsr == null)
49              {
50                  throw new TransformerException(MessageFactory
51                      .createStaticMessage("Unable to convert " + payload.getClass() + " to XMLStreamReader."));
52              }
53          
54              if (reversible && !(xsr instanceof ReversibleXMLStreamReader))
55              {
56                  return new ReversibleXMLStreamReader(xsr);
57              }
58              else
59              {
60                  return xsr;
61              }
62          }
63          catch (XMLStreamException e)
64          {
65              throw new TransformerException(this, e);
66          }
67      }
68  
69      public boolean isReversible()
70      {
71          return reversible;
72      }
73  
74      public void setReversible(boolean reversible)
75      {
76          this.reversible = reversible;
77      }
78  
79  }
80  
81