package org.aspectj.configuration.model; import org.aspectj.util.Utils; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import java.util.HashMap; import java.util.Map; import java.util.Set; /** * */ @XmlAccessorType(XmlAccessType.FIELD) public class Expression { private String expression; private Map<String, String> params; Expression() { } public Expression(String expression) { this.expression = expression; } public Expression(String expression, Map<String, String> params) { this.expression = expression; this.params = params; } public boolean isNotEmpty() { return isNotEmptyExpression(this); } public static boolean isNotEmptyExpression(Expression expression) { return expression !=null && expression.getExpression()!=null && !expression.getExpression().trim().isEmpty(); } public String getExpression() { return expression; } public Map<String, Object> getResultParams() { if(params == null || params.size() == 0) return null; Map<String, Object> resultParams = new HashMap<String, Object>(params.size()); Set<Map.Entry<String,String>> entries = params.entrySet(); for(Map.Entry<String,String> entry: entries){ String sourceValue = entry.getValue(); String key = entry.getKey(); try { Object value = Utils.checkMvelExpression(sourceValue); resultParams.put(key, value); } catch (Exception e) { throw new IllegalArgumentException("Parameter name '"+key+"'", e); } } return resultParams; } }