Class AbstractTypeHierarchyTraversingFilter

All Implemented Interfaces:
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.

Ramnivas Laddad, Mark Fisher
  • Field Details

    • logger

      protected final Log logger
  • Constructor Details

    • AbstractTypeHierarchyTraversingFilter

      protected AbstractTypeHierarchyTraversingFilter(boolean considerInherited, boolean considerInterfaces)
  • Method Details

    • 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
      metadataReader - the metadata reader for the target class
      metadataReaderFactory - a factory for obtaining metadata readers for other classes (such as superclasses and interfaces)
      whether this filter matches
      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

      @Nullable protected Boolean matchSuperClass(String superClassName)
      Override this to match on supertype name.
    • matchInterface

      @Nullable protected Boolean matchInterface(String interfaceName)
      Override this to match on interface type name.