Class CDI<T>

java.lang.Object
javax.enterprise.inject.spi.CDI<T>
Type Parameters:
T - type inherited from Instance. Always Object for CDI
All Implemented Interfaces:
Iterable<T>, Instance<T>, javax.inject.Provider<T>

public abstract class CDI<T> extends Object implements Instance<T>
Provides access to the current container.

CDI implements Instance and therefore might be used to perform programmatic lookup. If no qualifier is passed to Instance.select(java.lang.annotation.Annotation...) method, the @Default qualifier is assumed.

Since:
1.1
  • Field Details

    • lock

      private static final Object lock
    • discoveredProviders

      protected static volatile Set<CDIProvider> discoveredProviders
    • configuredProvider

      protected static volatile CDIProvider configuredProvider
  • Constructor Details

    • CDI

      public CDI()
  • Method Details

    • current

      public static CDI<Object> current()

      Get the CDI instance that provides access to the current container.

      If there are no providers available, an IllegalStateException is thrown, otherwise the first provider which can access the container is used.

      Returns:
      the CDI instance
      Throws:
      IllegalStateException - if no CDIProvider is available
    • getCDIProvider

      private static CDIProvider getCDIProvider()
      Obtain the CDIProvider the user set with setCDIProvider(CDIProvider) or the last returned CDIProvider if it returns valid CDI container. Otherwise use the serviceloader to retrieve the CDIProvider with the highest priority.
      Returns:
      the CDIProvider set by user or retrieved by serviceloader
    • checkProvider

      private static boolean checkProvider(CDIProvider c)
    • setCDIProvider

      public static void setCDIProvider(CDIProvider provider)

      Set the CDIProvider to use.

      If a CDIProvider is set using this method, any provider specified as a service provider will not be used.

      Parameters:
      provider - the provider to use
      Throws:
      IllegalStateException - if the CDIProvider is already set
    • findAllProviders

      private static void findAllProviders()
    • getBeanManager

      public abstract BeanManager getBeanManager()
      Get the CDI BeanManager for the current context
      Returns:
      the BeanManager