Class AbstractRepositoryImpl
- java.lang.Object
-
- com.sun.enterprise.module.common_impl.AbstractRepositoryImpl
-
- All Implemented Interfaces:
Repository
- Direct Known Subclasses:
DirectoryBasedRepository
public abstract class AbstractRepositoryImpl extends java.lang.Object implements Repository
Partial implementation ofRepository
that statically enumerates allModuleDefinition
upfront.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.List<java.net.URI>
libraries
protected java.util.List<RepositoryChangeListener>
listeners
private java.net.URI
location
private java.util.Map<ModuleId,ModuleDefinition>
moduleDefs
private java.lang.String
name
-
Constructor Summary
Constructors Constructor Description AbstractRepositoryImpl(java.lang.String name, java.net.URI location)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected void
add(ModuleDefinition def)
protected void
addLibrary(java.net.URI location)
boolean
addListener(RepositoryChangeListener listener)
Add a listener to changes happening to this repository.ModuleDefinition
find(java.lang.String name, java.lang.String version)
Finds and returns aDefaultModuleDefinition
instance for a module given the name and version constraints.java.util.List<ModuleDefinition>
findAll()
Returns a list of all modules available in this repositoryjava.util.List<ModuleDefinition>
findAll(java.lang.String name)
Finds and returns a list of all the available versions of a module given its name.java.util.List<java.net.URI>
getJarLocations()
Returns the plain jar files installed in this repository.java.net.URI
getLocation()
Returns the repository locationjava.lang.String
getName()
Returns the repository namevoid
initialize()
Initialize the repository for use.protected ModuleDefinition
loadJar(java.io.File jar)
Loads a jar file and builds aModuleDefinition
.protected abstract void
loadModuleDefs(java.util.Map<ModuleId,ModuleDefinition> moduleDefs, java.util.List<java.net.URI> libraries)
Called frominitialize()
to load allModuleDefinition
s and libraries defintionsprotected ModuleDefinition
newModuleDefinition(java.io.File jar, java.util.jar.Attributes attr)
Extensibility point for subclasses to create a different instance ofModuleDefinition
.protected void
remove(ModuleDefinition def)
protected void
removeLibrary(java.net.URI location)
boolean
removeListener(RepositoryChangeListener listener)
Removes a previously registered listenervoid
shutdown()
Shutdown the repository.java.lang.String
toString()
-
-
-
Field Detail
-
name
private final java.lang.String name
-
location
private final java.net.URI location
-
moduleDefs
private java.util.Map<ModuleId,ModuleDefinition> moduleDefs
-
libraries
private java.util.List<java.net.URI> libraries
-
listeners
protected java.util.List<RepositoryChangeListener> listeners
-
-
Method Detail
-
getName
public java.lang.String getName()
Description copied from interface:Repository
Returns the repository name- Specified by:
getName
in interfaceRepository
- Returns:
- repository name
-
getLocation
public java.net.URI getLocation()
Description copied from interface:Repository
Returns the repository location- Specified by:
getLocation
in interfaceRepository
- 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 aDefaultModuleDefinition
instance for a module given the name and version constraints.- Specified by:
find
in interfaceRepository
- Parameters:
name
- the requested module nameversion
- 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 interfaceRepository
- 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 interfaceRepository
- 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 interfaceRepository
- 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 frominitialize()
to load allModuleDefinition
s 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 aModuleDefinition
.The system allows
ModuleDefinition
s to be built in any way, but in practice module jars need to be built in a way agnostic toRepository
implementations (so that same module could be used in differentRepository
s), 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
-
add
protected void add(ModuleDefinition def)
-
remove
protected void remove(ModuleDefinition def)
-
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 interfaceRepository
- Throws:
java.io.IOException
- if an error occur accessing the repository
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.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 interfaceRepository
- 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 interfaceRepository
- 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 interfaceRepository
- 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 ofModuleDefinition
.- Parameters:
jar
- The module jar file for whichModuleDefinition
will be created. Never null.- Throws:
java.io.IOException
-
-