1
2
3
4
5
6
7
8
9
10
11 package org.mule.routing.filters.xml;
12
13 import org.mule.umo.UMOFilter;
14 import org.mule.umo.UMOMessage;
15
16 import java.io.ByteArrayInputStream;
17 import java.io.StringReader;
18
19 import javax.xml.stream.XMLInputFactory;
20 import javax.xml.stream.XMLStreamConstants;
21 import javax.xml.stream.XMLStreamException;
22 import javax.xml.stream.XMLStreamReader;
23
24
25
26
27
28
29 public class IsXmlFilter implements UMOFilter
30 {
31 private final XMLInputFactory factory = XMLInputFactory.newInstance();
32
33
34
35 public IsXmlFilter()
36 {
37 super();
38 }
39
40 public boolean accept(UMOMessage obj)
41 {
42 return accept(obj.getPayload());
43 }
44
45 private boolean accept(Object obj)
46 {
47 XMLStreamReader parser = null;
48
49 try
50 {
51 if (obj instanceof String)
52 {
53 parser = factory.createXMLStreamReader(new StringReader((String)obj));
54 }
55 else if (obj instanceof byte[])
56 {
57 parser = factory.createXMLStreamReader(new ByteArrayInputStream((byte[])obj));
58 }
59 else
60 {
61
62 return false;
63 }
64
65 while (parser.next() != XMLStreamConstants.END_DOCUMENT)
66 {
67
68 }
69
70 return true;
71 }
72 catch (XMLStreamException ex)
73 {
74 return false;
75 }
76 finally
77 {
78 if (parser != null)
79 {
80 try
81 {
82 parser.close();
83 }
84 catch (XMLStreamException ignored)
85 {
86
87 }
88 }
89 }
90 }
91
92 }