View Javadoc

1   /*
2    * $Id: SpringNamespaceConfigBuilderV2TestCase.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.test.spring;
12  
13  import org.mule.DefaultMuleMessage;
14  import org.mule.api.MuleMessage;
15  import org.mule.api.config.ConfigurationBuilder;
16  import org.mule.api.config.ConfigurationException;
17  import org.mule.api.endpoint.ImmutableEndpoint;
18  import org.mule.api.routing.MessageInfoMapping;
19  import org.mule.api.service.Service;
20  import org.mule.api.transformer.Transformer;
21  import org.mule.config.spring.SpringXmlConfigurationBuilder;
22  import org.mule.routing.ExpressionMessageInfoMapping;
23  import org.mule.service.ServiceCompositeMessageSource;
24  import org.mule.tck.AbstractConfigBuilderTestCase;
25  import org.mule.tck.testmodels.fruit.Apple;
26  import org.mule.tck.testmodels.mule.TestCompressionTransformer;
27  
28  import java.util.HashMap;
29  import java.util.List;
30  import java.util.Map;
31  
32  /**
33   * This is an extended version of the same test covered in
34   * {@link org.mule.test.spring.SpringNamespaceConfigBuilderTestCase}.  Both are translations of an
35   * earlier (1.X) test.
36   *
37   * I realise this seems rather messy, and I did consider merging the two, but they often test different
38   * things, and we would have lost quite a few tests on merging.  So I am afraid we are left with two
39   * rather rambling, parallel tests.  But these tests examing "corner cases" no other tests cover, so
40   * are quite valuable...
41   */
42  public class SpringNamespaceConfigBuilderV2TestCase extends AbstractConfigBuilderTestCase
43  {
44  
45      public SpringNamespaceConfigBuilderV2TestCase()
46      {
47          super(true);
48          setDisposeManagerPerSuite(true);
49      }
50  
51      public String getConfigResources()
52      {
53          return "org/mule/test/spring/config2/test-xml-mule2-config.xml," +
54                  "org/mule/test/spring/config2/test-xml-mule2-config-split.xml," +
55                  "org/mule/test/spring/config2/test-xml-mule2-config-split-properties.xml";
56      }
57  
58      @Override
59      public ConfigurationBuilder getBuilder() throws ConfigurationException
60      {
61          return new SpringXmlConfigurationBuilder(getConfigResources());
62      }
63  
64      public void testMessageInfoMappingConfig() throws Exception
65      {
66          Service d = muleContext.getRegistry().lookupService("msgInfoMappingTestComponent");
67          assertNotNull(d);
68  
69          final MessageInfoMapping mapping = d.getMessageInfoMapping();
70          assertTrue(mapping instanceof ExpressionMessageInfoMapping);
71  
72          Map props = new HashMap();
73          props.put("id", "myID123");
74          props.put("correlation", "myCorrelationID456");
75          MuleMessage msg = new DefaultMuleMessage("foo", props, muleContext);
76          assertEquals("myID123",mapping.getMessageId(msg));
77          assertEquals("myCorrelationID456",mapping.getCorrelationId(msg));
78      }
79  
80      public void testPropertyTypesConfig() throws Exception
81      {
82          Service c = muleContext.getRegistry().lookupService("testPropertiesComponent");
83          assertNotNull(c);
84          Object obj = getComponent(c);
85          assertNotNull(obj);
86          assertTrue(obj instanceof Apple);
87          assertTrue(((Apple) obj).isBitten()); 
88          assertTrue(((Apple) obj).isWashed()); 
89      }
90  
91      public void testEndpointURIParamsConfig()
92      {
93          Service d = muleContext.getRegistry().lookupService("testPropertiesComponent");
94          assertNotNull(d);
95          final ServiceCompositeMessageSource router = (ServiceCompositeMessageSource) d.getMessageSource();
96          assertNotNull(router);
97          final List endpoints = router.getEndpoints();
98          assertNotNull(endpoints);
99          assertFalse(endpoints.isEmpty());
100         final ImmutableEndpoint inboundEndpoint = (ImmutableEndpoint) endpoints.get(0);
101         assertNotNull(inboundEndpoint);
102         final List transformers = inboundEndpoint.getTransformers();
103         assertFalse(transformers.isEmpty());
104         assertNotNull(transformers.get(0));
105         final List responseTransformers = inboundEndpoint.getResponseTransformers();
106         assertFalse(responseTransformers.isEmpty());
107         assertNotNull(responseTransformers.get(0));
108     }
109 
110     @Override
111     public void testTransformerConfig()
112     {
113         // first of all test generic transformer configuration
114         super.testTransformerConfig();
115 
116         Transformer t = muleContext.getRegistry().lookupTransformer("TestCompressionTransformer");
117         assertNotNull(t);
118         assertTrue(t instanceof TestCompressionTransformer);
119 
120         // This will only work with the MuleXml Builder other implementations
121         // will have to set this proerty manually or mimic Mules behaviour
122         assertEquals("this was set from the manager properties!",
123             ((TestCompressionTransformer)t).getBeanProperty1());
124         assertEquals(12, ((TestCompressionTransformer)t).getBeanProperty2());
125 
126         assertEquals(t.getReturnClass(), java.lang.String.class);
127 
128         t = muleContext.getRegistry().lookupTransformer("TestTransformer");
129         assertNotNull(t);
130         assertEquals(t.getReturnClass(), byte[].class);
131     }
132 }