1
2
3
4
5
6
7
8
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