org.fcrepo.server
Class Server

java.lang.Object
  extended by org.fcrepo.server.Parameterized
      extended by org.fcrepo.server.Pluggable
          extended by org.fcrepo.server.Server
All Implemented Interfaces:
Constants, org.springframework.beans.factory.BeanFactory, org.springframework.beans.factory.ListableBeanFactory, org.springframework.beans.factory.support.BeanDefinitionRegistry, org.springframework.context.ApplicationContextAware, org.springframework.core.AliasRegistry
Direct Known Subclasses:
BasicServer, RebuildServer

public abstract class Server
extends Pluggable
implements org.springframework.context.ApplicationContextAware, org.springframework.beans.factory.support.BeanDefinitionRegistry, org.springframework.beans.factory.ListableBeanFactory

The starting point for working with a Fedora repository. This class handles loading, starting, and stopping modules (the module lifecycle), and provides access to core constants.

Author:
Chris Wilper

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.fcrepo.common.Constants
Constants.FedoraHome
 
Field Summary
static String BIN_DIR
          The directory where server executables are stored, relative to home.
static String BUILD_DATE
          The build date of this release.
static String CONFIG_ATTRIBUTE_CLASS
          The configuration file's class-specifying attribute for server and module elements.
static String CONFIG_ATTRIBUTE_ID
          The configuration file datastore element's id attribute.
static String CONFIG_ATTRIBUTE_NAME
          The configuration file param element's name attribute.
static String CONFIG_ATTRIBUTE_ROLE
          The configuration file's role-specifying attribute for module elements.
static String CONFIG_ATTRIBUTE_VALUE
          The configuration file param element's value attribute.
static String CONFIG_DIR
          The directory where server configuration is stored, relative to home.
static String CONFIG_ELEMENT_COMMENT
          The configuration file comment element's name.
static String CONFIG_ELEMENT_DATASTORE
          The configuration file datastore element's name.
static String CONFIG_ELEMENT_MODULE
          The configuration file module element's name.
static String CONFIG_ELEMENT_PARAM
          The configuration file param element's name.
static String CONFIG_ELEMENT_ROOT
          The configuration file root element's name.
static String CONFIG_FILE
          The configuration filename.
static String CONFIG_NAMESPACE
          The configuration file elements' namespace.
static String DEFAULT_SERVER_CLASS
          The name of the default Server implementation class
static String EXTENSION_DIR
          The directory where server extensions are stored, relative to home.
static boolean GLOBAL_CHOICE
           
static String HOME_PROPERTY
          The name of the property that tells the server where it's based.
static String INIT_CONFIG_CONFIG_EXAMININGELEMENT
          Tells which config element is being looked at in order to load its parameters into memory.
static String INIT_CONFIG_CONFIG_PARAMETERIS
          Tells the name and value of a parameter loaded from the config file.
static String INIT_CONFIG_SEVERE_BADELEMENT
          Indicates that an invalid element was found in the configuration xml.
static String INIT_CONFIG_SEVERE_BADNAMESPACE
          Indicates that the config file's element's namespace does not match {config.namespace}.
static String INIT_CONFIG_SEVERE_BADROOTELEMENT
          Indicates that the config file has a mis-named root element.
static String INIT_CONFIG_SEVERE_INCOMPLETEPARAM
          Indicates that a parameter element in the config file is missing a required element.
static String INIT_CONFIG_SEVERE_MALFORMEDXML
          Indicates that the config file has malformed XML.
static String INIT_CONFIG_SEVERE_NOCLASSGIVEN
          Indicates that a module element in the server configuration did not specify an implementing class, but should.
static String INIT_CONFIG_SEVERE_NOIDGIVEN
          Indicates that a CONFIG_ELEMENT_DATASTORE didn't specify the required CONFIG_ATTRIBUTE_ID.
static String INIT_CONFIG_SEVERE_NOROLEGIVEN
          Indicates that a module element in the server configuration did not specify a role, but should.
static String INIT_CONFIG_SEVERE_REASSIGNMENT
          Indicates that an attribute of an element was assigned the same value as a previously specified element's attribute, and that this constitutes a disallowed reassignment.
static String INIT_CONFIG_SEVERE_UNREADABLE
          Indicates that the config file could not be read.
static String INIT_LOG_WARNING_CANTWRITESTARTUPLOG
          Indicates that the startup log could not be written to its usual place for some reason, and that we're falling back to stderr.
static String INIT_MODULE_SEVERE_BADARGS
          Indicates that the module class constructor was invoked improperly due to programmer error.
static String INIT_MODULE_SEVERE_CLASSNOTFOUND
          Indicates that the module class could not be found.
static String INIT_MODULE_SEVERE_ILLEGALACCESS
          Indicates that the module class couldn't be accessed due to security misconfiguration.
static String INIT_MODULE_SEVERE_ISABSTRACT
          Indicates that the module class was abstract, but shouldn't be.
static String INIT_MODULE_SEVERE_MISSINGCONSTRUCTOR
          Indicates that the module class doesn't have a constructor matching Module(Map, Server, String), but needs one.
static String INIT_MODULE_SEVERE_UNFULFILLEDROLE
           
static String INIT_SERVER_SEVERE_BADARGS
          Indicates that the server class constructor was invoked improperly due to programmer error.
static String INIT_SERVER_SEVERE_CLASSNOTFOUND
          Indicates that the server class could not be found.
static String INIT_SERVER_SEVERE_ILLEGALACCESS
          Indicates that the server class couldn't be accessed due to security misconfiguration.
static String INIT_SERVER_SEVERE_ISABSTRACT
          Indicates that the server class was abstract, but shouldn't be.
static String INIT_SERVER_SEVERE_MISSINGCONSTRUCTOR
          Indicates that the server class doesn't have a constructor matching Server(NodeList, File), but needs one.
static String INIT_SERVER_SEVERE_UNFULFILLEDROLE
          Indicates that a module role required to be fulfilled by this server was not fulfilled because the configuration did not specify a module with that role.
static String INIT_XMLPARSER_SEVERE_MISSING
          Indicates that an XML parser could not be found.
static String LOG_STARTUP_FILE
          The startup log file.
protected  Set<String> m_loadedModuleRoles
          Deprecated. 
protected  Map<String,Module> m_loadedModules
          Deprecated. 
static String MODULE_CONSTRUCTOR_PARAM1_CLASS
          The required module constructor's first parameter's class.
static String MODULE_CONSTRUCTOR_PARAM2_CLASS
          The required module constructor's second parameter's class.
static String MODULE_CONSTRUCTOR_PARAM3_CLASS
          The required module constructor's third parameter's class.
static String NAMESPACE_PREFIX
          The prefix to all fedora-defined namespaces for this version.
protected static Map<File,Server> s_instances
          Holds an instance of a Server for each distinct File given as a parameter to getInstance(...)
static String SERVER_CONSTRUCTOR_PARAM1_CLASS
          The required server constructor's first parameter's class.
static String SERVER_CONSTRUCTOR_PARAM2_CLASS
          The required server constructor's second parameter's class.
static String SPRING_DIR
          The directory where Spring configurations are stored, relative to CONFIG_DIR.
static String STORAGE_FORMAT
          The internal XML storage format for digital objects
static boolean USE_CACHE
           
static boolean USE_DEFINITIVE_STORE
           
static String VERSION
          The version of this release.
 
Fields inherited from interface org.springframework.beans.factory.BeanFactory
FACTORY_BEAN_PREFIX
 
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, FEDORA_REPOSITORY_PID, 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, XACML1, XACML1_ACTION, XACML1_POLICY, XACML1_RESOURCE, XACML1_SUBJECT, XACML2_POLICY_SCHEMA, XLINK, XML_XSD, XMLNS, XSI
 
Constructor Summary
protected Server(Element rootConfigElement, File homeDir)
          Initializes the Server based on configuration.
protected Server(File homeDir)
          This constructor is a compatibility bridge to allow the getInstance factory method to be used by Spring contexts
protected Server(Map<String,String> params, File homeDir)
          Initializes the Server from a Map of Strings (as per Module)
 
Method Summary
 boolean containsBean(String name)
           
 boolean containsBeanDefinition(String beanName)
           
protected static org.springframework.beans.factory.support.GenericBeanDefinition createDatastoreConfigurationBeanDefinition(String id)
           
protected static org.springframework.beans.factory.support.GenericBeanDefinition createModuleBeanDefinition(String className, Map<String,String> params, String role)
          Generates Spring Bean definitions for Fedora Modules.
protected static org.springframework.beans.factory.support.GenericBeanDefinition createModuleConfigurationBeanDefinition(String role)
           
 Iterator<String> datastoreConfigIds()
           
 void finalize()
          Calls shutdown() when finalization occurs.
<T extends Annotation>
T
findAnnotationOnBean(String beanName, Class<T> annotationType)
           
 String[] getAliases(String name)
           
<T> T
getBean(Class<T> requiredType)
           
 Object getBean(String name)
           
<T> T
getBean(String name, Class<T> type)
           
 Object getBean(String name, Object... args)
           
 org.springframework.beans.factory.config.BeanDefinition getBeanDefinition(String beanName)
           
 int getBeanDefinitionCount()
           
 String[] getBeanDefinitionNames()
           
 String[] getBeanNamesForType(Class type)
           
 String[] getBeanNamesForType(Class type, boolean includeNonSingletons, boolean allowEagerInit)
           
<T> Map<String,T>
getBeansOfType(Class<T> type)
           
<T> Map<String,T>
getBeansOfType(Class<T> type, boolean includeNonSingletons, boolean allowEagerInit)
           
 Map<String,Object> getBeansWithAnnotation(Class<? extends Annotation> annotationType)
           
static ServerConfiguration getConfig()
          Gets the server configuration.
static Element getConfigElement(File homeDir)
           
 String getConfigSummary()
           
static Date getCurrentDate(Context context)
          Get the current date from the context.
 DatastoreConfig getDatastoreConfig(String id)
          Gets a DatastoreConfig.
protected  org.springframework.context.support.AbstractApplicationContext getDefaultContext()
           
 File getHomeDir()
          Gets the server's home directory; this is typically the 'server' subdirectory under $FEDORA_HOME.
static Server getInstance(File homeDir)
          Provides an instance of the server specified in the configuration file at homeDir/CONFIG_DIR/CONFIG_FILE, or DEFAULT_SERVER_CLASS if unspecified.
static Server getInstance(File homeDir, boolean okToStart)
           
static Locale getLocale()
           
 Module getModule(String role)
          Gets a loaded Module.
static PID getPID(String pidString)
           
protected static org.springframework.context.annotation.ScannedGenericBeanDefinition getScannedBeanDefinition(String className)
           
protected  org.springframework.beans.factory.config.BeanDefinition getServerBeanDefinition()
           
protected static org.springframework.beans.factory.config.BeanDefinition getServerConfigurationBeanDefinition()
          Provide a generic bean definition if the Server was not created by Spring
 ServerStatusFile getStatusFile()
          Get the status file for the server.
protected static org.springframework.beans.factory.support.GenericBeanDefinition getTriplestoreConnectorBeanDefinition(DatastoreConfiguration tsDC)
           
 Class<?> getType(String name)
           
 File getUploadDir()
          Gets the server's temp file upload directory.
 WebClientConfiguration getWebClientConfig()
          Gets the web client http connection configuration object.
 boolean hasInitialized()
          Tells whether the server (and loaded modules) have initialized.
static boolean hasInstance(File homeDir)
           
 void init()
           
protected  void initServer()
          Performs any server start-up tasks particular to this type of Server.
 boolean isAlias(String beanName)
           
 boolean isBeanNameInUse(String beanName)
           
 boolean isPrototype(String name)
           
 boolean isSingleton(String name)
           
 boolean isTypeMatch(String name, Class targetType)
           
protected  boolean knownBeanDefinition(String beanName)
           
 Iterator<String> loadedModuleRoles()
          Gets an Iterator over the roles that have been loaded.
protected  String overrideModuleClass(String moduleClass)
           
protected  boolean overrideModuleRole(String moduleRole)
           
static PID pidFromFilename(String filename)
           
protected  void postInitServer()
          Second stage of Server initialization.
 void registerAlias(String beanName, String alias)
           
 void registerBeanDefinition(String beanName, org.springframework.beans.factory.config.BeanDefinition beanDefinition)
           
protected  void registerBeanDefinitions()
          Register any implementation-specific bean definitions before the context is refreshed.
 void removeAlias(String alias)
           
 void removeBeanDefinition(String beanName)
           
 void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
           
 void shutdown(Context context)
          Performs shutdown tasks for the modules and the server.
protected  void shutdownServer()
          Performs shutdown tasks for the server itself.
 String status(Context context)
           
 
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, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

USE_CACHE

public static final boolean USE_CACHE
See Also:
Constant Field Values

USE_DEFINITIVE_STORE

public static final boolean USE_DEFINITIVE_STORE
See Also:
Constant Field Values

GLOBAL_CHOICE

public static final boolean GLOBAL_CHOICE
See Also:
Constant Field Values

VERSION

public static String VERSION
The version of this release.


BUILD_DATE

public static String BUILD_DATE
The build date of this release.


HOME_PROPERTY

public static String HOME_PROPERTY
The name of the property that tells the server where it's based.


STORAGE_FORMAT

public static String STORAGE_FORMAT
The internal XML storage format for digital objects


CONFIG_DIR

public static String CONFIG_DIR
The directory where server configuration is stored, relative to home.


SPRING_DIR

public static String SPRING_DIR
The directory where Spring configurations are stored, relative to CONFIG_DIR.


LOG_STARTUP_FILE

public static String LOG_STARTUP_FILE
The startup log file. This file will include all log messages regardless of their Level.


CONFIG_FILE

public static String CONFIG_FILE
The configuration filename.


EXTENSION_DIR

public static String EXTENSION_DIR
The directory where server extensions are stored, relative to home.


BIN_DIR

public static String BIN_DIR
The directory where server executables are stored, relative to home.


NAMESPACE_PREFIX

public static String NAMESPACE_PREFIX
The prefix to all fedora-defined namespaces for this version. 0={version.major}, 1={version.minor}


CONFIG_NAMESPACE

public static String CONFIG_NAMESPACE
The configuration file elements' namespace. 0={namespace.prefix}


CONFIG_ELEMENT_ROOT

public static String CONFIG_ELEMENT_ROOT
The configuration file root element's name.


CONFIG_ELEMENT_COMMENT

public static String CONFIG_ELEMENT_COMMENT
The configuration file comment element's name.


CONFIG_ELEMENT_DATASTORE

public static String CONFIG_ELEMENT_DATASTORE
The configuration file datastore element's name.


CONFIG_ELEMENT_MODULE

public static String CONFIG_ELEMENT_MODULE
The configuration file module element's name.


CONFIG_ELEMENT_PARAM

public static String CONFIG_ELEMENT_PARAM
The configuration file param element's name.


CONFIG_ATTRIBUTE_CLASS

public static String CONFIG_ATTRIBUTE_CLASS
The configuration file's class-specifying attribute for server and module elements.


CONFIG_ATTRIBUTE_ROLE

public static String CONFIG_ATTRIBUTE_ROLE
The configuration file's role-specifying attribute for module elements.


CONFIG_ATTRIBUTE_NAME

public static String CONFIG_ATTRIBUTE_NAME
The configuration file param element's name attribute.


CONFIG_ATTRIBUTE_VALUE

public static String CONFIG_ATTRIBUTE_VALUE
The configuration file param element's value attribute.


CONFIG_ATTRIBUTE_ID

public static String CONFIG_ATTRIBUTE_ID
The configuration file datastore element's id attribute.


SERVER_CONSTRUCTOR_PARAM1_CLASS

public static String SERVER_CONSTRUCTOR_PARAM1_CLASS
The required server constructor's first parameter's class.


SERVER_CONSTRUCTOR_PARAM2_CLASS

public static String SERVER_CONSTRUCTOR_PARAM2_CLASS
The required server constructor's second parameter's class.


MODULE_CONSTRUCTOR_PARAM1_CLASS

public static String MODULE_CONSTRUCTOR_PARAM1_CLASS
The required module constructor's first parameter's class.


MODULE_CONSTRUCTOR_PARAM2_CLASS

public static String MODULE_CONSTRUCTOR_PARAM2_CLASS
The required module constructor's second parameter's class.


MODULE_CONSTRUCTOR_PARAM3_CLASS

public static String MODULE_CONSTRUCTOR_PARAM3_CLASS
The required module constructor's third parameter's class.


DEFAULT_SERVER_CLASS

public static String DEFAULT_SERVER_CLASS
The name of the default Server implementation class


INIT_XMLPARSER_SEVERE_MISSING

public static String INIT_XMLPARSER_SEVERE_MISSING
Indicates that an XML parser could not be found.


INIT_CONFIG_SEVERE_UNREADABLE

public static String INIT_CONFIG_SEVERE_UNREADABLE
Indicates that the config file could not be read. 0=config file full path, 1=additional info from underlying exception


INIT_CONFIG_SEVERE_MALFORMEDXML

public static String INIT_CONFIG_SEVERE_MALFORMEDXML
Indicates that the config file has malformed XML. 0=config file full path, 1=additional info from underlying exception


INIT_CONFIG_SEVERE_BADROOTELEMENT

public static String INIT_CONFIG_SEVERE_BADROOTELEMENT
Indicates that the config file has a mis-named root element. 0=config file full path, 1={config.element.root}, 2=actual root element name


INIT_CONFIG_SEVERE_BADELEMENT

public static String INIT_CONFIG_SEVERE_BADELEMENT
Indicates that an invalid element was found in the configuration xml. 1=the invalid element's name


INIT_CONFIG_SEVERE_NOIDGIVEN

public static String INIT_CONFIG_SEVERE_NOIDGIVEN
Indicates that a CONFIG_ELEMENT_DATASTORE didn't specify the required CONFIG_ATTRIBUTE_ID. 0={config.element.datastore}, 1={config.attribute.id}


INIT_CONFIG_SEVERE_BADNAMESPACE

public static String INIT_CONFIG_SEVERE_BADNAMESPACE
Indicates that the config file's element's namespace does not match {config.namespace}. 0=config file full path, 1={config.namespace}


INIT_CONFIG_SEVERE_NOROLEGIVEN

public static String INIT_CONFIG_SEVERE_NOROLEGIVEN
Indicates that a module element in the server configuration did not specify a role, but should. 0={config.element.module}, 1={config.attribute.role}


INIT_CONFIG_SEVERE_NOCLASSGIVEN

public static String INIT_CONFIG_SEVERE_NOCLASSGIVEN
Indicates that a module element in the server configuration did not specify an implementing class, but should. 0={config.element.module}, 1={config.attribute.class}


INIT_CONFIG_SEVERE_REASSIGNMENT

public static String INIT_CONFIG_SEVERE_REASSIGNMENT
Indicates that an attribute of an element was assigned the same value as a previously specified element's attribute, and that this constitutes a disallowed reassignment. 0=the common element, 1=the common attribute's name, 2=the common attribute's value.


INIT_CONFIG_SEVERE_INCOMPLETEPARAM

public static String INIT_CONFIG_SEVERE_INCOMPLETEPARAM
Indicates that a parameter element in the config file is missing a required element. 0={config.element.param}, 1={config.attribute.name}, 2={config.attribute.value}


INIT_CONFIG_CONFIG_EXAMININGELEMENT

public static String INIT_CONFIG_CONFIG_EXAMININGELEMENT
Tells which config element is being looked at in order to load its parameters into memory. 0=name of element being examined, 1=distinguishing attribute (name="value"), or empty string if no distinguishing attribute.


INIT_CONFIG_CONFIG_PARAMETERIS

public static String INIT_CONFIG_CONFIG_PARAMETERIS
Tells the name and value of a parameter loaded from the config file. 0=param name, 1=param value


INIT_SERVER_SEVERE_CLASSNOTFOUND

public static String INIT_SERVER_SEVERE_CLASSNOTFOUND
Indicates that the server class could not be found. 0=server class specified in config root element


INIT_SERVER_SEVERE_ILLEGALACCESS

public static String INIT_SERVER_SEVERE_ILLEGALACCESS
Indicates that the server class couldn't be accessed due to security misconfiguration. 0=server class specified in config root element


INIT_SERVER_SEVERE_BADARGS

public static String INIT_SERVER_SEVERE_BADARGS
Indicates that the server class constructor was invoked improperly due to programmer error. 0=server class specified in config root element


INIT_SERVER_SEVERE_MISSINGCONSTRUCTOR

public static String INIT_SERVER_SEVERE_MISSINGCONSTRUCTOR
Indicates that the server class doesn't have a constructor matching Server(NodeList, File), but needs one. 0=server class specified in config root element.


INIT_SERVER_SEVERE_UNFULFILLEDROLE

public static String INIT_SERVER_SEVERE_UNFULFILLEDROLE
Indicates that a module role required to be fulfilled by this server was not fulfilled because the configuration did not specify a module with that role. 0=the role


INIT_MODULE_SEVERE_UNFULFILLEDROLE

public static String INIT_MODULE_SEVERE_UNFULFILLEDROLE

INIT_SERVER_SEVERE_ISABSTRACT

public static String INIT_SERVER_SEVERE_ISABSTRACT
Indicates that the server class was abstract, but shouldn't be. 0=server class specified in config root element


INIT_MODULE_SEVERE_CLASSNOTFOUND

public static String INIT_MODULE_SEVERE_CLASSNOTFOUND
Indicates that the module class could not be found. 0=module class specified in config


INIT_MODULE_SEVERE_ILLEGALACCESS

public static String INIT_MODULE_SEVERE_ILLEGALACCESS
Indicates that the module class couldn't be accessed due to security misconfiguration. 0=module class specified in config


INIT_MODULE_SEVERE_BADARGS

public static String INIT_MODULE_SEVERE_BADARGS
Indicates that the module class constructor was invoked improperly due to programmer error. 0=module class specified in config


INIT_MODULE_SEVERE_MISSINGCONSTRUCTOR

public static String INIT_MODULE_SEVERE_MISSINGCONSTRUCTOR
Indicates that the module class doesn't have a constructor matching Module(Map, Server, String), but needs one. 0=module class specified in config


INIT_MODULE_SEVERE_ISABSTRACT

public static String INIT_MODULE_SEVERE_ISABSTRACT
Indicates that the module class was abstract, but shouldn't be. 0=module class specified in config


INIT_LOG_WARNING_CANTWRITESTARTUPLOG

public static String INIT_LOG_WARNING_CANTWRITESTARTUPLOG
Indicates that the startup log could not be written to its usual place for some reason, and that we're falling back to stderr. 0=usual place, 1=exception message


s_instances

protected static Map<File,Server> s_instances
Holds an instance of a Server for each distinct File given as a parameter to getInstance(...)


m_loadedModules

@Deprecated
protected Map<String,Module> m_loadedModules
Deprecated. 
Modules that have been loaded.


m_loadedModuleRoles

@Deprecated
protected Set<String> m_loadedModuleRoles
Deprecated. 
Constructor Detail

Server

protected Server(Map<String,String> params,
                 File homeDir)
          throws ServerInitializationException,
                 ModuleInitializationException
Initializes the Server from a Map of Strings (as per Module)

Throws:
ServerInitializationException
ModuleInitializationException

Server

protected Server(Element rootConfigElement,
                 File homeDir)
          throws ServerInitializationException,
                 ModuleInitializationException
Initializes the Server based on configuration.

Reads and schema-validates the configuration items in the given DOM NodeList, validates required server params, initializes the Server, then initializes each module, validating its required params, then verifies that the server's required module roles have been met.

Parameters:
rootConfigElement - The root Element of configuration.
homeDir - The home directory of fedora, used to interpret relative paths used in configuration.
Throws:
ServerInitializationException - If there was an error starting the server.
ModuleInitializationException - If there was an error starting a module.

Server

protected Server(File homeDir)
          throws ServerInitializationException,
                 ModuleInitializationException
This constructor is a compatibility bridge to allow the getInstance factory method to be used by Spring contexts

Parameters:
homeDir -
Throws:
ServerInitializationException
ModuleInitializationException
Method Detail

init

public void init()
          throws ServerInitializationException,
                 ModuleInitializationException
Throws:
ServerInitializationException
ModuleInitializationException

getDefaultContext

protected org.springframework.context.support.AbstractApplicationContext getDefaultContext()
                                                                                    throws IOException
Throws:
IOException

setApplicationContext

public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
Specified by:
setApplicationContext in interface org.springframework.context.ApplicationContextAware

getServerBeanDefinition

protected org.springframework.beans.factory.config.BeanDefinition getServerBeanDefinition()

getServerConfigurationBeanDefinition

protected static org.springframework.beans.factory.config.BeanDefinition getServerConfigurationBeanDefinition()
Provide a generic bean definition if the Server was not created by Spring

Returns:

registerBeanDefinition

public void registerBeanDefinition(String beanName,
                                   org.springframework.beans.factory.config.BeanDefinition beanDefinition)
Specified by:
registerBeanDefinition in interface org.springframework.beans.factory.support.BeanDefinitionRegistry

registerBeanDefinitions

protected void registerBeanDefinitions()
                                throws ServerInitializationException
Register any implementation-specific bean definitions before the context is refreshed.

Throws:
ServerInitializationException

getScannedBeanDefinition

protected static org.springframework.context.annotation.ScannedGenericBeanDefinition getScannedBeanDefinition(String className)
                                                                                                       throws IOException
Throws:
IOException

createModuleBeanDefinition

protected static org.springframework.beans.factory.support.GenericBeanDefinition createModuleBeanDefinition(String className,
                                                                                                            Map<String,String> params,
                                                                                                            String role)
                                                                                                     throws IOException
Generates Spring Bean definitions for Fedora Modules. Server param should be unnecessary if autowired.

Parameters:
className -
server -
params -
role -
Returns:
Throws:
IOException

createModuleConfigurationBeanDefinition

protected static org.springframework.beans.factory.support.GenericBeanDefinition createModuleConfigurationBeanDefinition(String role)

createDatastoreConfigurationBeanDefinition

protected static org.springframework.beans.factory.support.GenericBeanDefinition createDatastoreConfigurationBeanDefinition(String id)

getTriplestoreConnectorBeanDefinition

protected static org.springframework.beans.factory.support.GenericBeanDefinition getTriplestoreConnectorBeanDefinition(DatastoreConfiguration tsDC)
                                                                                                                throws IOException
Parameters:
DatastoreConfiguration - tsDC : the datastore configuration intended for the triplestore connector
Returns:
GenericBeanDefinition for the TriplestoreConnector
Throws:
ClassNotFoundException
IOException

getBean

public Object getBean(String name)
               throws org.springframework.beans.BeansException
Specified by:
getBean in interface org.springframework.beans.factory.BeanFactory
Throws:
org.springframework.beans.BeansException

containsBean

public boolean containsBean(String name)
                     throws org.springframework.beans.BeansException
Specified by:
containsBean in interface org.springframework.beans.factory.BeanFactory
Throws:
org.springframework.beans.BeansException

getModule

public final Module getModule(String role)
Gets a loaded Module.

Parameters:
role - The role of the Module to get.
Returns:
The Module, null if not found.

overrideModuleRole

protected boolean overrideModuleRole(String moduleRole)

overrideModuleClass

protected String overrideModuleClass(String moduleClass)

hasInitialized

public final boolean hasInitialized()
Tells whether the server (and loaded modules) have initialized.

This is useful for threaded Modules that need to wait until all initialization has occurred before doing something.

Returns:
whether initialization has completed.

getStatusFile

public ServerStatusFile getStatusFile()
Get the status file for the server. Important messages pertaining to startup and shutdown go here.


hasInstance

public static final boolean hasInstance(File homeDir)

status

public final String status(Context context)
                    throws AuthzException
Throws:
AuthzException

getInstance

public static final Server getInstance(File homeDir,
                                       boolean okToStart)
                                throws ServerInitializationException,
                                       ModuleInitializationException
Throws:
ServerInitializationException
ModuleInitializationException

getConfigElement

public static final Element getConfigElement(File homeDir)
                                      throws ServerInitializationException
Throws:
ServerInitializationException

getInstance

public static final Server getInstance(File homeDir)
                                throws ServerInitializationException,
                                       ModuleInitializationException
Provides an instance of the server specified in the configuration file at homeDir/CONFIG_DIR/CONFIG_FILE, or DEFAULT_SERVER_CLASS if unspecified.

Parameters:
homeDir - The base directory for the server.
Returns:
The instance.
Throws:
ServerInitializationException - If there was an error starting the server.
ModuleInitializationException - If there was an error starting a module.

getHomeDir

public final File getHomeDir()
Gets the server's home directory; this is typically the 'server' subdirectory under $FEDORA_HOME.

Returns:
The directory.

getUploadDir

public File getUploadDir()
Gets the server's temp file upload directory.

Returns:
The directory.

getDatastoreConfig

public final DatastoreConfig getDatastoreConfig(String id)
Gets a DatastoreConfig.

Parameters:
id - The id as given in the server configuration.
Returns:
The DatastoreConfig, null if not found.

datastoreConfigIds

public Iterator<String> datastoreConfigIds()

loadedModuleRoles

public final Iterator<String> loadedModuleRoles()
Gets an Iterator over the roles that have been loaded.

Returns:
(Strings) The roles.

initServer

protected void initServer()
                   throws ServerInitializationException
Performs any server start-up tasks particular to this type of Server.

This is guaranteed to be run before any modules are loaded. The default implementation does nothing.

Throws:
ServerInitializationException - If a severe server startup-related error occurred.

postInitServer

protected void postInitServer()
                       throws ServerInitializationException
Second stage of Server initialization.

This is guaranteed to be run after all Modules have been loaded and all module initialization (initModule() and postInitModule()) has taken place. The default implementation does nothing.

Throws:
ServerInitializationException - If a severe server startup-related error occurred.

shutdown

public final void shutdown(Context context)
                    throws ServerShutdownException,
                           ModuleShutdownException,
                           AuthzException
Performs shutdown tasks for the modules and the server.

All loaded modules' shutdownModule() methods are called, then shutdownServer is called.

How to Ensure Clean Server Shutdown

After having used a Server instance, if you know your program is the only client of the Server in the VM instance, you should make an explicit call to this method so that you can catch and handle its exceptions properly. If you are usure or know that there may be at least one other client of the Server in the VM instance, you should call System.runFinalization() after ensuring you no longer have a reference. In this case, if there is no other reference to the object in the VM, finalization will be called (but you will be unable to catch ShutdownException variants, if thrown).

Right before this is finished, the instance is removed from the server instances map.

Throws:
ServerShutdownException - If a severe server shutdown-related error occurred. USER_REPRESENTED = addName(new XacmlName(this, "subjectRepresented"));
ModuleShutdownException - If a severe module shutdown-related error occurred.
AuthzException

shutdownServer

protected void shutdownServer()
                       throws ServerShutdownException
Performs shutdown tasks for the server itself. This should be written so that system resources are always freed, regardless of whether there is an error. If an error occurs, it should be thrown as a ServerShutdownException after attempts to free every resource have been made.

Throws:
ServerShutdownException - If a severe server shutdown-related error occurred.

finalize

public final void finalize()
                    throws ServerShutdownException,
                           ModuleShutdownException
Calls shutdown() when finalization occurs.

Overrides:
finalize in class Object
Throws:
ServerShutdownException - If a severe server shutdown-related error occurred.
ModuleShutdownException - If a severe module shutdown-related error occurred.

getLocale

public static final Locale getLocale()

getConfigSummary

public String getConfigSummary()

getPID

public static PID getPID(String pidString)
                  throws MalformedPidException
Throws:
MalformedPidException

pidFromFilename

public static PID pidFromFilename(String filename)
                           throws MalformedPidException
Throws:
MalformedPidException

getCurrentDate

public static Date getCurrentDate(Context context)
                           throws GeneralException
Get the current date from the context. If the context doesn't specify a value for the current date, or the specified value cannot be parsed as an ISO8601 date string, a GeneralException will be thrown.

Throws:
GeneralException

getConfig

public static ServerConfiguration getConfig()
Gets the server configuration.

Returns:
the server configuration.

getWebClientConfig

public WebClientConfiguration getWebClientConfig()
Gets the web client http connection configuration object.

Returns:
the web client http connection configuration

knownBeanDefinition

protected boolean knownBeanDefinition(String beanName)

containsBeanDefinition

public boolean containsBeanDefinition(String beanName)
Specified by:
containsBeanDefinition in interface org.springframework.beans.factory.ListableBeanFactory
Specified by:
containsBeanDefinition in interface org.springframework.beans.factory.support.BeanDefinitionRegistry

getBeanDefinition

public org.springframework.beans.factory.config.BeanDefinition getBeanDefinition(String beanName)
                                                                          throws org.springframework.beans.factory.NoSuchBeanDefinitionException
Specified by:
getBeanDefinition in interface org.springframework.beans.factory.support.BeanDefinitionRegistry
Throws:
org.springframework.beans.factory.NoSuchBeanDefinitionException

getBeanDefinitionCount

public int getBeanDefinitionCount()
Specified by:
getBeanDefinitionCount in interface org.springframework.beans.factory.ListableBeanFactory
Specified by:
getBeanDefinitionCount in interface org.springframework.beans.factory.support.BeanDefinitionRegistry

getBeanDefinitionNames

public String[] getBeanDefinitionNames()
Specified by:
getBeanDefinitionNames in interface org.springframework.beans.factory.ListableBeanFactory
Specified by:
getBeanDefinitionNames in interface org.springframework.beans.factory.support.BeanDefinitionRegistry

isBeanNameInUse

public boolean isBeanNameInUse(String beanName)
Specified by:
isBeanNameInUse in interface org.springframework.beans.factory.support.BeanDefinitionRegistry

removeBeanDefinition

public void removeBeanDefinition(String beanName)
                          throws org.springframework.beans.factory.NoSuchBeanDefinitionException
Specified by:
removeBeanDefinition in interface org.springframework.beans.factory.support.BeanDefinitionRegistry
Throws:
org.springframework.beans.factory.NoSuchBeanDefinitionException

getAliases

public String[] getAliases(String name)
Specified by:
getAliases in interface org.springframework.beans.factory.BeanFactory
Specified by:
getAliases in interface org.springframework.core.AliasRegistry

isAlias

public boolean isAlias(String beanName)
Specified by:
isAlias in interface org.springframework.core.AliasRegistry

registerAlias

public void registerAlias(String beanName,
                          String alias)
Specified by:
registerAlias in interface org.springframework.core.AliasRegistry

removeAlias

public void removeAlias(String alias)
Specified by:
removeAlias in interface org.springframework.core.AliasRegistry

getBeanNamesForType

public String[] getBeanNamesForType(Class type)
Specified by:
getBeanNamesForType in interface org.springframework.beans.factory.ListableBeanFactory

getBeanNamesForType

public String[] getBeanNamesForType(Class type,
                                    boolean includeNonSingletons,
                                    boolean allowEagerInit)
Specified by:
getBeanNamesForType in interface org.springframework.beans.factory.ListableBeanFactory

getBeansOfType

public <T> Map<String,T> getBeansOfType(Class<T> type)
                             throws org.springframework.beans.BeansException
Specified by:
getBeansOfType in interface org.springframework.beans.factory.ListableBeanFactory
Throws:
org.springframework.beans.BeansException

getBeansOfType

public <T> Map<String,T> getBeansOfType(Class<T> type,
                                        boolean includeNonSingletons,
                                        boolean allowEagerInit)
                             throws org.springframework.beans.BeansException
Specified by:
getBeansOfType in interface org.springframework.beans.factory.ListableBeanFactory
Throws:
org.springframework.beans.BeansException

getBean

public <T> T getBean(String name,
                     Class<T> type)
          throws org.springframework.beans.BeansException
Specified by:
getBean in interface org.springframework.beans.factory.BeanFactory
Throws:
org.springframework.beans.BeansException

getBean

public <T> T getBean(Class<T> requiredType)
          throws org.springframework.beans.BeansException
Specified by:
getBean in interface org.springframework.beans.factory.BeanFactory
Throws:
org.springframework.beans.BeansException

getBean

public Object getBean(String name,
                      Object... args)
               throws org.springframework.beans.BeansException
Specified by:
getBean in interface org.springframework.beans.factory.BeanFactory
Throws:
org.springframework.beans.BeansException

getType

public Class<?> getType(String name)
                 throws org.springframework.beans.factory.NoSuchBeanDefinitionException
Specified by:
getType in interface org.springframework.beans.factory.BeanFactory
Throws:
org.springframework.beans.factory.NoSuchBeanDefinitionException

isPrototype

public boolean isPrototype(String name)
                    throws org.springframework.beans.factory.NoSuchBeanDefinitionException
Specified by:
isPrototype in interface org.springframework.beans.factory.BeanFactory
Throws:
org.springframework.beans.factory.NoSuchBeanDefinitionException

isSingleton

public boolean isSingleton(String name)
                    throws org.springframework.beans.factory.NoSuchBeanDefinitionException
Specified by:
isSingleton in interface org.springframework.beans.factory.BeanFactory
Throws:
org.springframework.beans.factory.NoSuchBeanDefinitionException

isTypeMatch

public boolean isTypeMatch(String name,
                           Class targetType)
                    throws org.springframework.beans.factory.NoSuchBeanDefinitionException
Specified by:
isTypeMatch in interface org.springframework.beans.factory.BeanFactory
Throws:
org.springframework.beans.factory.NoSuchBeanDefinitionException

getBeansWithAnnotation

public Map<String,Object> getBeansWithAnnotation(Class<? extends Annotation> annotationType)
                                          throws org.springframework.beans.BeansException
Specified by:
getBeansWithAnnotation in interface org.springframework.beans.factory.ListableBeanFactory
Throws:
org.springframework.beans.BeansException

findAnnotationOnBean

public <T extends Annotation> T findAnnotationOnBean(String beanName,
                                                     Class<T> annotationType)
Specified by:
findAnnotationOnBean in interface org.springframework.beans.factory.ListableBeanFactory


Copyright © 2012 DuraSpace. All Rights Reserved.