protected Map<String, String> parsePattern(String pattern, Map<String, Object> model) {
logger.log(Level.FINE, "Extracting parameters from pattern="+pattern);
Map<String, String> parameters = new HashMap<String, String>();
if (pattern != null) {
String[] tokens = pattern.split(";");
for (String token : tokens) {
int index = token.indexOf('=');
String key, value = null;
if (index > 0) {
key = token.substring(0, index);
value = token.substring(index + 1);
} else {
key = token;
}
logger.log(Level.FINE, "Extracted parameter with key=" + key + ", value=" + value);
if (value != null && value.startsWith("$")) {
String expression = value.substring(1);
logger.log(Level.FINE, "Resolving pattern value with path=" + expression);
DefaultModelAdaptor modelAdaptor = new DefaultModelAdaptor();
value = (String) modelAdaptor.getValue(model, expression);
}
parameters.put(key, value);
}
}
return parameters;
}
}