123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723 |
- package org.apache.archiva.admin.repository.runtime;
- /*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
- import org.apache.archiva.admin.model.RepositoryAdminException;
- import org.apache.archiva.admin.model.beans.CacheConfiguration;
- import org.apache.archiva.admin.model.beans.LdapConfiguration;
- import org.apache.archiva.admin.model.beans.LdapGroupMapping;
- import org.apache.archiva.admin.model.beans.RedbackRuntimeConfiguration;
- import org.apache.archiva.admin.model.runtime.RedbackRuntimeConfigurationAdmin;
- import org.apache.archiva.admin.repository.AbstractRepositoryAdmin;
- import org.apache.archiva.configuration.ArchivaConfiguration;
- import org.apache.archiva.configuration.Configuration;
- import org.apache.archiva.configuration.IndeterminateConfigurationException;
- import org.apache.archiva.redback.components.cache.Cache;
- import org.apache.archiva.redback.components.registry.RegistryException;
- import org.apache.archiva.redback.configuration.UserConfiguration;
- import org.apache.archiva.redback.configuration.UserConfigurationException;
- import org.apache.archiva.redback.configuration.UserConfigurationKeys;
- import org.apache.commons.lang.StringUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.stereotype.Service;
-
- import javax.annotation.PostConstruct;
- import javax.inject.Inject;
- import javax.inject.Named;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
-
- /**
- * @author Olivier Lamy
- * @since 1.4-M4
- */
- @Service("redbackRuntimeConfigurationAdmin#default")
- public class DefaultRedbackRuntimeConfigurationAdmin
- extends AbstractRepositoryAdmin
- implements RedbackRuntimeConfigurationAdmin, UserConfiguration
- {
-
- protected Logger log = LoggerFactory.getLogger( getClass() );
-
- private ArchivaConfiguration archivaConfiguration;
-
- private UserConfiguration userConfiguration;
-
- private Cache usersCache;
-
- @Inject
- public DefaultRedbackRuntimeConfigurationAdmin( ArchivaConfiguration archivaConfiguration,//
- @Named(value = "userConfiguration#redback") //
- UserConfiguration userConfiguration,
- @Named(value = "cache#users") Cache usersCache )
- {
- this.archivaConfiguration = archivaConfiguration;
- this.userConfiguration = userConfiguration;
- this.usersCache = usersCache;
- }
-
- @PostConstruct
- 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, "jdo" );
- if ( StringUtils.isNotEmpty( userManagerImpl ) )
- {
- String[] impls = StringUtils.split( userManagerImpl, ',' );
- for ( String impl : impls )
- {
- redbackRuntimeConfiguration.getUserManagerImpls().add( impl );
- }
- }
-
- String rbacManagerImpls =
- userConfiguration.getConcatenatedList( UserConfigurationKeys.RBAC_MANAGER_IMPL, "jdo" );
-
- if ( StringUtils.isNotEmpty( rbacManagerImpls ) )
- {
- String[] impls = StringUtils.split( rbacManagerImpls, ',' );
- for ( String impl : impls )
- {
- redbackRuntimeConfiguration.getRbacManagerImpls().add( 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 );
- }
- }
-
- private boolean isSunContextFactoryAvailable()
- {
- try
- {
- return Thread.currentThread().getContextClassLoader().loadClass( "com.sun.jndi.ldap.LdapCtxFactory" )
- != null;
- }
- catch ( ClassNotFoundException e )
- {
- return false;
- }
- }
-
- public RedbackRuntimeConfiguration getRedbackRuntimeConfiguration()
- {
- return build( archivaConfiguration.getConfiguration().getRedbackRuntimeConfiguration() );
- }
-
- public void updateRedbackRuntimeConfiguration( RedbackRuntimeConfiguration redbackRuntimeConfiguration )
- throws RepositoryAdminException
- {
- org.apache.archiva.configuration.RedbackRuntimeConfiguration runtimeConfiguration =
- build( redbackRuntimeConfiguration );
- Configuration configuration = archivaConfiguration.getConfiguration();
- configuration.setRedbackRuntimeConfiguration( runtimeConfiguration );
- try
- {
- archivaConfiguration.save( configuration );
- }
- catch ( RegistryException e )
- {
- throw new RepositoryAdminException( e.getMessage(), e );
- }
- catch ( IndeterminateConfigurationException e )
- {
- throw new RepositoryAdminException( e.getMessage(), e );
- }
- }
-
- private RedbackRuntimeConfiguration build(
- org.apache.archiva.configuration.RedbackRuntimeConfiguration runtimeConfiguration )
- {
- RedbackRuntimeConfiguration redbackRuntimeConfiguration =
- getModelMapper().map( runtimeConfiguration, RedbackRuntimeConfiguration.class );
-
- if ( runtimeConfiguration.getLdapConfiguration() != null )
- {
- redbackRuntimeConfiguration.setLdapConfiguration(
- getModelMapper().map( runtimeConfiguration.getLdapConfiguration(), LdapConfiguration.class ) );
- }
-
- if ( runtimeConfiguration.getUsersCacheConfiguration() != null )
- {
- redbackRuntimeConfiguration.setUsersCacheConfiguration(
- getModelMapper().map( runtimeConfiguration.getUsersCacheConfiguration(), CacheConfiguration.class ) );
- }
-
- if ( redbackRuntimeConfiguration.getLdapConfiguration() == null )
- {
- // prevent NPE
- redbackRuntimeConfiguration.setLdapConfiguration( new LdapConfiguration() );
- }
-
- if ( redbackRuntimeConfiguration.getUsersCacheConfiguration() == null )
- {
- redbackRuntimeConfiguration.setUsersCacheConfiguration( new CacheConfiguration() );
- }
-
- List<org.apache.archiva.configuration.LdapGroupMapping> mappings = runtimeConfiguration.getLdapGroupMappings();
-
- if ( mappings != null && mappings.size() > 0 )
- {
- List<LdapGroupMapping> ldapGroupMappings = new ArrayList<>( mappings.size() );
-
- for ( org.apache.archiva.configuration.LdapGroupMapping mapping : mappings )
- {
- ldapGroupMappings.add( new LdapGroupMapping( mapping.getGroup(), mapping.getRoleNames() ) );
- }
-
- redbackRuntimeConfiguration.setLdapGroupMappings( ldapGroupMappings );
- }
-
- cleanupProperties( redbackRuntimeConfiguration );
-
- return redbackRuntimeConfiguration;
- }
-
- /**
- * cleaning from map properties used directly in archiva configuration fields
- *
- * @param redbackRuntimeConfiguration
- */
- private void cleanupProperties( RedbackRuntimeConfiguration redbackRuntimeConfiguration )
- {
- Map<String, String> properties = redbackRuntimeConfiguration.getConfigurationProperties();
- properties.remove( UserConfigurationKeys.LDAP_HOSTNAME );
- properties.remove( UserConfigurationKeys.LDAP_PORT );
- properties.remove( UserConfigurationKeys.LDAP_BIND_AUTHENTICATOR_ENABLED );
- properties.remove( UserConfigurationKeys.LDAP_SSL );
- properties.remove( UserConfigurationKeys.LDAP_BASEDN );
- properties.remove( UserConfigurationKeys.LDAP_GROUPS_BASEDN );
- properties.remove( UserConfigurationKeys.LDAP_CONTEX_FACTORY );
- properties.remove( UserConfigurationKeys.LDAP_BINDDN );
- properties.remove( UserConfigurationKeys.LDAP_PASSWORD );
- properties.remove( UserConfigurationKeys.LDAP_AUTHENTICATION_METHOD );
- properties.remove( UserConfigurationKeys.LDAP_WRITABLE );
- properties.remove( UserConfigurationKeys.LDAP_GROUPS_USE_ROLENAME );
- // cleanup groups <-> role mapping
- /**for ( Map.Entry<String, String> entry : new HashMap<String, String>( properties ).entrySet() )
- {
- if ( entry.getKey().startsWith( UserConfigurationKeys.LDAP_GROUPS_ROLE_START_KEY ) )
- {
- properties.remove( entry.getKey() );
- }
- }*/
- }
-
- private org.apache.archiva.configuration.RedbackRuntimeConfiguration build(
- RedbackRuntimeConfiguration redbackRuntimeConfiguration )
- {
- org.apache.archiva.configuration.RedbackRuntimeConfiguration res =
- getModelMapper().map( redbackRuntimeConfiguration,
- org.apache.archiva.configuration.RedbackRuntimeConfiguration.class );
-
- if ( redbackRuntimeConfiguration.getLdapConfiguration() == null )
- {
- redbackRuntimeConfiguration.setLdapConfiguration( new LdapConfiguration() );
- }
- res.setLdapConfiguration( getModelMapper().map( redbackRuntimeConfiguration.getLdapConfiguration(),
- org.apache.archiva.configuration.LdapConfiguration.class ) );
-
- if ( redbackRuntimeConfiguration.getUsersCacheConfiguration() == null )
- {
- redbackRuntimeConfiguration.setUsersCacheConfiguration( new CacheConfiguration() );
- }
-
- res.setUsersCacheConfiguration( getModelMapper().map( redbackRuntimeConfiguration.getUsersCacheConfiguration(),
- org.apache.archiva.configuration.CacheConfiguration.class ) );
-
- List<LdapGroupMapping> ldapGroupMappings = redbackRuntimeConfiguration.getLdapGroupMappings();
-
- if ( ldapGroupMappings != null && ldapGroupMappings.size() > 0 )
- {
-
- List<org.apache.archiva.configuration.LdapGroupMapping> mappings =
- new ArrayList<>( ldapGroupMappings.size() );
-
- for ( LdapGroupMapping ldapGroupMapping : ldapGroupMappings )
- {
-
- org.apache.archiva.configuration.LdapGroupMapping mapping =
- new org.apache.archiva.configuration.LdapGroupMapping();
- mapping.setGroup( ldapGroupMapping.getGroup() );
- mapping.setRoleNames( new ArrayList<>( ldapGroupMapping.getRoleNames() ) );
- mappings.add( mapping );
-
- }
- res.setLdapGroupMappings( mappings );
- }
- return res;
- }
-
- // wrapper for UserConfiguration to intercept values (and store it not yet migrated)
-
-
- public String getString( String key )
- {
- if ( UserConfigurationKeys.USER_MANAGER_IMPL.equals( key ) )
- {
- // possible false for others than archiva user manager
- return getRedbackRuntimeConfiguration().getUserManagerImpls().get( 0 );
- }
-
- if ( StringUtils.startsWith( key, UserConfigurationKeys.LDAP_GROUPS_ROLE_START_KEY ) )
- {
- RedbackRuntimeConfiguration redbackRuntimeConfiguration = getRedbackRuntimeConfiguration();
- int index = redbackRuntimeConfiguration.getLdapGroupMappings().indexOf( new LdapGroupMapping(
- StringUtils.substringAfter( key, UserConfigurationKeys.LDAP_GROUPS_ROLE_START_KEY ) ) );
- if ( index > -1 )
- {
- return StringUtils.join( redbackRuntimeConfiguration.getLdapGroupMappings().get( index ).getRoleNames(),
- ',' );
- }
- }
-
- RedbackRuntimeConfiguration conf = getRedbackRuntimeConfiguration();
-
- if ( conf.getConfigurationProperties().containsKey( key ) )
- {
- return conf.getConfigurationProperties().get( key );
- }
-
- String value = userConfiguration.getString( key );
- if ( value == null )
- {
- return null;
- }
- conf.getConfigurationProperties().put( key, value );
-
- try
- {
- updateRedbackRuntimeConfiguration( conf );
- }
- catch ( RepositoryAdminException e )
- {
- log.error( "fail to save RedbackRuntimeConfiguration: {}", e.getMessage(), e );
- throw new RuntimeException( e.getMessage(), e );
- }
-
- return value;
- }
-
- public String getString( String key, String defaultValue )
- {
- if ( UserConfigurationKeys.LDAP_HOSTNAME.equals( key ) )
- {
- return getRedbackRuntimeConfiguration().getLdapConfiguration().getHostName();
- }
- if ( UserConfigurationKeys.LDAP_CONTEX_FACTORY.equals( key ) )
- {
- return getRedbackRuntimeConfiguration().getLdapConfiguration().getContextFactory();
- }
- if ( UserConfigurationKeys.LDAP_PASSWORD.equals( key ) )
- {
- return getRedbackRuntimeConfiguration().getLdapConfiguration().getPassword();
- }
- if ( UserConfigurationKeys.LDAP_AUTHENTICATION_METHOD.equals( key ) )
- {
- return getRedbackRuntimeConfiguration().getLdapConfiguration().getAuthenticationMethod();
- }
-
- RedbackRuntimeConfiguration conf = getRedbackRuntimeConfiguration();
-
- if ( conf.getConfigurationProperties().containsKey( key ) )
- {
- return conf.getConfigurationProperties().get( key );
- }
-
- String value = userConfiguration.getString( key, defaultValue );
-
- if ( value == null )
- {
- return null;
- }
-
- conf.getConfigurationProperties().put( key, value );
- try
- {
- updateRedbackRuntimeConfiguration( conf );
- }
- catch ( RepositoryAdminException e )
- {
- log.error( "fail to save RedbackRuntimeConfiguration: {}", e.getMessage(), e );
- throw new RuntimeException( e.getMessage(), e );
- }
-
- return value;
- }
-
- public int getInt( String key )
- {
- RedbackRuntimeConfiguration conf = getRedbackRuntimeConfiguration();
-
- if ( conf.getConfigurationProperties().containsKey( key ) )
- {
- return Integer.valueOf( conf.getConfigurationProperties().get( key ) );
- }
-
- int value = userConfiguration.getInt( key );
-
- conf.getConfigurationProperties().put( key, Integer.toString( value ) );
- try
- {
- updateRedbackRuntimeConfiguration( conf );
- }
- catch ( RepositoryAdminException e )
- {
- log.error( "fail to save RedbackRuntimeConfiguration: {}", e.getMessage(), e );
- throw new RuntimeException( e.getMessage(), e );
- }
-
- return value;
- }
-
- public int getInt( String key, int defaultValue )
- {
- if ( UserConfigurationKeys.LDAP_PORT.equals( key ) )
- {
- return getRedbackRuntimeConfiguration().getLdapConfiguration().getPort();
- }
-
- RedbackRuntimeConfiguration conf = getRedbackRuntimeConfiguration();
-
- if ( conf.getConfigurationProperties().containsKey( key ) )
- {
- return Integer.valueOf( conf.getConfigurationProperties().get( key ) );
- }
-
- int value = userConfiguration.getInt( key, defaultValue );
-
- conf.getConfigurationProperties().put( key, Integer.toString( value ) );
- try
- {
- updateRedbackRuntimeConfiguration( conf );
- }
- catch ( RepositoryAdminException e )
- {
- log.error( "fail to save RedbackRuntimeConfiguration: {}", e.getMessage(), e );
- throw new RuntimeException( e.getMessage(), e );
- }
-
- return value;
- }
-
- public boolean getBoolean( String key )
- {
- RedbackRuntimeConfiguration conf = getRedbackRuntimeConfiguration();
-
- if ( UserConfigurationKeys.LDAP_WRITABLE.equals( key ) )
- {
- return conf.getLdapConfiguration().isWritable();
- }
-
- if ( UserConfigurationKeys.LDAP_GROUPS_USE_ROLENAME.equals( key ) )
- {
- return conf.getLdapConfiguration().isUseRoleNameAsGroup();
- }
-
- if ( UserConfigurationKeys.LDAP_BIND_AUTHENTICATOR_ENABLED.equals( key ) )
- {
- return conf.getLdapConfiguration().isBindAuthenticatorEnabled();
- }
-
- if ( conf.getConfigurationProperties().containsKey( key ) )
- {
- return Boolean.valueOf( conf.getConfigurationProperties().get( key ) );
- }
-
- boolean value = userConfiguration.getBoolean( key );
-
- conf.getConfigurationProperties().put( key, Boolean.toString( value ) );
- try
- {
- updateRedbackRuntimeConfiguration( conf );
- }
- catch ( RepositoryAdminException e )
- {
- log.error( "fail to save RedbackRuntimeConfiguration: {}", e.getMessage(), e );
- throw new RuntimeException( e.getMessage(), e );
- }
-
- return value;
- }
-
- public boolean getBoolean( String key, boolean defaultValue )
- {
- if ( UserConfigurationKeys.LDAP_SSL.equals( key ) )
- {
- return getRedbackRuntimeConfiguration().getLdapConfiguration().isSsl();
- }
-
- if ( UserConfigurationKeys.LDAP_WRITABLE.equals( key ) )
- {
- return getRedbackRuntimeConfiguration().getLdapConfiguration().isWritable();
- }
-
- if ( UserConfigurationKeys.LDAP_GROUPS_USE_ROLENAME.equals( key ) )
- {
- return getRedbackRuntimeConfiguration().getLdapConfiguration().isUseRoleNameAsGroup();
- }
-
- if ( UserConfigurationKeys.LDAP_BIND_AUTHENTICATOR_ENABLED.equals( key ) )
- {
- return getRedbackRuntimeConfiguration().getLdapConfiguration().isBindAuthenticatorEnabled();
- }
-
- RedbackRuntimeConfiguration conf = getRedbackRuntimeConfiguration();
-
- if ( conf.getConfigurationProperties().containsKey( key ) )
- {
- return Boolean.valueOf( conf.getConfigurationProperties().get( key ) );
- }
-
- boolean value = userConfiguration.getBoolean( key, defaultValue );
-
- conf.getConfigurationProperties().put( key, Boolean.toString( value ) );
- try
- {
- updateRedbackRuntimeConfiguration( conf );
- }
- catch ( RepositoryAdminException e )
- {
- log.error( "fail to save RedbackRuntimeConfiguration: {}", e.getMessage(), e );
- throw new RuntimeException( e.getMessage(), e );
- }
-
- return value;
- }
-
- public List<String> getList( String key )
- {
- List<String> value = userConfiguration.getList( key );
-
- RedbackRuntimeConfiguration conf = getRedbackRuntimeConfiguration();
- // TODO concat values
- conf.getConfigurationProperties().put( key, "" );
- try
- {
- updateRedbackRuntimeConfiguration( conf );
- }
- catch ( RepositoryAdminException e )
- {
- log.error( "fail to save RedbackRuntimeConfiguration: {}", e.getMessage(), e );
- throw new RuntimeException( e.getMessage(), e );
- }
-
- return value;
- }
-
- public String getConcatenatedList( String key, String defaultValue )
- {
- if ( UserConfigurationKeys.LDAP_BASEDN.equals( key ) )
- {
- return getRedbackRuntimeConfiguration().getLdapConfiguration().getBaseDn();
- }
- if ( UserConfigurationKeys.LDAP_BINDDN.equals( key ) )
- {
- return getRedbackRuntimeConfiguration().getLdapConfiguration().getBindDn();
- }
- if ( UserConfigurationKeys.LDAP_GROUPS_BASEDN.equals( key ) )
- {
- return getRedbackRuntimeConfiguration().getLdapConfiguration().getBaseGroupsDn();
- }
- return userConfiguration.getConcatenatedList( key, defaultValue );
- }
-
- public Collection<String> getKeys()
- {
- Collection<String> keys = userConfiguration.getKeys();
-
- Set<String> keysSet = new HashSet<String>( keys );
-
- keysSet.addAll( getRedbackRuntimeConfiguration().getConfigurationProperties().keySet() );
-
- return keysSet;
- }
-
-
- }
|