sun.module.repository
Class LocalRepository

java.lang.Object
  extended by java.module.Repository
      extended by sun.module.repository.LocalRepository

public final class LocalRepository
extends Repository

A repository for module definitions stored on the file system.

When the repository is initialized, the source location is interpreted by the LocalRepository instance as a directory where the module definitions are stored in the repository interchange directory.

Since:
1.7.0
Author:
Stanley M. Ho
See Also:
ModuleArchiveInfo, Repository

Constructor Summary
LocalRepository(Repository parent, String name, URL source)
          Creates a new LocalRepository instance.
LocalRepository(Repository parent, String name, URL source, Map<String,String> config)
          Creates a new LocalRepository instance, and initializes it using information from the given config.
LocalRepository(String name, URL source)
          Creates a new LocalRepository instance using the Repository returned by the method getSystemRepository() as the parent repository.
LocalRepository(String name, URL source, Map<String,String> config)
          Creates a new LocalRepository instance using the Repository returned by the method getSystemRepository() as the parent repository.
 
Method Summary
 List<ModuleDefinition> findModuleDefinitions(Query constraint)
          Find all matching module definitions in the repository.
 void initialize(Map<String,String> config)
          Initializes the repository instance using the supplied configuration.
 ModuleArchiveInfo install(URL u)
          Install a module archive with the module definition into the repository.
 boolean isActive()
          Returns whether or not the repository instance is active.
 boolean isReadOnly()
          Returns whether or not this repository is read-only.
 List<ModuleArchiveInfo> list()
          Returns an unmodifiable list of the installed module archives' information in the repository.
 void reload()
          Reload the repository.
 void shutdown()
          Shutdown the repository.
 boolean uninstall(ModuleArchiveInfo m)
          Uninstall a module archive from the repository.
 
Methods inherited from class java.module.Repository
equals, find, find, find, findAll, getBootstrapRepository, getModuleSystem, getName, getParent, getSourceLocation, getSystemRepository, hashCode, initialize, shutdownOnExit, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LocalRepository

public LocalRepository(Repository parent,
                       String name,
                       URL source)
Creates a new LocalRepository instance. Initializes the repository.

If a security manager is present, this method calls the security manager's checkPermission method with a ModuleSystemPermission("createRepository") permission to ensure it's ok to create a repository.

Parameters:
parent - the parent repository for delegation.
name - the repository name.
source - the source location.
Throws:
SecurityException - if a security manager exists and its checkPermission method denies access to create a new instance of repository.

LocalRepository

public LocalRepository(String name,
                       URL source)
Creates a new LocalRepository instance using the Repository returned by the method getSystemRepository() as the parent repository. Initializes the repository.

If a security manager is present, this method calls the security manager's checkPermission method with a ModuleSystemPermission("createRepository") permission to ensure it's ok to create a repository.

Parameters:
name - the repository name.
source - the source location.
Throws:
SecurityException - if a security manager exists and its checkPermission method denies access to create a new instance of repository.

LocalRepository

public LocalRepository(Repository parent,
                       String name,
                       URL source,
                       Map<String,String> config)
                throws IOException
Creates a new LocalRepository instance, and initializes it using information from the given config.

If a security manager is present, this method calls the security manager's checkPermission method with a ModuleSystemPermission("createRepository") permission to ensure it's ok to create a repository.

Parameters:
parent - the parent repository for delegation.
name - the repository name.
source - the source location.
config - Map of configuration names to their values
Throws:
SecurityException - if a security manager exists and its checkPermission method denies access to create a new instance of repository.
IOException - if the repository cannot be initialized.

LocalRepository

public LocalRepository(String name,
                       URL source,
                       Map<String,String> config)
                throws IOException
Creates a new LocalRepository instance using the Repository returned by the method getSystemRepository() as the parent repository. Also initializes the repository using information in the given config.

If a security manager is present, this method calls the security manager's checkPermission method with a ModuleSystemPermission("createRepository") permission to ensure it's ok to create a repository.

Parameters:
name - the repository name.
source - the source location.
config - Map of configuration names to their values
Throws:
SecurityException - if a security manager exists and its checkPermission method denies access to create a new instance of repository.
IOException - if the repository cannot be initialized.
Method Detail

initialize

public void initialize(Map<String,String> config)
                throws IOException
Initializes the repository instance using the supplied configuration. This repository can be configured with this key:

Specified by:
initialize in class Repository
Parameters:
config - - config used to initialize the repository instance.
Throws:
IOException - if an I/O error occurs.

install

public ModuleArchiveInfo install(URL u)
                          throws IOException
Description copied from class: Repository
Install a module archive with the module definition into the repository.

If a security manager is present, this method calls the security manager's checkPermission method with a ModuleSystemPermission("installModuleArchive") permission to ensure it's ok to install a module archive into a repository.

Specified by:
install in class Repository
Parameters:
u - the URL to the module archive.
Returns:
the ModuleArchiveInfo object that represents the installed module archive.
Throws:
IOException - if given URL names a file that does not exist. directory.
See Also:
Repository.install(URL u)

findModuleDefinitions

public List<ModuleDefinition> findModuleDefinitions(Query constraint)
Description copied from class: Repository
Find all matching module definitions in the repository. This method should be overridden by repository implementations for finding matching module definitions, and will be invoked by the find method after checking the parent repository for the requested module definitions.

If this repository instance has not been initialized when this method is called, it will be initialized automatically by calling the initialize method with no argument.

Specified by:
findModuleDefinitions in class Repository
Parameters:
constraint - the constraint.
Returns:
the collection of matching module definitions.

isReadOnly

public boolean isReadOnly()
Description copied from class: Repository
Returns whether or not this repository is read-only.

Specified by:
isReadOnly in class Repository
Returns:
true if this repository is read-only.

reload

public void reload()
            throws IOException
Description copied from class: Repository
Reload the repository. The behavior of this method depends on the implementation.

If a security manager is present, this method calls the security manager's checkPermission method with a ModuleSystemPermission("reloadRepository") permission to ensure it's ok to reload module definitions in a repository.

Specified by:
reload in class Repository
Throws:
IOException - If an error occurs while reloading the module definitions.

uninstall

public boolean uninstall(ModuleArchiveInfo m)
                  throws IOException
Description copied from class: Repository
Uninstall a module archive from the repository.

If a security manager is present, this method calls the security manager's checkPermission method with a ModuleSystemPermission("uninstallModuleArchive") permission to ensure it's ok to uninstall a module archive from a repository.

Specified by:
uninstall in class Repository
Parameters:
m - the module archive to be uninstalled.
Returns:
true if the module archive is found and uninstalled, returns false otherwise.
Throws:
IOException - If an error occurs while uninstalling the module archive.

shutdown

public void shutdown()
              throws IOException
Description copied from class: Repository
Shutdown the repository. If a security manager is present, this method calls the security manager's checkPermission method with a ModuleSystemPermission("shutdownRepository") permission to ensure it's ok to shutdown a repository.

Specified by:
shutdown in class Repository
Throws:
IOException - if an I/O error occurs.

list

public List<ModuleArchiveInfo> list()
Description copied from class: Repository
Returns an unmodifiable list of the installed module archives' information in the repository. The list will contain a snapshot of the installed module archives in the repository at the time of the given invocation of this method.

If a security manager is present, this method calls the security manager's checkPermission method with a ModuleSystemPermission("listModuleArchive") permission to ensure it's ok to return the information of the installed module archives in a repository.

Specified by:
list in class Repository
Returns:
an unmodifiable list of the installed module archives' information.

isActive

public boolean isActive()
Description copied from class: Repository
Returns whether or not the repository instance is active.

A repository instance is active if it has been initialized but has not been shutdown.

Specified by:
isActive in class Repository
Returns:
true if this repository instance is active.