    public void addViolation(String propertyName, String key, String message, Map<String, Object> messageParameters) {
        violationOccurred = true;
        final String messageTemplate = sanitizeTemplate(message);
        final HibernateConstraintValidatorContext context = getContextWithMessageParameters(messageParameters);
        context.buildConstraintViolationWithTemplate(messageTemplate)
                .addPropertyNode(propertyName)
                .addBeanNode().inIterable().atKey(key)
                .addConstraintViolation();
    }
The software constructs all or part of a command, data structure, or record using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify how it is parsed or interpreted when it is sent to a downstream component.