1
2
3
4
5
6
7
8
9
10
11 package org.mule.util.expression;
12
13 import org.mule.api.transport.MessageAdapter;
14 import org.mule.config.i18n.CoreMessages;
15
16 import java.util.HashMap;
17 import java.util.Map;
18 import java.util.StringTokenizer;
19
20
21
22
23
24
25
26
27
28
29 public class MessageAttachmentsExpressionEvaluator implements ExpressionEvaluator
30 {
31 public static final String NAME = "attachments";
32 public static final String DELIM = ",";
33
34 public Object evaluate(String expression, Object message)
35 {
36 boolean required = false;
37
38
39 if(expression.endsWith("required"))
40 {
41 required = true;
42 expression = expression.substring(0, expression.length() - 8);
43 }
44
45 if (message instanceof MessageAdapter)
46 {
47 StringTokenizer tokenizer = new StringTokenizer(expression, DELIM);
48 Map result = new HashMap(tokenizer.countTokens());
49 while(tokenizer.hasMoreTokens())
50 {
51 String s = tokenizer.nextToken();
52 s = s.trim();
53 Object val = ((MessageAdapter) message).getAttachment(s);
54 if (val != null)
55 {
56 result.put(s, val);
57 }
58 else if(required)
59 {
60 throw new ExpressionRuntimeException(CoreMessages.expressionEvaluatorReturnedNull(NAME, expression));
61 }
62 }
63 if (result.size() == 0)
64 {
65 return null;
66 }
67 else
68 {
69 return result;
70 }
71 }
72 return null;
73 }
74
75
76
77
78 public String getName()
79 {
80 return NAME;
81 }
82
83
84
85
86 public void setName(String name)
87 {
88 throw new UnsupportedOperationException("setName");
89 }
90 }