diff options
author | Olivier Lamy <olamy@apache.org> | 2011-09-13 12:12:39 +0000 |
---|---|---|
committer | Olivier Lamy <olamy@apache.org> | 2011-09-13 12:12:39 +0000 |
commit | 919a5ac3eb725dc676e81fcbf868f3cc165598a4 (patch) | |
tree | 9aecd4829e214ecbb256dbd0ec5f13f428016ab3 /archiva-modules/archiva-base/archiva-consumers | |
parent | 5c067f2a4deaa775213a3b5c2ca44ce62f4ba914 (diff) | |
download | archiva-919a5ac3eb725dc676e81fcbf868f3cc165598a4.tar.gz archiva-919a5ac3eb725dc676e81fcbf868f3cc165598a4.zip |
[MRM-1504] Add a new module for repository administration management
split the repo admin in two modules : api and default implementation (to be able to more easily change the impl).
Use the repo admin api consumers and indexing modules.
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1170135 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'archiva-modules/archiva-base/archiva-consumers')
25 files changed, 654 insertions, 120 deletions
diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/pom.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/pom.xml index 7ef684e82..d7b8bf863 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/pom.xml +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/pom.xml @@ -32,7 +32,11 @@ <dependencies> <dependency> <groupId>org.apache.archiva</groupId> - <artifactId>archiva-configuration</artifactId> + <artifactId>archiva-repository-admin-api</artifactId> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-common</artifactId> </dependency> <dependency> <groupId>commons-collections</groupId> diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/AbstractMonitoredConsumer.java b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/AbstractMonitoredConsumer.java index be96186e1..55a94261a 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/AbstractMonitoredConsumer.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/AbstractMonitoredConsumer.java @@ -19,13 +19,13 @@ package org.apache.maven.archiva.consumers; * under the License. */ +import org.apache.maven.archiva.common.FileTypeUtils; + import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; -import org.apache.maven.archiva.configuration.FileTypes; - /** * AbstractMonitoredConsumer * @@ -101,7 +101,7 @@ public abstract class AbstractMonitoredConsumer protected List<String> getDefaultArtifactExclusions() { - return FileTypes.DEFAULT_EXCLUSIONS; + return FileTypeUtils.DEFAULT_EXCLUSIONS; } diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/InvalidRepositoryContentConsumer.java b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/InvalidRepositoryContentConsumer.java index 005923e9a..e6196167e 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/InvalidRepositoryContentConsumer.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/InvalidRepositoryContentConsumer.java @@ -27,5 +27,5 @@ package org.apache.maven.archiva.consumers; public interface InvalidRepositoryContentConsumer extends RepositoryContentConsumer { - + // no op } diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/RepositoryContentConsumer.java b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/RepositoryContentConsumer.java index a29ad3d37..5a83b0798 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/RepositoryContentConsumer.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/RepositoryContentConsumer.java @@ -19,7 +19,7 @@ package org.apache.maven.archiva.consumers; * under the License. */ -import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; +import org.apache.archiva.admin.model.managed.ManagedRepository; import java.util.Date; import java.util.List; @@ -60,7 +60,7 @@ public interface RepositoryContentConsumer * @param whenGathered the start of the repository scan * @throws ConsumerException if there was a problem with using the provided repository with the consumer. */ - void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered ) + void beginScan( ManagedRepository repository, Date whenGathered ) throws ConsumerException; /** @@ -73,9 +73,9 @@ public interface RepositoryContentConsumer * @param whenGathered the start of the repository scan * @param executeOnEntireRepo flags whether the consumer will be executed on an entire repository or just on a specific resource * @throws ConsumerException if there was a problem with using the provided repository with the consumer. - * @see RepositoryContentConsumer#beginScan(org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration, java.util.Date) + * @see RepositoryContentConsumer#beginScan(ManagedRepository, java.util.Date) */ - void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo ) + void beginScan( ManagedRepository repository, Date whenGathered, boolean executeOnEntireRepo ) throws ConsumerException; /** diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml index bc5b6b4c3..b080c2519 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml @@ -46,6 +46,10 @@ </dependency> <dependency> <groupId>org.apache.archiva</groupId> + <artifactId>archiva-repository-admin-api</artifactId> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> <artifactId>archiva-repository-layer</artifactId> </dependency> <dependency> @@ -84,10 +88,36 @@ <artifactId>mockito-all</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-repository-admin-default</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.codehaus.redback</groupId> + <artifactId>redback-rbac-cached</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.derby</groupId> + <artifactId>derby</artifactId> + <scope>test</scope> + </dependency> </dependencies> <build> <pluginManagement> <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <systemPropertyVariables> + <appserver.base>${basedir}/target/appserver-base</appserver.base> + <plexus.home>${project.build.outputDirectory}</plexus.home> + <java.io.tmpdir>${project.build.outputDirectory}</java.io.tmpdir> + </systemPropertyVariables> + </configuration> + </plugin> <plugin> <groupId>org.apache.rat</groupId> <artifactId>apache-rat-plugin</artifactId> diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumer.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumer.java index 54dfccc2b..c35bf60b6 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumer.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumer.java @@ -19,12 +19,12 @@ package org.apache.maven.archiva.consumers.core; * under the License. */ +import org.apache.archiva.admin.model.managed.ManagedRepository; import org.apache.archiva.checksum.ChecksumAlgorithm; import org.apache.archiva.checksum.ChecksummedFile; import org.apache.maven.archiva.configuration.ArchivaConfiguration; import org.apache.maven.archiva.configuration.ConfigurationNames; import org.apache.maven.archiva.configuration.FileTypes; -import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; import org.apache.maven.archiva.consumers.ConsumerException; import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; @@ -96,13 +96,13 @@ public class ArtifactMissingChecksumsConsumer return false; } - public void beginScan( ManagedRepositoryConfiguration repo, Date whenGathered ) + public void beginScan( ManagedRepository repo, Date whenGathered ) throws ConsumerException { this.repositoryDir = new File( repo.getLocation() ); } - public void beginScan( ManagedRepositoryConfiguration repo, Date whenGathered, boolean executeOnEntireRepo ) + public void beginScan( ManagedRepository repo, Date whenGathered, boolean executeOnEntireRepo ) throws ConsumerException { beginScan( repo, whenGathered ); diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRemoveConsumer.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRemoveConsumer.java index 99fe36e11..33fa0dcae 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRemoveConsumer.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRemoveConsumer.java @@ -19,12 +19,10 @@ package org.apache.maven.archiva.consumers.core; * under the License. */ -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.StringUtils; +import org.apache.archiva.admin.model.managed.ManagedRepository; import org.apache.maven.archiva.configuration.ArchivaConfiguration; import org.apache.maven.archiva.configuration.ConfigurationNames; import org.apache.maven.archiva.configuration.FileTypes; -import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; import org.apache.maven.archiva.consumers.ConsumerException; import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; @@ -92,13 +90,13 @@ public class AutoRemoveConsumer return false; } - public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered ) + public void beginScan( ManagedRepository repository, Date whenGathered ) throws ConsumerException { this.repositoryDir = new File( repository.getLocation() ); } - public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo ) + public void beginScan( ManagedRepository repository, Date whenGathered, boolean executeOnEntireRepo ) throws ConsumerException { beginScan( repository, whenGathered ); diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRenameConsumer.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRenameConsumer.java index 33a6568bf..1990bfa12 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRenameConsumer.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRenameConsumer.java @@ -19,8 +19,8 @@ package org.apache.maven.archiva.consumers.core; * under the License. */ +import org.apache.archiva.admin.model.managed.ManagedRepository; import org.apache.commons.io.FileUtils; -import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; import org.apache.maven.archiva.consumers.ConsumerException; import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; @@ -91,13 +91,13 @@ public class AutoRenameConsumer return false; } - public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered ) + public void beginScan( ManagedRepository repository, Date whenGathered ) throws ConsumerException { this.repositoryDir = new File( repository.getLocation() ); } - public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo ) + public void beginScan( ManagedRepository repository, Date whenGathered, boolean executeOnEntireRepo ) throws ConsumerException { beginScan( repository, whenGathered ); diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/MetadataUpdaterConsumer.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/MetadataUpdaterConsumer.java index a2e657a62..f8003e384 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/MetadataUpdaterConsumer.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/MetadataUpdaterConsumer.java @@ -19,16 +19,10 @@ package org.apache.maven.archiva.consumers.core; * under the License. */ -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - +import org.apache.archiva.admin.model.managed.ManagedRepository; import org.apache.maven.archiva.configuration.ArchivaConfiguration; import org.apache.maven.archiva.configuration.ConfigurationNames; import org.apache.maven.archiva.configuration.FileTypes; -import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; import org.apache.maven.archiva.consumers.ConsumerException; import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; @@ -52,6 +46,11 @@ import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import javax.inject.Inject; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; /** * MetadataUpdaterConsumer will create and update the metadata present within the repository. @@ -129,7 +128,7 @@ public class MetadataUpdaterConsumer this.includes = includes; } - public void beginScan( ManagedRepositoryConfiguration repoConfig, Date whenGathered ) + public void beginScan( ManagedRepository repoConfig, Date whenGathered ) throws ConsumerException { try @@ -148,7 +147,7 @@ public class MetadataUpdaterConsumer } } - public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo ) + public void beginScan( ManagedRepository repository, Date whenGathered, boolean executeOnEntireRepo ) throws ConsumerException { beginScan( repository, whenGathered ); diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ValidateChecksumConsumer.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ValidateChecksumConsumer.java index 2487ed727..d5357a3ff 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ValidateChecksumConsumer.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ValidateChecksumConsumer.java @@ -19,10 +19,10 @@ package org.apache.maven.archiva.consumers.core; * under the License. */ +import org.apache.archiva.admin.model.managed.ManagedRepository; import org.apache.archiva.common.plexusbridge.DigesterUtils; import org.apache.archiva.common.plexusbridge.PlexusSisuBridge; import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException; -import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; import org.apache.maven.archiva.consumers.ConsumerException; import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; @@ -39,7 +39,6 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.Date; -import java.util.Iterator; import java.util.List; /** @@ -106,13 +105,13 @@ public class ValidateChecksumConsumer return false; } - public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered ) + public void beginScan( ManagedRepository repository, Date whenGathered ) throws ConsumerException { this.repositoryDir = new File( repository.getLocation() ); } - public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo ) + public void beginScan( ManagedRepository repository, Date whenGathered, boolean executeOnEntireRepo ) throws ConsumerException { beginScan( repository, whenGathered ); diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java index e12087439..52e5702ca 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java @@ -19,13 +19,14 @@ package org.apache.maven.archiva.consumers.core.repository; * under the License. */ +import org.apache.archiva.admin.model.RepositoryAdminException; +import org.apache.archiva.admin.model.managed.ManagedRepository; +import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; import org.apache.archiva.metadata.repository.MetadataRepository; import org.apache.archiva.metadata.repository.RepositorySession; import org.apache.archiva.repository.events.RepositoryListener; import org.apache.maven.archiva.common.utils.VersionComparator; import org.apache.maven.archiva.common.utils.VersionUtil; -import org.apache.maven.archiva.configuration.ArchivaConfiguration; -import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; import org.apache.maven.archiva.model.ArchivaArtifact; import org.apache.maven.archiva.model.ArtifactReference; import org.apache.maven.archiva.model.ProjectReference; @@ -50,7 +51,7 @@ import java.util.List; * This will look in a single managed repository, and purge any snapshots that are present * that have a corresponding released version on the same repository. * </p> - * + * <p/> * <p> * So, if you have the following (presented in the m2/default layout form) ... * <pre> @@ -74,19 +75,19 @@ public class CleanupReleasedSnapshotsRepositoryPurge { private MetadataTools metadataTools; - private ArchivaConfiguration archivaConfig; + private ManagedRepositoryAdmin managedRepositoryAdmin; private RepositoryContentFactory repoContentFactory; public CleanupReleasedSnapshotsRepositoryPurge( ManagedRepositoryContent repository, MetadataTools metadataTools, - ArchivaConfiguration archivaConfig, + ManagedRepositoryAdmin managedRepositoryAdmin, RepositoryContentFactory repoContentFactory, RepositorySession repositorySession, List<RepositoryListener> listeners ) { super( repository, repositorySession, listeners ); this.metadataTools = metadataTools; - this.archivaConfig = archivaConfig; + this.managedRepositoryAdmin = managedRepositoryAdmin; this.repoContentFactory = repoContentFactory; } @@ -118,15 +119,15 @@ public class CleanupReleasedSnapshotsRepositoryPurge // Gather up all of the versions. List<String> allVersions = new ArrayList<String>( repository.getVersions( reference ) ); - List<ManagedRepositoryConfiguration> repos = archivaConfig.getConfiguration().getManagedRepositories(); - for ( ManagedRepositoryConfiguration repo : repos ) + List<ManagedRepository> repos = managedRepositoryAdmin.getManagedRepositories(); + for ( ManagedRepository repo : repos ) { if ( repo.isReleases() && !repo.getId().equals( repository.getId() ) ) { try { - ManagedRepositoryContent repoContent = repoContentFactory.getManagedRepositoryContent( - repo.getId() ); + ManagedRepositoryContent repoContent = + repoContentFactory.getManagedRepositoryContent( repo.getId() ); allVersions.addAll( repoContent.getVersions( reference ) ); } catch ( RepositoryNotFoundException e ) @@ -167,9 +168,9 @@ public class CleanupReleasedSnapshotsRepositoryPurge versionRef.setGroupId( artifactRef.getGroupId() ); versionRef.setArtifactId( artifactRef.getArtifactId() ); - ArchivaArtifact artifact = new ArchivaArtifact( artifactRef.getGroupId(), artifactRef.getArtifactId(), - artifactRef.getVersion(), artifactRef.getClassifier(), - artifactRef.getType(), repository.getId() ); + ArchivaArtifact artifact = + new ArchivaArtifact( artifactRef.getGroupId(), artifactRef.getArtifactId(), artifactRef.getVersion(), + artifactRef.getClassifier(), artifactRef.getType(), repository.getId() ); MetadataRepository metadataRepository = repositorySession.getRepository(); for ( String version : snapshotVersions ) @@ -195,6 +196,9 @@ public class CleanupReleasedSnapshotsRepositoryPurge { updateMetadata( artifactRef ); } + } catch ( RepositoryAdminException e ) + { + throw new RepositoryPurgeException( e.getMessage(), e ); } catch ( LayoutException e ) { diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java index 55ef8f1fd..791de8d76 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java @@ -19,13 +19,14 @@ package org.apache.maven.archiva.consumers.core.repository; * under the License. */ +import org.apache.archiva.admin.model.managed.ManagedRepository; +import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; import org.apache.archiva.metadata.repository.RepositorySession; import org.apache.archiva.metadata.repository.RepositorySessionFactory; import org.apache.archiva.repository.events.RepositoryListener; import org.apache.maven.archiva.configuration.ArchivaConfiguration; import org.apache.maven.archiva.configuration.ConfigurationNames; import org.apache.maven.archiva.configuration.FileTypes; -import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; import org.apache.maven.archiva.consumers.ConsumerException; import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; @@ -36,7 +37,6 @@ import org.apache.maven.archiva.repository.RepositoryNotFoundException; import org.apache.maven.archiva.repository.metadata.MetadataTools; import org.codehaus.plexus.registry.Registry; import org.codehaus.plexus.registry.RegistryListener; -import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; @@ -75,11 +75,14 @@ public class RepositoryPurgeConsumer @Named( value = "archivaConfiguration#default" ) private ArchivaConfiguration configuration; + @Inject + private ManagedRepositoryAdmin managedRepositoryAdmin; + /** * */ @Inject - @Named(value = "repositoryContentFactory#default") + @Named( value = "repositoryContentFactory#default" ) private RepositoryContentFactory repositoryContentFactory; /** @@ -92,7 +95,7 @@ public class RepositoryPurgeConsumer * */ @Inject - @Named(value = "fileTypes") + @Named( value = "fileTypes" ) private FileTypes filetypes; private List<String> includes = new ArrayList<String>(); @@ -111,7 +114,6 @@ public class RepositoryPurgeConsumer /** * TODO: this could be multiple implementations and needs to be configured. - * */ @Inject private RepositorySessionFactory repositorySessionFactory; @@ -143,7 +145,7 @@ public class RepositoryPurgeConsumer return this.includes; } - public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered ) + public void beginScan( ManagedRepository repository, Date whenGathered ) throws ConsumerException { ManagedRepositoryContent repositoryContent; @@ -174,13 +176,13 @@ public class RepositoryPurgeConsumer listeners ); } - cleanUp = new CleanupReleasedSnapshotsRepositoryPurge( repositoryContent, metadataTools, configuration, + cleanUp = new CleanupReleasedSnapshotsRepositoryPurge( repositoryContent, metadataTools, managedRepositoryAdmin, repositoryContentFactory, repositorySession, listeners ); deleteReleasedSnapshots = repository.isDeleteReleasedSnapshots(); } - public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo ) + public void beginScan( ManagedRepository repository, Date whenGathered, boolean executeOnEntireRepo ) throws ConsumerException { beginScan( repository, whenGathered ); diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/metadata/repository/TestMetadataRepository.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/metadata/repository/TestMetadataRepository.java new file mode 100644 index 000000000..c78389e89 --- /dev/null +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/metadata/repository/TestMetadataRepository.java @@ -0,0 +1,185 @@ +package org.apache.archiva.metadata.repository; + +/* + * 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. + */ + +import org.apache.archiva.metadata.model.ArtifactMetadata; +import org.apache.archiva.metadata.model.MetadataFacet; +import org.apache.archiva.metadata.model.ProjectMetadata; +import org.apache.archiva.metadata.model.ProjectVersionMetadata; +import org.apache.archiva.metadata.model.ProjectVersionReference; + +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.List; + +public class TestMetadataRepository + implements MetadataRepository +{ + public ProjectMetadata getProject( String repoId, String namespace, String projectId ) + { + return null; + } + + public ProjectVersionMetadata getProjectVersion( String repoId, String namespace, String projectId, + String projectVersion ) + { + return null; + } + + public Collection<String> getArtifactVersions( String repoId, String namespace, String projectId, + String projectVersion ) + { + return null; + } + + public Collection<ProjectVersionReference> getProjectReferences( String repoId, String namespace, String projectId, + String projectVersion ) + { + return null; + } + + public Collection<String> getRootNamespaces( String repoId ) + { + return null; + } + + public Collection<String> getNamespaces( String repoId, String namespace ) + { + return null; + } + + public Collection<String> getProjects( String repoId, String namespace ) + { + return null; + } + + public Collection<String> getProjectVersions( String repoId, String namespace, String projectId ) + { + return null; + } + + public void updateProject( String repoId, ProjectMetadata project ) + { + } + + public void updateArtifact( String repoId, String namespace, String projectId, String projectVersion, + ArtifactMetadata artifactMeta ) + { + + } + + public void updateProjectVersion( String repoId, String namespace, String projectId, + ProjectVersionMetadata versionMetadata ) + { + + } + + public void updateNamespace( String repoId, String namespace ) + { + + } + + public List<String> getMetadataFacets( String repodId, String facetId ) + { + return Collections.emptyList(); + } + + public MetadataFacet getMetadataFacet( String repositoryId, String facetId, String name ) + { + return null; + } + + public void addMetadataFacet( String repositoryId, MetadataFacet metadataFacet ) + { + + } + + public void removeMetadataFacets( String repositoryId, String facetId ) + { + + } + + public void removeMetadataFacet( String repoId, String facetId, String name ) + { + + } + + public List<ArtifactMetadata> getArtifactsByDateRange( String repoId, Date startTime, Date endTime ) + { + return null; + } + + public Collection<String> getRepositories() + { + return null; + } + + public List<ArtifactMetadata> getArtifactsByChecksum( String repoId, String checksum ) + { + return null; + } + + public void removeArtifact( String repositoryId, String namespace, String project, String version, String id ) + { + + } + + public void removeRepository( String repoId ) + { + + } + + public Collection<ArtifactMetadata> getArtifacts( String repoId, String namespace, String projectId, + String projectVersion ) + { + return null; + } + + public void save() + { + + } + + public void close() + { + + } + + public void revert() + { + + } + + public boolean canObtainAccess( Class<?> aClass ) + { + return false; + } + + public Object obtainAccess( Class<?> aClass ) + { + return null; + } + + public List<ArtifactMetadata> getArtifacts( String repositoryId ) + { + return null; + } +} diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/metadata/repository/TestRepositorySessionFactory.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/metadata/repository/TestRepositorySessionFactory.java index 90dd98b5d..1ac5901ca 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/metadata/repository/TestRepositorySessionFactory.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/metadata/repository/TestRepositorySessionFactory.java @@ -20,7 +20,7 @@ import org.springframework.stereotype.Service; * specific language governing permissions and limitations * under the License. */ -@Service("repositorySessionFactory#test") +@Service( "repositorySessionFactory#test" ) public class TestRepositorySessionFactory implements RepositorySessionFactory { @@ -30,7 +30,14 @@ public class TestRepositorySessionFactory public RepositorySession createSession() { - return new RepositorySession( repository, resolver ); + return new RepositorySession( new TestMetadataRepository(), resolver ) + { + @Override + public void close() + { + return; + } + }; } public void setRepository( MetadataRepository repository ) diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumerTest.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumerTest.java index 67b3b3ffd..aa243dc2e 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumerTest.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumerTest.java @@ -1,9 +1,9 @@ package org.apache.maven.archiva.consumers.core; +import org.apache.archiva.admin.model.managed.ManagedRepository; import org.apache.archiva.checksum.ChecksumAlgorithm; import org.apache.archiva.checksum.ChecksummedFile; import org.apache.commons.io.FileUtils; -import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; import org.junit.Before; import org.junit.Test; @@ -33,7 +33,7 @@ import java.util.Calendar; public class ArtifactMissingChecksumsConsumerTest extends AbstractArtifactConsumerTest { - private ManagedRepositoryConfiguration repoConfig; + private ManagedRepository repoConfig; @Before public void setUp() @@ -41,7 +41,7 @@ public class ArtifactMissingChecksumsConsumerTest { super.setUp(); - repoConfig = new ManagedRepositoryConfiguration(); + repoConfig = new ManagedRepository(); repoConfig.setId( "test-repo" ); repoConfig.setName( "Test Repository" ); repoConfig.setLayout( "default" ); diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java index 2f63b653a..7abb869ce 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java @@ -20,6 +20,7 @@ package org.apache.maven.archiva.consumers.core.repository; */ import junit.framework.TestCase; +import org.apache.archiva.admin.model.managed.ManagedRepository; import org.apache.archiva.metadata.repository.MetadataRepository; import org.apache.archiva.metadata.repository.RepositorySession; import org.apache.archiva.repository.events.RepositoryListener; @@ -76,7 +77,7 @@ public abstract class AbstractRepositoryPurgeTest protected static final String RELEASES_TEST_REPO_NAME = "Releases Test Repo One"; - private ManagedRepositoryConfiguration config; + private ManagedRepository config; private ManagedRepositoryContent repo; @@ -117,9 +118,9 @@ public abstract class AbstractRepositoryPurgeTest repo = null; } - public ManagedRepositoryConfiguration getRepoConfiguration( String repoId, String repoName ) + public ManagedRepository getRepoConfiguration( String repoId, String repoName ) { - config = new ManagedRepositoryConfiguration(); + config = new ManagedRepository(); config.setId( repoId ); config.setName( repoName ); config.setDaysOlder( TEST_DAYS_OLDER ); diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java index 47a35e1d6..c3f8c7b44 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java @@ -19,10 +19,11 @@ package org.apache.maven.archiva.consumers.core.repository; * under the License. */ +import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; +import org.apache.archiva.admin.repository.managed.DefaultManagedRepositoryAdmin; import org.apache.archiva.repository.events.RepositoryListener; import org.apache.commons.io.FileUtils; import org.apache.maven.archiva.configuration.ArchivaConfiguration; -import org.apache.maven.archiva.configuration.Configuration; import org.apache.maven.archiva.repository.RepositoryContentFactory; import org.apache.maven.archiva.repository.metadata.MetadataTools; import org.custommonkey.xmlunit.XMLAssert; @@ -67,7 +68,8 @@ public class CleanupReleasedSnapshotsRepositoryPurgeTest super.setUp(); RepositoryContentFactory factory = - applicationContext.getBean( "repositoryContentFactory#cleanup-released-snapshots", RepositoryContentFactory.class ); + applicationContext.getBean( "repositoryContentFactory#cleanup-released-snapshots", + RepositoryContentFactory.class ); archivaConfiguration = applicationContext.getBean( "archivaConfiguration#cleanup-released-snapshots", ArchivaConfiguration.class ); @@ -76,18 +78,28 @@ public class CleanupReleasedSnapshotsRepositoryPurgeTest listener = (RepositoryListener) listenerControl.getMock(); List<RepositoryListener> listeners = Collections.singletonList( listener ); - repoPurge = - new CleanupReleasedSnapshotsRepositoryPurge( getRepository(), metadataTools, archivaConfiguration, factory, - repositorySession, listeners ); + repoPurge = new CleanupReleasedSnapshotsRepositoryPurge( getRepository(), metadataTools, + applicationContext.getBean( + ManagedRepositoryAdmin.class ), factory, + repositorySession, listeners ); + + ( (DefaultManagedRepositoryAdmin) applicationContext.getBean( + ManagedRepositoryAdmin.class ) ).setArchivaConfiguration( archivaConfiguration ); } @Test public void testReleasedSnapshotsExistsInSameRepo() throws Exception { - Configuration config = archivaConfiguration.getConfiguration(); - config.removeManagedRepository( config.findManagedRepositoryById( TEST_REPO_ID ) ); - config.addManagedRepository( getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ) ); + /** + Configuration config = archivaConfiguration.getConfiguration(); + config.removeManagedRepository( config.findManagedRepositoryById( TEST_REPO_ID ) ); + config.addManagedRepository( getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ) ); + **/ + + applicationContext.getBean( ManagedRepositoryAdmin.class ).deleteManagedRepository( TEST_REPO_ID, null, false ); + applicationContext.getBean( ManagedRepositoryAdmin.class ).addManagedRepository( + getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ), false, null ); String repoRoot = prepareTestRepos(); @@ -142,9 +154,13 @@ public class CleanupReleasedSnapshotsRepositoryPurgeTest public void testNonArtifactFile() throws Exception { - Configuration config = archivaConfiguration.getConfiguration(); + /*Configuration config = archivaConfiguration.getConfiguration(); config.removeManagedRepository( config.findManagedRepositoryById( TEST_REPO_ID ) ); - config.addManagedRepository( getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ) ); + config.addManagedRepository( getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ) );*/ + + applicationContext.getBean( ManagedRepositoryAdmin.class ).deleteManagedRepository( TEST_REPO_ID, null, false ); + applicationContext.getBean( ManagedRepositoryAdmin.class ).addManagedRepository( + getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ), false, null ); String repoRoot = prepareTestRepos(); @@ -152,7 +168,7 @@ public class CleanupReleasedSnapshotsRepositoryPurgeTest listenerControl.replay(); File file = new File( repoRoot, INDEX_PATH ); - if (!file.exists()) + if ( !file.exists() ) { // help windauze to create directory with . file.getParentFile().mkdirs(); @@ -171,10 +187,18 @@ public class CleanupReleasedSnapshotsRepositoryPurgeTest public void testReleasedSnapshotsExistsInDifferentRepo() throws Exception { + /* Configuration config = archivaConfiguration.getConfiguration(); config.removeManagedRepository( config.findManagedRepositoryById( TEST_REPO_ID ) ); config.addManagedRepository( getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ) ); config.addManagedRepository( getRepoConfiguration( RELEASES_TEST_REPO_ID, RELEASES_TEST_REPO_NAME ) ); + */ + applicationContext.getBean( ManagedRepositoryAdmin.class ).deleteManagedRepository( TEST_REPO_ID, null, false ); + applicationContext.getBean( ManagedRepositoryAdmin.class ).addManagedRepository( + getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ), false, null ); + + applicationContext.getBean( ManagedRepositoryAdmin.class ).addManagedRepository( + getRepoConfiguration( RELEASES_TEST_REPO_ID, RELEASES_TEST_REPO_NAME ), false, null ); String repoRoot = prepareTestRepos(); @@ -217,9 +241,14 @@ public class CleanupReleasedSnapshotsRepositoryPurgeTest public void testHigherSnapshotExistsInSameRepo() throws Exception { + /* Configuration config = archivaConfiguration.getConfiguration(); config.removeManagedRepository( config.findManagedRepositoryById( TEST_REPO_ID ) ); config.addManagedRepository( getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ) ); + */ + applicationContext.getBean( ManagedRepositoryAdmin.class ).deleteManagedRepository( TEST_REPO_ID, null, false ); + applicationContext.getBean( ManagedRepositoryAdmin.class ).addManagedRepository( + getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ), false, null ); String repoRoot = prepareTestRepos(); diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurgeTest.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurgeTest.java index 3f0ec595c..06f753800 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurgeTest.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurgeTest.java @@ -19,6 +19,7 @@ package org.apache.maven.archiva.consumers.core.repository; * under the License. */ +import org.apache.archiva.admin.model.managed.ManagedRepository; import org.apache.archiva.repository.events.RepositoryListener; import org.apache.commons.lang.time.DateUtils; import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; @@ -52,7 +53,7 @@ public class DaysOldRepositoryPurgeTest public void testByLastModified() throws Exception { - ManagedRepositoryConfiguration repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ); + ManagedRepository repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ); repoPurge = new DaysOldRepositoryPurge( getRepository(), repoConfiguration.getDaysOlder(), repoConfiguration.getRetentionCount(), repositorySession, Collections.singletonList( listener ) ); @@ -114,7 +115,7 @@ public class DaysOldRepositoryPurgeTest public void testOrderOfDeletion() throws Exception { - ManagedRepositoryConfiguration repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ); + ManagedRepository repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ); List<RepositoryListener> listeners = Collections.singletonList( listener ); repoPurge = new DaysOldRepositoryPurge( getRepository(), repoConfiguration.getDaysOlder(), repoConfiguration.getRetentionCount(), repositorySession, listeners ); @@ -165,7 +166,7 @@ public class DaysOldRepositoryPurgeTest public void testMetadataDrivenSnapshots() throws Exception { - ManagedRepositoryConfiguration repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ); + ManagedRepository repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ); List<RepositoryListener> listeners = Collections.singletonList( listener ); repoPurge = new DaysOldRepositoryPurge( getRepository(), repoConfiguration.getDaysOlder(), repoConfiguration.getRetentionCount(), repositorySession, listeners ); diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumerTest.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumerTest.java index 9da04bc00..8e4df2cd6 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumerTest.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumerTest.java @@ -19,14 +19,15 @@ package org.apache.maven.archiva.consumers.core.repository; * under the License. */ +import org.apache.archiva.admin.model.managed.ManagedRepository; +import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; +import org.apache.archiva.admin.repository.managed.DefaultManagedRepositoryAdmin; import org.apache.archiva.metadata.repository.TestRepositorySessionFactory; import org.apache.commons.io.FileUtils; import org.apache.maven.archiva.common.utils.BaseFile; import org.apache.maven.archiva.configuration.ArchivaConfiguration; -import org.apache.maven.archiva.configuration.Configuration; import org.apache.maven.archiva.configuration.FileType; import org.apache.maven.archiva.configuration.FileTypes; -import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; import org.apache.maven.archiva.consumers.functors.ConsumerWantsFilePredicate; import org.custommonkey.xmlunit.XMLAssert; @@ -43,6 +44,16 @@ import java.io.File; public class RepositoryPurgeConsumerTest extends AbstractRepositoryPurgeTest { + @Before + public void setUp() + throws Exception + { + super.setUp(); + + TestRepositorySessionFactory factory = applicationContext.getBean( TestRepositorySessionFactory.class ); + factory.setRepository( metadataRepository ); + } + @Test public void testConsumption() throws Exception @@ -117,7 +128,7 @@ public class RepositoryPurgeConsumerTest applicationContext.getBean( "knownRepositoryContentConsumer#repo-purge-consumer-by-retention-count", KnownRepositoryContentConsumer.class ); - ManagedRepositoryConfiguration repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ); + ManagedRepository repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ); repoConfiguration.setDaysOlder( 0 ); // force days older off to allow retention count purge to execute. repoConfiguration.setRetentionCount( TEST_RETENTION_COUNT ); addRepoToConfiguration( "retention-count", repoConfiguration ); @@ -163,32 +174,51 @@ public class RepositoryPurgeConsumerTest removeRepoFromConfiguration( "retention-count", repoConfiguration ); } - private void addRepoToConfiguration( String configHint, ManagedRepositoryConfiguration repoConfiguration ) + private void addRepoToConfiguration( String configHint, ManagedRepository repoConfiguration ) throws Exception { ArchivaConfiguration archivaConfiguration = applicationContext.getBean( "archivaConfiguration#" + configHint, ArchivaConfiguration.class ); - Configuration configuration = archivaConfiguration.getConfiguration(); - ManagedRepositoryConfiguration managedRepositoryConfiguration = - configuration.findManagedRepositoryById( repoConfiguration.getId() ); - if ( managedRepositoryConfiguration != null ) + ( (DefaultManagedRepositoryAdmin) applicationContext.getBean( + ManagedRepositoryAdmin.class ) ).setArchivaConfiguration( archivaConfiguration ); + /** + Configuration configuration = archivaConfiguration.getConfiguration(); + ManagedRepositoryConfiguration managedRepositoryConfiguration = + configuration.findManagedRepositoryById( repoConfiguration.getId() ); + if ( managedRepositoryConfiguration != null ) + { + configuration.removeManagedRepository( managedRepositoryConfiguration ); + } + configuration.addManagedRepository( repoConfiguration ); + **/ + ManagedRepositoryAdmin managedRepositoryAdmin = applicationContext.getBean( ManagedRepositoryAdmin.class ); + if ( managedRepositoryAdmin.getManagedRepository( repoConfiguration.getId() ) != null ) { - configuration.removeManagedRepository( managedRepositoryConfiguration ); + managedRepositoryAdmin.deleteManagedRepository( repoConfiguration.getId(), null, false ); } - configuration.addManagedRepository( repoConfiguration ); + managedRepositoryAdmin.addManagedRepository( repoConfiguration, false, null ); } - private void removeRepoFromConfiguration( String configHint, ManagedRepositoryConfiguration repoConfiguration ) + private void removeRepoFromConfiguration( String configHint, ManagedRepository repoConfiguration ) throws Exception { ArchivaConfiguration archivaConfiguration = applicationContext.getBean( "archivaConfiguration#" + configHint, ArchivaConfiguration.class ); - Configuration configuration = archivaConfiguration.getConfiguration(); - ManagedRepositoryConfiguration managedRepositoryConfiguration = - configuration.findManagedRepositoryById( repoConfiguration.getId() ); - if ( managedRepositoryConfiguration != null ) + + ( (DefaultManagedRepositoryAdmin) applicationContext.getBean( + ManagedRepositoryAdmin.class ) ).setArchivaConfiguration( archivaConfiguration ); + /** + Configuration configuration = archivaConfiguration.getConfiguration(); + ManagedRepositoryConfiguration managedRepositoryConfiguration = + configuration.findManagedRepositoryById( repoConfiguration.getId() ); + if ( managedRepositoryConfiguration != null ) + { + configuration.removeManagedRepository( managedRepositoryConfiguration ); + }*/ + ManagedRepositoryAdmin managedRepositoryAdmin = applicationContext.getBean( ManagedRepositoryAdmin.class ); + if ( managedRepositoryAdmin.getManagedRepository( repoConfiguration.getId() ) != null ) { - configuration.removeManagedRepository( managedRepositoryConfiguration ); + managedRepositoryAdmin.deleteManagedRepository( repoConfiguration.getId(), null, true ); } } @@ -200,7 +230,7 @@ public class RepositoryPurgeConsumerTest applicationContext.getBean( "knownRepositoryContentConsumer#repo-purge-consumer-by-days-old", KnownRepositoryContentConsumer.class ); - ManagedRepositoryConfiguration repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ); + ManagedRepository repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ); repoConfiguration.setDaysOlder( TEST_DAYS_OLDER ); addRepoToConfiguration( "days-old", repoConfiguration ); @@ -258,7 +288,7 @@ public class RepositoryPurgeConsumerTest applicationContext.getBean( "knownRepositoryContentConsumer#repo-purge-consumer-by-retention-count", KnownRepositoryContentConsumer.class ); - ManagedRepositoryConfiguration repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ); + ManagedRepository repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ); repoConfiguration.setDeleteReleasedSnapshots( false ); // Set to NOT delete released snapshots. addRepoToConfiguration( "retention-count", repoConfiguration ); @@ -303,7 +333,7 @@ public class RepositoryPurgeConsumerTest applicationContext.getBean( "knownRepositoryContentConsumer#repo-purge-consumer-by-days-old", KnownRepositoryContentConsumer.class ); - ManagedRepositoryConfiguration repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ); + ManagedRepository repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ); repoConfiguration.setDeleteReleasedSnapshots( true ); addRepoToConfiguration( "days-old", repoConfiguration ); @@ -340,14 +370,4 @@ public class RepositoryPurgeConsumerTest removeRepoFromConfiguration( "days-old", repoConfiguration ); } - - @Before - public void setUp() - throws Exception - { - super.setUp(); - - TestRepositorySessionFactory factory = applicationContext.getBean( TestRepositorySessionFactory.class ); - factory.setRepository( metadataRepository ); - } } diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurgeTest.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurgeTest.java index be4c2f118..718bbd5c0 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurgeTest.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurgeTest.java @@ -19,6 +19,7 @@ package org.apache.maven.archiva.consumers.core.repository; * under the License. */ +import org.apache.archiva.admin.model.managed.ManagedRepository; import org.apache.archiva.repository.events.RepositoryListener; import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; import org.junit.Before; @@ -39,7 +40,7 @@ public class RetentionCountRepositoryPurgeTest { super.setUp(); - ManagedRepositoryConfiguration repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ); + ManagedRepository repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ); List<RepositoryListener> listeners = Collections.singletonList( listener ); repoPurge = new RetentionCountRepositoryPurge( getRepository(), repoConfiguration.getRetentionCount(), repositorySession, listeners ); diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/META-INF/redback/redback-core.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/META-INF/redback/redback-core.xml new file mode 100644 index 000000000..ecc1de8fb --- /dev/null +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/META-INF/redback/redback-core.xml @@ -0,0 +1,213 @@ +<redback-role-model> + <modelVersion>1.0.0</modelVersion> + <applications> + <application> + <id>System</id> + <description>Roles that apply system-wide, across all of the applications</description> + <version>1.0.0</version> + <resources> + <resource> + <id>global</id> + <name>*</name> + <permanent>true</permanent> + <description>global resource implies full access for authorization</description> + </resource> + <resource> + <id>username</id> + <name>${username}</name> + <permanent>true</permanent> + <description>replaced with the username of the principal at authorization check time</description> + </resource> + </resources> + <operations> + <operation> + <id>configuration-edit</id> + <name>configuration-edit</name> + <description>edit configuration</description> + <permanent>true</permanent> + </operation> + <operation> + <id>user-management-user-create</id> + <name>user-management-user-create</name> + <description>create user</description> + <permanent>true</permanent> + </operation> + <operation> + <id>user-management-user-edit</id> + <name>user-management-user-edit</name> + <description>edit user</description> + <permanent>true</permanent> + </operation> + <operation> + <id>user-management-user-role</id> + <name>user-management-user-role</name> + <description>user roles</description> + <permanent>true</permanent> + </operation> + <operation> + <id>user-management-user-delete</id> + <name>user-management-user-delete</name> + <description>delete user</description> + <permanent>true</permanent> + </operation> + <operation> + <id>user-management-user-list</id> + <name>user-management-user-list</name> + <description>list users</description> + <permanent>true</permanent> + </operation> + <operation> + <id>user-management-role-grant</id> + <name>user-management-role-grant</name> + <description>grant role</description> + <permanent>true</permanent> + </operation> + <operation> + <id>user-management-role-drop</id> + <name>user-management-role-drop</name> + <description>drop role</description> + <permanent>true</permanent> + </operation> + <operation> + <id>user-management-rbac-admin</id> + <name>user-management-rbac-admin</name> + <description>administer rbac</description> + <permanent>true</permanent> + </operation> + <operation> + <id>guest-access</id> + <name>guest-access</name> + <description>access guest</description> + <permanent>true</permanent> + </operation> + <operation> + <id>user-management-manage-data</id> + <name>user-management-manage-data</name> + <description>manage data</description> + <permanent>true</permanent> + </operation> + </operations> + <roles> + <role> + <id>system-administrator</id> + <name>System Administrator</name> + <permanent>true</permanent> + <assignable>true</assignable> + <permissions> + <permission> + <id>edit-redback-configuration</id> + <name>Edit Redback Configuration</name> + <operation>configuration-edit</operation> + <resource>global</resource> + <permanent>true</permanent> + </permission> + <permission> + <id>manage-rbac-setup</id> + <name>User RBAC Management</name> + <operation>user-management-rbac-admin</operation> + <resource>global</resource> + <permanent>true</permanent> + </permission> + <permission> + <id>manage-rbac-data</id> + <name>RBAC Manage Data</name> + <operation>user-management-manage-data</operation> + <resource>global</resource> + <permanent>true</permanent> + </permission> + </permissions> + <childRoles> + <childRole>user-administrator</childRole> + </childRoles> + </role> + <role> + <id>user-administrator</id> + <name>User Administrator</name> + <permanent>true</permanent> + <assignable>true</assignable> + <permissions> + <permission> + <id>drop-roles-for-anyone</id> + <name>Drop Roles for Anyone</name> + <operation>user-management-role-drop</operation> + <resource>global</resource> + <permanent>true</permanent> + </permission> + <permission> + <id>grant-roles-for-anyone</id> + <name>Grant Roles for Anyone</name> + <operation>user-management-role-grant</operation> + <resource>global</resource> + <permanent>true</permanent> + </permission> + <permission> + <id>user-create</id> + <name>Create Users</name> + <operation>user-management-user-create</operation> + <resource>global</resource> + <permanent>true</permanent> + </permission> + <permission> + <id>user-delete</id> + <name>Delete Users</name> + <operation>user-management-user-delete</operation> + <resource>global</resource> + <permanent>true</permanent> + </permission> + <permission> + <id>user-edit</id> + <name>Edit Users</name> + <operation>user-management-user-edit</operation> + <resource>global</resource> + <permanent>true</permanent> + </permission> + <permission> + <id>access-users-roles</id> + <name>Access Users Roles</name> + <operation>user-management-user-role</operation> + <resource>global</resource> + <permanent>true</permanent> + </permission> + <permission> + <id>access-user-list</id> + <name>Access User List</name> + <operation>user-management-user-list</operation> + <resource>global</resource> + <permanent>true</permanent> + </permission> + </permissions> + </role> + <role> + <id>registered-user</id> + <name>Registered User</name> + <permanent>true</permanent> + <assignable>true</assignable> + <permissions> + <permission> + <id>edit-user-by-username</id> + <name>Edit User Data by Username</name> + <operation>user-management-user-edit</operation> + <resource>username</resource> + <permanent>true</permanent> + </permission> + </permissions> + </role> + <role> + <id>guest</id> + <name>Guest</name> + <permanent>true</permanent> + <assignable>true</assignable> + <permissions> + <permission> + <id>guest-permission</id> + <name>Guest Permission</name> + <operation>guest-access</operation> + <resource>global</resource> + <permanent>true</permanent> + </permission> + </permissions> + </role> + </roles> + </application> + </applications> +</redback-role-model>
\ No newline at end of file diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/META-INF/spring-context.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/META-INF/spring-context.xml new file mode 100644 index 000000000..176462a2f --- /dev/null +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/META-INF/spring-context.xml @@ -0,0 +1,41 @@ +<?xml version="1.0"?> + +<!-- + ~ 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. + --> +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:context="http://www.springframework.org/schema/context" + xsi:schemaLocation="http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans-3.0.xsd + http://www.springframework.org/schema/context + http://www.springframework.org/schema/context/spring-context-3.0.xsd" default-lazy-init="true"> + + <bean name="scheduler" class="org.codehaus.redback.components.scheduler.DefaultScheduler"> + <property name="properties"> + <props> + <prop key="org.quartz.scheduler.instanceName">scheduler1</prop> + <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop> + <prop key="org.quartz.threadPool.threadCount">2</prop> + <prop key="org.quartz.threadPool.threadPriority">4</prop> + <prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop> + </props> + </property> + </bean> + +</beans>
\ No newline at end of file diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java b/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java index 3e87693e9..3fdf86d9d 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java @@ -19,6 +19,7 @@ package org.apache.archiva.consumers.lucene; * under the License. */ +import org.apache.archiva.admin.model.managed.ManagedRepository; import org.apache.archiva.common.plexusbridge.MavenIndexerUtils; import org.apache.archiva.common.plexusbridge.PlexusSisuBridge; import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException; @@ -27,7 +28,6 @@ import org.apache.archiva.scheduler.indexing.ArtifactIndexingTask; import org.apache.maven.archiva.configuration.ArchivaConfiguration; import org.apache.maven.archiva.configuration.ConfigurationNames; import org.apache.maven.archiva.configuration.FileTypes; -import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; import org.apache.maven.archiva.consumers.ConsumerException; import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; @@ -35,14 +35,13 @@ import org.apache.maven.index.NexusIndexer; import org.apache.maven.index.context.IndexCreator; import org.apache.maven.index.context.IndexingContext; import org.apache.maven.index.context.UnsupportedExistingLuceneIndexException; -import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; -import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; import org.codehaus.plexus.registry.Registry; import org.codehaus.plexus.registry.RegistryListener; import org.codehaus.plexus.taskqueue.TaskQueueException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.annotation.PostConstruct; import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -55,7 +54,7 @@ import java.util.List; */ public class NexusIndexerConsumer extends AbstractMonitoredConsumer - implements KnownRepositoryContentConsumer, RegistryListener, Initializable + implements KnownRepositoryContentConsumer, RegistryListener { private Logger log = LoggerFactory.getLogger( NexusIndexerConsumer.class ); @@ -73,7 +72,7 @@ public class NexusIndexerConsumer private List<String> includes = new ArrayList<String>(); - private ManagedRepositoryConfiguration repository; + private ManagedRepository repository; private List<? extends IndexCreator> allIndexCreators; @@ -104,7 +103,7 @@ public class NexusIndexerConsumer return false; } - public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered ) + public void beginScan( ManagedRepository repository, Date whenGathered ) throws ConsumerException { this.repository = repository; @@ -125,7 +124,7 @@ public class NexusIndexerConsumer } } - public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo ) + public void beginScan( ManagedRepository repository, Date whenGathered, boolean executeOnEntireRepo ) throws ConsumerException { if ( executeOnEntireRepo ) @@ -238,8 +237,8 @@ public class NexusIndexerConsumer includes.addAll( filetypes.getFileTypePatterns( FileTypes.ARTIFACTS ) ); } + @PostConstruct public void initialize() - throws InitializationException { configuration.addChangeListener( this ); diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumerTest.java b/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumerTest.java index 53a8fc6bf..f9d8c8fb5 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumerTest.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumerTest.java @@ -20,6 +20,7 @@ package org.apache.archiva.consumers.lucene; */ import junit.framework.TestCase; +import org.apache.archiva.admin.model.managed.ManagedRepository; import org.apache.archiva.common.plexusbridge.MavenIndexerUtils; import org.apache.archiva.common.plexusbridge.PlexusSisuBridge; import org.apache.archiva.scheduler.ArchivaTaskScheduler; @@ -88,7 +89,7 @@ public class NexusIndexerConsumerTest private KnownRepositoryContentConsumer nexusIndexerConsumer; - private ManagedRepositoryConfiguration repositoryConfig; + private ManagedRepository repositoryConfig; private ArchivaTaskSchedulerStub scheduler; @@ -119,9 +120,9 @@ public class NexusIndexerConsumerTest new NexusIndexerConsumer( scheduler, configuration, filetypes, plexusSisuBridge, mavenIndexerUtils ); // initialize to set the file types to be processed - ( (Initializable) nexusIndexerConsumer ).initialize(); + ( (NexusIndexerConsumer) nexusIndexerConsumer ).initialize(); - repositoryConfig = new ManagedRepositoryConfiguration(); + repositoryConfig = new ManagedRepository(); repositoryConfig.setId( "test-repo" ); repositoryConfig.setLocation( "target/test-classes/test-repo" ); repositoryConfig.setLayout( "default" ); diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java b/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java index 223d0a353..034bad7d0 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java @@ -19,6 +19,7 @@ package org.apache.archiva.consumers.metadata; * under the License. */ +import org.apache.archiva.admin.model.managed.ManagedRepository; import org.apache.archiva.metadata.model.ArtifactMetadata; import org.apache.archiva.metadata.model.ProjectMetadata; import org.apache.archiva.metadata.model.ProjectVersionMetadata; @@ -33,7 +34,6 @@ import org.apache.maven.archiva.common.utils.VersionUtil; import org.apache.maven.archiva.configuration.ArchivaConfiguration; import org.apache.maven.archiva.configuration.ConfigurationNames; import org.apache.maven.archiva.configuration.FileTypes; -import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; import org.apache.maven.archiva.consumers.ConsumerException; import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; @@ -131,14 +131,14 @@ public class ArchivaMetadataCreationConsumer return this.includes; } - public void beginScan( ManagedRepositoryConfiguration repo, Date whenGathered ) + public void beginScan( ManagedRepository repo, Date whenGathered ) throws ConsumerException { repoId = repo.getId(); this.whenGathered = whenGathered; } - public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo ) + public void beginScan( ManagedRepository repository, Date whenGathered, boolean executeOnEntireRepo ) throws ConsumerException { beginScan( repository, whenGathered ); |