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