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