@Override
public Collection<ValidationErrorMessage> validate(final TypeElement element, final Collection<ExecutableElement> elementMethods) {
final Collection<ValidationErrorMessage> errorMessages = new ArrayList<ValidationErrorMessage>();
for (ExecutableElement method : elementMethods) {
Message message = method.getAnnotation(Message.class);
if (message != null) {
if (message.id() > Message.NONE) {
final String projectCode = ElementHelper.getProjectCode(element);
final String key = createKey(projectCode, message);
if (messageIdMap.containsKey(key)) {
final IdDescriptor idDesc = messageIdMap.get(key);
if (!idDesc.error) {
errorMessages.add(ValidationErrorMessage.of(idDesc.method, ERROR_MESSAGE, message.id(), idDesc.method, projectCode));
idDesc.error = true;
}
errorMessages.add(ValidationErrorMessage.of(method, ERROR_MESSAGE, message.id(), method, projectCode));
} else {
messageIdMap.put(key, new IdDescriptor(message.id(), method));
}
}
}
}
return errorMessages;
}