Parcourir la source

[MRM-1837] cleanup registry listeners from Archiva Configuration

tags/archiva-2.1.0
Olivier Lamy il y a 10 ans
Parent
révision
7808ee5faf

+ 3
- 1
archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/ArchivaConfiguration.java Voir le fichier

@@ -70,13 +70,15 @@ public interface ArchivaConfiguration
void removeListener( ConfigurationListener listener );

/**
* Add a registry listener to notify of events in plexus-registry.
* Add a registry listener to notify of events in spring-registry.
*
* @param listener the listener
* TODO: Remove in future.
*/
void addChangeListener( RegistryListener listener );

void removeChangeListener( RegistryListener listener );

/**
* reload configuration from file included registry
*

+ 9
- 0
archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/DefaultArchivaConfiguration.java Voir le fichier

@@ -650,6 +650,8 @@ public class DefaultArchivaConfiguration
listeners.remove( listener );
}



@Override
public void addChangeListener( RegistryListener listener )
{
@@ -673,6 +675,13 @@ public class DefaultArchivaConfiguration
}
}

@Override
public void removeChangeListener( RegistryListener listener )
{
boolean removed = registryListeners.remove( listener );
log.debug( "RegistryListener: '{}' removed {}", listener, removed );
}

@PostConstruct
public void initialize()
{

+ 0
- 2
archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/archiva/consumers/KnownRepositoryContentConsumer.java Voir le fichier

@@ -21,8 +21,6 @@ package org.apache.archiva.consumers;

/**
* Consumer for Known Repository Content.
*
*
*/
public interface KnownRepositoryContentConsumer
extends RepositoryContentConsumer

+ 0
- 15
archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/MetadataUpdaterConsumer.java Voir le fichier

@@ -70,32 +70,17 @@ public class MetadataUpdaterConsumer
*/
private String id = "metadata-updater";

/**
* default-value="Update / Create maven-metadata.xml files"
*/
private String description = "Update / Create maven-metadata.xml files";

/**
*
*/
@Inject
private RepositoryContentFactory repositoryFactory;

/**
*
*/
@Inject
private MetadataTools metadataTools;

/**
*
*/
@Inject
private ArchivaConfiguration configuration;

/**
*
*/
@Inject
private FileTypes filetypes;


+ 6
- 0
archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/MockConfiguration.java Voir le fichier

@@ -88,6 +88,12 @@ public class MockConfiguration
registryListeners.add( listener );
}

@Override
public void removeChangeListener( RegistryListener listener )
{
registryListeners.remove( listener );
}

@Override
public Configuration getConfiguration()
{

+ 7
- 1
archiva-modules/archiva-base/archiva-repository-scanner/src/main/java/org/apache/archiva/repository/scanner/DefaultRepositoryScanner.java Voir le fichier

@@ -21,6 +21,7 @@ package org.apache.archiva.repository.scanner;

import org.apache.archiva.admin.model.RepositoryAdminException;
import org.apache.archiva.admin.model.beans.ManagedRepository;
import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.configuration.FileTypes;
import org.apache.archiva.consumers.InvalidRepositoryContentConsumer;
import org.apache.archiva.consumers.KnownRepositoryContentConsumer;
@@ -32,6 +33,7 @@ import org.springframework.stereotype.Service;
import javax.inject.Inject;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
@@ -57,9 +59,10 @@ public class DefaultRepositoryScanner
public RepositoryScanStatistics scan( ManagedRepository repository, long changesSince )
throws RepositoryScannerException
{
List<KnownRepositoryContentConsumer> knownContentConsumers = null;
try
{
List<KnownRepositoryContentConsumer> knownContentConsumers = repositoryContentConsumers.getSelectedKnownConsumers();
knownContentConsumers = repositoryContentConsumers.getSelectedKnownConsumers();
List<InvalidRepositoryContentConsumer> invalidContentConsumers = repositoryContentConsumers.getSelectedInvalidConsumers();
List<String> ignoredPatterns = filetypes.getFileTypePatterns( FileTypes.IGNORED );

@@ -68,6 +71,9 @@ public class DefaultRepositoryScanner
catch ( RepositoryAdminException e )
{
throw new RepositoryScannerException( e.getMessage(), e );
} finally
{
repositoryContentConsumers.releaseSelectedKnownConsumers( knownContentConsumers );
}
}


+ 26
- 3
archiva-modules/archiva-base/archiva-repository-scanner/src/main/java/org/apache/archiva/repository/scanner/RepositoryContentConsumers.java Voir le fichier

@@ -23,9 +23,11 @@ import org.apache.archiva.admin.model.RepositoryAdminException;
import org.apache.archiva.admin.model.admin.ArchivaAdministration;
import org.apache.archiva.admin.model.beans.ManagedRepository;
import org.apache.archiva.common.utils.BaseFile;
import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.consumers.InvalidRepositoryContentConsumer;
import org.apache.archiva.consumers.KnownRepositoryContentConsumer;
import org.apache.archiva.consumers.functors.ConsumerWantsFilePredicate;
import org.apache.archiva.redback.components.registry.RegistryListener;
import org.apache.archiva.repository.scanner.functors.ConsumerProcessFileClosure;
import org.apache.archiva.repository.scanner.functors.TriggerBeginScanClosure;
import org.apache.archiva.repository.scanner.functors.TriggerScanCompletedClosure;
@@ -48,7 +50,7 @@ import java.util.Map;
/**
* RepositoryContentConsumerUtil
*/
@Service( "repositoryContentConsumers" )
@Service("repositoryContentConsumers")
public class RepositoryContentConsumers
implements ApplicationContextAware
{
@@ -62,6 +64,9 @@ public class RepositoryContentConsumers

private List<InvalidRepositoryContentConsumer> selectedInvalidConsumers;

@Inject
private ArchivaConfiguration archivaConfiguration;

@Inject
public RepositoryContentConsumers( ArchivaAdministration archivaAdministration )
{
@@ -156,7 +161,7 @@ public class RepositoryContentConsumers
* @return the list of {@link KnownRepositoryContentConsumer} that have been selected
* by the active configuration.
*/
public synchronized List<KnownRepositoryContentConsumer> getSelectedKnownConsumers()
public List<KnownRepositoryContentConsumer> getSelectedKnownConsumers()
throws RepositoryAdminException
{
// FIXME only for testing
@@ -178,6 +183,22 @@ public class RepositoryContentConsumers
return ret;
}

public void releaseSelectedKnownConsumers( List<KnownRepositoryContentConsumer> repositoryContentConsumers )
{
if ( repositoryContentConsumers == null )
{
return;
}
for ( KnownRepositoryContentConsumer knownRepositoryContentConsumer : repositoryContentConsumers )
{
if ( RegistryListener.class.isAssignableFrom( knownRepositoryContentConsumer.getClass() ) )
{
archivaConfiguration.removeChangeListener(
RegistryListener.class.cast( knownRepositoryContentConsumer ) );
}
}
}

/**
* Get the list of {@link InvalidRepositoryContentConsumer} objects that are
* selected according to the active configuration.
@@ -248,12 +269,13 @@ public class RepositoryContentConsumers
public void executeConsumers( ManagedRepository repository, File localFile, boolean updateRelatedArtifacts )
throws RepositoryAdminException
{
List<KnownRepositoryContentConsumer> selectedKnownConsumers = null;
// Run the repository consumers
try
{
Closure triggerBeginScan = new TriggerBeginScanClosure( repository, getStartTime(), false );

List<KnownRepositoryContentConsumer> selectedKnownConsumers = getSelectedKnownConsumers();
selectedKnownConsumers = getSelectedKnownConsumers();

// MRM-1212/MRM-1197
// - do not create missing/fix invalid checksums and update metadata when deploying from webdav since these are uploaded by maven
@@ -307,6 +329,7 @@ public class RepositoryContentConsumers
CollectionUtils.forAllDo( availableKnownConsumers, triggerCompleteScan );
CollectionUtils.forAllDo( availableInvalidConsumers, triggerCompleteScan );
*/
releaseSelectedKnownConsumers( selectedKnownConsumers );
}
}


+ 6
- 0
archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/configuration/TestConfiguration.java Voir le fichier

@@ -66,6 +66,12 @@ public class TestConfiguration
// no op
}

@Override
public void removeChangeListener( RegistryListener listener )
{
// no op
}

@Override
public void reload()
{

+ 6
- 0
archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/conf/MockConfiguration.java Voir le fichier

@@ -64,6 +64,12 @@ public class MockConfiguration
registryListeners.add( listener );
}

@Override
public void removeChangeListener( RegistryListener listener )
{
registryListeners.remove( listener );
}

@Override
public Configuration getConfiguration()
{

+ 6
- 0
archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/configuration/StubConfiguration.java Voir le fichier

@@ -66,6 +66,12 @@ public class StubConfiguration
throw new UnsupportedOperationException();
}

@Override
public void removeChangeListener( RegistryListener listener )
{
throw new UnsupportedOperationException();
}

@Override
public void reload()
{

Chargement…
Annuler
Enregistrer