1
2
3
4
5
6
7 package org.mule.transport.file;
8
9 import org.mule.api.MuleContext;
10 import org.mule.api.MuleMessage;
11 import org.mule.api.context.MuleContextAware;
12 import org.mule.api.expression.ExpressionManager;
13 import org.mule.util.TemplateParser;
14
15 import java.text.MessageFormat;
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 public class ExpressionFilenameParser implements FilenameParser, MuleContextAware
43 {
44 public static final String DEFAULT_DATE_FORMAT = "dd-MM-yy_HH-mm-ss.SSS";
45 public static final String DEFAULT_EXPRESSION = MessageFormat.format("{0}function:uuid{1}.dat",
46 ExpressionManager.DEFAULT_EXPRESSION_PREFIX,
47 ExpressionManager.DEFAULT_EXPRESSION_POSTFIX);
48
49 private final TemplateParser wigglyMuleParser = TemplateParser.createMuleStyleParser();
50 private final TemplateParser squareParser = TemplateParser.createSquareBracesStyleParser();
51
52 protected MuleContext muleContext;
53
54 public void setMuleContext(MuleContext context)
55 {
56 this.muleContext = context;
57 }
58
59 public String getFilename(MuleMessage message, String expression)
60 {
61 if (expression == null)
62 {
63 expression = DEFAULT_EXPRESSION;
64 }
65
66 if (expression.indexOf(ExpressionManager.DEFAULT_EXPRESSION_PREFIX) > -1)
67 {
68 return getFilename(message, expression, wigglyMuleParser);
69 }
70 else
71 {
72 return getFilename(message, expression, squareParser);
73 }
74 }
75
76 protected String getFilename(final MuleMessage message, String expression, TemplateParser parser)
77 {
78 return parser.parse(new TemplateParser.TemplateCallback()
79 {
80 public Object match(String token)
81 {
82 return muleContext.getExpressionManager().evaluate(token, message);
83 }
84 }, expression);
85 }
86 }