edu.ucsb.adl.middleware
Class CollectionService

java.lang.Object
  |
  +--edu.ucsb.adl.middleware.CollectionService

public final class CollectionService
extends java.lang.Object

The ADL collection service. Conceptually, this service returns the (XML) collection-level metadata for a collection.

This class reads the following properties from the main middleware configuration file:

collection.gatekeeper.class
The fully-qualified name of the service-level gatekeeper class, e.g., "edu.ucsb.adl.middleware.IPAddressGatekeeper".
collection.gatekeeper.argument
The service-level gatekeeper's startup parameter.
collection_directory
The pathname of the directory in which collection-specific configuration files are stored, e.g., "/export/middleware/config/collections". If the pathname is not absolute, it is interpreted relative to the directory containing the main middleware configuration file.
If the value of the collection_directory property is D, then in loading collection C this class reads the following properties from the collection-specific middleware configuration file D/C/drivers.conf:
collection.driver.class
For collection C, the fully-qualified name of the driver class, e.g., "edu.ucsb.adl.bucket99.CollectionDriver".
collection.driver.gatekeeper.class
For collection C, the fully-qualified name of the driver-level gatekeeper class.
collection.driver.gatekeeper.argument
For collection C, the driver-level gatekeeper's startup parameter.
In all of the above configuration files, property values may be indirectly specified using the notation @P where P is the name of another property (see ExtendedProperties for more information). The main middleware configuration file serves as a properties default for the collection-specific configuration files.

Version:
$Header: /export/home/gjanee/middleware/edu/ucsb/adl/middleware/RCS/CollectionService.java,v 1.5 2004/09/21 23:53:43 gjanee Exp $

$Log: CollectionService.java,v $ Revision 1.5 2004/09/21 23:53:43 gjanee
Minor documentation change.

Revision 1.4 2004/03/05 18:52:05 gjanee
Added support for multiple middleware instances. A middleware instance is represented by a Global object that is tied to a main middleware configuration file. All service objects now maintain a reference to the appropriate Global object. Instance-wide variables formerly coded as class variables are now held by the Global object; various methods that return instance-wide variables now accept a Global object as an argument. The Global object is now passed to all service drivers.

Revision 1.3 2002/09/28 20:29:45 gjanee
Configuration file renames. Renamed the collection-specific configuration file to drivers.conf.

Revision 1.2 2001/08/16 22:22:19 gjanee
Switched to the new configuration file structure. In the new structure, an entirely collection-independent "main" configuration file refers to a directory of subdirectories, one subdirectory per collection; each subdirectory holds a collection-specific middleware configuration file in addition to any configuration files required by the collection driver. Also, added support for dynamic collection loading/unloading. Collection drivers are now loaded on demand. The unloadCollection method unloads a driver.

Revision 1.1 2000/04/04 22:12:40 gjanee
Initial revision

Author:
Greg Janée
Alexandria Digital Library

Method Summary
static edu.ucsb.adl.middleware.CollectionService createService(java.lang.String configurationFile)
          Creates a CollectionService.
 void destroy()
          Decrements the reference count.
 java.lang.String performCollectionService(javax.servlet.ServletRequest request, java.lang.String collection)
          Performs the ADL collection service.
 void unloadCollection(java.lang.String collection)
          Unloads a collection (i.e., the driver and gatekeeper for a collection) from the service.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

createService

public static edu.ucsb.adl.middleware.CollectionService createService(java.lang.String configurationFile)
                                                               throws InternalErrorException
Creates a CollectionService. If a service already exists for the configuration file, the extant service's reference count is incremented and it is returned instead.

Parameters:
configurationFile - The filename of a main middleware configuration file.
Throws:
InternalErrorException - If the initialization of the service fails.

performCollectionService

public java.lang.String performCollectionService(javax.servlet.ServletRequest request,
                                                 java.lang.String collection)
                                          throws MiddlewareException
Performs the ADL collection service. This method is multithread-safe.

Parameters:
request - The full request.
collection - The collection name, e.g., "adl_catalog".
Returns:
An XML document that is well-formed and valid according to the appropriate DTD.
Throws:
BadRequestException - If either of the arguments is invalid.
NoAuthorizationException - If the request is valid but not allowed.
InternalErrorException - If the request cannot otherwise be completed.
MiddlewareException

unloadCollection

public void unloadCollection(java.lang.String collection)
Unloads a collection (i.e., the driver and gatekeeper for a collection) from the service. If the collection has not yet been loaded or has already been unloaded, this method does nothing.

Parameters:
collection - The name of the collection, e.g., "adl_catalog".

destroy

public void destroy()
Decrements the reference count. When the reference count drops to zero, all resources held by the service are freed.