1
2
3
4
5
6
7
8
9
10
11 package org.mule.module.xml.config;
12
13 import org.mule.api.MuleException;
14 import org.mule.api.transformer.Transformer;
15 import org.mule.module.xml.transformer.AbstractXmlTransformer;
16 import org.mule.module.xml.transformer.DomDocumentToXml;
17 import org.mule.module.xml.transformer.JXPathExtractor;
18 import org.mule.module.xml.transformer.ObjectToXml;
19 import org.mule.module.xml.transformer.XmlToDomDocument;
20 import org.mule.module.xml.transformer.XmlToObject;
21 import org.mule.module.xml.transformer.XsltTransformer;
22 import org.mule.tck.junit4.FunctionalTestCase;
23 import org.mule.transformer.AbstractTransformer;
24
25 import java.util.Map;
26
27 import org.junit.Test;
28
29 import static org.junit.Assert.assertEquals;
30 import static org.junit.Assert.assertFalse;
31 import static org.junit.Assert.assertNotNull;
32 import static org.junit.Assert.assertNull;
33 import static org.junit.Assert.assertTrue;
34
35 public class XmlTransformerNamespaceHandlerTestCase extends FunctionalTestCase
36 {
37
38 @Override
39 protected String getConfigResources()
40 {
41 return "org/mule/module/xml/xml-transformer-namespace-test.xml";
42 }
43
44 @Test
45 public void testDomToXml()
46 {
47 getAndTestTransformer("domToXml", DomDocumentToXml.class);
48 }
49
50 @Test
51 public void testJXPathExtractor()
52 {
53 JXPathExtractor extractor = (JXPathExtractor) getAndTestTransformer("jxpathExtractor",
54 JXPathExtractor.class);
55 assertEquals("/expression", extractor.getExpression());
56 assertFalse(extractor.isSingleResult());
57 assertEquals(JXPathExtractor.OUTPUT_TYPE_VALUE, extractor.getOutputType());
58
59 Map ns = extractor.getNamespaces();
60 assertNotNull(ns);
61
62 assertEquals("http://foo.com", ns.get("foo1"));
63 assertEquals("http://foo.com", ns.get("foo2"));
64 }
65
66 @Test
67 public void testObjectToXml()
68 {
69 ObjectToXml objectToXml = (ObjectToXml) getAndTestTransformer("objectToXml", ObjectToXml.class);
70 assertTrue(objectToXml.isAcceptMuleMessage());
71 }
72
73 @Test
74 public void testXmlToDom()
75 {
76 getAndTestTransformer("xmlToDom", XmlToDomDocument.class);
77 }
78
79 @Test
80 public void testXmlToObject()
81 {
82 getAndTestTransformer("xmlToObject", XmlToObject.class);
83 }
84
85 @Test
86 public void testXslt()
87 {
88 XsltTransformer xslt = (XsltTransformer) getAndTestTransformer("xslt", XsltTransformer.class);
89 assertEquals(10, xslt.getMaxActiveTransformers());
90 assertEquals(10, xslt.getMaxIdleTransformers());
91 assertEquals(CustomXsltTransformerFactory.class.getName(), xslt.getXslTransformerFactory());
92 assertNull(xslt.getXslFile());
93 assertNotNull(xslt.getXslt());
94 String transform = xslt.getXslt();
95 assertTrue(transform.indexOf("test for this string in test") > -1);
96
97 assertEquals("#[header:foo]", xslt.getContextProperties().get("bar"));
98 }
99
100 @Test
101 public void testDomToXmlOnEndpoint() throws MuleException
102 {
103 getAndTestEndpointTransformer("ep1", DomDocumentToXml.class);
104 }
105
106 @Test
107 public void testJXPathExtractorOnEndpoint() throws MuleException
108 {
109 JXPathExtractor extractor = (JXPathExtractor) getAndTestEndpointTransformer("ep2",
110 JXPathExtractor.class);
111 assertEquals("/expression", extractor.getExpression());
112 assertFalse(extractor.isSingleResult());
113 }
114
115 @Test
116 public void testObjectToXmlOnEndpoint() throws MuleException
117 {
118 ObjectToXml objectToXml = (ObjectToXml) getAndTestEndpointTransformer("ep3", ObjectToXml.class);
119 assertTrue(objectToXml.isAcceptMuleMessage());
120 }
121
122 @Test
123 public void testXmlToDomOnEndpoint() throws MuleException
124 {
125 getAndTestEndpointTransformer("ep4", XmlToDomDocument.class);
126 }
127
128 @Test
129 public void testXmlToObjectOnEndpoint() throws MuleException
130 {
131 getAndTestEndpointTransformer("ep5", XmlToObject.class);
132 }
133
134 @Test
135 public void testXsltOnEndpoint() throws MuleException
136 {
137 XsltTransformer xslt = (XsltTransformer) getAndTestEndpointTransformer("ep6", XsltTransformer.class);
138 assertEquals(10, xslt.getMaxActiveTransformers());
139 assertEquals(10, xslt.getMaxIdleTransformers());
140 assertEquals(CustomXsltTransformerFactory.class.getName(), xslt.getXslTransformerFactory());
141 assertNotNull(xslt.getXslt());
142 String transform = xslt.getXslt();
143 assertTrue(transform.indexOf("test for this string in test") > -1);
144
145 assertEquals("#[header:foo]", xslt.getContextProperties().get("bar"));
146 }
147
148 protected AbstractTransformer getAndTestTransformer(String name, Class clazz)
149 {
150 assertTrue(AbstractTransformer.class.isAssignableFrom(clazz));
151 Transformer object= muleContext.getRegistry().lookupTransformer(name);
152
153 assertNotNull(object);
154 assertTrue(clazz.isAssignableFrom(object.getClass()));
155 AbstractTransformer transformer = (AbstractTransformer) object;
156 assertAbstractTransformerOk(transformer, name);
157 return transformer;
158 }
159
160 protected AbstractTransformer getAndTestEndpointTransformer(String endpointName, Class clazz) throws MuleException
161 {
162 assertTrue(AbstractTransformer.class.isAssignableFrom(clazz));
163 assertEquals(1, muleContext.getEndpointFactory().getInboundEndpoint(endpointName).getTransformers().size());
164 AbstractTransformer transformer= (AbstractTransformer) muleContext.getEndpointFactory().getInboundEndpoint(endpointName).getTransformers().get(0);
165
166 assertNotNull(transformer);
167 assertTrue(clazz.isAssignableFrom(transformer.getClass()));
168 return transformer;
169 }
170
171 protected void assertAbstractTransformerOk(AbstractTransformer transformer, String name)
172 {
173 assertTrue(transformer.isIgnoreBadInput());
174 assertEquals(Object.class, transformer.getReturnClass());
175 assertEquals(name, transformer.getName());
176
177 if (transformer instanceof AbstractXmlTransformer)
178 {
179 assertEquals("foo", ((AbstractXmlTransformer) transformer).getOutputEncoding());
180 }
181 }
182
183 }