1
2
3
4
5
6
7
8
9
10
11 package org.mule.util.expression;
12
13 import org.mule.api.ExceptionPayload;
14 import org.mule.api.MuleMessage;
15 import org.mule.api.transport.MessageAdapter;
16 import org.mule.util.StringUtils;
17
18 import org.apache.commons.logging.Log;
19 import org.apache.commons.logging.LogFactory;
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 public class MessageExpressionEvaluator implements ExpressionEvaluator
42 {
43 public static final String NAME = "message";
44
45
46
47
48 protected transient final Log logger = LogFactory.getLog(MessagePayloadExpressionEvaluator.class);
49
50 public Object evaluate(String expression, Object message)
51 {
52 if (message instanceof MuleMessage)
53 {
54 if (StringUtils.isEmpty(expression))
55 {
56 return message;
57 }
58 else
59 {
60 if (expression.equals("id"))
61 {
62 return ((MuleMessage) message).getUniqueId();
63 }
64 else if (expression.equals("correlationId"))
65 {
66 return ((MuleMessage) message).getCorrelationId();
67 }
68 else if (expression.equals("correlationSequence"))
69 {
70 return new Integer(((MuleMessage) message).getCorrelationSequence());
71 }
72 else if (expression.equals("correlationGroupSize"))
73 {
74 return new Integer(((MuleMessage) message).getCorrelationGroupSize());
75 }
76 else if (expression.equals("replyTo"))
77 {
78 return ((MuleMessage) message).getReplyTo();
79 }
80 else if (expression.equals("payload"))
81 {
82 return ((MuleMessage) message).getPayload();
83 }
84 else if (expression.equals("encoding"))
85 {
86 return ((MuleMessage) message).getEncoding();
87 }
88 else if (expression.equals("exception"))
89 {
90 ExceptionPayload ep = ((MuleMessage) message).getExceptionPayload();
91 if (ep != null)
92 {
93 return ep.getException();
94 }
95 return null;
96 }
97 else
98 {
99 throw new IllegalArgumentException(expression);
100 }
101
102 }
103 }
104 else
105 {
106 logger.warn("Message is not of type MuleMessage, the expression will return the object without modification");
107 if (message instanceof MessageAdapter)
108 {
109 return ((MessageAdapter) message).getPayload();
110 }
111 }
112 return message;
113
114 }
115
116
117
118
119 public String getName()
120 {
121 return NAME;
122 }
123
124
125
126
127 public void setName(String name)
128 {
129 throw new UnsupportedOperationException("setName");
130 }
131 }