/*
 * 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.valueextraction;

import java.util.Map;
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.MapProperty;
import javafx.beans.value.ObservableValue;

A value extractor for the value of JavaFX's MapProperty.

It is necessary to define one as MapProperty inherits from both Map and ObservableValue and it is not possible to determine the corresponding ValueExtractor without creating a specific one.

Author:Guillaume Smet
/** * A value extractor for the value of JavaFX's {@link MapProperty}. * <p> * It is necessary to define one as {@link MapProperty} inherits from both {@link Map} 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 MapPropertyValueExtractor implements ValueExtractor<MapProperty<?, @ExtractedValue ?>> { static final ValueExtractorDescriptor DESCRIPTOR = new ValueExtractorDescriptor( new MapPropertyValueExtractor(), MapProperty.class, MapProperty.class.getTypeParameters()[1], false, Optional.empty() ); private MapPropertyValueExtractor() { } @Override public void extractValues(MapProperty<?, ?> originalValue, ValueExtractor.ValueReceiver receiver) { for ( Map.Entry<?, ?> entry : originalValue.entrySet() ) { receiver.keyedValue( NodeImpl.MAP_VALUE_NODE_NAME, entry.getKey(), entry.getValue() ); } } }