org.fcrepo.server.access
Class DynamicAccessModule

java.lang.Object
  extended by org.fcrepo.server.Parameterized
      extended by org.fcrepo.server.Pluggable
          extended by org.fcrepo.server.Module
              extended by org.fcrepo.server.access.DynamicAccessModule
All Implemented Interfaces:
Constants, Access

public class DynamicAccessModule
extends Module
implements Access

Module Wrapper for DynamicAccessImpl.

The Dynamic Access module will associate dynamic disseminators with a digital object. It will look to the Fedora repository configuration file to obtain a list of dynamic disseminators. Currently, the system supports two types of dynamic disseminators: - Default (SDefPID=fedora-system:3 and SDepPID=fedora-system:4) - Bootstrap (SDefPID=fedora-system:1 and SDepPID=fedora-system:2). The Default disseminator that is associated with every object in the repository. The Default Disseminator endows the objects with a set of basic generic behaviors that enable a simplistic view of the object contents (the Item Index) and a list of all disseminations available on the object (the Dissemination Index). The Bootstrap disseminator is associated with every Service Definition and Service Deployment object. It defines methods to get the special metadata datastreams out of them, and some other methods. (NOTE: The Bootstrap Disseminator functionality is NOT YET IMPLEMENTED.

Author:
Sandy Payette

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.fcrepo.common.Constants
Constants.FedoraHome
 
Field Summary
 
Fields inherited from interface org.fcrepo.common.Constants
ACCESS, ACTION, API, ATOM_APIM1_0, ATOM_ZIP1_1, ATOM1_1, AUDIT, AUDIT1_0, BATCH_MODIFY, BATCH_MODIFY1_1, BE_SECURITY, BE_SECURITY1_0, BINDING_SPEC, DATASTREAM, DC, DISSEMINATOR, DS_COMPOSITE_MODEL, DS_COMPOSITE_MODEL1_0, DS_INPUT_SPEC1_0, DS_INPUT_SPEC1_1, ENVIRONMENT, FCFG, FEDORA, FEDORA_APP_CONTEXT_NAME, FEDORA_DEFAULT_APP_CONTEXT, FEDORA_HOME, FOXML, FOXML1_0, FOXML1_0_LEGACY, FOXML1_1, HTTP_REQUEST, MANAGEMENT, METHOD_MAP, METS, METS_EXT, METS_EXT1_0, METS_EXT1_0_LEGACY, METS_EXT1_1, MODEL, MULGARA, OAI_DC, OAI_DC2_0, OAI_FRIENDS, OAI_FRIENDS2_0, OAI_IDENTIFIER, OAI_IDENTIFIER2_0, OAI_PMH, OAI_PMH2_0, OAI_PROV, OAI_PROV2_0, OBJ_DATASTREAMS1_0, OBJ_HISTORY1_0, OBJ_ITEMS1_0, OBJ_METHODS1_0, OBJ_PROFILE1_0, OBJ_VALIDATION1_0, OBJECT, OLD_XLINK, PID_LIST1_0, RDF, RDF_XSD, RECOVERY, RELS_EXT, RELS_EXT1_0, RELS_INT1_0, REPO_DESC1_0, RESOURCE, SDEF, SDEF_METHOD_MAP1_0, SDEP, SDEP_METHOD_MAP1_0, SDEP_METHOD_MAP1_1, SERVICE_PROFILE, SOAP, SOAP_ENC, SUBJECT, TYPES, VIEW, WSDL, WSDL_HTTP, WSDL_MIME, XACML_POLICY, XACML_POLICY1_0, XLINK, XML_XSD, XMLNS, XSI
 
Constructor Summary
DynamicAccessModule(Map moduleParameters, Server server, String role)
          Creates and initializes the Dynmamic Access Module.
 
Method Summary
 RepositoryInfo describeRepository(Context context)
          Gets information that describes the repository.
 FieldSearchResult findObjects(Context context, String[] resultFields, int maxResults, FieldSearchQuery query)
          Lists the specified fields of each object matching the given criteria.
 MIMETypedStream getDatastreamDissemination(Context context, String PID, String dsID, Date asOfDateTime)
           
 MIMETypedStream getDissemination(Context context, String PID, String sDefPID, String methodName, Property[] userParms, Date asOfDateTime)
          Perform a dissemination for a method that belongs to a dynamic disseminator that is associate with the digital object.
 MethodDef[] getMethods(Context context, String PID, String sDefPID, Date asOfDateTime)
          Get the method defintions for a given dynamic disseminator that is associated with the digital object.
 MIMETypedStream getMethodsXML(Context context, String PID, String sDefPID, Date asOfDateTime)
          Get an XML encoding of the service defintions for a given dynamic disseminator that is associated with the digital object.
 String[] getObjectHistory(Context context, String PID)
          Gets the change history of an object by returning a list of timestamps that correspond to modification dates of components.
 ObjectProfile getObjectProfile(Context context, String PID, Date asOfDateTime)
          Get the profile information for the digital object.
 String[] getServiceDefinitions(Context context, String PID, Date asOfDateTime)
          Get a list of service definition identifiers for dynamic disseminators associated with the digital object.
protected  boolean isDynamicService(Context context, String PID, String sDefPID)
           
 DatastreamDef[] listDatastreams(Context context, String PID, Date asOfDateTime)
           
 ObjectMethodsDef[] listMethods(Context context, String PID, Date asOfDateTime)
          Get the definitions for all dynamic disseminations on the object.
 void postInitModule()
          Second stage of Module initialization.
 FieldSearchResult resumeFindObjects(Context context, String sessionToken)
          Resumes an in-progress listing of object fields.
 
Methods inherited from class org.fcrepo.server.Module
getRole, getServer, initModule, shutdownModule
 
Methods inherited from class org.fcrepo.server.Pluggable
getHelp, getOptionalParameters, getParameterHelp, getRequiredModuleRoles, getRequiredParameters
 
Methods inherited from class org.fcrepo.server.Parameterized
getParameter, getParameter, getParameter, getParameterList, getParameters, getParameters, parameterNames, setParameter, setParameters, setParameters
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DynamicAccessModule

public DynamicAccessModule(Map moduleParameters,
                           Server server,
                           String role)
                    throws ModuleInitializationException
Creates and initializes the Dynmamic Access Module. When the server is starting up, this is invoked as part of the initialization process.

Parameters:
moduleParameters - A pre-loaded Map of name-value pairs comprising the intended configuration of this Module.
server - The Server instance.
role - The role this module fulfills, a java class name.
Throws:
ModuleInitializationException - If initilization values are invalid or initialization fails for some other reason.
Method Detail

postInitModule

public void postInitModule()
                    throws ModuleInitializationException
Description copied from class: Module
Second stage of Module initialization. This is guaranteed to run after all Modules' initModule() methods have run.

Overrides:
postInitModule in class Module
Throws:
ModuleInitializationException - If initialization values are invalid or initialization fails for some other reason.

getServiceDefinitions

public String[] getServiceDefinitions(Context context,
                                      String PID,
                                      Date asOfDateTime)
                               throws ServerException
Get a list of service definition identifiers for dynamic disseminators associated with the digital object.

Parameters:
context -
PID - identifier of digital object being reflected upon
asOfDateTime -
Returns:
an array of service definition PIDs
Throws:
ServerException

getMethods

public MethodDef[] getMethods(Context context,
                              String PID,
                              String sDefPID,
                              Date asOfDateTime)
                       throws ServerException
Get the method defintions for a given dynamic disseminator that is associated with the digital object. The dynamic disseminator is identified by the sDefPID.

Parameters:
context -
PID - identifier of digital object being reflected upon
sDefPID - identifier of dynamic service definition
asOfDateTime -
Returns:
an array of method definitions
Throws:
ServerException

getMethodsXML

public MIMETypedStream getMethodsXML(Context context,
                                     String PID,
                                     String sDefPID,
                                     Date asOfDateTime)
                              throws ServerException
Get an XML encoding of the service defintions for a given dynamic disseminator that is associated with the digital object. The dynamic disseminator is identified by the sDefPID.

Parameters:
context -
PID - identifier of digital object being reflected upon
sDefPID - identifier of dynamic service definition
asOfDateTime -
Returns:
MIME-typed stream containing XML-encoded method definitions
Throws:
ServerException

getDatastreamDissemination

public MIMETypedStream getDatastreamDissemination(Context context,
                                                  String PID,
                                                  String dsID,
                                                  Date asOfDateTime)
                                           throws ServerException
Specified by:
getDatastreamDissemination in interface Access
Throws:
ServerException

getDissemination

public MIMETypedStream getDissemination(Context context,
                                        String PID,
                                        String sDefPID,
                                        String methodName,
                                        Property[] userParms,
                                        Date asOfDateTime)
                                 throws ServerException
Perform a dissemination for a method that belongs to a dynamic disseminator that is associate with the digital object. The method belongs to the dynamic service definition and is implemented by a dynamic Service Deployment (which is an internal service in the repository access subsystem).

Specified by:
getDissemination in interface Access
Parameters:
context -
PID - identifier of the digital object being disseminated
sDefPID - identifier of dynamic Service Definition
methodName -
userParms -
asOfDateTime -
Returns:
a MIME-typed stream containing the dissemination result
Throws:
ServerException

listMethods

public ObjectMethodsDef[] listMethods(Context context,
                                      String PID,
                                      Date asOfDateTime)
                               throws ServerException
Get the definitions for all dynamic disseminations on the object.

This will return the method definitions for all methods for all of the dynamic disseminators associated with the object.

Specified by:
listMethods in interface Access
Parameters:
context -
PID - identifier of digital object being reflected upon
asOfDateTime -
Returns:
an array of object method definitions
Throws:
ServerException

getObjectProfile

public ObjectProfile getObjectProfile(Context context,
                                      String PID,
                                      Date asOfDateTime)
                               throws ServerException
Get the profile information for the digital object. This contain key metadata and URLs for the Dissemination Index and Item Index of the object.

Specified by:
getObjectProfile in interface Access
Parameters:
context -
PID - identifier of digital object being reflected upon
asOfDateTime -
Returns:
an object profile data structure
Throws:
ServerException

findObjects

public FieldSearchResult findObjects(Context context,
                                     String[] resultFields,
                                     int maxResults,
                                     FieldSearchQuery query)
                              throws ServerException
Description copied from interface: Access
Lists the specified fields of each object matching the given criteria.

Specified by:
findObjects in interface Access
Parameters:
context - the context of this request
resultFields - the names of the fields to return
maxResults - the maximum number of results to return at a time
query - the query
Returns:
the specified fields of each object matching the given criteria.
Throws:
ServerException - If any type of error occurred fulfilling the request.

resumeFindObjects

public FieldSearchResult resumeFindObjects(Context context,
                                           String sessionToken)
                                    throws ServerException
Description copied from interface: Access
Resumes an in-progress listing of object fields.

Specified by:
resumeFindObjects in interface Access
Parameters:
context - the context of this request
sessionToken - the token of the session in which the remaining results can be obtained
Returns:
the remaining specified fields of each object matching the given criteria.
Throws:
ServerException - If any type of error occurred fulfilling the request.

describeRepository

public RepositoryInfo describeRepository(Context context)
                                  throws ServerException
Description copied from interface: Access
Gets information that describes the repository.

Specified by:
describeRepository in interface Access
Parameters:
context - the context of this request
Returns:
information that describes the repository.
Throws:
ServerException - If any type of error occurred fulfilling the request.

getObjectHistory

public String[] getObjectHistory(Context context,
                                 String PID)
                          throws ServerException
Description copied from interface: Access
Gets the change history of an object by returning a list of timestamps that correspond to modification dates of components. This currently includes changes to datastreams and disseminators.

Specified by:
getObjectHistory in interface Access
Parameters:
context - The context of this request.
Returns:
An Array containing the list of timestamps indicating when changes were made to the object.
Throws:
ServerException - If any type of error occurred fulfilling the request.

isDynamicService

protected boolean isDynamicService(Context context,
                                   String PID,
                                   String sDefPID)
                            throws ServerException
Throws:
ServerException

listDatastreams

public DatastreamDef[] listDatastreams(Context context,
                                       String PID,
                                       Date asOfDateTime)
                                throws ServerException
Specified by:
listDatastreams in interface Access
Throws:
ServerException


Copyright © 2011 DuraSpace. All Rights Reserved.