in log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/LogEventFactory.java [147:178]
private static void validateEvent(Class<?> intrface, AuditMessage msg) {
StringBuilder errors = new StringBuilder();
validateContextConstraints(intrface, errors);
List<Property> props = getProperties(intrface);
Map<String, Property> propertyMap = new HashMap<>();
for (Property property : props) {
propertyMap.put(property.name, property);
if (property.isRequired && !msg.containsKey(property.name)) {
if (errors.length() > 0) {
errors.append("\n");
}
errors.append("Required attribute ").append(property.name).append(" is missing from ").append(msg.getId().getName());
}
if (msg.containsKey(property.name)) {
validateConstraints(false, property.constraints, property.name, msg, errors);
}
}
msg.forEach((key, value) -> {
if (!propertyMap.containsKey(key)) {
if (errors.length() > 0) {
errors.append("Attribute ").append(key).append(" is not defined for ").append(msg.getId().getName());
}
}
});
if (errors.length() > 0) {
throw new ConstraintValidationException(errors.toString());
}
}