View Javadoc

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