From 37382ef7886f2019e1f4604002c472eb98fe4704 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Tue, 24 Jan 2012 23:42:53 +0000 Subject: [PATCH] avoid using plexus-sisu bridge to get wagon instances: use now spring git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1235559 13f79535-47bb-0310-9956-ffa450edef68 --- .../archiva-base/archiva-converter/pom.xml | 5 ++ .../archiva-base/archiva-proxy-common/pom.xml | 7 ++ .../proxy/common/DefaultWagonFactory.java | 18 ++++- .../resources/META-INF/spring-context.xml | 3 + .../resources/META-INF/spring-context.xml | 2 + .../archiva-base/archiva-proxy/pom.xml | 5 ++ .../DefaultRepositoryProxyConnectors.java | 4 +- .../archiva/proxy/AbstractProxyTestCase.java | 6 +- .../apache/archiva/proxy/WagonDelegate.java | 37 ++++----- .../resources/META-INF/plexus/components.xml | 28 ------- .../resources/META-INF/spring-context.xml | 2 + .../src/test/resources/spring-context.xml | 2 + .../archiva-repository-layer/pom.xml | 5 ++ .../indexing/DownloadRemoteIndexTask.java | 1 - .../archiva-scheduler-repository/pom.xml | 5 ++ .../plugins/maven2-repository/pom.xml | 5 ++ .../maven2/RepositoryModelResolver.java | 77 ++++++++++--------- 17 files changed, 119 insertions(+), 93 deletions(-) delete mode 100644 archiva-modules/archiva-base/archiva-proxy/src/test/resources/META-INF/plexus/components.xml diff --git a/archiva-modules/archiva-base/archiva-converter/pom.xml b/archiva-modules/archiva-base/archiva-converter/pom.xml index 6596badab..18ebf19d1 100644 --- a/archiva-modules/archiva-base/archiva-converter/pom.xml +++ b/archiva-modules/archiva-base/archiva-converter/pom.xml @@ -57,6 +57,11 @@ org.codehaus.plexus plexus-i18n + + org.apache.maven.wagon + wagon-http + provided + org.slf4j slf4j-simple diff --git a/archiva-modules/archiva-base/archiva-proxy-common/pom.xml b/archiva-modules/archiva-base/archiva-proxy-common/pom.xml index 88446fd9d..898bf1ed5 100644 --- a/archiva-modules/archiva-base/archiva-proxy-common/pom.xml +++ b/archiva-modules/archiva-base/archiva-proxy-common/pom.xml @@ -36,6 +36,11 @@ org.apache.maven.wagon wagon-provider-api + + org.apache.maven.wagon + wagon-http + provided + org.apache.maven.wagon wagon-file @@ -79,6 +84,8 @@ org.apache.archiva.common.plexusbridge;version=${project.version}, org.apache.commons.lang;version="[2.4,3)", org.springframework.stereotype;version="[3,4)", + org.springframework.context;version="[3,4)", + org.springframework.beans;version="[3,4)", org.apache.maven.wagon*, org.slf4j;resolution:=optional diff --git a/archiva-modules/archiva-base/archiva-proxy-common/src/main/java/org/apache/archiva/proxy/common/DefaultWagonFactory.java b/archiva-modules/archiva-base/archiva-proxy-common/src/main/java/org/apache/archiva/proxy/common/DefaultWagonFactory.java index 3f8f311b9..1e9d6cdf4 100755 --- a/archiva-modules/archiva-base/archiva-proxy-common/src/main/java/org/apache/archiva/proxy/common/DefaultWagonFactory.java +++ b/archiva-modules/archiva-base/archiva-proxy-common/src/main/java/org/apache/archiva/proxy/common/DefaultWagonFactory.java @@ -23,6 +23,8 @@ import org.apache.archiva.common.plexusbridge.PlexusSisuBridge; import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException; import org.apache.commons.lang.StringUtils; import org.apache.maven.wagon.Wagon; +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; import javax.inject.Inject; @@ -38,12 +40,15 @@ public class DefaultWagonFactory private PlexusSisuBridge plexusSisuBridge; + private ApplicationContext applicationContext; + private DebugTransferListener debugTransferListener = new DebugTransferListener(); @Inject - public DefaultWagonFactory( PlexusSisuBridge plexusSisuBridge ) + public DefaultWagonFactory( PlexusSisuBridge plexusSisuBridge, ApplicationContext applicationContext ) { this.plexusSisuBridge = plexusSisuBridge; + this.applicationContext = applicationContext; } public Wagon getWagon( String protocol ) @@ -53,12 +58,17 @@ public class DefaultWagonFactory { // with sisu inject bridge hint is file or http // so remove wagon# - protocol = StringUtils.remove( protocol, "wagon#" ); - Wagon wagon = plexusSisuBridge.lookup( Wagon.class, protocol ); + //protocol = StringUtils.remove( protocol, "wagon#" ); + // spring beans will be named wagon#protocol (http, https, file ) + protocol = StringUtils.startsWith( protocol, "wagon#" ) ? protocol : "wagon#" + protocol; + //Wagon wagon = plexusSisuBridge.lookup( Wagon.class, protocol ); + + Wagon wagon = applicationContext.getBean( protocol, Wagon.class ); wagon.addTransferListener( debugTransferListener ); return wagon; } - catch ( PlexusSisuBridgeException e ) + //catch ( PlexusSisuBridgeException e ) + catch ( BeansException e ) { throw new WagonFactoryException( e.getMessage(), e ); } diff --git a/archiva-modules/archiva-base/archiva-proxy-common/src/main/resources/META-INF/spring-context.xml b/archiva-modules/archiva-base/archiva-proxy-common/src/main/resources/META-INF/spring-context.xml index eaf7b4146..ef68e5561 100644 --- a/archiva-modules/archiva-base/archiva-proxy-common/src/main/resources/META-INF/spring-context.xml +++ b/archiva-modules/archiva-base/archiva-proxy-common/src/main/resources/META-INF/spring-context.xml @@ -30,5 +30,8 @@ + + + \ No newline at end of file diff --git a/archiva-modules/archiva-base/archiva-proxy-common/src/test/resources/META-INF/spring-context.xml b/archiva-modules/archiva-base/archiva-proxy-common/src/test/resources/META-INF/spring-context.xml index 011f375fb..c19b3e867 100644 --- a/archiva-modules/archiva-base/archiva-proxy-common/src/test/resources/META-INF/spring-context.xml +++ b/archiva-modules/archiva-base/archiva-proxy-common/src/test/resources/META-INF/spring-context.xml @@ -27,4 +27,6 @@ http://www.springframework.org/schema/context/spring-context-3.0.xsd" default-lazy-init="true"> + + \ No newline at end of file diff --git a/archiva-modules/archiva-base/archiva-proxy/pom.xml b/archiva-modules/archiva-base/archiva-proxy/pom.xml index c3c231f97..f695b6364 100644 --- a/archiva-modules/archiva-base/archiva-proxy/pom.xml +++ b/archiva-modules/archiva-base/archiva-proxy/pom.xml @@ -73,6 +73,11 @@ org.apache.archiva archiva-plexus-bridge + + org.apache.maven.wagon + wagon-http + provided + org.apache.maven.wagon wagon-file diff --git a/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/archiva/proxy/DefaultRepositoryProxyConnectors.java b/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/archiva/proxy/DefaultRepositoryProxyConnectors.java index e8be34ea0..055d103b7 100644 --- a/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/archiva/proxy/DefaultRepositoryProxyConnectors.java +++ b/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/archiva/proxy/DefaultRepositoryProxyConnectors.java @@ -1042,8 +1042,8 @@ public class DefaultRepositoryProxyConnectors { boolean connected = false; - final ProxyInfo networkProxy = this.networkProxyMap.get( connector.getProxyId() ); - + final ProxyInfo networkProxy = + connector.getProxyId() == null ? null : this.networkProxyMap.get( connector.getProxyId() ); if ( log.isDebugEnabled() ) { diff --git a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/AbstractProxyTestCase.java b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/AbstractProxyTestCase.java index 14ed55352..2271b1c53 100644 --- a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/AbstractProxyTestCase.java +++ b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/AbstractProxyTestCase.java @@ -135,7 +135,7 @@ public abstract class AbstractProxyTestCase protected ManagedRepositoryAdmin managedRepositoryAdmin; @Inject - PlexusSisuBridge plexusSisuBridge; + protected PlexusSisuBridge plexusSisuBridge; @Before public void setUp() @@ -208,7 +208,7 @@ public abstract class AbstractProxyTestCase wagonMockControl = MockControl.createNiceControl( Wagon.class ); wagonMock = (Wagon) wagonMockControl.getMock(); - delegate = (WagonDelegate) plexusSisuBridge.lookup( Wagon.class, "test" ); + delegate = (WagonDelegate) applicationContext.getBean( "wagon#test", Wagon.class ); delegate.setDelegate( wagonMock ); @@ -221,7 +221,7 @@ public abstract class AbstractProxyTestCase public void shutdown() throws Exception { - removeMavenIndexes(); + removeMavenIndexes(); } diff --git a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/WagonDelegate.java b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/WagonDelegate.java index 6595a3fd5..341355c52 100644 --- a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/WagonDelegate.java +++ b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/WagonDelegate.java @@ -19,10 +19,6 @@ package org.apache.archiva.proxy; * under the License. */ -import java.io.File; -import java.io.IOException; -import java.util.List; - import org.apache.commons.io.FileUtils; import org.apache.maven.wagon.ConnectionException; import org.apache.maven.wagon.ResourceDoesNotExistException; @@ -40,16 +36,21 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import javax.inject.Inject; +import javax.inject.Named; +import java.io.File; +import java.io.IOException; +import java.util.List; + /** * A dummy wagon implementation - * */ -@Service("wagon#test") +@Service( "wagon#test" ) public class WagonDelegate implements Wagon { private Logger log = LoggerFactory.getLogger( WagonDelegate.class ); - + private Wagon delegate; private String contentToGet; @@ -90,7 +91,7 @@ public class WagonDelegate return delegate.resourceExists( resourceName ); } - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) public List getFileList( String destinationDirectory ) throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException { @@ -102,15 +103,15 @@ public class WagonDelegate return delegate.supportsDirectoryCopy(); } - public void setTimeout(int val) - { - // ignore - } - - public int getTimeout() - { - return 0; - } + public void setTimeout( int val ) + { + // ignore + } + + public int getTimeout() + { + return 0; + } public Repository getRepository() { @@ -153,7 +154,7 @@ public class WagonDelegate delegate.connect( source, authenticationInfo, proxyInfoProvider ); } - @SuppressWarnings("deprecation") + @SuppressWarnings( "deprecation" ) public void openConnection() throws ConnectionException, AuthenticationException { diff --git a/archiva-modules/archiva-base/archiva-proxy/src/test/resources/META-INF/plexus/components.xml b/archiva-modules/archiva-base/archiva-proxy/src/test/resources/META-INF/plexus/components.xml deleted file mode 100644 index acd2872a4..000000000 --- a/archiva-modules/archiva-base/archiva-proxy/src/test/resources/META-INF/plexus/components.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - org.apache.maven.wagon.Wagon - test - org.apache.archiva.proxy.WagonDelegate - - - diff --git a/archiva-modules/archiva-base/archiva-proxy/src/test/resources/META-INF/spring-context.xml b/archiva-modules/archiva-base/archiva-proxy/src/test/resources/META-INF/spring-context.xml index 011f375fb..0e0824920 100644 --- a/archiva-modules/archiva-base/archiva-proxy/src/test/resources/META-INF/spring-context.xml +++ b/archiva-modules/archiva-base/archiva-proxy/src/test/resources/META-INF/spring-context.xml @@ -27,4 +27,6 @@ http://www.springframework.org/schema/context/spring-context-3.0.xsd" default-lazy-init="true"> + + \ No newline at end of file diff --git a/archiva-modules/archiva-base/archiva-proxy/src/test/resources/spring-context.xml b/archiva-modules/archiva-base/archiva-proxy/src/test/resources/spring-context.xml index e0b433c03..3964a5607 100755 --- a/archiva-modules/archiva-base/archiva-proxy/src/test/resources/spring-context.xml +++ b/archiva-modules/archiva-base/archiva-proxy/src/test/resources/spring-context.xml @@ -80,5 +80,7 @@ + + \ No newline at end of file diff --git a/archiva-modules/archiva-base/archiva-repository-layer/pom.xml b/archiva-modules/archiva-base/archiva-repository-layer/pom.xml index dff2fca68..89b99772c 100644 --- a/archiva-modules/archiva-base/archiva-repository-layer/pom.xml +++ b/archiva-modules/archiva-base/archiva-repository-layer/pom.xml @@ -75,6 +75,11 @@ org.apache.archiva maven2-repository + + org.apache.maven.wagon + wagon-http + provided + diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/DownloadRemoteIndexTask.java b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/DownloadRemoteIndexTask.java index e41caa6bc..83eeb01c5 100644 --- a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/DownloadRemoteIndexTask.java +++ b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/DownloadRemoteIndexTask.java @@ -130,7 +130,6 @@ public class DownloadRemoteIndexTask final Wagon wagon = wagonFactory.getWagon( new URL( this.remoteRepository.getUrl() ).getProtocol() ); setupWagonReadTimeout( wagon ); - // TODO transferListener wagon.addTransferListener( new DownloadListener() ); ProxyInfo proxyInfo = null; if ( this.networkProxy != null ) diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-repository/pom.xml b/archiva-modules/archiva-scheduler/archiva-scheduler-repository/pom.xml index c10c3b2b8..2f5992008 100644 --- a/archiva-modules/archiva-scheduler/archiva-scheduler-repository/pom.xml +++ b/archiva-modules/archiva-scheduler/archiva-scheduler-repository/pom.xml @@ -62,6 +62,11 @@ org.apache.archiva archiva-repository-scanner + + org.apache.maven.wagon + wagon-http + provided + org.apache.archiva archiva-repository-layer diff --git a/archiva-modules/plugins/maven2-repository/pom.xml b/archiva-modules/plugins/maven2-repository/pom.xml index b7e9a05a9..67f82fbb0 100644 --- a/archiva-modules/plugins/maven2-repository/pom.xml +++ b/archiva-modules/plugins/maven2-repository/pom.xml @@ -99,6 +99,11 @@ org.apache.maven.wagon wagon-provider-api + + org.apache.maven.wagon + wagon-http + provided + org.springframework spring-test diff --git a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java index 6a02f17b4..f2138237f 100644 --- a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java +++ b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java @@ -19,20 +19,15 @@ package org.apache.archiva.metadata.repository.storage.maven2; * under the License. */ -import java.io.File; -import java.io.IOException; -import java.util.List; -import java.util.Map; - +import org.apache.archiva.common.utils.VersionUtil; +import org.apache.archiva.configuration.ManagedRepositoryConfiguration; +import org.apache.archiva.configuration.RemoteRepositoryConfiguration; import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator; import org.apache.archiva.proxy.common.WagonFactory; import org.apache.archiva.proxy.common.WagonFactoryException; +import org.apache.archiva.xml.XMLException; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; -import org.apache.archiva.common.utils.VersionUtil; -import org.apache.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.archiva.configuration.RemoteRepositoryConfiguration; -import org.apache.archiva.xml.XMLException; import org.apache.maven.model.Repository; import org.apache.maven.model.building.FileModelSource; import org.apache.maven.model.building.ModelSource; @@ -50,6 +45,11 @@ import org.apache.maven.wagon.proxy.ProxyInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.Map; + public class RepositoryModelResolver implements ModelResolver { @@ -77,9 +77,10 @@ public class RepositoryModelResolver this.pathTranslator = pathTranslator; } - public RepositoryModelResolver( File basedir, RepositoryPathTranslator pathTranslator, - WagonFactory wagonFactory, List remoteRepositories, - Map networkProxiesMap, ManagedRepositoryConfiguration targetRepository ) + public RepositoryModelResolver( File basedir, RepositoryPathTranslator pathTranslator, WagonFactory wagonFactory, + List remoteRepositories, + Map networkProxiesMap, + ManagedRepositoryConfiguration targetRepository ) { this( basedir, pathTranslator ); @@ -100,24 +101,25 @@ public class RepositoryModelResolver File model = pathTranslator.toFile( basedir, groupId, artifactId, version, filename ); - if( !model.exists() ) + if ( !model.exists() ) { - for( RemoteRepositoryConfiguration remoteRepository : remoteRepositories ) + for ( RemoteRepositoryConfiguration remoteRepository : remoteRepositories ) { try { boolean success = getModelFromProxy( remoteRepository, groupId, artifactId, version, filename ); - if( success && model.exists() ) + if ( success && model.exists() ) { - log.info( "Model '" + model.getAbsolutePath() + "' successfully retrieved from remote repository '" - + remoteRepository.getId() + "'" ); + log.info( + "Model '" + model.getAbsolutePath() + "' successfully retrieved from remote repository '" + + remoteRepository.getId() + "'" ); break; } } - catch( Exception e ) + catch ( Exception e ) { log.warn( "An exception was caught while attempting to retrieve model '" + model.getAbsolutePath() - + "' from remote repository '" + remoteRepository.getId() + "'.", e ); + + "' from remote repository '" + remoteRepository.getId() + "'.", e ); continue; } } @@ -142,7 +144,7 @@ public class RepositoryModelResolver // FIXME: we need to do some refactoring, we cannot re-use the proxy components of archiva-proxy in maven2-repository // because it's causing a cyclic dependency private boolean getModelFromProxy( RemoteRepositoryConfiguration remoteRepository, String groupId, - String artifactId, String version, String filename ) + String artifactId, String version, String filename ) throws AuthorizationException, TransferFailedException, ResourceDoesNotExistException, WagonFactoryException, XMLException { @@ -177,7 +179,8 @@ public class RepositoryModelResolver // get the metadata first! File tmpMetadataResource = new File( workingDirectory, METADATA_FILENAME ); - String metadataPath = StringUtils.substringBeforeLast( artifactPath, "/" ) + "/" + METADATA_FILENAME; + String metadataPath = + StringUtils.substringBeforeLast( artifactPath, "/" ) + "/" + METADATA_FILENAME; wagon.get( metadataPath, tmpMetadataResource ); @@ -190,10 +193,10 @@ public class RepositoryModelResolver String timestampVersion = version; if ( snapshotVersion != null ) { - timestampVersion = - timestampVersion.substring( 0, timestampVersion.length() - 8 ); // remove SNAPSHOT from end - timestampVersion = - timestampVersion + snapshotVersion.getTimestamp() + "-" + snapshotVersion.getBuildNumber(); + timestampVersion = timestampVersion.substring( 0, timestampVersion.length() + - 8 ); // remove SNAPSHOT from end + timestampVersion = timestampVersion + snapshotVersion.getTimestamp() + "-" + + snapshotVersion.getBuildNumber(); filename = artifactId + "-" + timestampVersion + ".pom"; @@ -209,10 +212,10 @@ public class RepositoryModelResolver log.debug( "Downloaded successfully." ); - tmpSha1 = - transferChecksum( wagon, remoteRepository, artifactPath, tmpResource, workingDirectory, ".sha1" ); - tmpMd5 = - transferChecksum( wagon, remoteRepository, artifactPath, tmpResource, workingDirectory, ".md5" ); + tmpSha1 = transferChecksum( wagon, remoteRepository, artifactPath, tmpResource, workingDirectory, + ".sha1" ); + tmpMd5 = transferChecksum( wagon, remoteRepository, artifactPath, tmpResource, workingDirectory, + ".md5" ); } } finally @@ -267,9 +270,8 @@ public class RepositoryModelResolver if ( networkProxy != null ) { - String msg = - "Using network proxy " + networkProxy.getHost() + ":" + networkProxy.getPort() - + " to connect to remote repository " + remoteRepository.getUrl(); + String msg = "Using network proxy " + networkProxy.getHost() + ":" + networkProxy.getPort() + + " to connect to remote repository " + remoteRepository.getUrl(); if ( networkProxy.getNonProxyHosts() != null ) { msg += "; excluding hosts: " + networkProxy.getNonProxyHosts(); @@ -289,7 +291,7 @@ public class RepositoryModelResolver if ( StringUtils.isNotBlank( username ) && StringUtils.isNotBlank( password ) ) { - log.debug( "Using username " + username + " to connect to remote repository " + remoteRepository.getUrl() ); + log.debug( "Using username {} to connect to remote repository {}", username, remoteRepository.getUrl() ); authInfo = new AuthenticationInfo(); authInfo.setUserName( username ); authInfo.setPassword( password ); @@ -366,7 +368,8 @@ public class RepositoryModelResolver File newLocation = new File( directory, fileToMove.getName() ); if ( newLocation.exists() && !newLocation.delete() ) { - throw new RuntimeException( "Unable to overwrite existing target file: " + newLocation.getAbsolutePath() ); + throw new RuntimeException( + "Unable to overwrite existing target file: " + newLocation.getAbsolutePath() ); } newLocation.getParentFile().mkdirs(); @@ -383,12 +386,12 @@ public class RepositoryModelResolver if ( newLocation.exists() ) { log.error( "Tried to copy file " + fileToMove.getName() + " to " + newLocation.getAbsolutePath() - + " but file with this name already exists." ); + + " but file with this name already exists." ); } else { - throw new RuntimeException( "Cannot copy tmp file " + fileToMove.getAbsolutePath() - + " to its final location", e ); + throw new RuntimeException( + "Cannot copy tmp file " + fileToMove.getAbsolutePath() + " to its final location", e ); } } finally -- 2.39.5