All Downloads are FREE. Search and download functionalities are using the official Maven repository.

infra.beans.PropertyEditorRegistry Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2017 - 2024 the original author or authors.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see [https://www.gnu.org/licenses/]
 */

package infra.beans;

import java.beans.PropertyEditor;

import infra.lang.Nullable;

/**
 * Encapsulates methods for registering JavaBeans {@link PropertyEditor PropertyEditors}.
 * This is the central interface that a {@link PropertyEditorRegistrar} operates on.
 *
 * 

Extended by {@link BeanWrapper}; implemented by {@link BeanWrapperImpl} * and {@link infra.validation.DataBinder}. * * @author Juergen Hoeller * @author Harry Yang * @see java.beans.PropertyEditor * @see PropertyEditorRegistrar * @see BeanWrapper * @see infra.validation.DataBinder * @since 4.0 2022/2/17 17:41 */ public interface PropertyEditorRegistry { /** * Register the given custom property editor for all properties of the given type. * * @param requiredType the type of the property * @param propertyEditor the editor to register */ void registerCustomEditor(Class requiredType, PropertyEditor propertyEditor); /** * Register the given custom property editor for the given type and * property, or for all properties of the given type. *

If the property path denotes an array or Collection property, * the editor will get applied either to the array/Collection itself * (the {@link PropertyEditor} has to create an array or Collection value) or * to each element (the {@code PropertyEditor} has to create the element type), * depending on the specified required type. *

Note: Only one single registered custom editor per property path * is supported. In the case of a Collection/array, do not register an editor * for both the Collection/array and each element on the same property. *

For example, if you wanted to register an editor for "items[n].quantity" * (for all values n), you would use "items.quantity" as the value of the * 'propertyPath' argument to this method. * * @param requiredType the type of the property. This may be {@code null} * if a property is given but should be specified in any case, in particular in * case of a Collection - making clear whether the editor is supposed to apply * to the entire Collection itself or to each of its entries. So as a general rule: * Do not specify {@code null} here in case of a Collection/array! * @param propertyPath the path of the property (name or nested path), or * {@code null} if registering an editor for all properties of the given type * @param propertyEditor editor to register */ void registerCustomEditor(@Nullable Class requiredType, @Nullable String propertyPath, PropertyEditor propertyEditor); /** * Find a custom property editor for the given type and property. * * @param requiredType the type of the property (can be {@code null} if a property * is given but should be specified in any case for consistency checking) * @param propertyPath the path of the property (name or nested path), or * {@code null} if looking for an editor for all properties of the given type * @return the registered editor, or {@code null} if none */ @Nullable PropertyEditor findCustomEditor(@Nullable Class requiredType, @Nullable String propertyPath); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy