Author: olamy
Date: Wed Oct 24 21:33:16 2012
New Revision: 1401896
URL: http://svn.apache.org/viewvc?rev=1401896&view=rev
Log:
[MRM-1705] Feature to add custom parameters and/or headers when requesting an
external repositories.
add parameters.
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/archiva/proxy/DefaultRepositoryProxyConnectors.java
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/DownloadRemoteIndexTask.java
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/archiva/proxy/DefaultRepositoryProxyConnectors.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/archiva/proxy/DefaultRepositoryProxyConnectors.java?rev=1401896&r1=1401895&r2=1401896&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/archiva/proxy/DefaultRepositoryProxyConnectors.java
(original)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/archiva/proxy/DefaultRepositoryProxyConnectors.java
Wed Oct 24 21:33:16 2012
@@ -23,6 +23,7 @@ import com.google.common.io.Files;
import org.apache.archiva.admin.model.RepositoryAdminException;
import org.apache.archiva.admin.model.beans.NetworkProxy;
import org.apache.archiva.admin.model.beans.ProxyConnectorRuleType;
+import org.apache.archiva.admin.model.beans.RemoteRepository;
import org.apache.archiva.admin.model.networkproxy.NetworkProxyAdmin;
import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.configuration.Configuration;
@@ -921,7 +922,7 @@ public class DefaultRepositoryProxyConne
if ( !origFile.exists() )
{
log.debug( "Retrieving {} from {}", remotePath,
remoteRepository.getRepository().getName() );
- wagon.get( remotePath, destFile );
+ wagon.get( addParameters( remotePath,
remoteRepository.getRepository() ), destFile );
success = true;
// You wouldn't get here on failure, a WagonException would
have been thrown.
@@ -930,7 +931,8 @@ public class DefaultRepositoryProxyConne
else
{
log.debug( "Retrieving {} from {} if updated", remotePath,
remoteRepository.getRepository().getName() );
- success = wagon.getIfNewer( remotePath, destFile,
origFile.lastModified() );
+ success = wagon.getIfNewer( addParameters( remotePath,
remoteRepository.getRepository() ), destFile,
+ origFile.lastModified() );
if ( !success )
{
throw new NotModifiedException(
@@ -1249,6 +1251,29 @@ public class DefaultRepositoryProxyConne
}
}
+ protected String addParameters( String path, RemoteRepository
remoteRepository )
+ {
+ if ( remoteRepository.getExtraParameters().isEmpty() )
+ {
+ return path;
+ }
+
+ boolean question = false;
+
+ StringBuilder res = new StringBuilder( path == null ? "" : path );
+
+ for ( Entry<String, String> entry :
remoteRepository.getExtraParameters().entrySet() )
+ {
+ if ( !question )
+ {
+ res.append( '?' ).append( entry.getKey() ).append( '='
).append( entry.getValue() );
+ }
+ }
+
+ return res.toString();
+ }
+
+
public void beforeConfigurationChange( Registry registry, String
propertyName, Object propertyValue )
{
/* do nothing */
Modified:
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/DownloadRemoteIndexTask.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/DownloadRemoteIndexTask.java?rev=1401896&r1=1401895&r2=1401896&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/DownloadRemoteIndexTask.java
(original)
+++
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/DownloadRemoteIndexTask.java
Wed Oct 24 21:33:16 2012
@@ -57,6 +57,7 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.util.Arrays;
import java.util.List;
+import java.util.Map;
/**
* @author Olivier Lamy
@@ -168,7 +169,8 @@ public class DownloadRemoteIndexTask
indexDirectory.mkdirs();
}
- ResourceFetcher resourceFetcher = new WagonResourceFetcher( log,
tempIndexDirectory, wagon );
+ ResourceFetcher resourceFetcher =
+ new WagonResourceFetcher( log, tempIndexDirectory, wagon,
remoteRepository );
IndexUpdateRequest request = new IndexUpdateRequest(
indexingContext, resourceFetcher );
request.setForceFullUpdate( this.fullDownload );
request.setLocalIndexCacheDir( indexCacheDirectory );
@@ -295,11 +297,15 @@ public class DownloadRemoteIndexTask
Wagon wagon;
- private WagonResourceFetcher( Logger log, File tempIndexDirectory,
Wagon wagon )
+ RemoteRepository remoteRepository;
+
+ private WagonResourceFetcher( Logger log, File tempIndexDirectory,
Wagon wagon,
+ RemoteRepository remoteRepository )
{
this.log = log;
this.tempIndexDirectory = tempIndexDirectory;
this.wagon = wagon;
+ this.remoteRepository = remoteRepository;
}
public void connect( String id, String url )
@@ -326,7 +332,7 @@ public class DownloadRemoteIndexTask
file.delete();
}
file.deleteOnExit();
- wagon.get( name, file );
+ wagon.get( addParameters( name, this.remoteRepository ), file
);
return new FileInputStream( file );
}
catch ( AuthorizationException e )
@@ -342,7 +348,33 @@ public class DownloadRemoteIndexTask
throw new FileNotFoundException( e.getMessage() );
}
}
+
+ // FIXME remove crappy copy/paste
+ protected String addParameters( String path, RemoteRepository
remoteRepository )
+ {
+ if ( remoteRepository.getExtraParameters().isEmpty() )
+ {
+ return path;
+ }
+
+ boolean question = false;
+
+ StringBuilder res = new StringBuilder( path == null ? "" : path );
+
+ for ( Map.Entry<String, String> entry :
remoteRepository.getExtraParameters().entrySet() )
+ {
+ if ( !question )
+ {
+ res.append( '?' ).append( entry.getKey() ).append( '='
).append( entry.getValue() );
+ }
+ }
+
+ return res.toString();
+ }
+
}
+
+
}
Modified:
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java?rev=1401896&r1=1401895&r2=1401896&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
(original)
+++
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
Wed Oct 24 21:33:16 2012
@@ -262,7 +262,7 @@ public class RepositoryModelResolver
String metadataPath =
StringUtils.substringBeforeLast( artifactPath, "/"
) + "/" + METADATA_FILENAME;
- wagon.get( metadataPath, tmpMetadataResource );
+ wagon.get( addParameters( metadataPath,
remoteRepository ), tmpMetadataResource );
log.debug( "Successfully downloaded metadata." );
@@ -288,7 +288,7 @@ public class RepositoryModelResolver
log.info( "Retrieving {} from {}", artifactPath,
remoteRepository.getName() );
- wagon.get( artifactPath, tmpResource );
+ wagon.get( addParameters( artifactPath, remoteRepository
), tmpResource );
log.debug( "Downloaded successfully." );
@@ -426,7 +426,7 @@ public class RepositoryModelResolver
log.info( "Retrieving {} from {}", remotePath,
remoteRepository.getName() );
- wagon.get( remotePath, destFile );
+ wagon.get( addParameters( remotePath, remoteRepository ), destFile );
log.debug( "Downloaded successfully." );
@@ -485,4 +485,26 @@ public class RepositoryModelResolver
}
}
}
+
+ protected String addParameters( String path, RemoteRepository
remoteRepository )
+ {
+ if ( remoteRepository.getExtraParameters().isEmpty() )
+ {
+ return path;
+ }
+
+ boolean question = false;
+
+ StringBuilder res = new StringBuilder( path == null ? "" : path );
+
+ for ( Map.Entry<String, String> entry :
remoteRepository.getExtraParameters().entrySet() )
+ {
+ if ( !question )
+ {
+ res.append( '?' ).append( entry.getKey() ).append( '='
).append( entry.getValue() );
+ }
+ }
+
+ return res.toString();
+ }
}