private String expandExpression(String expression, EventRenderer eventRenderer) {
if (StringUtils.startsWith(expression, ":")) {
String valueKey = expression.substring(1);
NameValue value = values.get(valueKey);
if (value == null) {
throw new EventMissingValueException(eventType.getTemplate(), valueKey);
}
return eventRenderer.render(valueKey, value, this);
} else if ("REF".equals(expression)) {
if (ref == null) {
throw new EventMissingRefEntityException(eventType.getTemplate());
} else {
ProjectEntity entity = entities.get(ref);
if (entity == null) {
throw new EventMissingEntityException(eventType.getTemplate(), ref);
}
return eventRenderer.render(entity, this);
}
} else {
ProjectEntityType projectEntityType = ProjectEntityType.valueOf(expression);
ProjectEntity projectEntity = entities.get(projectEntityType);
if (projectEntity == null) {
throw new EventMissingEntityException(eventType.getTemplate(), projectEntityType);
}
return eventRenderer.render(projectEntity, this);
}
}