Class BeanFilter

java.lang.Object
org.apache.juneau.BeanFilter

public class BeanFilter extends Object
Bean filter for customizing bean property handling during serialization and parsing.

Bean filters provide fine-grained control over how beans are processed, allowing you to:

  • Specify which properties to include or exclude
  • Define read-only and write-only properties
  • Control property ordering and naming
  • Configure bean dictionaries for polymorphic types
  • Intercept property getter and setter calls
  • Define interface classes and stop classes for property filtering

Bean filters are created using the BeanFilter.Builder class, which is the programmatic equivalent to the @Bean annotation. Filters can be registered with serializers and parsers to customize how specific bean classes are handled.

Example:

// Define a custom filter for MyBean public class MyBeanFilter extends BeanFilter.Builder<MyBean> { public MyBeanFilter() { properties("id,name,email"); // Only include these properties excludeProperties("password"); // Exclude sensitive data readOnlyProperties("id"); // ID is read-only sortProperties(); // Sort properties alphabetically } } // Register the filter with a serializer WriterSerializer serializer = JsonSerializer .create() .beanFilters(MyBeanFilter.class) .build();

See Also:
  • Method Details

    • create

      public static <T> BeanFilter.Builder create(ClassInfoTyped<T> beanClass)
      Create a new builder for this object.
      Type Parameters:
      T - The bean class being filtered.
      Parameters:
      beanClass - The bean class being filtered.
      Returns:
      A new builder.
    • getBeanClass

      Returns the bean class that this filter applies to.
      Returns:
      The bean class that this filter applies to.
    • getBeanDictionary

      Returns the bean dictionary defined on this bean.
      Returns:
      An unmodifiable list of the bean dictionary defined on this bean, or an empty list if no bean dictionary is defined.
    • getExample

      public String getExample()
      Returns the example associated with this class.
      Returns:
      The example associated with this class, or null if no example is associated.
    • getExcludeProperties

      Returns the list of properties to ignore on a bean.
      Returns:
      The names of the properties to ignore on a bean, or an empty set to not ignore any properties.
    • getImplClass

      Returns the implementation class associated with this class.
      Returns:
      The implementation class associated with this class, or null if no implementation class is associated.
    • getInterfaceClass

      Returns the interface class associated with this class.
      Returns:
      The interface class associated with this class, or null if no interface class is associated.
    • getProperties

      Returns the set and order of names of properties associated with a bean class.
      Returns:
      The names of the properties associated with a bean class, or and empty set if all bean properties should be used.
    • getPropertyNamer

      Returns the PropertyNamer associated with the bean to tailor the names of bean properties.
      Returns:
      The property namer class, or null if no property namer is associated with this bean property.
    • getReadOnlyProperties

      Returns the list of read-only properties on a bean.
      Returns:
      The names of the read-only properties on a bean, or an empty set to not have any read-only properties.
    • getStopClass

      Returns the stop class associated with this class.
      Returns:
      The stop class associated with this class, or null if no stop class is associated.
    • getTypeName

      public String getTypeName()
      Returns the dictionary name associated with this bean.
      Returns:
      The dictionary name associated with this bean, or null if no name is defined.
    • getWriteOnlyProperties

      Returns the list of write-only properties on a bean.
      Returns:
      The names of the write-only properties on a bean, or an empty set to not have any write-only properties.
    • isFluentSetters

      public boolean isFluentSetters()
      Returns true if we should find fluent setters.
      Returns:
      true if fluent setters should be found.
    • isSortProperties

      public boolean isSortProperties()
      Returns true if the properties defined on this bean class should be ordered alphabetically.

      This method is only used when the getProperties() method returns null. Otherwise, the ordering of the properties in the returned value is used.

      Returns:
      true if bean properties should be sorted.
    • readProperty

      public Object readProperty(Object bean, String name, Object value)
      Calls the BeanInterceptor.readProperty(Object, String, Object) method on the registered property filters.
      Parameters:
      bean - The bean from which the property was read.
      name - The property name.
      value - The value just extracted from calling the bean getter.
      Returns:
      The value to serialize. Default is just to return the existing value.
    • writeProperty

      public Object writeProperty(Object bean, String name, Object value)
      Calls the BeanInterceptor.writeProperty(Object, String, Object) method on the registered property filters.
      Parameters:
      bean - The bean from which the property was read.
      name - The property name.
      value - The value just parsed.
      Returns:
      The value to serialize. Default is just to return the existing value.