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 Details

    • 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