1
2
3
4
5
6
7
8
9
10 package org.mule.module.xml.config;
11
12 import org.mule.api.endpoint.EndpointBuilder;
13 import org.mule.api.endpoint.InboundEndpoint;
14 import org.mule.api.routing.filter.Filter;
15 import org.mule.api.transformer.Transformer;
16 import org.mule.jaxb.model.Person;
17 import org.mule.module.xml.filters.JXPathFilter;
18 import org.mule.module.xml.filters.JaxenFilter;
19 import org.mule.module.xml.filters.SchemaValidationFilter;
20 import org.mule.module.xml.transformer.JXPathExtractor;
21 import org.mule.module.xml.transformer.jaxb.JAXBMarshallerTransformer;
22 import org.mule.module.xml.transformer.jaxb.JAXBUnmarshallerTransformer;
23 import org.mule.module.xml.util.NamespaceManager;
24 import org.mule.tck.junit4.FunctionalTestCase;
25
26 import org.junit.Test;
27 import org.w3c.dom.ls.LSInput;
28 import org.w3c.dom.ls.LSResourceResolver;
29 import org.xml.sax.ErrorHandler;
30 import org.xml.sax.SAXException;
31 import org.xml.sax.SAXParseException;
32
33 import static org.junit.Assert.assertEquals;
34 import static org.junit.Assert.assertFalse;
35 import static org.junit.Assert.assertNotNull;
36 import static org.junit.Assert.assertTrue;
37
38 public class XmlNamespaceTestCase extends FunctionalTestCase
39 {
40
41 public XmlNamespaceTestCase()
42 {
43 setDisposeContextPerClass(true);
44 }
45
46 @Override
47 protected String getConfigResources()
48 {
49 return "xml-namespace-config.xml";
50 }
51
52 @Test
53 public void testGlobalNamespaces() throws Exception
54 {
55 NamespaceManager manager = muleContext.getRegistry().lookupObject(NamespaceManager.class);
56 assertNotNull(manager);
57 assertTrue(manager.isIncludeConfigNamespaces());
58 assertEquals(5, manager.getNamespaces().size());
59 }
60
61 @Test
62 public void testJXPathFilterConfig() throws Exception
63 {
64 EndpointBuilder epb = muleContext.getRegistry().lookupEndpointBuilder("test.ep1");
65
66 InboundEndpoint ep = epb.buildInboundEndpoint();
67 assertNotNull(ep.getFilter());
68 assertTrue(ep.getFilter() instanceof JXPathFilter);
69 JXPathFilter filter = (JXPathFilter)ep.getFilter();
70 assertEquals("/bar:foo/bar:bar", filter.getPattern());
71 assertEquals(6, filter.getNamespaces().size());
72 assertEquals("http://bar.com", filter.getNamespaces().get("bar"));
73 }
74
75 @Test
76 public void testJaxenFilterConfig() throws Exception
77 {
78 EndpointBuilder epb = muleContext.getRegistry().lookupEndpointBuilder("test.ep2");
79
80 InboundEndpoint ep = epb.buildInboundEndpoint();
81 assertNotNull(ep.getFilter());
82 assertTrue(ep.getFilter() instanceof JaxenFilter);
83 JaxenFilter filter = (JaxenFilter)ep.getFilter();
84 assertEquals("/car:foo/car:bar", filter.getPattern());
85 assertEquals(6, filter.getNamespaces().size());
86 assertEquals("http://car.com", filter.getNamespaces().get("car"));
87 }
88
89 @Test
90 public void testJXPathExtractor() throws Exception
91 {
92 JXPathExtractor transformer = (JXPathExtractor) lookupTransformer("jxpath-extractor");
93 transformer.initialise();
94 assertNotNull(transformer.getNamespaces());
95 assertEquals(6, transformer.getNamespaces().size());
96 assertNotNull(transformer.getNamespaces().get("foo"));
97 assertNotNull(transformer.getNamespaces().get("bar"));
98 }
99
100 @Test
101 public void testJaxbConfig() throws Exception
102 {
103 JAXBMarshallerTransformer t = (JAXBMarshallerTransformer) lookupTransformer("ObjectToXml");
104 assertNotNull(t.getJaxbContext());
105
106 JAXBUnmarshallerTransformer t2 = (JAXBUnmarshallerTransformer) lookupTransformer("XmlToObject");
107 assertEquals(Person.class, t2.getReturnDataType().getType());
108 assertNotNull(t2.getJaxbContext());
109 }
110
111 @Test
112 public void testSchemaValidationFilterWithCustomResourceResolver()
113 {
114 SchemaValidationFilter filter = (SchemaValidationFilter) lookupFilter("SchemaValidationWithResourceResolver");
115 assertEquals("schema1.xsd", filter.getSchemaLocations());
116 assertTrue(filter.getResourceResolver() instanceof MockResourceResolver);
117 assertTrue(filter.getErrorHandler() instanceof MockErrorHandler);
118 assertFalse(filter.isReturnResult());
119 }
120
121 private Transformer lookupTransformer(String name)
122 {
123 Transformer transformer = muleContext.getRegistry().lookupTransformer(name);
124 assertNotNull(transformer);
125 return transformer;
126 }
127
128 private Filter lookupFilter(String name)
129 {
130 Filter filter = muleContext.getRegistry().lookupObject(name);
131 assertNotNull(filter);
132 return filter;
133 }
134
135 private static class MockResourceResolver implements LSResourceResolver
136 {
137 public LSInput resolveResource(String type, String namespaceURI, String publicId,
138 String systemId, String baseURI)
139 {
140 return null;
141 }
142 }
143
144 private static class MockErrorHandler implements ErrorHandler
145 {
146 public void error(SAXParseException exception) throws SAXException
147 {
148
149 }
150
151 public void fatalError(SAXParseException exception) throws SAXException
152 {
153
154 }
155
156 public void warning(SAXParseException exception) throws SAXException
157 {
158
159 }
160 }
161 }