1
2
3
4
5
6
7
8
9
10 package org.mule.expression;
11
12 import org.mule.api.expression.ExpressionManager;
13 import org.mule.config.i18n.CoreMessages;
14 import org.mule.util.StringUtils;
15
16
17
18
19
20
21 public class ExpressionConfig
22 {
23 public static final String CUSTOM_EVALUATOR = "custom";
24 public static final String EXPRESSION_SEPARATOR = ":";
25 private String expression;
26
27 private String evaluator;
28
29 private String customEvaluator;
30
31 private String fullExpression;
32
33 private String expressionPrefix = ExpressionManager.DEFAULT_EXPRESSION_PREFIX;
34 private String expressionPostfix = ExpressionManager.DEFAULT_EXPRESSION_POSTFIX;
35
36 public ExpressionConfig()
37 {
38 super();
39 }
40
41 public ExpressionConfig(String expression, String evaluator, String customEvaluator)
42 {
43 this(expression, evaluator, customEvaluator,
44 ExpressionManager.DEFAULT_EXPRESSION_PREFIX,
45 ExpressionManager.DEFAULT_EXPRESSION_POSTFIX);
46
47 }
48
49 public ExpressionConfig(String expression, String evaluator, String customEvaluator, String expressionPrefix, String expressionPostfix)
50 {
51 setCustomEvaluator(customEvaluator);
52 setEvaluator(evaluator);
53 setExpression(expression);
54 this.expressionPostfix = expressionPostfix;
55 this.expressionPrefix = expressionPrefix;
56 }
57
58 public void parse(String expressionString)
59 {
60 if(expressionString.startsWith(expressionPrefix))
61 {
62 expressionString = expressionString.substring(expressionPrefix.length());
63 expressionString = expressionString.substring(0, expressionString.length() - expressionPostfix.length());
64 }
65
66 int i = expressionString.indexOf(EXPRESSION_SEPARATOR);
67 if(i < 0)
68 {
69 throw new IllegalArgumentException("Expression is invalid: " + expressionString);
70 }
71 this.evaluator = expressionString.substring(0, i);
72 this.expression = expressionString.substring(i+1);
73 }
74
75 public void validate(ExpressionManager manager)
76 {
77 if (expression == null)
78 {
79 throw new IllegalArgumentException(CoreMessages.objectIsNull("expression").getMessage());
80 }
81 if (evaluator == null)
82 {
83 throw new IllegalArgumentException(CoreMessages.objectIsNull("evaluator").getMessage());
84 }
85 if (CUSTOM_EVALUATOR.equalsIgnoreCase(evaluator))
86 {
87 if (customEvaluator == null)
88 {
89 throw new IllegalArgumentException(CoreMessages.objectIsNull("custom evaluator").getMessage());
90 }
91 else
92 {
93 evaluator = customEvaluator;
94 }
95 }
96
97 if (!manager.isEvaluatorRegistered(evaluator))
98 {
99 throw new IllegalArgumentException(CoreMessages.expressionEvaluatorNotRegistered(evaluator).getMessage());
100 }
101 }
102
103 public String getFullExpression(ExpressionManager manager)
104 {
105 if (fullExpression == null)
106 {
107 validate(manager);
108 fullExpression = expressionPrefix + evaluator + EXPRESSION_SEPARATOR + expression + expressionPostfix;
109 }
110 return fullExpression;
111 }
112
113 public String getCustomEvaluator()
114 {
115 return customEvaluator;
116 }
117
118 public void setCustomEvaluator(String customEvaluator)
119 {
120 this.customEvaluator = StringUtils.trimToNull(customEvaluator);
121 fullExpression=null;
122 }
123
124 public String getEvaluator()
125 {
126 return evaluator;
127 }
128
129 public void setEvaluator(String evaluator)
130 {
131 this.evaluator = StringUtils.trimToNull(evaluator);
132 fullExpression=null;
133 }
134
135 public String getExpression()
136 {
137 return expression;
138 }
139
140 public void setExpression(String expression)
141 {
142 this.expression = StringUtils.trimToEmpty(expression);
143 fullExpression=null;
144 }
145 }