Class MergedAnnotationPredicates

java.lang.Object
org.springframework.core.annotation.MergedAnnotationPredicates

public abstract class MergedAnnotationPredicates extends Object
Predicate implementations that provide various test operations for MergedAnnotations.
Since:
5.2
Author:
Phillip Webb
  • Method Details

    • typeIn

      public static <A extends Annotation> Predicate<MergedAnnotation<? extends A>> typeIn(String... typeNames)
      Create a new Predicate that evaluates to true if the name of the merged annotation type is contained in the specified array.
      Type Parameters:
      A - the annotation type
      Parameters:
      typeNames - the names that should be matched
      Returns:
      a Predicate to test the annotation type
    • typeIn

      public static <A extends Annotation> Predicate<MergedAnnotation<? extends A>> typeIn(Class<?>... types)
      Create a new Predicate that evaluates to true if the merged annotation type is contained in the specified array.
      Type Parameters:
      A - the annotation type
      Parameters:
      types - the types that should be matched
      Returns:
      a Predicate to test the annotation type
    • typeIn

      public static <A extends Annotation> Predicate<MergedAnnotation<? extends A>> typeIn(Collection<?> types)
      Create a new Predicate that evaluates to true if the merged annotation type is contained in the specified collection.
      Type Parameters:
      A - the annotation type
      Parameters:
      types - the type names or classes that should be matched
      Returns:
      a Predicate to test the annotation type
    • firstRunOf

      public static <A extends Annotation> Predicate<MergedAnnotation<A>> firstRunOf(Function<? super MergedAnnotation<A>,?> valueExtractor)
      Create a new stateful, single use Predicate that matches only the first run of an extracted value. For example, MergedAnnotationPredicates.firstRunOf(MergedAnnotation::distance) will match the first annotation, and any subsequent runs that have the same distance.

      NOTE: This predicate only matches the first run. Once the extracted value changes, the predicate always returns false. For example, if you have a set of annotations with distances [1, 1, 2, 1] then only the first two will match.

      Parameters:
      valueExtractor - function used to extract the value to check
      Returns:
      a Predicate that matches the first run of the extracted values
    • unique

      public static <A extends Annotation, K> Predicate<MergedAnnotation<A>> unique(Function<? super MergedAnnotation<A>,K> keyExtractor)
      Create a new stateful, single use Predicate that matches annotations that are unique based on the extracted key. For example MergedAnnotationPredicates.unique(MergedAnnotation::getType) will match the first time a unique type is encountered.
      Parameters:
      keyExtractor - function used to extract the key used to test for uniqueness
      Returns:
      a Predicate that matches a unique annotation based on the extracted key