use of digilib.meta.DirMeta in project digilib by robcast.
the class DigilibServletConfiguration method configure.
/*
* (non-Javadoc)
*
* @see digilib.conf.DigilibConfiguration#configure()
*/
@SuppressWarnings("unchecked")
public void configure(ServletContext context) {
DigilibServletConfiguration config = this;
super.configure();
/*
* configure factories
*/
try {
// initialise MetaFactory
Class<FileMeta> fileMetaClass = (Class<FileMeta>) Class.forName(config.getAsString("filemeta-class"));
config.setValue("servlet.filemeta.class", fileMetaClass);
MetaFactory.setFileMetaClass(fileMetaClass);
Class<DirMeta> dirMetaClass = (Class<DirMeta>) Class.forName(config.getAsString("dirmeta-class"));
config.setValue("servlet.dirmeta.class", dirMetaClass);
MetaFactory.setDirMetaClass(dirMetaClass);
} catch (ClassNotFoundException e) {
logger.error("Error setting Metadata classes!");
}
if (config.getAsBoolean("use-authorization")) {
try {
// initialise AuthnOpsFactory
Class<AuthnOps> authnOpsClass = (Class<AuthnOps>) Class.forName(config.getAsString("authnops-class"));
config.setValue("servlet.authnops.class", authnOpsClass);
AuthnOpsFactory.setAuthnOpsClass(authnOpsClass);
} catch (ClassNotFoundException e) {
logger.error("Error setting AuthnOps class!");
}
try {
// initialise AuthzOpsFactory
Class<AuthzOps> authzOpsClass = (Class<AuthzOps>) Class.forName(config.getAsString("authzops-class"));
config.setValue("servlet.authzops.class", authzOpsClass);
AuthzOpsFactory.setAuthzOpsClass(authzOpsClass);
} catch (ClassNotFoundException e) {
logger.error("Error setting AuthzOps class!");
}
}
try {
// initialise DocuDirectoryFactory
Class<DocuDirectory> docuDirectoryClass = (Class<DocuDirectory>) Class.forName(config.getAsString("docudirectory-class"));
config.setValue("servlet.docudirectory.class", docuDirectoryClass);
DocuDirectoryFactory.setDocuDirectoryClass(docuDirectoryClass);
DocuDirectoryFactory.setDigilibConfig(this);
} catch (ClassNotFoundException e) {
logger.error("Error setting DocuDirectory class!");
}
/*
* configure singletons
*/
// set up the logger
File logConf = ServletOps.getConfigFile((File) config.getValue("log-config-file"), context);
if (logConf != null && logConf.canRead()) {
DOMConfigurator.configure(logConf.getAbsolutePath());
config.setValue("log-config-file", logConf);
}
// say hello in the log file
logger.info("***** Digital Image Library Configuration (version " + getVersion() + ") *****");
try {
// directory cache
DocuDirCache dirCache;
if (config.getAsBoolean("use-mapping")) {
// with mapping file
File mapConf = ServletOps.getConfigFile((File) config.getValue("mapping-file"), context);
dirCache = new AliasingDocuDirCache(FileClass.IMAGE, mapConf, config);
config.setValue("mapping-file", mapConf);
} else {
// without mapping
dirCache = new DocuDirCache(FileClass.IMAGE, this);
}
config.setValue(DIR_CACHE_KEY, dirCache);
// useAuthorization
if (config.getAsBoolean("use-authorization")) {
// set auth config file
File authConf = ServletOps.getConfigFile((File) config.getValue("auth-file"), context);
config.setValue("auth-file", authConf);
// initialise AuthnOps
AuthnOps authnOps = AuthnOpsFactory.getAuthnOpsInstance();
authnOps.init(this);
config.setValue(AUTHN_OP_KEY, authnOps);
// initialise AuthzOps (requires AuthnOps)
AuthzOps authzOps = AuthzOpsFactory.getAuthzOpsInstance();
authzOps.init(this);
config.setValue(AUTHZ_OP_KEY, authzOps);
}
// digilib worker threads
int nt = config.getAsInt("worker-threads");
int mt = config.getAsInt("max-waiting-threads");
DigilibJobCenter<DocuImage> imageExecutor = new DigilibJobCenter<DocuImage>(nt, mt, false, IMAGEEXECUTOR_KEY);
config.setValue(IMAGEEXECUTOR_KEY, imageExecutor);
/*
* set as the servlets main config
*/
setContextConfig(context);
} catch (Exception e) {
logger.error("Error configuring digilib servlet:", e);
}
}
Aggregations