View Javadoc

1   /*
2    * $Id: XmlTransformerNamespaceHandlerTestCase.java 19191 2010-08-25 21:05:23Z tcarlson $
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.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         // AbstractXmlTransformer instances have an output encoding
155         if (transformer instanceof AbstractXmlTransformer)
156         {
157             assertEquals("foo", ((AbstractXmlTransformer) transformer).getOutputEncoding());
158         }
159     }
160 
161 }