use of org.apache.archiva.redback.configuration.UserConfigurationException in project archiva by apache.
the class DefaultRedbackRuntimeConfigurationAdmin method initialize.
@PostConstruct
@Override
public void initialize() throws UserConfigurationException {
try {
RedbackRuntimeConfiguration redbackRuntimeConfiguration = getRedbackRuntimeConfiguration();
// migrate or not data from redback
if (!redbackRuntimeConfiguration.isMigratedFromRedbackConfiguration()) {
// not migrated so build a new fresh one
redbackRuntimeConfiguration = new RedbackRuntimeConfiguration();
// so migrate if available
String userManagerImpl = //
userConfiguration.getConcatenatedList(//
UserConfigurationKeys.USER_MANAGER_IMPL, DEFAULT_USER_MANAGER_IMPL);
if (StringUtils.isNotEmpty(userManagerImpl)) {
String[] impls = StringUtils.split(userManagerImpl, ',');
for (String impl : impls) {
if (StringUtils.equalsIgnoreCase("jdo", impl)) {
impl = DEFAULT_USER_MANAGER_IMPL;
}
redbackRuntimeConfiguration.getUserManagerImpls().add(impl);
}
} else {
redbackRuntimeConfiguration.getUserManagerImpls().add(DEFAULT_USER_MANAGER_IMPL);
}
String rbacManagerImpls = //
userConfiguration.getConcatenatedList(//
UserConfigurationKeys.RBAC_MANAGER_IMPL, DEFAULT_RBAC_MANAGER_IMPL);
if (StringUtils.isNotEmpty(rbacManagerImpls)) {
String[] impls = StringUtils.split(rbacManagerImpls, ',');
for (String impl : impls) {
if (StringUtils.equalsIgnoreCase("jdo", impl)) {
impl = DEFAULT_RBAC_MANAGER_IMPL;
}
redbackRuntimeConfiguration.getRbacManagerImpls().add(impl);
}
} else {
redbackRuntimeConfiguration.getRbacManagerImpls().add(DEFAULT_RBAC_MANAGER_IMPL);
}
// now ldap
LdapConfiguration ldapConfiguration = redbackRuntimeConfiguration.getLdapConfiguration();
if (ldapConfiguration == null) {
ldapConfiguration = new LdapConfiguration();
redbackRuntimeConfiguration.setLdapConfiguration(ldapConfiguration);
}
ldapConfiguration.setHostName(userConfiguration.getString(UserConfigurationKeys.LDAP_HOSTNAME, null));
ldapConfiguration.setPort(userConfiguration.getInt(UserConfigurationKeys.LDAP_PORT, -1));
ldapConfiguration.setSsl(userConfiguration.getBoolean(UserConfigurationKeys.LDAP_SSL, false));
ldapConfiguration.setBaseDn(userConfiguration.getConcatenatedList(UserConfigurationKeys.LDAP_BASEDN, null));
ldapConfiguration.setBaseGroupsDn(userConfiguration.getConcatenatedList(UserConfigurationKeys.LDAP_GROUPS_BASEDN, ldapConfiguration.getBaseDn()));
ldapConfiguration.setContextFactory(userConfiguration.getString(UserConfigurationKeys.LDAP_CONTEX_FACTORY, isSunContextFactoryAvailable() ? "com.sun.jndi.ldap.LdapCtxFactory" : ""));
ldapConfiguration.setBindDn(userConfiguration.getConcatenatedList(UserConfigurationKeys.LDAP_BINDDN, null));
ldapConfiguration.setPassword(userConfiguration.getString(UserConfigurationKeys.LDAP_PASSWORD, null));
ldapConfiguration.setAuthenticationMethod(userConfiguration.getString(UserConfigurationKeys.LDAP_AUTHENTICATION_METHOD, null));
ldapConfiguration.setWritable(userConfiguration.getBoolean(UserConfigurationKeys.LDAP_WRITABLE, false));
ldapConfiguration.setUseRoleNameAsGroup(userConfiguration.getBoolean(UserConfigurationKeys.LDAP_GROUPS_USE_ROLENAME, false));
boolean ldapBindAuthenticatorEnabled = userConfiguration.getBoolean(UserConfigurationKeys.LDAP_BIND_AUTHENTICATOR_ENABLED, false);
ldapConfiguration.setBindAuthenticatorEnabled(ldapBindAuthenticatorEnabled);
// LDAP groups mapping reading !!
// UserConfigurationKeys.LDAP_GROUPS_ROLE_START_KEY
// userConfiguration.getKeys()
Collection<String> keys = userConfiguration.getKeys();
List<LdapGroupMapping> ldapGroupMappings = new ArrayList<>();
for (String key : keys) {
if (key.startsWith(UserConfigurationKeys.LDAP_GROUPS_ROLE_START_KEY)) {
String group = StringUtils.substringAfter(key, UserConfigurationKeys.LDAP_GROUPS_ROLE_START_KEY);
String val = userConfiguration.getConcatenatedList(key, "");
if (!StringUtils.isEmpty(val)) {
String[] roles = StringUtils.split(val, ',');
ldapGroupMappings.add(new LdapGroupMapping(group, roles));
}
}
}
redbackRuntimeConfiguration.setLdapGroupMappings(ldapGroupMappings);
redbackRuntimeConfiguration.setMigratedFromRedbackConfiguration(true);
updateRedbackRuntimeConfiguration(redbackRuntimeConfiguration);
}
// we must ensure userManagerImpls list is not empty if so put at least jdo one !
if (redbackRuntimeConfiguration.getUserManagerImpls().isEmpty()) {
log.info("redbackRuntimeConfiguration with empty userManagerImpls so force at least jdo implementation !");
redbackRuntimeConfiguration.getUserManagerImpls().add("jdo");
updateRedbackRuntimeConfiguration(redbackRuntimeConfiguration);
} else {
log.info("using userManagerImpls: {}", redbackRuntimeConfiguration.getUserManagerImpls());
}
// we ensure rbacManagerImpls is not empty if so put at least cached
if (redbackRuntimeConfiguration.getRbacManagerImpls().isEmpty()) {
log.info("redbackRuntimeConfiguration with empty rbacManagerImpls so force at least cached implementation !");
redbackRuntimeConfiguration.getRbacManagerImpls().add("cached");
updateRedbackRuntimeConfiguration(redbackRuntimeConfiguration);
} else {
log.info("using rbacManagerImpls: {}", redbackRuntimeConfiguration.getRbacManagerImpls());
}
boolean save = false;
// NPE free
if (redbackRuntimeConfiguration.getUsersCacheConfiguration() == null) {
redbackRuntimeConfiguration.setUsersCacheConfiguration(new CacheConfiguration());
}
// if -1 it means non initialized to take values from the spring bean
if (redbackRuntimeConfiguration.getUsersCacheConfiguration().getTimeToIdleSeconds() < 0) {
redbackRuntimeConfiguration.getUsersCacheConfiguration().setTimeToIdleSeconds(usersCache.getTimeToIdleSeconds());
save = true;
}
usersCache.setTimeToIdleSeconds(redbackRuntimeConfiguration.getUsersCacheConfiguration().getTimeToIdleSeconds());
if (redbackRuntimeConfiguration.getUsersCacheConfiguration().getTimeToLiveSeconds() < 0) {
redbackRuntimeConfiguration.getUsersCacheConfiguration().setTimeToLiveSeconds(usersCache.getTimeToLiveSeconds());
save = true;
}
usersCache.setTimeToLiveSeconds(redbackRuntimeConfiguration.getUsersCacheConfiguration().getTimeToLiveSeconds());
if (redbackRuntimeConfiguration.getUsersCacheConfiguration().getMaxElementsInMemory() < 0) {
redbackRuntimeConfiguration.getUsersCacheConfiguration().setMaxElementsInMemory(usersCache.getMaxElementsInMemory());
save = true;
}
usersCache.setMaxElementsInMemory(redbackRuntimeConfiguration.getUsersCacheConfiguration().getMaxElementsInMemory());
if (redbackRuntimeConfiguration.getUsersCacheConfiguration().getMaxElementsOnDisk() < 0) {
redbackRuntimeConfiguration.getUsersCacheConfiguration().setMaxElementsOnDisk(usersCache.getMaxElementsOnDisk());
save = true;
}
usersCache.setMaxElementsOnDisk(redbackRuntimeConfiguration.getUsersCacheConfiguration().getMaxElementsOnDisk());
if (save) {
updateRedbackRuntimeConfiguration(redbackRuntimeConfiguration);
}
} catch (RepositoryAdminException e) {
throw new UserConfigurationException(e.getMessage(), e);
}
}
Aggregations