com.vaadin.flow.internal.

Class BeanUtil

java.lang.Object
com.vaadin.flow.internal.BeanUtil

All Implemented Interfaces:

Serializable

public final class BeanUtil extends Object implements Serializable

Utility class for Java Beans information access.

For internal use only. May be renamed or removed in a future release.

Since:

1.0

Author:

Vaadin Ltd

See Also:

  • Method Details

    • getBeanPropertyDescriptors

      public static List<PropertyDescriptor> getBeanPropertyDescriptors(Class<?> beanType) throws IntrospectionException

      Returns the property descriptors of a class, a record, or an interface. For an interface, superinterfaces are also iterated as Introspector does not take them into account (Oracle Java bug 4275879), but in that case, both the setter and the getter for a property must be in the same interface and should not be overridden in subinterfaces for the discovery to work correctly.

      NOTE : This utility method relies on introspection (and returns PropertyDescriptor) which is a part of java.beans package. The latter package could require bigger JDK in the future (with Java 9+). So it may be changed in the future.

      For interfaces, the iteration is depth first and the properties of superinterfaces are returned before those of their subinterfaces.

      Parameters:

      beanType - the type whose properties to query

      Returns:

      a list of property descriptors of the given type

      Throws:

      IntrospectionException - if the introspection fails

    • getPropertyType

      public static Class<?> getPropertyType(Class<?> beanType, String propertyName) throws IntrospectionException

      Returns the type of the property with the given name and declaring class. The property name may refer to a nested property, e.g. "property.subProperty" or "property.subProperty1.subProperty2". The property must have a public read method (or a chain of read methods in case of a nested property).

      Parameters:

      beanType - the type declaring the property

      propertyName - the name of the property

      Returns:

      the property type

      Throws:

      IntrospectionException - if the introspection fails

    • getPropertyDescriptor

      public static PropertyDescriptor getPropertyDescriptor(Class<?> beanType, String propertyName) throws IntrospectionException

      Returns the property descriptor for the property of the given name and declaring class. The property name may refer to a nested property, e.g. "property.subProperty" or "property.subProperty1.subProperty2". The property must have a public read method (or a chain of read methods in case of a nested property).

      Parameters:

      beanType - the type declaring the property

      propertyName - the name of the property

      Returns:

      the corresponding descriptor

      Throws:

      IntrospectionException - if the introspection fails

    • checkBeanValidationAvailable

      public static boolean checkBeanValidationAvailable()

      Returns whether an implementation of JSR-303 version 1.0 or 1.1 is present on the classpath. If this method returns false, trying to create a BeanValidator instance will throw an IllegalStateException. If an implementation is not found, logs a level FINE message the first time it is run.

      Returns:

      true if bean validation is available, false otherwise.