1   /*
2    * $Id: MessageExpressionEvaluatorTestCase.java 12067 2008-06-16 13:53:26Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.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.expression;
11  
12  import org.mule.DefaultMuleMessage;
13  import org.mule.api.MuleMessage;
14  import org.mule.message.DefaultExceptionPayload;
15  import org.mule.tck.AbstractMuleTestCase;
16  import org.mule.util.expression.ExpressionEvaluatorManager;
17  import org.mule.util.expression.MessageExpressionEvaluator;
18  
19  import java.util.ArrayList;
20  import java.util.List;
21  
22  public class MessageExpressionEvaluatorTestCase extends AbstractMuleTestCase
23  {
24      public void testUsingEvaluatorDirectly() throws Exception
25      {
26          MessageExpressionEvaluator eval = new MessageExpressionEvaluator();
27          MuleMessage message = new DefaultMuleMessage("test");
28          message.setCorrelationId(message.getUniqueId());
29          message.setCorrelationSequence(1);
30          message.setCorrelationGroupSize(2);
31          message.setReplyTo("foo");
32          message.setEncoding("UTF-8");
33          Exception e = new Exception("dummy");
34          message.setExceptionPayload(new DefaultExceptionPayload(e));
35  
36          //no expression
37          Object result = eval.evaluate(null, message);
38          assertNotNull(result);
39          assertEquals(message, result);
40  
41          //no expression
42          result = eval.evaluate(null, new ArrayList(1));
43          assertNotNull(result);
44          assertTrue(result instanceof List);
45  
46          result = eval.evaluate(null, null);
47          assertNull(result);
48  
49          assertEquals(message.getUniqueId(), eval.evaluate("id", message));
50          assertEquals(message.getUniqueId(), eval.evaluate("correlationId", message));
51          assertEquals(new Integer(1), eval.evaluate("correlationSequence", message));
52          assertEquals(new Integer(2), eval.evaluate("correlationGroupSize", message));
53          assertEquals("foo", eval.evaluate("replyTo", message));
54          assertEquals(e, eval.evaluate("exception", message));
55          assertEquals("UTF-8", eval.evaluate("encoding", message));
56          assertEquals("test", eval.evaluate("payload", message));
57  
58          try
59          {
60              eval.evaluate("xxx", message);
61              fail("xxx is not a supported expresion");
62          }
63          catch (Exception e1)
64          {
65              //Exprected
66          }
67      }
68  
69      /**
70       * Make sure the evaluator gets registered properly
71       *
72       * @throws Exception if the test fails
73       */
74      public void testUsingManager() throws Exception
75      {
76          MuleMessage message = new DefaultMuleMessage("test");
77          message.setCorrelationId(message.getUniqueId());
78          message.setCorrelationSequence(1);
79          message.setCorrelationGroupSize(2);
80          message.setReplyTo("foo");
81          message.setEncoding("UTF-8");
82          Exception e = new Exception("dummy");
83          message.setExceptionPayload(new DefaultExceptionPayload(e));
84  
85  
86          assertEquals(message.getUniqueId(), ExpressionEvaluatorManager.evaluate("${message:id}", message));
87          assertEquals(message.getUniqueId(), ExpressionEvaluatorManager.evaluate("${message:correlationId}", message));
88          assertEquals(new Integer(1), ExpressionEvaluatorManager.evaluate("${message:correlationSequence}", message));
89          assertEquals(new Integer(2), ExpressionEvaluatorManager.evaluate("${message:correlationGroupSize}", message));
90          assertEquals("foo", ExpressionEvaluatorManager.evaluate("${message:replyTo}", message));
91          assertEquals(e, ExpressionEvaluatorManager.evaluate("${message:exception}", message));
92          assertEquals("UTF-8", ExpressionEvaluatorManager.evaluate("${message:encoding}", message));
93          assertEquals("test", ExpressionEvaluatorManager.evaluate("${message:payload}", message));
94  
95          try
96          {
97              ExpressionEvaluatorManager.evaluate("${message:xxx}", message, true);
98              fail("xxx is not a supported expresion");
99          }
100         catch (Exception e1)
101         {
102             //Exprected
103         }
104     }
105 }