private Message getMessageFromExpression(CustomNotifierType config, ExpressionVariables variables,
Task task, OperationResult result) {
if (config.getExpression() == null) {
return null;
}
List<NotificationMessageType> messages;
try {
messages = evaluateExpression(config.getExpression(), variables,
"message expression", task, result);
} catch (ObjectNotFoundException | SchemaException | ExpressionEvaluationException | CommunicationException | ConfigurationException | SecurityViolationException e) {
throw new SystemException("Couldn't evaluate custom notifier expression: " + e.getMessage(), e);
}
if (messages == null || messages.isEmpty()) {
return null;
} else if (messages.size() > 1) {
getLogger().warn("Custom notifier returned more than one message: {}", messages);
}
return messages.get(0) != null ? new Message(messages.get(0)) : null;
}