Author: joakime Date: Thu Nov 8 08:19:05 2007 New Revision: 593220 URL: http://svn.apache.org/viewvc?rev=593220&view=rev Log: [MRM-582] Remote Repositories with empty <username> and <password> fields shouldn't be created in configuration. Implemented on-load cleanup of remote repo username/password (instead of on-save) Implemented proper check for blank username/password in proxy connectors.
Modified: maven/archiva/trunk/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java maven/archiva/trunk/archiva-base/archiva-configuration/src/test/conf/repository-manager.xml maven/archiva/trunk/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java maven/archiva/trunk/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java Modified: maven/archiva/trunk/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java?rev=593220&r1=593219&r2=593220&view=diff ============================================================================== --- maven/archiva/trunk/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java (original) +++ maven/archiva/trunk/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java Thu Nov 8 08:19:05 2007 @@ -22,6 +22,7 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; import org.apache.commons.io.FileUtils; +import org.apache.commons.lang.StringUtils; import org.apache.maven.archiva.configuration.functors.ProxyConnectorConfigurationOrderComparator; import org.apache.maven.archiva.configuration.io.registry.ConfigurationRegistryReader; import org.apache.maven.archiva.configuration.io.registry.ConfigurationRegistryWriter; @@ -41,7 +42,6 @@ import org.codehaus.plexus.registry.Registry; import org.codehaus.plexus.registry.RegistryException; import org.codehaus.plexus.registry.RegistryListener; -import org.codehaus.plexus.util.StringUtils; import java.io.File; import java.io.IOException; @@ -195,6 +195,24 @@ config.getRepositories().clear(); registry.removeSubset( KEY + ".repositories" ); + } + + if ( !CollectionUtils.isEmpty( config.getRemoteRepositories() ) ) + { + List<RemoteRepositoryConfiguration> remoteRepos = config.getRemoteRepositories(); + for ( RemoteRepositoryConfiguration repo : remoteRepos ) + { + // [MRM-582] Remote Repositories with empty <username> and <password> fields shouldn't be created in configuration. + if( StringUtils.isBlank( repo.getUsername() ) ) + { + repo.setUsername( null ); + } + + if( StringUtils.isBlank( repo.getPassword() ) ) + { + repo.setPassword( null ); + } + } } if ( !config.getProxyConnectors().isEmpty() ) Modified: maven/archiva/trunk/archiva-base/archiva-configuration/src/test/conf/repository-manager.xml URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-configuration/src/test/conf/repository-manager.xml?rev=593220&r1=593219&r2=593220&view=diff ============================================================================== --- maven/archiva/trunk/archiva-base/archiva-configuration/src/test/conf/repository-manager.xml (original) +++ maven/archiva/trunk/archiva-base/archiva-configuration/src/test/conf/repository-manager.xml Thu Nov 8 08:19:05 2007 @@ -54,6 +54,8 @@ <name>Java.net Repository for Maven 2</name> <url>https://maven2-repository.dev.java.net/nonav/repository</url> <layout>default</layout> + <username></username> + <password></password> </remoteRepository> </remoteRepositories> @@ -62,17 +64,21 @@ <sourceRepoId>internal</sourceRepoId> <targetRepoId>central</targetRepoId> <proxyId/> - <snapshotsPolicy>disabled</snapshotsPolicy> - <releasePolicy>never</releasePolicy> - <failurePolicy>not-found</failurePolicy> + <policies> + <releases>ignored</releases> + <snapshots>disabled</snapshots> + <cache-failures>cached</cache-failures> + </policies> </proxyConnector> <proxyConnector> <sourceRepoId>internal</sourceRepoId> <targetRepoId>maven2-repository.dev.java.net</targetRepoId> <proxyId/> - <snapshotsPolicy>disabled</snapshotsPolicy> - <releasePolicy>never</releasePolicy> - <failurePolicy>not-found</failurePolicy> + <policies> + <releases>ignored</releases> + <snapshots>disabled</snapshots> + <cache-failures>cached</cache-failures> + </policies> <whiteListPatterns> <whiteListPattern>javax/**</whiteListPattern> </whiteListPatterns> Modified: maven/archiva/trunk/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java?rev=593220&r1=593219&r2=593220&view=diff ============================================================================== --- maven/archiva/trunk/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java (original) +++ maven/archiva/trunk/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java Thu Nov 8 08:19:05 2007 @@ -636,4 +636,29 @@ assertEquals( "check cron expression", "0 0,20 0 * * ?", repository.getRefreshCronExpression() ); } + + /** + * [MRM-582] Remote Repositories with empty <username> and <password> fields shouldn't be created in configuration. + */ + public void testGetConfigurationFixEmptyRemoteRepoUsernamePassword() + throws Exception + { + ArchivaConfiguration archivaConfiguration = (ArchivaConfiguration) lookup( + ArchivaConfiguration.class.getName(), + "test-configuration" ); + + Configuration configuration = archivaConfiguration.getConfiguration(); + assertConfiguration( configuration ); + assertEquals( "check remote repositories", 2, configuration.getRemoteRepositories().size() ); + + RemoteRepositoryConfiguration repository = (RemoteRepositoryConfiguration) configuration + .getRemoteRepositoriesAsMap().get( "maven2-repository.dev.java.net" ); + + assertEquals( "remote repository.url", "https://maven2-repository.dev.java.net/nonav/repository", repository.getUrl() ); + assertEquals( "remote repository.name", "Java.net Repository for Maven 2", repository.getName() ); + assertEquals( "remote repository.id", "maven2-repository.dev.java.net", repository.getId() ); + assertEquals( "remote repository.layout", "default", repository.getLayout() ); + assertNull( "remote repository.username == null", repository.getUsername() ); + assertNull( "remote repository.password == null", repository.getPassword() ); + } } Modified: maven/archiva/trunk/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java?rev=593220&r1=593219&r2=593220&view=diff ============================================================================== --- maven/archiva/trunk/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java (original) +++ maven/archiva/trunk/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java Thu Nov 8 08:19:05 2007 @@ -792,10 +792,10 @@ AuthenticationInfo authInfo = null; String username = remoteRepository.getRepository().getUsername(); String password = remoteRepository.getRepository().getPassword(); - if ( username != null && password != null ) + + if ( StringUtils.isNotBlank( username ) && StringUtils.isNotBlank( password ) ) { - getLogger().debug( - "Using username " + username + " to connect to remote repository " + getLogger().debug( "Using username " + username + " to connect to remote repository " + remoteRepository.getURL() ); authInfo = new AuthenticationInfo(); authInfo.setUserName( username );