Class CatalogFactory<C extends Context>
- Type Parameters:
C
- Type of the context associated with this command
- Direct Known Subclasses:
CatalogFactoryBase
CatalogFactory
is a class used to store and retrieve
Catalog
s. The factory allows for a default Catalog
as well as Catalog
s stored with a name key. Follows the
Factory pattern (see GoF).
The base CatalogFactory
implementation also implements
a resolution mechanism which allows lookup of a command based on a single
String which encodes both the catalog and command names.
- Version:
- $Revision$ $Date$
- Author:
- Sean Schofield
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract void
addCatalog
(String name, Catalog<C> catalog) Adds a named instance of Catalog to the factory (for subsequent retrieval later).static void
clear()
Clear all references to registered catalogs, as well as to the relevant class loader.Gets the default instance of Catalog associated with the factory (if any); otherwise, returnnull
.getCatalog
(String name) Retrieves a Catalog instance by name (if any); otherwise returnnull
.getCommand
(String commandID) Return aCommand
based on the given commandID.static <C extends Context>
CatalogFactory<C> Return the singletonCatalogFactory
instance for the relevantClassLoader
.getNames()
abstract void
setCatalog
(Catalog<C> catalog) Sets the default instance of Catalog associated with the factory.
-
Field Details
-
DELIMITER
Values passed to thegetCommand(String)
method should use this as the delimiter between the "catalog" name and the "command" name.- See Also:
-
-
Constructor Details
-
CatalogFactory
public CatalogFactory()The Default-Constructor for this class.
-
-
Method Details
-
getCatalog
Gets the default instance of Catalog associated with the factory (if any); otherwise, returnnull
.- Returns:
- the default Catalog instance
-
setCatalog
Sets the default instance of Catalog associated with the factory.- Parameters:
catalog
- the default Catalog instance
-
getCatalog
Retrieves a Catalog instance by name (if any); otherwise returnnull
.- Parameters:
name
- the name of the Catalog to retrieve- Returns:
- the specified Catalog
-
addCatalog
Adds a named instance of Catalog to the factory (for subsequent retrieval later).- Parameters:
name
- the name of the Catalog to addcatalog
- the Catalog to add
-
getNames
Return anIterator
over the set of namedCatalog
s known to thisCatalogFactory
. If there are no known catalogs, an empty Iterator is returned.- Returns:
- An Iterator of the names of the Catalogs known by this factory.
-
getCommand
Return aCommand
based on the given commandID.At this time, the structure of commandID is relatively simple: if the commandID contains a DELIMITER, treat the segment of the commandID up to (but not including) the DELIMITER as the name of a catalog, and the segment following the DELIMITER as a command name within that catalog. If the commandID contains no DELIMITER, treat the commandID as the name of a command in the default catalog.
To preserve the possibility of future extensions to this lookup mechanism, the DELIMITER string should be considered reserved, and should not be used in command names. commandID values which contain more than one DELIMITER will cause an
IllegalArgumentException
to be thrown.- Type Parameters:
CMD
- the expectedCommand
type to be returned- Parameters:
commandID
- the identifier of the command to return- Returns:
- the command located with commandID, or
null
if either the command name or the catalog name cannot be resolved - Throws:
IllegalArgumentException
- if the commandID contains more than one DELIMITER- Since:
- Chain 1.1
-
getInstance
Return the singletonCatalogFactory
instance for the relevantClassLoader
. For applications that use a thread context class loader (such as web applications running inside a servet container), this will return a separate instance for each application, even if this class is loaded from a shared parent class loader.- Type Parameters:
C
- Type of the context associated with this command- Returns:
- the per-application singleton instance of
CatalogFactory
-
clear
Clear all references to registered catalogs, as well as to the relevant class loader. This method should be called, for example, when a web application utilizing this class is removed from service, to allow for garbage collection.
-