Hello, TL;DR: Need an opinion if to open a JIRA (since reproduction is very tricky)
I am using the @UnwrapValidatedValue with a custom Guava OptionalUnwrapper and sometimes OptionalUnwrapper#getValidatedValueType() is called also for non-Optional<> fields. The bug reproduction is sporadic and tricky. I managed to pinpoint it to ValidatorImpl#setValidatedValueHandlerToValueContextIfPresent() that does not perform valueContext.setValidatedValueHandler( null ) when there is no need for an unwrapper. Since valueContext is re-used between fields, it is possible for the OptionalUnwrapper to be first called for Optional fields and then re-used for non-Optional fields with the same validatedValueHandler of the Optional field. If the code owner could quickly comment on this, it would be great. below are some code snippets I used. public class SomePOJO { @DecimalMin(value="0", inclusive=true) public Integer x = -1; @UnwrapValidatedValue @DecimalMin(value="1", inclusive=true) public Optional<Integer> y = Optional.of(-1); @DecimalMin(value="0", inclusive=true) public Integer z = -1; } public class OptionalUnwrapper extends ValidatedValueUnwrapper<Optional<?>> { private final TypeResolver typeResolver; public OptionalUnwrapper() { typeResolver = new TypeResolver(); } @Override public Object handleValidatedValue(Optional<?> optional) { return optional == null? null : optional.orNull(); } @Override public Type getValidatedValueType(Type valueType) { final TypeToken<?> typeToken = TypeToken.of(valueType); if (typeToken.getRawType().isAssignableFrom(Optional.class)) { Type rawType = typeToken.resolveType(Optional.class.getTypeParameters()[0]).getType(); return rawType; } else { Type rawType = typeToken.getType(); Preconditions.checkArgument(false, "type " + rawType + " is not supported by " + this.getClass() ); return null; } } } _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev