org.apache.cayenne.configuration

## Class CayenneRuntime

- java.lang.Object
- - org.apache.cayenne.configuration.CayenneRuntime

- Direct Known Subclasses:
    ClientRuntime, ServerRuntime

      public abstract class CayenneRuntime
      extends Object

  A superclass of various Cayenne runtime stacks. A Runtime is the main access point to Cayenne for a user application. It provides a default Cayenne configuration as well as a way to customize this configuration via a built-in dependency injection (DI) container. In fact implementation-wise, Runtime object is just a convenience thin wrapper around a DI `Injector`.
  Since:
    3.1

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Injector` | `injector`
    `protected Module[]` | `modules`
    `protected static ThreadLocal<Injector>` | `threadInjector` A holder of an Injector bound to the current thread.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `CayenneRuntime(Collection<Module> modules)` Creates a CayenneRuntime with configuration based on the supplied collection of DI modules.
    `CayenneRuntime(Module... modules)` Creates a CayenneRuntime with configuration based on the supplied array of DI modules.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static void` | `bindThreadInjector(Injector injector)` Binds a DI `Injector` bound to the current thread.
    `DataChannel` | `getChannel()` Returns the runtime `DataChannel`.
    `ObjectContext` | `getContext()` Returns a new ObjectContext instance based on the runtime's main DataChannel.
    `ObjectContext` | `getContext(DataChannel parentChannel)` Returns a new ObjectContext which is a child of the specified DataChannel.
    `Injector` | `getInjector()` Returns DI injector used by this runtime.
    `Module[]` | `getModules()` Returns an array of modules used to initialize this runtime.
    `static Injector` | `getThreadInjector()` Returns the `Injector` bound to the current thread.
    `protected static Module[]` | `mergeModules(Module mainModule, Collection<Module> extraModules)` Internal helper method to add special extra modules in subclass constructors.
    `protected static Module[]` | `mergeModules(Module mainModule, Module... extraModules)` Internal helper method to add special extra modules in subclass constructors.
    `void` | `shutdown()` Shuts down the DI injector of this runtime, giving all services that need to release some resources a chance to do that.

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

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

- - ### Field Detail

    - #### threadInjector

          protected static final ThreadLocal<Injector> threadInjector

      A holder of an Injector bound to the current thread. Used mainly to allow serializable contexts to attach to correct Cayenne stack on deserialization.
      Since:
        3.1

    - #### injector

          protected Injector injector

    - #### modules

          protected Module[] modules

  - ### Constructor Detail

    - #### CayenneRuntime

          public CayenneRuntime(Module... modules)

      Creates a CayenneRuntime with configuration based on the supplied array of DI modules.

    - #### CayenneRuntime

          public CayenneRuntime(Collection<Module> modules)

      Creates a CayenneRuntime with configuration based on the supplied collection of DI modules.

  - ### Method Detail

    - #### bindThreadInjector

          public static void bindThreadInjector(Injector injector)

      Binds a DI `Injector` bound to the current thread. It is primarily intended for deserialization of ObjectContexts.

      `CayenneFilter` will automatically bind the right injector to each request thread. If you are not using CayenneFilter, your application is responsible for calling this method at appropriate points of the lifecycle.

      Since:
        3.1

    - #### getThreadInjector

          public static Injector getThreadInjector()

      Returns the `Injector` bound to the current thread. Will return null if none is bound.
      Since:
        3.1

    - #### mergeModules

          protected static Module[] mergeModules(Module mainModule,
                                                 Module... extraModules)

      Internal helper method to add special extra modules in subclass constructors.

    - #### mergeModules

          protected static Module[] mergeModules(Module mainModule,
                                                 Collection<Module> extraModules)

      Internal helper method to add special extra modules in subclass constructors.

    - #### getModules

          public Module[] getModules()

      Returns an array of modules used to initialize this runtime.

    - #### getInjector

          public Injector getInjector()

      Returns DI injector used by this runtime.

    - #### shutdown

          @BeforeScopeEnd
          public void shutdown()

      Shuts down the DI injector of this runtime, giving all services that need to release some resources a chance to do that.

    - #### getChannel

          public DataChannel getChannel()

      Returns the runtime `DataChannel`.

    - #### getContext

          public ObjectContext getContext()

      Returns a new ObjectContext instance based on the runtime's main DataChannel.

    - #### getContext

          public ObjectContext getContext(DataChannel parentChannel)

      Returns a new ObjectContext which is a child of the specified DataChannel. This method is used for creation of nested ObjectContexts, with parent ObjectContext passed as an argument.

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