1
2
3
4
5
6
7
8
9
10
11 package org.mule.expression;
12
13 import org.mule.DefaultMuleMessage;
14 import org.mule.RequestContext;
15 import org.mule.api.MuleEvent;
16 import org.mule.api.MuleException;
17 import org.mule.api.MuleMessage;
18 import org.mule.api.expression.ExpressionManager;
19 import org.mule.api.expression.ExpressionRuntimeException;
20 import org.mule.api.processor.MessageProcessor;
21 import org.mule.api.transport.PropertyScope;
22 import org.mule.tck.AbstractMuleTestCase;
23
24 public class MessageProcessorExpressionEvaluatorTestCase extends AbstractMuleTestCase
25 {
26
27 private ExpressionManager expressionManager;
28
29 @Override
30 protected void doSetUp() throws Exception
31 {
32 super.doSetUp();
33 expressionManager = muleContext.getExpressionManager();
34 RequestContext.setEvent(getTestEvent(""));
35
36 muleContext.getRegistry().registerObject("processor", new MessageProcessor()
37 {
38 public MuleEvent process(MuleEvent event) throws MuleException
39 {
40 event.getMessage().setPayload(event.getMessageAsString() + "123");
41 return event;
42 }
43 });
44 }
45
46 public void testNameOnly() throws Exception
47 {
48 MessageProcessorExpressionEvaluator evaluator = new MessageProcessorExpressionEvaluator();
49 assertEquals("0123",
50 ((MuleMessage) evaluator.evaluate("processor", createTestMessage())).getPayloadAsString());
51 }
52
53 public void testNameOnlyExpressionManager() throws ExpressionRuntimeException, Exception
54 {
55 assertEquals("0123", ((MuleMessage) expressionManager.evaluate("#[process:processor]",
56 createTestMessage())).getPayloadAsString());
57 }
58
59 public void testNestedPayloadExpression() throws Exception
60 {
61 MessageProcessorExpressionEvaluator evaluator = new MessageProcessorExpressionEvaluator();
62 assertEquals("0123",
63 ((MuleMessage) evaluator.evaluate("processor:payload", createTestMessage())).getPayloadAsString());
64 }
65
66 public void testNestedPayloadExpressionExpressionManager() throws ExpressionRuntimeException, Exception
67 {
68 assertEquals("0123", ((MuleMessage) expressionManager.evaluate("#[process:processor:#[payload]]",
69 createTestMessage())).getPayloadAsString());
70 }
71
72 public void testNestedHeaderExpression() throws Exception
73 {
74 MessageProcessorExpressionEvaluator evaluator = new MessageProcessorExpressionEvaluator();
75 assertEquals("value123", ((MuleMessage) evaluator.evaluate("processor:header:one",
76 createTestMessage())).getPayloadAsString());
77 }
78
79 public void testNestedHeaderExpressionExpressionManager() throws ExpressionRuntimeException, Exception
80 {
81 assertEquals("value123", ((MuleMessage) expressionManager.evaluate(
82 "#[process:processor:#[header:one]]", createTestMessage())).getPayloadAsString());
83 }
84
85 private MuleMessage createTestMessage()
86 {
87 MuleMessage message = new DefaultMuleMessage("0", muleContext);
88 message.setProperty("one", "value", PropertyScope.OUTBOUND);
89 return message;
90 }
91
92 }