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