org.apache.cayenne.di.spi

## Class DefaultScope

- java.lang.Object
- - org.apache.cayenne.di.spi.DefaultScope

- All Implemented Interfaces:
    Scope

      public class DefaultScope
      extends Object
      implements Scope

  An implementation of a DI scopes with support scope events.
  Since:
    3.1

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Collection<Class<? extends Annotation>>` | `eventTypes`
    `protected ConcurrentMap<String,Collection<ScopeEventBinding>>` | `listeners`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DefaultScope(Class<? extends Annotation>... customEventTypes)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addScopeEventListener(Object object)` Registers annotated methods of an arbitrary object for this scope lifecycle events.
    `void` | `postScopeEvent(Class<? extends Annotation> type, Object... eventParameters)` Posts a scope event to all registered listeners.
    `void` | `removeScopeEventListener(Object object)`
    `<T> Provider<T>` | `scope(Provider<T> unscoped)`
    `void` | `shutdown()` Shuts down this scope, posting `BeforeScopeEnd` and `AfterScopeEnd` events.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### eventTypes

          protected Collection<Class<? extends Annotation>> eventTypes

    - #### listeners

          protected ConcurrentMap<String,Collection<ScopeEventBinding>> listeners

  - ### Constructor Detail

    - #### DefaultScope

          @SafeVarargs
          public DefaultScope(Class<? extends Annotation>... customEventTypes)

  - ### Method Detail

    - #### shutdown

          public void shutdown()

      Shuts down this scope, posting `BeforeScopeEnd` and `AfterScopeEnd` events.

    - #### addScopeEventListener

          public void addScopeEventListener(Object object)

      Registers annotated methods of an arbitrary object for this scope lifecycle events.

    - #### removeScopeEventListener

          public void removeScopeEventListener(Object object)

    - #### postScopeEvent

          public void postScopeEvent(Class<? extends Annotation> type,
                                     Object... eventParameters)

      Posts a scope event to all registered listeners. There's no predetermined order of event dispatching. An exception thrown by any of the listeners stops further event processing and is rethrown.

    - #### scope

          public <T> Provider<T> scope(Provider<T> unscoped)

      Specified by:
        `scope` in interface `Scope`

Copyright © 2001–2021 Apache Cayenne. All rights reserved.