Class ProxyRepository

java.lang.Object
org.eclipse.rdf4j.repository.base.AbstractRepository
org.eclipse.rdf4j.repository.sail.ProxyRepository
All Implemented Interfaces:
Repository, RepositoryResolverClient

public class ProxyRepository extends AbstractRepository implements RepositoryResolverClient

Repository implementation that takes a RepositoryResolver instance and the id of a managed repository, and delegate all calls through to the given repository.

The purpose is to allow Sails to refer to other local repositories using a unique identifier without having to go through an HTTP layer.

The implementation is independent of DelegatingRepository so that it is freed from having to provide implementation details in its configuration data. Instead, it only has to provide an unambiguous local identifier to the proxy.

Author:
Dale Visser
  • Constructor Details

    • ProxyRepository

      public ProxyRepository()
    • ProxyRepository

      public ProxyRepository(String proxiedIdentity)
      Creates a repository instance that proxies to a repository of the give ID.
      Parameters:
      proxiedIdentity - id of the proxied repository
    • ProxyRepository

      public ProxyRepository(RepositoryResolver resolver, String proxiedIdentity)
      Creates a repository instance that proxies to the given repository.
      Parameters:
      resolver - manager that the proxied repository is associated with
      proxiedIdentity - id of the proxied repository
  • Method Details

    • setProxiedIdentity

      public final void setProxiedIdentity(String value)
    • getProxiedIdentity

      public String getProxiedIdentity()
    • setRepositoryResolver

      public final void setRepositoryResolver(RepositoryResolver resolver)
      Specified by:
      setRepositoryResolver in interface RepositoryResolverClient
    • setDataDir

      public void setDataDir(File dataDir)
      Description copied from interface: Repository
      Set the directory where data and logging for this repository is stored.
      Specified by:
      setDataDir in interface Repository
      Parameters:
      dataDir - the directory where data for this repository is stored
    • getDataDir

      public File getDataDir()
      Description copied from interface: Repository
      Get the directory where data and logging for this repository is stored.
      Specified by:
      getDataDir in interface Repository
      Returns:
      the directory where data for this repository is stored.
    • isWritable

      public boolean isWritable() throws RepositoryException
      Description copied from interface: Repository
      Checks whether this repository is writable, i.e. if the data contained in this repository can be changed. The writability of the repository is determined by the writability of the Sail that this repository operates on.
      Specified by:
      isWritable in interface Repository
      Throws:
      RepositoryException
    • getConnection

      public RepositoryConnection getConnection() throws RepositoryException
      Description copied from interface: Repository
      Opens a connection to this repository that can be used for querying and updating the contents of the repository. Created connections need to be closed to make sure that any resources they keep hold of are released. The best way to do this is to use a try-with-resources block, as follows:
       try (RepositoryConnection conn = repository.getConnection()) {
              // perform operations on the connection
       }
       
      Note that RepositoryConnection is not guaranteed to be thread-safe! The recommended pattern for repository access in a multi-threaded application is to share the Repository object between threads, but have each thread create and use its own RepositoryConnections.
      Specified by:
      getConnection in interface Repository
      Returns:
      A connection that allows operations on this repository.
      Throws:
      RepositoryException - If something went wrong during the creation of the Connection.
    • getValueFactory

      public ValueFactory getValueFactory()
      Description copied from interface: Repository
      Gets a ValueFactory for this Repository.
      Specified by:
      getValueFactory in interface Repository
      Returns:
      A repository-specific ValueFactory.
    • initializeInternal

      protected void initializeInternal() throws RepositoryException
      Specified by:
      initializeInternal in class AbstractRepository
      Throws:
      RepositoryException
    • shutDownInternal

      protected void shutDownInternal() throws RepositoryException
      Specified by:
      shutDownInternal in class AbstractRepository
      Throws:
      RepositoryException