Package org.eclipse.rdf4j.repository.manager

## Class RepositoryManager

- java.lang.Object
- - org.eclipse.rdf4j.repository.manager.RepositoryManager

- All Implemented Interfaces:
    `HttpClientDependent`, `RepositoryResolver`
  Direct Known Subclasses:
    `LocalRepositoryManager`, `RemoteRepositoryManager`, `TypeFilteringRepositoryManager`

      public abstract class RepositoryManager
      extends Object
      implements RepositoryResolver, HttpClientDependent

  A manager for `Repository`s.
  Author:
    Arjohn Kampman
  See Also:
    `RepositoryProvider`

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected Map<String,​Repository>` | `initializedRepositories` |
    `protected org.slf4j.Logger` | `logger` |
    `static String` | `NAMESPACE` | The `ProxyRepository` schema namespace ( http://www.openrdf.org/config/repository/proxy#).
    `static IRI` | `PROXIED_ID` | http://www.openrdf.org/config/repository/proxy#proxiedID

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `RepositoryManager()` | Creates a new RepositoryManager.
    `protected` | `RepositoryManager​(Map<String,​Repository> initializedRepositories)` | Create a new RepositoryManager using the given map to store repository information.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `abstract void` | `addRepositoryConfig​(RepositoryConfig config)` | Adds or updates the configuration of a repository to the manager.
    `protected abstract Repository` | `createRepository​(String id)` | Creates and initializes the repository with the specified ID.
    `Collection<Repository>` | `getAllRepositories()` | Returns all configured repositories.
    `abstract Collection<RepositoryInfo>` | `getAllRepositoryInfos()` | Retrieve meta information of all configured repositories.
    `Collection<RepositoryInfo>` | `getAllRepositoryInfos​(boolean skipSystemRepo)` | Deprecated. since 4.0 - use `getAllRepositoryInfos()` instead.
    `Collection<RepositoryInfo>` | `getAllUserRepositoryInfos()` | Deprecated. since 4.0 - use `getAllRepositoryInfos()` instead.
    `abstract org.apache.http.client.HttpClient` | `getHttpClient()` | `HttpClient` that has been assigned or has been used by this object.
    `Collection<Repository>` | `getInitializedRepositories()` | Returns all initialized repositories.
    `Set<String>` | `getInitializedRepositoryIDs()` | Returns all initialized repositories.
    `abstract URL` | `getLocation()` | Gets the URL of the server or directory.
    `ModelFactory` | `getModelFactory()` | Get the `ModelFactory` used for creating new `Model` objects in the manager.
    `String` | `getNewRepositoryID​(String baseName)` | Generates an ID for a new repository based on the specified base name.
    `Repository` | `getRepository​(String identity)` | Gets the repository that is known by the specified ID from this manager.
    `abstract RepositoryConfig` | `getRepositoryConfig​(String repositoryID)` |
    `Set<String>` | `getRepositoryIDs()` | Get the IDs of all available repositories.
    `RepositoryInfo` | `getRepositoryInfo​(String id)` | Gets the repository that is known by the specified ID from this manager.
    `boolean` | `hasRepositoryConfig​(String repositoryID)` |
    `void` | `init()` | Initializes the repository manager.
    `boolean` | `isInitialized()` | Indicates if this RepositoryManager has been initialized.
    `boolean` | `isSafeToRemove​(String repositoryID)` | Checks on whether the given repository is referred to by a `ProxyRepository` configuration.
    `void` | `refresh()` | Shuts down all initialized user repositories.
    `boolean` | `removeRepository​(String repositoryID)` | Removes the specified repository by deleting its configuration if such a configuration is present, and removing any persistent data associated with the repository.
    `abstract void` | `setHttpClient​(org.apache.http.client.HttpClient httpClient)` | Should be called before `init()`.
    `protected void` | `setInitializedRepositories​(Map<String,​Repository> nextInitializedRepositories)` |
    `void` | `setModelFactory​(ModelFactory modelFactory)` | Set the `ModelFactory` to use for creating new `Model` objects in the manager.
    `void` | `shutDown()` | Shuts down all initialized repositories.
    `protected void` | `updateInitializedRepositories()` |

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

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

- - ### Field Detail

    - #### logger

          protected final org.slf4j.Logger logger

    - #### NAMESPACE

          public static final String NAMESPACE

      The `ProxyRepository` schema namespace ( http://www.openrdf.org/config/repository/proxy#).
      See Also:
        Constant Field Values

    - #### PROXIED_ID

          public static final IRI PROXIED_ID

      http://www.openrdf.org/config/repository/proxy#proxiedID

    - #### initializedRepositories

          protected Map<String,​Repository> initializedRepositories

  - ### Constructor Detail

    - #### RepositoryManager

          protected RepositoryManager()

      Creates a new RepositoryManager.

    - #### RepositoryManager

          protected RepositoryManager​(Map<String,​Repository> initializedRepositories)

      Create a new RepositoryManager using the given map to store repository information.
      Parameters:
        `initializedRepositories` - A map that will be used to store repository information.

  - ### Method Detail

    - #### isInitialized

          public boolean isInitialized()

      Indicates if this RepositoryManager has been initialized. Note that the initialization status may change if the Repository is shut down.
      Returns:
        true iff the repository manager has been initialized.

    - #### getHttpClient

          public abstract org.apache.http.client.HttpClient getHttpClient()

      Description copied from interface: `HttpClientDependent`
      `HttpClient` that has been assigned or has been used by this object. The life cycle might not be or might be tied to this object, depending on whether `HttpClient` was passed to or created by this object respectively.
      Specified by:
        `getHttpClient` in interface `HttpClientDependent`
      Returns:
        Returns the httpClient passed to `Repository` construction.

    - #### setHttpClient

          public abstract void setHttpClient​(org.apache.http.client.HttpClient httpClient)

      Should be called before `init()`.
      Specified by:
        `setHttpClient` in interface `HttpClientDependent`
      Parameters:
        `httpClient` - The httpClient to use for remote/service calls.

    - #### getModelFactory

          public ModelFactory getModelFactory()

      Get the `ModelFactory` used for creating new `Model` objects in the manager.
      Returns:
        the modelFactory
      Since:
        3.0

    - #### setModelFactory

          public void setModelFactory​(ModelFactory modelFactory)

      Set the `ModelFactory` to use for creating new `Model` objects in the manager.
      Parameters:
        `modelFactory` - the modelFactory to set. May not be `null`.
      Since:
        3.0

    - #### init

          public void init()
                    throws RepositoryException

      Initializes the repository manager.
      Throws:
        `RepositoryException` - If the manager failed to initialize.
      Since:
        2.5

    - #### getNewRepositoryID

          public String getNewRepositoryID​(String baseName)
                                    throws RepositoryException,
                                           RepositoryConfigException

      Generates an ID for a new repository based on the specified base name. The base name may for example be a repository name entered by the user. The generated ID will contain a variant of this name that does not occur as a repository ID in this manager yet and is suitable for use as a file name (e.g. for the repository's data directory).
      Parameters:
        `baseName` - The String on which the returned ID should be based, must not be null.
      Returns:
        A new repository ID derived from the specified base name.
      Throws:
        `RepositoryException`
        `RepositoryConfigException`

    - #### getRepositoryIDs

          public Set<String> getRepositoryIDs()
                                       throws RepositoryException

      Get the IDs of all available repositories. Note that this is potentially slow as it may initialize all available repository configurations.
      Returns:
        a list of repository ID strings.
      Throws:
        `RepositoryException`

    - #### hasRepositoryConfig

          public boolean hasRepositoryConfig​(String repositoryID)
                                      throws RepositoryException,
                                             RepositoryConfigException

      Throws:
        `RepositoryException`
        `RepositoryConfigException`

    - #### getRepositoryConfig

          public abstract RepositoryConfig getRepositoryConfig​(String repositoryID)
                                                        throws RepositoryConfigException,
                                                               RepositoryException

      Throws:
        `RepositoryConfigException`
        `RepositoryException`

    - #### addRepositoryConfig

          public abstract void addRepositoryConfig​(RepositoryConfig config)
                                            throws RepositoryException,
                                                   RepositoryConfigException

      Adds or updates the configuration of a repository to the manager. The manager may already contain a configuration for a repository with the same ID as specified by config, in which case all previous configuration data for that repository will be cleared before the new configuration is added.
      Parameters:
        `config` - The repository configuration that should be added to or updated in the manager.
      Throws:
        `RepositoryException` - If the manager failed to update.
        `RepositoryConfigException` - If the manager doesn't know how to update a configuration due to inconsistent configuration data. For example, this happens when there are multiple existing configurations with the concerning ID.

    - #### isSafeToRemove

          public boolean isSafeToRemove​(String repositoryID)
                                 throws RepositoryException

      Checks on whether the given repository is referred to by a `ProxyRepository` configuration.
      Parameters:
        `repositoryID` - id to check
      Returns:
        true if there is no existing proxy reference to the given id, false otherwise
      Throws:
        `RepositoryException`

    - #### removeRepository

          public boolean removeRepository​(String repositoryID)
                                   throws RepositoryException,
                                          RepositoryConfigException

      Removes the specified repository by deleting its configuration if such a configuration is present, and removing any persistent data associated with the repository. Returns true if the specified repository configuration was actually present. NB this operation can not be undone!
      Parameters:
        `repositoryID` - The ID of the repository that needs to be removed.
      Throws:
        `RepositoryException` - If the manager failed to update the configuration.
        `RepositoryConfigException` - If the manager doesn't know how to remove a repository due to inconsistent configuration data. For example, this can happen when there are multiple existing configurations with the concerning ID.

    - #### getRepository

          public Repository getRepository​(String identity)
                                   throws RepositoryConfigException,
                                          RepositoryException

      Gets the repository that is known by the specified ID from this manager.
      Specified by:
        `getRepository` in interface `RepositoryResolver`
      Parameters:
        `identity` - A repository ID.
      Returns:
        An initialized Repository object, or null if no repository was known for the specified ID.
      Throws:
        `RepositoryConfigException` - If no repository could be created due to invalid or incomplete configuration data.
        `RepositoryException`

    - #### getInitializedRepositoryIDs

          public Set<String> getInitializedRepositoryIDs()

      Returns all initialized repositories. This method returns fast as no lazy creation of repositories takes place.
      Returns:
        a collection containing the IDs of all initialized repositories.
      See Also:
        `getRepositoryIDs()`

    - #### getInitializedRepositories

          public Collection<Repository> getInitializedRepositories()

      Returns all initialized repositories. This method returns fast as no lazy creation of repositories takes place.
      Returns:
        a set containing the initialized repositories.
      See Also:
        `getAllRepositories()`

    - #### setInitializedRepositories

          protected void setInitializedRepositories​(Map<String,​Repository> nextInitializedRepositories)

    - #### updateInitializedRepositories

          protected void updateInitializedRepositories()

    - #### getAllRepositories

          public Collection<Repository> getAllRepositories()
                                                    throws RepositoryConfigException,
                                                           RepositoryException

      Returns all configured repositories. This may be an expensive operation as it initializes repositories that have not been initialized yet.
      Returns:
        The Set of all configured Repositories.
      Throws:
        `RepositoryConfigException`
        `RepositoryException`
      See Also:
        `getInitializedRepositories()`

    - #### createRepository

          protected abstract Repository createRepository​(String id)
                                                  throws RepositoryConfigException,
                                                         RepositoryException

      Creates and initializes the repository with the specified ID.
      Parameters:
        `id` - A repository ID.
      Returns:
        The created and initialized repository, or null if no such repository exists.
      Throws:
        `RepositoryConfigException` - If no repository could be created due to invalid or incomplete configuration data.
        `RepositoryException` - If the repository could not be initialized.

    - #### getRepositoryInfo

          public RepositoryInfo getRepositoryInfo​(String id)
                                           throws RepositoryException

      Gets the repository that is known by the specified ID from this manager.
      Parameters:
        `id` - A repository ID.
      Returns:
        A Repository object, or null if no repository was known for the specified ID.
      Throws:
        `RepositoryException` - When not able to retrieve existing configurations

    - #### getAllRepositoryInfos

          public abstract Collection<RepositoryInfo> getAllRepositoryInfos()
                                                                    throws RepositoryException

      Retrieve meta information of all configured repositories.
      Returns:
        a collection of `RepositoryInfo` objects
      Throws:
        `RepositoryException` - if the repository meta information could not be retrieved.

    - #### getAllUserRepositoryInfos

          @Deprecated
          public Collection<RepositoryInfo> getAllUserRepositoryInfos()
                                                               throws RepositoryException

      Deprecated.
      since 4.0 - use `getAllRepositoryInfos()` instead.
      Throws:
        `RepositoryException`

    - #### getAllRepositoryInfos

          @Deprecated
          public Collection<RepositoryInfo> getAllRepositoryInfos​(boolean skipSystemRepo)
                                                           throws RepositoryException

      Deprecated.
      since 4.0 - use `getAllRepositoryInfos()` instead.
      Throws:
        `RepositoryException`

    - #### refresh

          public void refresh()

      Shuts down all initialized user repositories.
      See Also:
        `shutDown()`

    - #### shutDown

          public void shutDown()

      Shuts down all initialized repositories.
      See Also:
        `refresh()`

    - #### getLocation

          public abstract URL getLocation()
                                   throws MalformedURLException

      Gets the URL of the server or directory.
      Throws:
        `MalformedURLException` - If the location cannot be represented as a URL.