# Package org.eclipse.net4j.util.lifecycle

A framework for components with a simple lifecycle. Interfaces that describe the behavior of objects with respect to their lifecycle. A utility class to interact with such objects and an abstract class that can be used to implement such objects are provided as well.

- Interface Summary
  Interface | Description
  --- | ---
  IDeactivateable |
  ILifecycle | An entity that has a well-defined `lifecycle` and can be `activated` or `deactivated`.
  ILifecycle.DeferrableActivation | A mix-in interface for `lifecycles` with deferrable activation.
  ILifecycleEvent | An `event` fired from an entity with a `lifecycle` when its lifecycle `state` has changed.

- Class Summary
  Class | Description
  --- | ---
  Lifecycle | A default implementation of an entity with a `lifecycle`.
  LifecycleEvent | A default implementation of a lifecycle `event`.
  LifecycleEventAdapter | A `listener` that dispatches lifecycle `events` to methods that can be overridden by extenders.
  LifecycleHook<T extends ILifecycle> |
  LifecycleUtil | Various static helper methods for dealing with `lifecycles`.
  LifecycleUtil.Delegator<T> | The `invocation handler` of the `dynamic proxy` created in `LifecycleUtil.delegateLifecycle()`.
  ShareableLifecycle | A `lifecycle` entity with a reference count that can be `activated` multiple times.

- Enum Summary
  Enum | Description
  --- | ---
  ILifecycleEvent.Kind | Enumerates the possible `lifecycle state` changes of an entity.
  LifecycleState | Enumerates the possible lifecycle states of an entity with a `lifecycle`.

- Exception Summary
  Exception | Description
  --- | ---
  LifecycleException | An unchecked wrapper exception for checked exceptions being thrown from `Lifecycle.doActivate()`.

- Annotation Types Summary
  Annotation Type | Description
  --- | ---
  LifecycleUtil.Activator | Annotates a method of a POJO class that's supposed to be called to activate a POJO object during `LifecycleUtil.activate(Object)`.
  LifecycleUtil.Deactivator | Annotates a method of a POJO class that's supposed to be called to deactivate a POJO object during `LifecycleUtil.deactivate(Object)`.