org.hibernate.validator.internal.engine.valueextraction.ListPropertyValueExtractor Maven / Gradle / Ivy
/*
* Hibernate Validator, declare and validate application constraints
*
* License: Apache License, Version 2.0
* See the license.txt file in the root directory or .
*/
package org.hibernate.validator.internal.engine.valueextraction;
import java.util.List;
import java.util.Optional;
import jakarta.validation.valueextraction.ExtractedValue;
import jakarta.validation.valueextraction.ValueExtractor;
import org.hibernate.validator.internal.IgnoreForbiddenApisErrors;
import org.hibernate.validator.internal.engine.path.NodeImpl;
import javafx.beans.property.ListProperty;
import javafx.beans.value.ObservableValue;
/**
* A value extractor for JavaFX's {@link ListProperty}.
*
* It is necessary to define one as {@link ListProperty} inherits from both {@link List} and {@link ObservableValue} and
* it is not possible to determine the corresponding {@link ValueExtractor} without creating a specific one.
*
* @author Guillaume Smet
*/
@SuppressWarnings("restriction")
@IgnoreForbiddenApisErrors(reason = "Usage of JavaFX classes")
class ListPropertyValueExtractor implements ValueExtractor> {
static final ValueExtractorDescriptor DESCRIPTOR = new ValueExtractorDescriptor( new ListPropertyValueExtractor(), ListProperty.class,
ListProperty.class.getTypeParameters()[0], false, Optional.empty() );
private ListPropertyValueExtractor() {
}
@Override
public void extractValues(ListProperty originalValue, ValueExtractor.ValueReceiver receiver) {
for ( int i = 0; i < originalValue.size(); i++ ) {
receiver.indexedValue( NodeImpl.LIST_ELEMENT_NODE_NAME, i, originalValue.get( i ) );
}
}
}