View Javadoc

1   /*
2    * $Id: XmlTransformerNamespaceHandlerTestCase.java 22414 2011-07-14 13:24:46Z dirk.olmes $
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  
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         // AbstractXmlTransformer instances have an output encoding
177         if (transformer instanceof AbstractXmlTransformer)
178         {
179             assertEquals("foo", ((AbstractXmlTransformer) transformer).getOutputEncoding());
180         }
181     }
182 
183 }