# 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
  Description
  `protected Collection<Class<? extends Annotation>>`
  `eventTypes`
  `protected ConcurrentMap<String, Collection<ScopeEventBinding>>`
  `listeners`

- ## Constructor Summary

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

- ## Method Summary

  Modifier and Type
  Method
  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 Object

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

- ## Field Details

  - ### eventTypes

    protected Collection<Class<? extends Annotation>> eventTypes

  - ### listeners

    protected ConcurrentMap<String, Collection<ScopeEventBinding>> listeners

- ## Constructor Details

  - ### DefaultScope

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

- ## Method Details

  - ### 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`