Class MarshalledFilter

java.lang.Object
org.apache.juneau.marshall.MarshalledFilter
All Implemented Interfaces:
BeanFilter

public class MarshalledFilter extends Object implements BeanFilter
Filter for customizing how POJOs and beans are handled during serialization and parsing.

Marshalled filters provide fine-grained control over how classes are processed, allowing you to:

  • Specify which properties to include or exclude (for beans)
  • 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
  • Specify implementation classes for interfaces and abstract classes
  • Provide example instances for documentation

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

Example:

// Define a custom filter for MyBean public class MyMarshalledFilter extends MarshalledFilter.Builder<MyBean> { public MyMarshalledFilter() { properties("id,name,email"); // Only include these properties excludeProperties("password"); // Exclude sensitive data readOnlyProperties("id"); // ID is read-only unsortedProperties(); // Opt out of default alphabetical sorting } } // Register the filter with a serializer WriterSerializer serializer = JsonSerializer .create() .beanFilters(MyMarshalledFilter.class) .build();

See Also:
  • Constructor Details

  • Method Details

    • create

      public static <T> MarshalledFilter.Builder create(ClassInfoTyped<T> beanClass)
      Create a new builder for this object for use with bean classes.
      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.
      Specified by:
      getBeanClass in interface BeanFilter
      Returns:
      The bean class that this filter applies to, or null if this is a non-bean filter.
    • getBeanDictionary

      Returns the bean dictionary defined on this bean.
      Specified by:
      getBeanDictionary in interface BeanFilter
      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.
      Specified by:
      getExample in interface BeanFilter
      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.
      Specified by:
      getExcludeProperties in interface BeanFilter
      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.
      Specified by:
      getImplClass in interface BeanFilter
      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.
      Specified by:
      getInterfaceClass in interface BeanFilter
      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.
      Specified by:
      getProperties in interface BeanFilter
      Returns:
      The names of the properties associated with a bean class, or an empty set if all bean properties should be used.
    • getPropertyNamer

      Returns the PropertyNamer associated with the bean to tailor the names of bean properties.
      Specified by:
      getPropertyNamer in interface BeanFilter
      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.
      Specified by:
      getReadOnlyProperties in interface BeanFilter
      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.
      Specified by:
      getStopClass in interface BeanFilter
      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.
      Specified by:
      getTypeName in interface BeanFilter
      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.
      Specified by:
      getWriteOnlyProperties in interface BeanFilter
      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.
      Specified by:
      isFluentSetters in interface BeanFilter
      Returns:
      true if fluent setters should be found.
    • isUnsortedProperties

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

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

      Specified by:
      isUnsortedProperties in interface BeanFilter
      Returns:
      true if this bean opts out of alphabetical property sorting.
    • readProperty

      public Object readProperty(Object bean, String name, Object value)
      Calls the BeanInterceptor.readProperty(Object, String, Object) method on the registered property filters.
      Specified by:
      readProperty in interface BeanFilter
      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.
      Specified by:
      writeProperty in interface BeanFilter
      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.