1
2
3
4
5
6
7
8
9
10 package org.mule.expression;
11
12 import org.mule.DefaultMuleMessage;
13 import org.mule.api.MuleMessage;
14 import org.mule.tck.AbstractMuleTestCase;
15 import org.mule.tck.testmodels.fruit.Apple;
16 import org.mule.tck.testmodels.fruit.Banana;
17 import org.mule.tck.testmodels.fruit.FruitBasket;
18 import org.mule.tck.testmodels.fruit.FruitBowl;
19 import org.mule.tck.testmodels.fruit.FruitBowlToFruitBasket;
20 import org.mule.util.expression.ExpressionEvaluatorManager;
21 import org.mule.util.expression.MessagePayloadExpressionEvaluator;
22
23 import java.io.ByteArrayInputStream;
24 import java.util.ArrayList;
25 import java.util.List;
26
27 public class PayloadExpressionEvaluatorTestCase extends AbstractMuleTestCase
28 {
29 public void testSimple() throws Exception
30 {
31 MessagePayloadExpressionEvaluator eval = new MessagePayloadExpressionEvaluator();
32 MuleMessage message = new DefaultMuleMessage("test");
33
34
35 Object result = eval.evaluate(null, message);
36 assertNotNull(result);
37 assertEquals("test", result);
38
39
40 result = eval.evaluate(null, new ArrayList(1));
41 assertNotNull(result);
42 assertTrue(result instanceof List);
43
44 result = eval.evaluate(null, null);
45 assertNull(result);
46 }
47
48
49
50
51
52 public void testSimpleUsingManager() throws Exception
53 {
54 MuleMessage message = new DefaultMuleMessage("test");
55
56 Object result = ExpressionEvaluatorManager.evaluate("${payload}", message);
57 assertNotNull(result);
58 assertEquals("test", result);
59
60 result = ExpressionEvaluatorManager.evaluate("${payload}", new ArrayList(1));
61 assertNotNull(result);
62 assertTrue(result instanceof List);
63
64 result = ExpressionEvaluatorManager.evaluate("${payload}", null);
65 assertNull(result);
66 }
67
68 public void testWithTransform() throws Exception
69 {
70 MessagePayloadExpressionEvaluator eval = new MessagePayloadExpressionEvaluator();
71 MuleMessage message = new DefaultMuleMessage("test");
72
73
74 Object result = eval.evaluate("byte[]", message);
75 assertNotNull(result);
76 assertTrue(result instanceof byte[]);
77 assertEquals("test", new String((byte[])result));
78
79 ByteArrayInputStream bais = new ByteArrayInputStream("test2".getBytes());
80
81 result = eval.evaluate("java.lang.String", new DefaultMuleMessage(bais));
82 assertNotNull(result);
83 assertEquals("test2", result);
84 }
85
86 public void testWithMoreComplexTransform() throws Exception
87 {
88 MessagePayloadExpressionEvaluator eval = new MessagePayloadExpressionEvaluator();
89 MuleMessage message = new DefaultMuleMessage(new FruitBowl(new Apple(), new Banana()));
90
91
92 muleContext.getRegistry().registerTransformer(new FruitBowlToFruitBasket());
93
94
95 Object result = eval.evaluate("org.mule.tck.testmodels.fruit.FruitBasket", message);
96 assertNotNull(result);
97 assertTrue(result instanceof FruitBasket);
98 FruitBasket fb = (FruitBasket)result;
99 assertEquals(2, fb.getFruit().size());
100 assertTrue(fb.hasBanana());
101 assertTrue(fb.hasApple());
102 }
103 }