Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.modeshape.repository
Class RepositoryService

    java.lang.Object
      org.modeshape.repository.RepositoryService

All Implemented Interfaces:
  Observer, AdministeredService

    @ThreadSafe
    public class RepositoryService

extends Object
implements AdministeredService, Observer

A service that manages the `RepositorySource`es defined within a configuration repository.

Nested Class Summary
`protected class` | `RepositoryService.Administrator` The administrative component for this service.
`protected class` | `RepositoryService.ConfigurationChangeObserver`
`protected static class` | `RepositoryService.GarbageCollectedSource`

Field Summary
`static int` | `MAXIMUM_NUMBER_OF_PASSES_PER_GC_RUN`

Constructor Summary
`RepositoryService(RepositorySource configurationSource, String configurationWorkspaceName, Path pathToConfigurationRoot, ExecutionContext context, ObservationBus observationBus, Problems problems)` Create a service instance, reading the configuration describing new `RepositorySource` instances from the supplied configuration repository.

Method Summary
`protected Object` | `createInstanceFromProperties(Subgraph subgraph, Location location, Problems problems, boolean mustHaveClassName)` Instantiate the `Object` described by the supplied properties.
`protected RepositorySource` | `createRepositorySource(Subgraph subgraph, Location location, Problems problems)` Instantiate the `RepositorySource` described by the supplied properties.
`boolean` | `equals(Object obj)`
`ServiceAdministrator` | `getAdministrator()`
`String` | `getConfigurationSourceName()`
`String` | `getConfigurationWorkspaceName()`
`ExecutionContext` | `getExecutionEnvironment()`
`String` | `getJndiName()`
`protected Path` | `getPathToConfigurationRoot()`
`protected Path` | `getPathToSources()`
`RepositoryLibrary` | `getRepositoryLibrary()` Get the library of `RepositorySource` instances used by this service.
`void` | `notify(Changes changes)` Method that is called for each `set of changes` from the `Observable` instance(s) with which this observer is registered.
`boolean` | `requiresGarbageCollection()` Determine if at least one source requires periodic garbage collection.
`void` | `runGarbageCollection(Problems problems)` This method goes through all `RepositorySource` instances in the `library`, and for each of them that don't `support automatic garbage collection` will submit a `CollectGarbageRequest`.
`protected boolean` | `setBeanPropertyIfExistsAndNotSet(Object target, String propertyName, Object value)`
`protected void` | `shutdownService()`
`protected void` | `startService()`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### MAXIMUM_NUMBER_OF_PASSES_PER_GC_RUN

    public static final int MAXIMUM_NUMBER_OF_PASSES_PER_GC_RUN

See Also:
  Constant Field Values

Constructor Detail

### RepositoryService

    public RepositoryService(RepositorySource configurationSource,
                             String configurationWorkspaceName,
                             Path pathToConfigurationRoot,
                             ExecutionContext context,
                             ObservationBus observationBus,
                             Problems problems)

  Create a service instance, reading the configuration describing new `RepositorySource` instances from the supplied configuration repository.

  Parameters:
    `configurationSource` - the `RepositorySource` that is the configuration repository
    `configurationWorkspaceName` - the name of the workspace in the `RepositorySource` that is the configuration repository, or null if the default workspace of the source should be used (if there is one)
    `pathToConfigurationRoot` - the path of the node in the configuration source repository that should be treated by this service as the root of the service's configuration; if null, then "/dna:system" is used
    `context` - the execution context in which this service should run
    `observationBus` - the `ObservationBus` instance that should be used for changes in the sources
    `problems` - the `Problems` instance that this service should use to report problems starting repositories
  Throws:
    `IllegalArgumentException` - if the bootstrap source is null or the execution context is null

Method Detail

### getAdministrator

    public final ServiceAdministrator getAdministrator()

  Specified by:
    `getAdministrator` in interface `AdministeredService`

### getConfigurationSourceName

    public final String getConfigurationSourceName()

  Returns:
    configurationSourceName

### getConfigurationWorkspaceName

    public final String getConfigurationWorkspaceName()

  Returns:
    configurationWorkspaceName

### getRepositoryLibrary

    public final RepositoryLibrary getRepositoryLibrary()

  Get the library of `RepositorySource` instances used by this service.

  Returns:
    the RepositorySource library; never null

### getPathToConfigurationRoot

    protected final Path getPathToConfigurationRoot()

  Returns:
    pathToConfigurationRoot

### getPathToSources

    protected Path getPathToSources()

  Returns:
    pathToSources

### getExecutionEnvironment

    public final ExecutionContext getExecutionEnvironment()

  Returns:
    env

### getJndiName

    public String getJndiName()

### startService

    protected void startService()

### shutdownService

    protected void shutdownService()

### createRepositorySource

    protected RepositorySource createRepositorySource(Subgraph subgraph,
                                                      Location location,
                                                      Problems problems)

  Instantiate the `RepositorySource` described by the supplied properties.

  Parameters:
    `subgraph` - the subgraph containing the configuration information for this `RepositorySource`
    `location` - the location of the properties to apply to the new `RepositorySource`
    `problems` - the problems container in which any problems should be reported; never null
  Returns:
    the repository source instance, or null if it could not be created

### createInstanceFromProperties

    protected Object createInstanceFromProperties(Subgraph subgraph,
                                                  Location location,
                                                  Problems problems,
                                                  boolean mustHaveClassName)

  Instantiate the `Object` described by the supplied properties.

  Parameters:
    `subgraph` - the subgraph containing the configuration information for this instance
    `location` - the location of the properties to apply to the new instance
    `problems` - the problems container in which any problems should be reported; never null
    `mustHaveClassName` - indicates that the properties must include a class name; if true a problem will be added for instances that do not have a class name specified
  Returns:
    the instance, or null if it could not be created

### setBeanPropertyIfExistsAndNotSet

    protected boolean setBeanPropertyIfExistsAndNotSet(Object target,
                                                       String propertyName,
                                                       Object value)

### equals

    public boolean equals(Object obj)

  Overrides:
    `equals` in class `Object`

### notify

    public void notify(Changes changes)

  Method that is called for each `set of changes` from the `Observable` instance(s) with which this observer is registered.

  Specified by:
    `notify` in interface `Observer`
  Parameters:
    `changes` - the changes that are being published
  See Also:
    `Observer.notify(org.modeshape.graph.observe.Changes)`

### requiresGarbageCollection

    public boolean requiresGarbageCollection()

  Determine if at least one source requires periodic garbage collection.

  Returns:
    true if `runGarbageCollection(Problems)` should be called periodically, or false otherwise

### runGarbageCollection

    public void runGarbageCollection(Problems problems)

  This method goes through all `RepositorySource` instances in the `library`, and for each of them that don't `support automatic garbage collection` will submit a `CollectGarbageRequest`.

  This method does all this work in the calling thread, blocking until all such requests have been issued and completed. It actually uses a queue, first enqueuing all RepositorySource instances that don't `support automatic garbage collection`. It then pulls the first source from the queue, obtains a connection, submits a single `CollectGarbageRequest`, and re-enqueues the source `if required`. However, this method never requests a source collect garbage more than `MAXIMUM_NUMBER_OF_PASSES_PER_GC_RUN` times.

  Thus a source can implement a garbage collection sweep in a manner that does not require excess amount of time so as to not block other requests. After that pass is completed, the source can simply denote in the CollectGarbageRequest whether at least one additional GC pass should be performed.

  Parameters:
    `problems` - the problems container in which any errors should be reported; if null, then any problems will be logged

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2008-2011 JBoss, a division of Red Hat. All Rights Reserved.