blob: 4139f5bd66826a4aaf68446e2c056cc5a617cd4a [file] [log] [blame]
package de.ids_mannheim.korap.config;
import de.ids_mannheim.korap.interfaces.EncryptionIface;
import de.ids_mannheim.korap.interfaces.ValidatorIface;
import de.ids_mannheim.korap.interfaces.db.*;
import de.ids_mannheim.korap.interfaces.defaults.ApacheValidator;
import de.ids_mannheim.korap.web.CoreResponseHandler;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.ApplicationContext;
import java.io.IOException;
import java.util.Collection;
/**
* @author hanl
* @date 26/02/2016
*/
public abstract class ContextHolder {
public static final String KUSTVAKT_DB = "kustvakt_db";
public static final String KUSTVAKT_ENCRYPTION = "kustvakt_encryption";
public static final String KUSTVAKT_AUDITING = "kustvakt_auditing";
public static final String KUSTVAKT_CONFIG = "kustvakt_config";
public static final String KUSTVAKT_USERDATA = "kustvakt_userdata";
public static final String KUSTVAKT_RESOURCES = "kustvakt_resources";
public static final String KUSTVAKT_AUTHENTICATION_MANAGER = "kustvakt_authenticationmanager";
public static final String KUSTVAKT_AUTHPROVIDERS = "kustvakt_authproviders";
public static final String KUSTVAKT_USERDB = "kustvakt_userdb";
public static final String KUSTVAKT_ADMINDB = "kustvakt_admindb";
public static final String KUSTVAKT_POLICIES = "kustvakt_policies";
private ApplicationContext context = null;
private DefaultHandler handler;
public ContextHolder (ApplicationContext context) {
this.handler = new DefaultHandler();
this.context = context;
// todo: better method?!
new CoreResponseHandler(getAuditingProvider());
}
protected <T> T getBean (Class<T> clazz) {
if (this.context != null) {
try {
return context.getBean(clazz);
}
catch (NoSuchBeanDefinitionException e) {
// do nothing
}
}
return this.handler.getDefault(clazz);
}
protected <T> T getBean (String name) {
T bean = null;
if (this.context != null) {
try {
bean = (T) context.getBean(name);
}
catch (NoSuchBeanDefinitionException e) {
// do nothing
bean = (T) this.handler.getDefault(name);
}
}
return bean;
}
public AuditingIface getAuditingProvider () {
return (AuditingIface) getBean(KUSTVAKT_AUDITING);
}
public <T extends KustvaktConfiguration> T getConfiguration () {
return (T) getBean(KUSTVAKT_CONFIG);
}
public PersistenceClient getPersistenceClient () {
return getBean(KUSTVAKT_DB);
}
public Collection<UserDataDbIface> getUserDataProviders () {
return getBean(KUSTVAKT_USERDATA);
}
public EncryptionIface getEncryption () {
return getBean(KUSTVAKT_ENCRYPTION);
}
// public AuthenticationManagerIface getAuthenticationManager () {
// return getBean(KUSTVAKT_AUTHENTICATION_MANAGER);
// }
public EntityHandlerIface getUserDBHandler () {
return getBean(KUSTVAKT_USERDB);
}
public AdminHandlerIface getAdminDBHandler () {
return getBean(KUSTVAKT_ADMINDB);
}
public PolicyHandlerIface getPolicyDbProvider () {
Object b = getBean(KUSTVAKT_POLICIES);
return (PolicyHandlerIface) b;
}
// public Collection<AuthenticationIface> getAuthProviders () {
// return getBean(KUSTVAKT_AUTHPROVIDERS);
// }
public Collection<ResourceOperationIface> getResourceProviders () {
return getBean(KUSTVAKT_RESOURCES);
}
public ValidatorIface getValidator() {
try {
return new ApacheValidator();
} catch (IOException e) {
throw new RuntimeException("validator could not be loaded!");
}
}
private void close () {
this.getAuditingProvider().finish();
this.context = null;
}
}