Interface MetaAnnotations


  • public interface MetaAnnotations
    Allows registering custom CDI meta-annotations: qualifiers, interceptor bindings, stereotypes, and scopes. When registering a custom scope, a context class must also be provided.
    Since:
    4.0
    • Method Detail

      • addQualifier

        ClassConfig addQualifier​(Class<? extends Annotation> annotation)
        Registers annotation as a qualifier annotation. Only makes sense if the annotation is not meta-annotated @Qualifier.

        Returns a class configurator object that allows transforming meta-annotations on the annotation.

        Parameters:
        annotation - annotation type
        Returns:
        the class configurator, never null
      • addInterceptorBinding

        ClassConfig addInterceptorBinding​(Class<? extends Annotation> annotation)
        Registers annotation as an interceptor binding annotation. Only makes sense if the annotation is not meta-annotated @InterceptorBinding.

        Returns a class configurator object that allows transforming meta-annotations on the annotation.

        Parameters:
        annotation - annotation type
        Returns:
        the class configurator, never null
      • addStereotype

        ClassConfig addStereotype​(Class<? extends Annotation> annotation)
        Registers annotation as a stereotype annotation. Only makes sense if the annotation is not meta-annotated @Stereotype.

        Returns a class configurator object that allows transforming meta-annotations on the annotation.

        Parameters:
        annotation - annotation type
        Returns:
        the class configurator, never null
      • addContext

        void addContext​(Class<? extends Annotation> scopeAnnotation,
                        Class<? extends AlterableContext> contextClass)
        Registers custom context for given scopeAnnotation and given contextClass. CDI container will create an instance of the context class once to obtain the context object. The context class must be public and have a public zero-parameter constructor; it must not be a bean.

        Whether the scope is normal is discovered from the scope annotation. This means that the scope annotation must be meta-annotated either @NormalScope or @Scope.

        Parameters:
        scopeAnnotation - the scope annotation type, must not be null
        contextClass - the context class, must not be null
        Throws:
        IllegalArgumentException - if the scopeAnnotation is not meta-annotated @NormalScope or @Scope
      • addContext

        void addContext​(Class<? extends Annotation> scopeAnnotation,
                        boolean isNormal,
                        Class<? extends AlterableContext> contextClass)
        Registers custom context for given scopeAnnotation and given contextClass. CDI container will create an instance of the context class once to obtain the context object. The context class must be public and have a public zero-parameter constructor; it must not be a bean.

        The isNormal parameter determines whether the scope is a normal scope or a pseudo-scope.

        Parameters:
        scopeAnnotation - the scope annotation type, must not be null
        isNormal - whether the scope is normal
        contextClass - the context class, must not be null