View Javadoc

1   /*
2    * $Id: RegistryExpressionEvaluatorTestCase.java 20321 2010-11-24 15:21:24Z dfeist $
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.functional;
12  
13  import org.mule.DefaultMuleMessage;
14  import org.mule.api.MuleMessage;
15  import org.mule.api.transformer.Transformer;
16  import org.mule.expression.RegistryExpressionEvaluator;
17  import org.mule.tck.FunctionalTestCase;
18  import org.mule.tck.testmodels.fruit.Apple;
19  import org.mule.tck.testmodels.fruit.FruitBasket;
20  
21  public class RegistryExpressionEvaluatorTestCase extends FunctionalTestCase
22  {
23      protected String getConfigResources()
24      {
25          return "org/mule/test/integration/registry-expressions-test-config.xml";
26      }
27  
28      public void testSimpleRegistryLookup() throws Exception
29      {
30  
31          MuleMessage message = new DefaultMuleMessage(new Apple(), muleContext);
32          RegistryExpressionEvaluator eval = new RegistryExpressionEvaluator();
33          eval.setMuleContext(muleContext);
34          Object o = eval.evaluate("bowlToBasket", message);
35          assertNotNull(o);
36          assertTrue(o instanceof Transformer);
37  
38          o = eval.evaluate("XXbowlToBasket*", message);
39          assertNull(o);
40  
41  
42      }
43  
44      public void testRegistryLookupWithProperties() throws Exception
45      {
46          MuleMessage message = new DefaultMuleMessage(new Apple(), muleContext);
47          RegistryExpressionEvaluator eval = new RegistryExpressionEvaluator();
48          eval.setMuleContext(muleContext);
49          Object o = eval.evaluate("bowlToBasket.returnClass", message);
50          assertNotNull(o);
51          assertTrue(o instanceof Class);
52          assertEquals(FruitBasket.class, o);
53  
54          o = eval.evaluate("XXbowlToBasket*.returnClass", message);
55          assertNull(o);
56  
57          o = eval.evaluate("bowlToBasket.returnClass.name", message);
58          assertNotNull(o);
59          assertEquals(FruitBasket.class.getName(), o);
60  
61          o = eval.evaluate("bowlToBasket.returnClass.xname*", message);
62          assertNull(o);
63  
64          try
65          {
66              o = eval.evaluate("bowlToBasket.returnClass.xname", message);
67              fail("property xname is not valid and is not optional");
68          }
69          catch (Exception e)
70          {
71              //Expected
72          }
73  
74      }
75  
76      public void testGlobalEndpointRegistryLookupWithProperties() throws Exception
77      {
78  
79          MuleMessage message = new DefaultMuleMessage(new Apple(), muleContext);
80          RegistryExpressionEvaluator eval = new RegistryExpressionEvaluator();
81          eval.setMuleContext(muleContext);
82          Object o = eval.evaluate("myendpoint.toString", message);
83          assertNotNull(o);
84          assertTrue(o instanceof String);
85          assertEquals("test://foo", o);
86  
87          //This doesn't work yet
88  //        o = eval.evaluate("myendpoint.properties", message);
89  //        assertNotNull(o);
90  //        assertTrue(o instanceof Map);
91  //        assertEquals(2, ((Map)o).size());
92  //
93  //        o = eval.evaluate("myendpoint.properties.foo", message);
94  //        assertNotNull(o);
95  //        assertEquals("foo-value", o);
96  
97      }
98  
99      public void testLookUpbyType() throws Exception
100     {
101         Apple apple = new Apple();
102         muleContext.getRegistry().registerObject("apple", apple);
103         MuleMessage message = new DefaultMuleMessage("foo", muleContext);
104         RegistryExpressionEvaluator eval = new RegistryExpressionEvaluator();
105         eval.setMuleContext(muleContext);
106         Object o = eval.evaluate("type:org.mule.tck.testmodels.fruit.Apple", message);
107         assertNotNull(o);
108         assertEquals(apple, o);
109 
110 
111         try
112         {
113             o = eval.evaluate("banana", message);
114             fail("No banana in the registry");
115         }
116         catch (Exception e)
117         {
118             //Expected
119         }
120     }
121 
122 }