Interface TypeQualifier<T>

  • Type Parameters:
    T - The type of the service

    public interface TypeQualifier<T>
    Qualifies the specific type of a service to be discovered via InstanceLocator. Note that whilst JSR-330 supports the notion of arbitrary Qualifiers, this framework only supports the use of the Named qualifier.
    Since:
    19.3.0
    Author:
    cdivilly
    • Method Detail

      • declaration

        java.lang.String declaration()
        Provides the source code for this TypeQualifier
        Returns:
        Text representing how this qualifier would be instantiated in source code
      • equals

        boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • isEmpty

        boolean isEmpty()
        Returns true if the qualifier has no annotation qualifiers, false otherwise
        Returns:
        true if the qualifier only denotes a type, i.e. has zero Qualifier annotations, false otherwise
      • matches

        boolean matches​(TypeQualifier<?> other)
        Determines if this TypeQualifier is a match for the specified TypeQualifier
        Parameters:
        other - The qualifier to test against
        Returns:
        true if there is a match, false otherwise
      • matches

        boolean matches​(TypeReflection<?> type)
        Determines if this TypeQualifier is a match for the specified type
        Parameters:
        type - The type to test again
        Returns:
        true if the qualifier matches, false otherwise
      • name

        java.lang.String name()
        Returns the name constraint of this TypeQualifier if any.
        Returns:
        Name constraint, or null if this qualifier does not have a Named constraint
      • withType

        <E> TypeQualifier<E> withType​(java.lang.Class<E> type)
        Override this TypeQualifier to produce a new instance that uses the specified type
        Type Parameters:
        E - The overidden type of the qualifier
        Parameters:
        type - The new type
        Returns:
        TypeQualifier instance
      • toString

        java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • type

        java.lang.Class<T> type()
        The type of the instance to find
        Returns:
        The type to find
      • any

        static <T> TypeQualifier<T> any​(java.lang.Class<T> type)
        Matches any TypeQualifier of the specified type, ignoring any Qualifiers on the type
        Type Parameters:
        T - The type of the service
        Parameters:
        type - The type of the service
        Returns:
        TypeQualifier instance
      • from

        @Deprecated
        static <T> TypeQualifier<T> from​(java.lang.Class<T> type,
                                         java.lang.annotation.Annotation... qualifiers)
        Deprecated.
        use named(Class, String), any(Class) or provides(Class) to more accurately identify the TypeQualifier
        Construct an TypeQualifier from the specified Annotations. Note only the Named qualifier annotation is considered. Arbitrary Qualifier annotations are not supported as it is not possible to optimize their use for compile time dependency injection
        Type Parameters:
        T - The type of the service
        Parameters:
        type - The Type of the service
        qualifiers - The set of annotations to examine
        Returns:
        TypeQualifier instance
      • from

        @Deprecated
        static <T> TypeQualifier<T> from​(java.lang.Class<T> type,
                                         java.lang.Iterable<? extends java.lang.annotation.Annotation> qualifiers)
        Deprecated.
        use named(Class, String), any(Class) or provides(Class) to more accurately identify the TypeQualifier
        Construct an TypeQualifier from the specified Annotations. Note only the Named qualifier annotation is considered. Arbitrary Qualifier annotations are not supported as it is not possible to optimize their use for compile time dependency injection
        Type Parameters:
        T - The type of the service
        Parameters:
        type - The Type of the service
        qualifiers - The set of annotations to examine
        Returns:
        TypeQualifier instance
      • named

        static <T> TypeQualifier<T> named​(java.lang.Class<T> type,
                                          java.lang.String name)
        Construct a TypeQualifier for the specified type and name
        Type Parameters:
        T - The type of the service
        Parameters:
        type - The type of the service
        name - The Named qualifier bound to the service
        Returns:
        TypeQualifier instance
      • provides

        static <T> TypeQualifier<T> provides​(java.lang.Class<T> type)
        Represents a provider of the specified service
        Type Parameters:
        T - The type of the service
        Parameters:
        type - The type of the service
        Returns:
        TypeQualifier instance
      • type

        static <T> TypeQualifier<T> type​(java.lang.Class<T> type)
        Selects the specified concrete type
        Type Parameters:
        T - The type of the service
        Parameters:
        type - The exact type to select
        Returns:
        TypeQualifier instance
      • normalize

        default TypeQualifier<?> normalize()
        Normalize a potentially primitive type (e.g int.class) to it's boxed equivalent (e.g. Integer.class).
        Returns:
        Self, unless this qualifier uses a primitive type, it's boxed equivalent