org.eclipse.net4j.util.container

## Interface IManagedContainer

- All Superinterfaces:
    IContainer<Object>, IDeactivateable, ILifecycle, INotifier
  All Known Subinterfaces:
    IPluginContainer
  All Known Implementing Classes:
    ManagedContainer

      public interface IManagedContainer
      extends IContainer<Object>, ILifecycle

  A `container` that populates itself by means of element `factories` and `post processors` .
  Author:
    Eike Stepper
  No Implement
    This interface is not intended to be implemented by clients.
  No Extend
    This interface is not intended to be extended by clients.
  Apiviz
  Apiviz
    `IFactory` - - factoryRegistry, `IElementProcessor` - - postProcessors

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static interface` | `IManagedContainer.ContainerAware`

    - ### Nested classes/interfaces inherited from interface org.eclipse.net4j.util.container.IContainer

      `IContainer.Modifiable<E>, IContainer.Persistable<E>, IContainer.Persistence<E>`

    - ### Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.ILifecycle

      `ILifecycle.DeferrableActivation`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addPostProcessor(IElementProcessor postProcessor)`
    `void` | `addPostProcessor(IElementProcessor postProcessor, boolean processExistingElements)`
    `void` | `clearElements()`
    `Object` | `getElement(String productGroup, String factoryType, String description)`
    `Object` | `getElement(String productGroup, String factoryType, String description, boolean activate)`
    `String[]` | `getElementKey(Object element)`
    `Object[]` | `getElements(String productGroup)`
    `Object[]` | `getElements(String productGroup, String factoryType)`
    `IFactory` | `getFactory(String productGroup, String factoryType)`
    `IRegistry<IFactoryKey,IFactory>` | `getFactoryRegistry()`
    `Set<String>` | `getFactoryTypes(String productGroup)`
    `List<IElementProcessor>` | `getPostProcessors()`
    `Set<String>` | `getProductGroups()`
    `void` | `loadElements(InputStream stream)`
    `Object` | `putElement(String productGroup, String factoryType, String description, Object element)`
    `IManagedContainer` | `registerFactory(IFactory factory)`
    `Object` | `removeElement(String productGroup, String factoryType, String description)`
    `void` | `removePostProcessor(IElementProcessor postProcessor)`
    `void` | `saveElements(OutputStream stream)`

    - ### Methods inherited from interface org.eclipse.net4j.util.container.IContainer

      `getElements, isEmpty`

    - ### Methods inherited from interface org.eclipse.net4j.util.lifecycle.ILifecycle

      `activate, deactivate, getLifecycleState, isActive`

    - ### Methods inherited from interface org.eclipse.net4j.util.event.INotifier

      `addListener, getListeners, hasListeners, removeListener`

- - ### Method Detail

    - #### getFactoryRegistry

          IRegistry<IFactoryKey,IFactory> getFactoryRegistry()

    - #### registerFactory

          IManagedContainer registerFactory(IFactory factory)

    - #### getPostProcessors

          List<IElementProcessor> getPostProcessors()

    - #### addPostProcessor

          void addPostProcessor(IElementProcessor postProcessor,
                                boolean processExistingElements)

    - #### addPostProcessor

          void addPostProcessor(IElementProcessor postProcessor)

    - #### removePostProcessor

          void removePostProcessor(IElementProcessor postProcessor)

    - #### getProductGroups

          Set<String> getProductGroups()

    - #### getFactoryTypes

          Set<String> getFactoryTypes(String productGroup)

    - #### getFactory

          IFactory getFactory(String productGroup,
                              String factoryType)
                       throws FactoryNotFoundException

      Throws:
        `FactoryNotFoundException`

    - #### putElement

          Object putElement(String productGroup,
                            String factoryType,
                            String description,
                            Object element)

    - #### getElementKey

          String[] getElementKey(Object element)

    - #### getElements

          Object[] getElements(String productGroup)

    - #### getElements

          Object[] getElements(String productGroup,
                               String factoryType)

    - #### getElement

          Object getElement(String productGroup,
                            String factoryType,
                            String description)
                     throws FactoryNotFoundException,
                            ProductCreationException

      Throws:
        `FactoryNotFoundException`
        `ProductCreationException`

    - #### getElement

          Object getElement(String productGroup,
                            String factoryType,
                            String description,
                            boolean activate)
                     throws FactoryNotFoundException,
                            ProductCreationException

      Throws:
        `FactoryNotFoundException`
        `ProductCreationException`
      Since:
        2.0

    - #### removeElement

          Object removeElement(String productGroup,
                               String factoryType,
                               String description)

    - #### clearElements

          void clearElements()

    - #### loadElements

          void loadElements(InputStream stream)
                     throws IOException,
                            FactoryNotFoundException,
                            ProductCreationException

      Throws:
        `IOException`
        `FactoryNotFoundException`
        `ProductCreationException`

    - #### saveElements

          void saveElements(OutputStream stream)
                     throws IOException

      Throws:
        `IOException`

Copyright (c) 2014 Eike Stepper (Berlin, Germany) and others.
All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html