Class AbstractRepositoryImpl

    • Field Detail

      • name

        private final java.lang.String name
      • location

        private final java.net.URI location
      • libraries

        private java.util.List<java.net.URI> libraries
    • Constructor Detail

      • AbstractRepositoryImpl

        public AbstractRepositoryImpl​(java.lang.String name,
                                      java.net.URI location)
    • Method Detail

      • getName

        public java.lang.String getName()
        Description copied from interface: Repository
        Returns the repository name
        Specified by:
        getName in interface Repository
        Returns:
        repository name
      • getLocation

        public java.net.URI getLocation()
        Description copied from interface: Repository
        Returns the repository location
        Specified by:
        getLocation in interface Repository
        Returns:
        the URI for the repository location
      • find

        public ModuleDefinition find​(java.lang.String name,
                                     java.lang.String version)
        Description copied from interface: Repository
        Finds and returns a DefaultModuleDefinition instance for a module given the name and version constraints.
        Specified by:
        find in interface Repository
        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

        public java.util.List<ModuleDefinition> findAll()
        Description copied from interface: Repository
        Returns a list of all modules available in this repository
        Specified by:
        findAll in interface Repository
        Returns:
        a list of available modules
      • findAll

        public java.util.List<ModuleDefinition> findAll​(java.lang.String name)
        Description copied from interface: Repository
        Finds and returns a list of all the available versions of a module given its name.
        Specified by:
        findAll in interface Repository
        Parameters:
        name - the requested module name
      • initialize

        public void initialize()
                        throws java.io.IOException
        Description copied from interface: Repository
        Initialize the repository for use. This need to be called at least once before any find methods is invoked.
        Specified by:
        initialize in interface Repository
        Throws:
        java.io.IOException - if an error occur accessing the repository
      • loadModuleDefs

        protected abstract void loadModuleDefs​(java.util.Map<ModuleId,​ModuleDefinition> moduleDefs,
                                               java.util.List<java.net.URI> libraries)
                                        throws java.io.IOException
        Called from initialize() to load all ModuleDefinitions and libraries defintions
        Throws:
        java.io.IOException
      • loadJar

        protected ModuleDefinition loadJar​(java.io.File jar)
                                    throws java.io.IOException
        Loads a jar file and builds a ModuleDefinition.

        The system allows ModuleDefinitions to be built in any way, but in practice module jars need to be built in a way agnostic to Repository implementations (so that same module could be used in different Repositorys), so it makes sense to try to stick to the "common" loading scheme.

        Parameters:
        jar - Either a jar file or a directory that has the same structure as a jar file.
        Throws:
        java.io.IOException
      • addLibrary

        protected void addLibrary​(java.net.URI location)
      • removeLibrary

        protected void removeLibrary​(java.net.URI location)
      • shutdown

        public void shutdown()
                      throws java.io.IOException
        Description copied from interface: Repository
        Shutdown the repository. After this call return, the find methods cannot be used until initialize() is called again.
        Specified by:
        shutdown in interface Repository
        Throws:
        java.io.IOException - if an error occur accessing the repository
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • getJarLocations

        public java.util.List<java.net.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
        Specified by:
        getJarLocations in interface Repository
        Returns:
        jar files location stored in this repository.
      • addListener

        public 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)
        Specified by:
        addListener in interface Repository
        Parameters:
        listener - implementation listening to this repository changes
        Returns:
        true if the listener was added successfully
      • removeListener

        public boolean removeListener​(RepositoryChangeListener listener)
        Removes a previously registered listener
        Specified by:
        removeListener in interface Repository
        Parameters:
        listener - the previously registered listener
        Returns:
        true if the listener was successfully unregistered
      • newModuleDefinition

        protected ModuleDefinition newModuleDefinition​(java.io.File jar,
                                                       java.util.jar.Attributes attr)
                                                throws java.io.IOException
        Extensibility point for subclasses to create a different instance of ModuleDefinition.
        Parameters:
        jar - The module jar file for which ModuleDefinition will be created. Never null.
        Throws:
        java.io.IOException