Interface Repository

All Known Implementing Classes:
AbstractRepositoryImpl, CookedLibRepository, DirectoryBasedRepository

public interface Repository
A Repository instance is an abstraction of a set of accessible modules. Repository can be local or remote and are used to procure modules implementation based on constraints like name or version.
  • Method Details

    • getName

      String getName()
      Returns the repository name
      Returns:
      repository name
    • getLocation

      URI getLocation()
      Returns the repository location
      Returns:
      the URI for the repository location
    • find

      ModuleDefinition find(String name, String version)
      Finds and returns a DefaultModuleDefinition instance for a module given the name and version constraints.
      Parameters:
      name - the requested module name
      version - the module version. Can be null if the caller doesn't care about the version.
      Returns:
      a DefaultModuleDefinition or null if not found in this repository.
    • findAll

      Returns a list of all modules available in this repository
      Returns:
      a list of available modules
    • findAll

      List<ModuleDefinition> findAll(String name)
      Finds and returns a list of all the available versions of a module given its name.
      Parameters:
      name - the requested module name
    • initialize

      void initialize() throws IOException
      Initialize the repository for use. This need to be called at least once before any find methods is invoked.
      Throws:
      IOException - if an error occur accessing the repository
    • shutdown

      void shutdown() throws IOException
      Shutdown the repository. After this call return, the find methods cannot be used until initialize() is called again.
      Throws:
      IOException - if an error occur accessing the repository
    • getJarLocations

      List<URI> getJarLocations()
      Returns the plain jar files installed in this repository. Plain jar files are not modules, they do not have the module's metadata and can only be used when referenced from a module dependency list or when added to a class loader directly
      Returns:
      jar files location stored in this repository.
    • addListener

      boolean addListener(RepositoryChangeListener listener)
      Add a listener to changes happening to this repository. Repository can change during the lifetime of an execution (files added/removed/changed)
      Parameters:
      listener - implementation listening to this repository changes
      Returns:
      true if the listener was added successfully
    • removeListener

      boolean removeListener(RepositoryChangeListener listener)
      Removes a previously registered listener
      Parameters:
      listener - the previously registered listener
      Returns:
      true if the listener was successfully unregistered