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
21 import java.io.ByteArrayInputStream;
22
23 public class PayloadExpressionEvaluatorTestCase extends AbstractMuleTestCase
24 {
25 public void testSimple() throws Exception
26 {
27 MessagePayloadExpressionEvaluator eval = new MessagePayloadExpressionEvaluator();
28 MuleMessage message = new DefaultMuleMessage("test", muleContext);
29
30
31 Object result = eval.evaluate(null, message);
32 assertNotNull(result);
33 assertEquals("test", result);
34
35
36 result = eval.evaluate(null, null);
37 assertNull(result);
38 }
39
40
41
42
43
44
45 public void testSimpleUsingManager() throws Exception
46 {
47 MuleMessage message = new DefaultMuleMessage("test", muleContext);
48
49 assertFalse(muleContext.getExpressionManager().isValidExpression("${payload:}"));
50 assertTrue(muleContext.getExpressionManager().isValidExpression("#[payload:]"));
51
52 Object result = muleContext.getExpressionManager().evaluate("#[payload:]", message);
53 assertNotNull(result);
54 assertEquals("test", result);
55
56 result = muleContext.getExpressionManager().evaluate("#[payload:]", null);
57 assertNull(result);
58 }
59
60 public void testWithTransform() throws Exception
61 {
62 MessagePayloadExpressionEvaluator eval = new MessagePayloadExpressionEvaluator();
63 MuleMessage message = new DefaultMuleMessage("test", muleContext);
64
65
66 Object result = eval.evaluate("byte[]", message);
67 assertNotNull(result);
68 assertTrue(result instanceof byte[]);
69 assertEquals("test", new String((byte[]) result));
70
71 ByteArrayInputStream bais = new ByteArrayInputStream("test2".getBytes());
72
73 result = eval.evaluate("java.lang.String", new DefaultMuleMessage(bais, muleContext));
74 assertNotNull(result);
75 assertEquals("test2", result);
76 }
77
78 public void testWithMoreComplexTransform() throws Exception
79 {
80 MessagePayloadExpressionEvaluator eval = new MessagePayloadExpressionEvaluator();
81 MuleMessage message = new DefaultMuleMessage(new FruitBowl(new Apple(), new Banana()), muleContext);
82
83
84 muleContext.getRegistry().registerTransformer(new FruitBowlToFruitBasket());
85
86
87 Object result = eval.evaluate("org.mule.tck.testmodels.fruit.FruitBasket", message);
88 assertNotNull(result);
89 assertTrue(result instanceof FruitBasket);
90 FruitBasket fb = (FruitBasket) result;
91 assertEquals(2, fb.getFruit().size());
92 assertTrue(fb.hasBanana());
93 assertTrue(fb.hasApple());
94 }
95 }