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