Class OperationContext<T extends Annotation>

  • All Implemented Interfaces:
    Context<T>

    @Contract
    public abstract class OperationContext<T extends Annotation>
    extends Object
    implements Context<T>
    The implementation of Context for an Operation.

    An operation is defined as a unit of work that can be associated with one or more java threads, but where two operations of the same type may not be associated with the same thread at the same time. Examples of such an operation might be a RequestScope or a TenantRequesteOperation. An operation is a more general concept than the normal Java EE request scope, since it does not require a Java EE container

    Users of this API generally create a Scope annotation and extend this class, implementing the Context.getScope() and making sure the parameterized type is the Scope annotation. The Scope annotation for an Operation is usually Proxiable but does not have to be. As with all implementations of Context the subclass of this class must be in the SingletonInjectsPerRequest scope. The user code then uses the OperationManager and OperationHandle to start and stop Operations and to associate and dis-associate threads with Operations

    Classes extending this class may also choose to override the method Context.supportsNullCreation() which returns false by default

    Author:
    jwells
    • Constructor Detail

      • OperationContext

        public OperationContext()
    • Method Detail

      • findOrCreate

        public <U> U findOrCreate​(ActiveDescriptor<U> activeDescriptor,
                                  ServiceHandle<?> root)
        Description copied from interface: Context
        Creates a contextual instance of this ActiveDescriptor by calling its create method if there is no other matching contextual instance. If there is already a contextual instance it is returned. If parent is null then this must work like the find call
        Specified by:
        findOrCreate in interface Context<T extends Annotation>
        Parameters:
        activeDescriptor - The descriptor to use when creating instances
        root - The extended provider for the outermost parent being created
        Returns:
        A context instance. This value may NOT be null
      • containsKey

        public boolean containsKey​(ActiveDescriptor<?> descriptor)
        Description copied from interface: Context
        Determines if this context has a value for the given key
        Specified by:
        containsKey in interface Context<T extends Annotation>
        Parameters:
        descriptor - The descriptor to look for in this context
        Returns:
        true if this context has a value associated with this descriptor
      • destroyOne

        public void destroyOne​(ActiveDescriptor<?> descriptor)
        Description copied from interface: Context
        This method is called when ServiceHandle.destroy() method is called. It is up to the context implementation whether or not to honor this destruction request based on the lifecycle requirements of the context
        Specified by:
        destroyOne in interface Context<T extends Annotation>
        Parameters:
        descriptor - A non-null descriptor upon which ServiceHandle.destroy() has been called
      • shutdown

        public void shutdown()
        Description copied from interface: Context
        Shut down this context.
        Specified by:
        shutdown in interface Context<T extends Annotation>
      • supportsNullCreation

        public boolean supportsNullCreation()
        Description copied from interface: Context
        Returns true if the findOrCreate method can return null
        Specified by:
        supportsNullCreation in interface Context<T extends Annotation>
        Returns:
        true if null is a legal value from the findOrCreate method
      • isActive

        public boolean isActive()
        Description copied from interface: Context
        True if this context is active, false otherwise
        Specified by:
        isActive in interface Context<T extends Annotation>
        Returns:
        true if this context is active, false otherwise