Browse Source

implements use of ProxyConnectorRules when fetching files from remote

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1393146 13f79535-47bb-0310-9956-ffa450edef68
tags/archiva-1.4-M3
Olivier Lamy 11 years ago
parent
commit
b36cafd1c9

+ 61
- 8
archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/archiva/proxy/DefaultRepositoryProxyConnectors.java View File

@@ -22,11 +22,14 @@ package org.apache.archiva.proxy;
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.networkproxy.NetworkProxyAdmin;
import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.configuration.Configuration;
import org.apache.archiva.configuration.ConfigurationNames;
import org.apache.archiva.configuration.NetworkProxyConfiguration;
import org.apache.archiva.configuration.ProxyConnectorConfiguration;
import org.apache.archiva.configuration.ProxyConnectorRuleConfiguration;
import org.apache.archiva.model.ArtifactReference;
import org.apache.archiva.model.Keys;
import org.apache.archiva.model.RepositoryURL;
@@ -92,7 +95,7 @@ import java.util.concurrent.ConcurrentHashMap;
* @todo exception handling needs work - "not modified" is not really an exceptional case, and it has more layers than
* your average brown onion
*/
@Service ( "repositoryProxyConnectors#default" )
@Service ("repositoryProxyConnectors#default")
public class DefaultRepositoryProxyConnectors
implements RepositoryProxyConnectors, RegistryListener
{
@@ -102,21 +105,21 @@ public class DefaultRepositoryProxyConnectors
*
*/
@Inject
@Named ( value = "archivaConfiguration#default" )
@Named (value = "archivaConfiguration#default")
private ArchivaConfiguration archivaConfiguration;

/**
*
*/
@Inject
@Named ( value = "repositoryContentFactory#default" )
@Named (value = "repositoryContentFactory#default")
private RepositoryContentFactory repositoryFactory;

/**
*
*/
@Inject
@Named ( value = "metadataTools#default" )
@Named (value = "metadataTools#default")
private MetadataTools metadataTools;

/**
@@ -157,7 +160,7 @@ public class DefaultRepositoryProxyConnectors
*
*/
@Inject
@Named ( value = "archivaTaskScheduler#repository" )
@Named (value = "archivaTaskScheduler#repository")
private ArchivaTaskScheduler scheduler;

@Inject
@@ -171,14 +174,19 @@ public class DefaultRepositoryProxyConnectors

}

@SuppressWarnings ( "unchecked" )
@SuppressWarnings ("unchecked")
private void initConnectorsAndNetworkProxies()
{

ProxyConnectorOrderComparator proxyOrderSorter = new ProxyConnectorOrderComparator();
this.proxyConnectorMap.clear();

List<ProxyConnectorConfiguration> proxyConfigs = archivaConfiguration.getConfiguration().getProxyConnectors();
Configuration configuration = archivaConfiguration.getConfiguration();

List<ProxyConnectorRuleConfiguration> allProxyConnectorRuleConfigurations =
configuration.getProxyConnectorRuleConfigurations();

List<ProxyConnectorConfiguration> proxyConfigs = configuration.getProxyConnectors();
for ( ProxyConnectorConfiguration proxyConfig : proxyConfigs )
{
String key = proxyConfig.getSourceRepoId();
@@ -214,6 +222,29 @@ public class DefaultRepositoryProxyConnectors
}
connector.setWhitelist( whitelist );

List<ProxyConnectorRuleConfiguration> proxyConnectorRuleConfigurations =
findProxyConnectorRules( connector.getSourceRepository().getId(),
connector.getTargetRepository().getId(),
allProxyConnectorRuleConfigurations );

if ( !proxyConnectorRuleConfigurations.isEmpty() )
{
for ( ProxyConnectorRuleConfiguration proxyConnectorRuleConfiguration : proxyConnectorRuleConfigurations )
{
if ( StringUtils.equals( proxyConnectorRuleConfiguration.getRuleType(),
ProxyConnectorRuleType.BLACK_LIST.getRuleType() ) )
{
connector.getBlacklist().add( proxyConnectorRuleConfiguration.getPattern() );
}

if ( StringUtils.equals( proxyConnectorRuleConfiguration.getRuleType(),
ProxyConnectorRuleType.WHITE_LIST.getRuleType() ) )
{
connector.getWhitelist().add( proxyConnectorRuleConfiguration.getPattern() );
}
}
}

// Get other connectors
List<ProxyConnector> connectors = this.proxyConnectorMap.get( key );
if ( connectors == null )
@@ -263,6 +294,28 @@ public class DefaultRepositoryProxyConnectors

}

private List<ProxyConnectorRuleConfiguration> findProxyConnectorRules( String sourceRepository,
String targetRepository,
List<ProxyConnectorRuleConfiguration> all )
{
List<ProxyConnectorRuleConfiguration> proxyConnectorRuleConfigurations =
new ArrayList<ProxyConnectorRuleConfiguration>();

for ( ProxyConnectorRuleConfiguration proxyConnectorRuleConfiguration : all )
{
for ( ProxyConnectorConfiguration proxyConnector : proxyConnectorRuleConfiguration.getProxyConnectors() )
{
if ( StringUtils.equals( sourceRepository, proxyConnector.getSourceRepoId() ) && StringUtils.equals(
targetRepository, proxyConnector.getTargetRepoId() ) )
{
proxyConnectorRuleConfigurations.add( proxyConnectorRuleConfiguration );
}
}
}

return proxyConnectorRuleConfigurations;
}

public File fetchFromProxies( ManagedRepositoryContent repository, ArtifactReference artifact )
throws ProxyDownloadException
{
@@ -1171,7 +1224,7 @@ public class DefaultRepositoryProxyConnectors
{
synchronized ( this.proxyConnectorMap )
{
List<ProxyConnector> ret = (List<ProxyConnector>) this.proxyConnectorMap.get( repository.getId() );
List<ProxyConnector> ret = this.proxyConnectorMap.get( repository.getId() );
if ( ret == null )
{
return Collections.emptyList();

+ 2
- 2
archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/proxyconnectorrule/DefaultProxyConnectorRuleAdmin.java View File

@@ -127,7 +127,7 @@ public class DefaultProxyConnectorRuleAdmin
{
if ( StringUtils.equals( proxyConnectorRuleConfiguration.getPattern(), proxyConnectorRule.getPattern() )
&& StringUtils.equals( proxyConnectorRuleConfiguration.getRuleType(),
proxyConnectorRule.getProxyConnectorRuleType().toString() ) )
proxyConnectorRule.getProxyConnectorRuleType().getRuleType() ) )
{
toSave = true;
}
@@ -154,7 +154,7 @@ public class DefaultProxyConnectorRuleAdmin
{
if ( StringUtils.equals( proxyConnectorRuleConfiguration.getPattern(), proxyConnectorRule.getPattern() )
&& StringUtils.equals( proxyConnectorRuleConfiguration.getRuleType(),
proxyConnectorRule.getProxyConnectorRuleType().toString() ) )
proxyConnectorRule.getProxyConnectorRuleType().getRuleType() ) )
{
List<ProxyConnectorConfiguration> proxyConnectors =
new ArrayList<ProxyConnectorConfiguration>( proxyConnectorRule.getProxyConnectors().size() );

+ 42
- 42
archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/redback.js View File

@@ -137,50 +137,50 @@ define("redback",["jquery","utils","jquery.validate","jquery.json","knockout",

$('#modal-register-footer').append(smallSpinnerImg());

$.ajax({
url: "restServices/archivaServices/archivaAdministrationService/applicationUrl",
type: "GET",
dataType: 'text',
success: function(data){
$.log("applicationUrl ok:"+data);

var user = {
username: $("#user-register-form-username").val(),
fullName: $("#user-register-form-fullname").val(),
email: $("#user-register-form-email").val()
};

var userRegistrationRequest=new UserRegistrationRequest(user,data);
$.ajax({
url: 'restServices/redbackServices/userService/registerUser',
data: JSON.stringify(userRegistrationRequest),
type: 'POST',
contentType: "application/json",
success: function(result){
var registered = false;
if (result == "-1") {
registered = false;
} else {
registered = true;
}

if (registered == true) {
$.ajax({
url: "restServices/archivaServices/archivaAdministrationService/applicationUrl",
type: "GET",
dataType: 'text',
success: function(data){
$.log("applicationUrl ok:"+data);

var user = {
username: $("#user-register-form-username").val(),
fullName: $("#user-register-form-fullname").val(),
email: $("#user-register-form-email").val()
};

var userRegistrationRequest=new UserRegistrationRequest(user,data);
$.ajax({
url: 'restServices/redbackServices/userService/registerUser',
data: JSON.stringify(userRegistrationRequest),
type: 'POST',
contentType: "application/json",
success: function(result){
var registered = false;
if (result == "-1") {
registered = false;
} else {
registered = true;
}

if (registered == true) {
window.modalRegisterWindow.modal('hide');
$("#register-link").hide();
// FIXME i18n
displaySuccessMessage("registered your key has been sent");
}
},
complete: function(){
$("#modal-register-ok").removeAttr("disabled");
removeSmallSpinnerImg();
},
error: function(result) {
window.modalRegisterWindow.modal('hide');
$("#register-link").hide();
// FIXME i18n
displaySuccessMessage("registered your key has been sent");
}
},
complete: function(){
$("#modal-register-ok").removeAttr("disabled");
removeSmallSpinnerImg();
},
error: function(result) {
window.modalRegisterWindow.modal('hide');
}
});
}
});
});
}
});

}


Loading…
Cancel
Save