View Javadoc

1   /*
2    * $Id: XmlNamespaceTestCase.java 23198 2011-10-17 20:44:44Z dfeist $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.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  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             // does nothing
149         }
150 
151         public void fatalError(SAXParseException exception) throws SAXException
152         {
153             // does nothing
154         }
155 
156         public void warning(SAXParseException exception) throws SAXException
157         {
158             // does nothing
159         }
160     }
161 }