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;
* @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
{
*
*/
@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;
/**
*
*/
@Inject
- @Named ( value = "archivaTaskScheduler#repository" )
+ @Named (value = "archivaTaskScheduler#repository")
private ArchivaTaskScheduler scheduler;
@Inject
}
- @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();
}
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 )
}
+ 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
{
{
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();
$('#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');
- }
- });
- }
- });
+ });
+ }
+ });
}