/* * Hibernate Validator, declare and validate application constraints * * License: Apache License, Version 2.0 * See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>. */ package org.hibernate.validator.internal.engine.cascading; import java.util.Optional; import javax.validation.valueextraction.ExtractedValue; import javax.validation.valueextraction.ValueExtractor; /** * Extractor for supporting the legacy construct {@code @Valid Optional<Foo>}. * * @author Gunnar Morling */ // TODO should we keep that, or only support {@code Optional<@Valid Foo>}. public class LegacyOptionalValueExtractor implements ValueExtractor<@ExtractedValue Optional<?>> { static final ValueExtractorDescriptor DESCRIPTOR = new ValueExtractorDescriptor( new LegacyOptionalValueExtractor() ); private LegacyOptionalValueExtractor() { } @Override public void extractValues(Optional<?> originalValue, ValueExtractor.ValueReceiver receiver) { receiver.value( null, originalValue != null && originalValue.isPresent() ? originalValue.get() : null ); } }