org.springframework.core.type.filter

## Class AbstractTypeHierarchyTraversingFilter

- java.lang.Object
- - org.springframework.core.type.filter.AbstractTypeHierarchyTraversingFilter

- All Implemented Interfaces:
    TypeFilter
  Direct Known Subclasses:
    AnnotationTypeFilter, AssignableTypeFilter

      public abstract class AbstractTypeHierarchyTraversingFilter
      extends Object
      implements TypeFilter

  Type filter that is aware of traversing over hierarchy.

  This filter is useful when matching needs to be made based on potentially the whole class/interface hierarchy. The algorithm employed uses a succeed-fast strategy: if at any time a match is declared, no further processing is carried out.

  Since:
    2.5
  Author:
    Ramnivas Laddad, Mark Fisher

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `AbstractTypeHierarchyTraversingFilter(boolean considerInherited, boolean considerInterfaces)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory)` Determine whether this filter matches for the class described by the given metadata.
    `protected boolean` | `matchClassName(String className)` Override this to match on type name.
    `protected Boolean` | `matchInterface(String interfaceNames)` Override this to match on interface type name.
    `protected boolean` | `matchSelf(MetadataReader metadataReader)` Override this to match self characteristics alone.
    `protected Boolean` | `matchSuperClass(String superClassName)` Override this to match on super type name.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### AbstractTypeHierarchyTraversingFilter

          protected AbstractTypeHierarchyTraversingFilter(boolean considerInherited,
                                                          boolean considerInterfaces)

  - ### Method Detail

    - #### match

          public boolean match(MetadataReader metadataReader,
                               MetadataReaderFactory metadataReaderFactory)
                        throws IOException

      Description copied from interface: `TypeFilter`
      Determine whether this filter matches for the class described by the given metadata.
      Specified by:
        `match` in interface `TypeFilter`
      Parameters:
        `metadataReader` - the metadata reader for the target class
        `metadataReaderFactory` - a factory for obtaining metadata readers for other classes (such as superclasses and interfaces)
      Returns:
        whether this filter matches
      Throws:
        `IOException` - in case of I/O failure when reading metadata

    - #### matchSelf

          protected boolean matchSelf(MetadataReader metadataReader)

      Override this to match self characteristics alone. Typically, the implementation will use a visitor to extract information to perform matching.

    - #### matchClassName

          protected boolean matchClassName(String className)

      Override this to match on type name.

    - #### matchSuperClass

          protected Boolean matchSuperClass(String superClassName)

      Override this to match on super type name.

    - #### matchInterface

          protected Boolean matchInterface(String interfaceNames)

      Override this to match on interface type name.