package org.resthub.web.validation; import javax.validation.MessageInterpolator; import javax.validation.ValidationException; import javax.validation.metadata.ConstraintDescriptor; /** * Specific interpolation context management for resthub validation utilities * * Allows to manage messages and interpolations related to a {@link javax.validation.metadata.ConstraintDescriptor} * and a value. Managing the value allows to resolve dynamic message interpolation for error messages * containing parameters */ public class ValidationContext implements MessageInterpolator.Context { /** * Managed constraint descriptor */ private final ConstraintDescriptor<?> constraintDescriptor; /** * Managed object value */ private final Object validatedValue; public ValidationContext(ConstraintDescriptor<?> constraintDescriptor, Object validatedValue) { this.constraintDescriptor = constraintDescriptor; this.validatedValue = validatedValue; } public ConstraintDescriptor<?> getConstraintDescriptor() { return constraintDescriptor; } public Object getValidatedValue() { return validatedValue; } /** * {@inheritDoc} */ @Override public <T> T unwrap(Class<T> type) { if (type.isAssignableFrom(ValidationContext.class)) { return type.cast(this); } throw new ValidationException(String.format("Type %s not supported for unwrapping", type)); } }