<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-i18n</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-http</artifactId>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-provider-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-http</artifactId>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-file</artifactId>
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
</Import-Package>
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;
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 )
{
// 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 );
}
<context:annotation-config/>
<context:component-scan base-package="org.apache.archiva.proxy.common"/>
+ <bean name="wagon#http" scope="prototype" class="org.apache.maven.wagon.providers.http.HttpWagon"/>
+
+ <bean name="wagon#https" scope="prototype" class="org.apache.maven.wagon.providers.http.HttpWagon"/>
</beans>
\ No newline at end of file
http://www.springframework.org/schema/context/spring-context-3.0.xsd"
default-lazy-init="true">
+ <bean name="wagon#file" scope="prototype" class="org.apache.maven.wagon.providers.file.FileWagon"/>
+
</beans>
\ No newline at end of file
<groupId>org.apache.archiva</groupId>
<artifactId>archiva-plexus-bridge</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-http</artifactId>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-file</artifactId>
{
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() )
{
protected ManagedRepositoryAdmin managedRepositoryAdmin;
@Inject
- PlexusSisuBridge plexusSisuBridge;
+ protected PlexusSisuBridge plexusSisuBridge;
@Before
public void setUp()
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 );
public void shutdown()
throws Exception
{
- removeMavenIndexes();
+ removeMavenIndexes();
}
* 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;
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;
return delegate.resourceExists( resourceName );
}
- @SuppressWarnings("unchecked")
+ @SuppressWarnings( "unchecked" )
public List<String> getFileList( String destinationDirectory )
throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
{
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()
{
delegate.connect( source, authenticationInfo, proxyInfoProvider );
}
- @SuppressWarnings("deprecation")
+ @SuppressWarnings( "deprecation" )
public void openConnection()
throws ConnectionException, AuthenticationException
{
+++ /dev/null
-<!--
- ~ 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.
- -->
-
-<component-set>
- <components>
- <component>
- <role>org.apache.maven.wagon.Wagon</role>
- <role-hint>test</role-hint>
- <implementation>org.apache.archiva.proxy.WagonDelegate</implementation>
- </component>
- </components>
-</component-set>
http://www.springframework.org/schema/context/spring-context-3.0.xsd"
default-lazy-init="true">
+
+
</beans>
\ No newline at end of file
<property name="timeToLiveSeconds" value="1800"/>
</bean>
+ <bean name="wagon#test" class="org.apache.archiva.proxy.WagonDelegate" scope="singleton"/>
+ <bean name="wagon#file" scope="prototype" class="org.apache.maven.wagon.providers.file.FileWagon"/>
</beans>
\ No newline at end of file
<groupId>org.apache.archiva</groupId>
<artifactId>maven2-repository</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-http</artifactId>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
<build>
<plugins>
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 )
<groupId>org.apache.archiva</groupId>
<artifactId>archiva-repository-scanner</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-http</artifactId>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>org.apache.archiva</groupId>
<artifactId>archiva-repository-layer</artifactId>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-provider-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-http</artifactId>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
* 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;
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
{
this.pathTranslator = pathTranslator;
}
- public RepositoryModelResolver( File basedir, RepositoryPathTranslator pathTranslator,
- WagonFactory wagonFactory, List<RemoteRepositoryConfiguration> remoteRepositories,
- Map<String, ProxyInfo> networkProxiesMap, ManagedRepositoryConfiguration targetRepository )
+ public RepositoryModelResolver( File basedir, RepositoryPathTranslator pathTranslator, WagonFactory wagonFactory,
+ List<RemoteRepositoryConfiguration> remoteRepositories,
+ Map<String, ProxyInfo> networkProxiesMap,
+ ManagedRepositoryConfiguration targetRepository )
{
this( basedir, pathTranslator );
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;
}
}
// 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
{
// 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 );
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";
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
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();
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 );
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();
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