import org.apache.archiva.configuration.RedbackRuntimeConfiguration;
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.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Named;
+import java.util.List;
/**
* @author Olivier Lamy
* @since 1.4-M4
*/
-@Service("archivaRuntimeConfigurationAdmin#default")
+@Service( "userConfiguration#archiva" )
public class DefaultArchivaRuntimeConfigurationAdmin
extends AbstractRepositoryAdmin
- implements ArchivaRuntimeConfigurationAdmin
+ implements ArchivaRuntimeConfigurationAdmin, UserConfiguration
{
@Inject
- @Named(value = "userConfiguration#redback")
+ @Named( value = "userConfiguration#redback" )
UserConfiguration userConfiguration;
@PostConstruct
public void initialize()
- throws RepositoryAdminException
+ throws UserConfigurationException
{
-
- ArchivaRuntimeConfiguration archivaRuntimeConfiguration = getArchivaRuntimeConfiguration();
- // migrate or not data from redback
- if ( !archivaRuntimeConfiguration.isMigratedFromRedbackConfiguration() )
+ try
{
- // so migrate if available
- String userManagerImpl = userConfiguration.getString( UserConfigurationKeys.USER_MANAGER_IMPL );
- if ( StringUtils.isNotEmpty( userManagerImpl ) )
+ ArchivaRuntimeConfiguration archivaRuntimeConfiguration = getArchivaRuntimeConfiguration();
+ // migrate or not data from redback
+ if ( !archivaRuntimeConfiguration.isMigratedFromRedbackConfiguration() )
{
- archivaRuntimeConfiguration.setUserManagerImpl( userManagerImpl );
- }
+ // so migrate if available
+ String userManagerImpl = userConfiguration.getString( UserConfigurationKeys.USER_MANAGER_IMPL );
+ if ( StringUtils.isNotEmpty( userManagerImpl ) )
+ {
+ archivaRuntimeConfiguration.setUserManagerImpl( userManagerImpl );
+ }
- // now ldap
+ // now ldap
- ArchivaLdapConfiguration archivaLdapConfiguration =
- archivaRuntimeConfiguration.getArchivaLdapConfiguration();
- if ( archivaLdapConfiguration == null )
- {
- archivaLdapConfiguration = new ArchivaLdapConfiguration();
- archivaRuntimeConfiguration.setArchivaLdapConfiguration( archivaLdapConfiguration );
- }
+ ArchivaLdapConfiguration archivaLdapConfiguration =
+ archivaRuntimeConfiguration.getArchivaLdapConfiguration();
+ if ( archivaLdapConfiguration == null )
+ {
+ archivaLdapConfiguration = new ArchivaLdapConfiguration();
+ archivaRuntimeConfiguration.setArchivaLdapConfiguration( archivaLdapConfiguration );
+ }
- archivaLdapConfiguration.setHostName(
- userConfiguration.getString( UserConfigurationKeys.LDAP_HOSTNAME, null ) );
- archivaLdapConfiguration.setPort( userConfiguration.getInt( UserConfigurationKeys.LDAP_PORT, -1 ) );
- archivaLdapConfiguration.setSsl( userConfiguration.getBoolean( UserConfigurationKeys.LDAP_SSL, false ) );
- archivaLdapConfiguration.setBaseDn( userConfiguration.getConcatenatedList( "ldap.config.base.dn", null ) );
- archivaLdapConfiguration.setContextFactory(
- userConfiguration.getString( UserConfigurationKeys.LDAP_CONTEX_FACTORY, null ) );
- archivaLdapConfiguration.setBindDn( userConfiguration.getConcatenatedList( "ldap.config.bind.dn", null ) );
- archivaLdapConfiguration.setPassword(
- userConfiguration.getString( UserConfigurationKeys.LDAP_PASSWORD, null ) );
- archivaLdapConfiguration.setAuthenticationMethod(
- userConfiguration.getString( UserConfigurationKeys.LDAP_AUTHENTICATION_METHOD, null ) );
+ archivaLdapConfiguration.setHostName(
+ userConfiguration.getString( UserConfigurationKeys.LDAP_HOSTNAME, null ) );
+ archivaLdapConfiguration.setPort( userConfiguration.getInt( UserConfigurationKeys.LDAP_PORT, -1 ) );
+ archivaLdapConfiguration.setSsl(
+ userConfiguration.getBoolean( UserConfigurationKeys.LDAP_SSL, false ) );
+ archivaLdapConfiguration.setBaseDn(
+ userConfiguration.getConcatenatedList( UserConfigurationKeys.LDAP_BASEDN, null ) );
+ archivaLdapConfiguration.setContextFactory(
+ userConfiguration.getString( UserConfigurationKeys.LDAP_CONTEX_FACTORY, null ) );
+ archivaLdapConfiguration.setBindDn(
+ userConfiguration.getConcatenatedList( UserConfigurationKeys.LDAP_BINDDN, null ) );
+ archivaLdapConfiguration.setPassword(
+ userConfiguration.getString( UserConfigurationKeys.LDAP_PASSWORD, null ) );
+ archivaLdapConfiguration.setAuthenticationMethod(
+ userConfiguration.getString( UserConfigurationKeys.LDAP_AUTHENTICATION_METHOD, null ) );
- archivaRuntimeConfiguration.setMigratedFromRedbackConfiguration( true );
+ archivaRuntimeConfiguration.setMigratedFromRedbackConfiguration( true );
- updateArchivaRuntimeConfiguration( archivaRuntimeConfiguration );
- }
+ updateArchivaRuntimeConfiguration( archivaRuntimeConfiguration );
+ }
+ }
+ catch ( RepositoryAdminException e )
+ {
+ throw new UserConfigurationException( e.getMessage(), e );
+ }
}
public ArchivaRuntimeConfiguration getArchivaRuntimeConfiguration()
- throws RepositoryAdminException
{
return build( getArchivaConfiguration().getConfiguration().getRedbackRuntimeConfiguration() );
}
{
return new BeanReplicator().replicateBean( archivaRuntimeConfiguration, RedbackRuntimeConfiguration.class );
}
+
+ // wrapper for UserConfiguration to intercept values (and store it not yet migrated
+
+
+ public String getString( String key )
+ {
+ if ( UserConfigurationKeys.USER_MANAGER_IMPL.equals( key ) )
+ {
+ return getArchivaRuntimeConfiguration().getUserManagerImpl();
+ }
+
+ ArchivaRuntimeConfiguration conf = getArchivaRuntimeConfiguration();
+
+ 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
+ {
+ updateArchivaRuntimeConfiguration( conf );
+ }
+ catch ( RepositoryAdminException e )
+ {
+ log.error( "fail to save ArchivaRuntimeConfiguration: {}", 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 getArchivaRuntimeConfiguration().getArchivaLdapConfiguration().getHostName();
+ }
+ if ( UserConfigurationKeys.LDAP_CONTEX_FACTORY.equals( key ) )
+ {
+ return getArchivaRuntimeConfiguration().getArchivaLdapConfiguration().getContextFactory();
+ }
+ if ( UserConfigurationKeys.LDAP_PASSWORD.equals( key ) )
+ {
+ return getArchivaRuntimeConfiguration().getArchivaLdapConfiguration().getPassword();
+ }
+ if ( UserConfigurationKeys.LDAP_AUTHENTICATION_METHOD.equals( key ) )
+ {
+ return getArchivaRuntimeConfiguration().getArchivaLdapConfiguration().getAuthenticationMethod();
+ }
+
+ ArchivaRuntimeConfiguration conf = getArchivaRuntimeConfiguration();
+
+ 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
+ {
+ updateArchivaRuntimeConfiguration( conf );
+ }
+ catch ( RepositoryAdminException e )
+ {
+ log.error( "fail to save ArchivaRuntimeConfiguration: {}", e.getMessage(), e );
+ throw new RuntimeException( e.getMessage(), e );
+ }
+
+ return value;
+ }
+
+ public int getInt( String key )
+ {
+ ArchivaRuntimeConfiguration conf = getArchivaRuntimeConfiguration();
+
+ 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
+ {
+ updateArchivaRuntimeConfiguration( conf );
+ }
+ catch ( RepositoryAdminException e )
+ {
+ log.error( "fail to save ArchivaRuntimeConfiguration: {}", 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 getArchivaRuntimeConfiguration().getArchivaLdapConfiguration().getPort();
+ }
+
+
+ ArchivaRuntimeConfiguration conf = getArchivaRuntimeConfiguration();
+
+ 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
+ {
+ updateArchivaRuntimeConfiguration( conf );
+ }
+ catch ( RepositoryAdminException e )
+ {
+ log.error( "fail to save ArchivaRuntimeConfiguration: {}", e.getMessage(), e );
+ throw new RuntimeException( e.getMessage(), e );
+ }
+
+ return value;
+ }
+
+ public boolean getBoolean( String key )
+ {
+ ArchivaRuntimeConfiguration conf = getArchivaRuntimeConfiguration();
+
+ 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
+ {
+ updateArchivaRuntimeConfiguration( conf );
+ }
+ catch ( RepositoryAdminException e )
+ {
+ log.error( "fail to save ArchivaRuntimeConfiguration: {}", 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 getArchivaRuntimeConfiguration().getArchivaLdapConfiguration().isSsl();
+ }
+
+ ArchivaRuntimeConfiguration conf = getArchivaRuntimeConfiguration();
+
+ 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
+ {
+ updateArchivaRuntimeConfiguration( conf );
+ }
+ catch ( RepositoryAdminException e )
+ {
+ log.error( "fail to save ArchivaRuntimeConfiguration: {}", e.getMessage(), e );
+ throw new RuntimeException( e.getMessage(), e );
+ }
+
+ return value;
+ }
+
+ public List<String> getList( String key )
+ {
+ List<String> value = userConfiguration.getList( key );
+
+ ArchivaRuntimeConfiguration conf = getArchivaRuntimeConfiguration();
+ // TODO concat values
+ conf.getConfigurationProperties().put( key, "" );
+ try
+ {
+ updateArchivaRuntimeConfiguration( conf );
+ }
+ catch ( RepositoryAdminException e )
+ {
+ log.error( "fail to save ArchivaRuntimeConfiguration: {}", 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 getArchivaRuntimeConfiguration().getArchivaLdapConfiguration().getBaseDn();
+ }
+ if ( UserConfigurationKeys.LDAP_BINDDN.equals( key ) )
+ {
+ return getArchivaRuntimeConfiguration().getArchivaLdapConfiguration().getBindDn();
+ }
+ return userConfiguration.getConcatenatedList( key, defaultValue );
+ }
}