You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by br...@apache.org on 2010/12/29 07:14:07 UTC

svn commit: r1053542 [1/7] - in /archiva/trunk/archiva-modules: archiva-base/archiva-consumers/archiva-core-consumers/ archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/ archiva-base/...

Author: brett
Date: Wed Dec 29 06:14:04 2010
New Revision: 1053542

URL: http://svn.apache.org/viewvc?rev=1053542&view=rev
Log:
[MRM-1330] refactor access around the concept of a "repository session". See Javadoc for some notes. This should be a single entry point for application users of either the metadata repository, resolution, or storage access. The session needs to be explicitly closed (and modifications saved) to facilitate some storage mechanisms.

Added:
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/metadata/
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/metadata/repository/
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/metadata/repository/TestRepositorySessionFactory.java
    archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/metadata/repository/TestRepositorySessionFactory.java
    archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/resources/META-INF/
    archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/resources/META-INF/spring-context.xml
    archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/metadata/
    archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/metadata/repository/
    archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/metadata/repository/TestRepositorySessionFactory.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestRepositorySessionFactory.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/metadata/repository/TestRepositorySessionFactory.java
    archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/RepositorySession.java
    archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/RepositorySessionFactory.java
    archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/RepositoryStorageMetadataException.java
    archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/RepositoryStorageMetadataInvalidException.java
    archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/RepositoryStorageMetadataNotFoundException.java
    archiva/trunk/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/TestRepositorySessionFactory.java
    archiva/trunk/archiva-modules/plugins/metadata-repository-file/src/main/java/org/apache/archiva/metadata/repository/file/FileRepositorySessionFactory.java
Modified:
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurge.java
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurge.java
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurge.java
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurgeTest.java
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumerTest.java
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurgeTest.java
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumerTest.xml
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java
    archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AbstractProxyTestCase.java
    archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/HttpProxyTransferTest.java
    archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-repository/pom.xml
    archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/main/java/org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutor.java
    archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/main/java/org/apache/archiva/scheduler/repository/RepositoryArchivaTaskScheduler.java
    archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutorTest.java
    archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/TestRepositoryStatisticsManager.java
    archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/resources/org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutorTest.xml
    archiva/trunk/archiva-modules/archiva-web/archiva-rss/src/main/java/org/apache/archiva/rss/processor/AbstractArtifactsRssFeedProcessor.java
    archiva/trunk/archiva-modules/archiva-web/archiva-rss/src/main/java/org/apache/archiva/rss/processor/NewArtifactsRssFeedProcessor.java
    archiva/trunk/archiva-modules/archiva-web/archiva-rss/src/main/java/org/apache/archiva/rss/processor/NewVersionsOfArtifactRssFeedProcessor.java
    archiva/trunk/archiva-modules/archiva-web/archiva-rss/src/main/java/org/apache/archiva/rss/processor/RssFeedProcessor.java
    archiva/trunk/archiva-modules/archiva-web/archiva-rss/src/test/java/org/apache/archiva/rss/processor/NewArtifactsRssFeedProcessorTest.java
    archiva/trunk/archiva-modules/archiva-web/archiva-rss/src/test/java/org/apache/archiva/rss/processor/NewVersionsOfArtifactRssFeedProcessorTest.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/pom.xml
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/DeleteArtifactAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/MergeAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/PlexusActionSupport.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/RepositoriesAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/reports/GenerateReportAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/reports/ViewAuditLogReportAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/rss/RssFeedServlet.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/BrowseActionTest.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/DeleteArtifactActionTest.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/SearchActionTest.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/ShowArtifactActionTest.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/RepositoriesActionTest.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports/GenerateReportActionTest.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/rss/RssFeedServletTest.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/tags/DependencyTreeTest.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/resources/META-INF/plexus/components.xml
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/BrowseActionTest.xml
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/ShowArtifactActionTest.xml
    archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/test/resources/META-INF/plexus/components.xml
    archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/pom.xml
    archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java
    archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImpl.java
    archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImplTest.java
    archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImplTest.java
    archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java
    archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolver.java
    archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/RepositoryStorage.java
    archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/repository/events/RepositoryListener.java
    archiva/trunk/archiva-modules/plugins/audit/src/main/java/org/apache/archiva/audit/AuditManager.java
    archiva/trunk/archiva-modules/plugins/audit/src/main/java/org/apache/archiva/audit/DefaultAuditManager.java
    archiva/trunk/archiva-modules/plugins/audit/src/main/java/org/apache/archiva/audit/MetadataAuditListener.java
    archiva/trunk/archiva-modules/plugins/audit/src/test/java/org/apache/archiva/audit/AuditManagerTest.java
    archiva/trunk/archiva-modules/plugins/maven2-repository/pom.xml
    archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/DefaultDependencyTreeBuilder.java
    archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java
    archiva/trunk/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/TestMetadataResolver.java
    archiva/trunk/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java
    archiva/trunk/archiva-modules/plugins/maven2-repository/src/test/resources/org/apache/archiva/dependency/tree/maven2/DependencyTreeBuilderTest.xml
    archiva/trunk/archiva-modules/plugins/maven2-repository/src/test/resources/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.xml
    archiva/trunk/archiva-modules/plugins/metadata-repository-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java
    archiva/trunk/archiva-modules/plugins/metadata-repository-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java
    archiva/trunk/archiva-modules/plugins/problem-reports/src/main/java/org/apache/archiva/reports/RepositoryProblemEventListener.java
    archiva/trunk/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/DefaultRepositoryStatisticsManager.java
    archiva/trunk/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/RepositoryStatisticsManager.java
    archiva/trunk/archiva-modules/plugins/repository-statistics/src/test/java/org/apache/archiva/metadata/repository/stats/RepositoryStatisticsManagerTest.java
    archiva/trunk/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/Maven2RepositoryMerger.java
    archiva/trunk/archiva-modules/plugins/stage-repository-merge/src/main/java/org/apache/archiva/stagerepository/merge/RepositoryMerger.java
    archiva/trunk/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/stagerepository/merge/Maven2RepositoryMergerTest.java

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml?rev=1053542&r1=1053541&r2=1053542&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml Wed Dec 29 06:14:04 2010
@@ -78,5 +78,10 @@
       <artifactId>xmlunit</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-all</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 </project>

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurge.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurge.java?rev=1053542&r1=1053541&r2=1053542&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurge.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurge.java Wed Dec 29 06:14:04 2010
@@ -20,6 +20,8 @@ package org.apache.maven.archiva.consume
  */
 
 import org.apache.archiva.audit.AuditEvent;
+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.model.ArtifactReference;
 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
@@ -41,15 +43,19 @@ public abstract class AbstractRepository
 
     protected final ManagedRepositoryContent repository;
 
+    protected final RepositorySession repositorySession;
+
     protected final List<RepositoryListener> listeners;
 
     private Logger logger = LoggerFactory.getLogger( "org.apache.archiva.AuditLog" );
 
     private static final char DELIM = ' ';
 
-    public AbstractRepositoryPurge( ManagedRepositoryContent repository, List<RepositoryListener> listeners )
+    public AbstractRepositoryPurge( ManagedRepositoryContent repository, RepositorySession repositorySession,
+                                    List<RepositoryListener> listeners )
     {
         this.repository = repository;
+        this.repositorySession = repositorySession;
         this.listeners = listeners;
     }
 
@@ -62,6 +68,7 @@ public abstract class AbstractRepository
     {
         if ( references != null && !references.isEmpty() )
         {
+            MetadataRepository metadataRepository = repositorySession.getRepository();
             for ( ArtifactReference reference : references )
             {
                 File artifactFile = repository.toFile( reference );
@@ -69,12 +76,15 @@ public abstract class AbstractRepository
                 // FIXME: looks incomplete, might not delete related metadata?
                 for ( RepositoryListener listener : listeners )
                 {
-                    listener.deleteArtifact( repository.getId(), reference.getGroupId(), reference.getArtifactId(),
-                                             reference.getVersion(), artifactFile.getName() );
+                    listener.deleteArtifact( metadataRepository, repository.getId(), reference.getGroupId(),
+                                             reference.getArtifactId(), reference.getVersion(),
+                                             artifactFile.getName() );
                 }
 
                 // TODO: this needs to be logged
                 artifactFile.delete();
+                repositorySession.save();
+
                 triggerAuditEvent( repository.getRepository().getId(), ArtifactReference.toKey( reference ),
                                    AuditEvent.PURGE_ARTIFACT );
                 purgeSupportFiles( artifactFile );

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java?rev=1053542&r1=1053541&r2=1053542&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java Wed Dec 29 06:14:04 2010
@@ -19,6 +19,8 @@ package org.apache.maven.archiva.consume
  * under the License.
  */
 
+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;
@@ -79,9 +81,10 @@ public class CleanupReleasedSnapshotsRep
     public CleanupReleasedSnapshotsRepositoryPurge( ManagedRepositoryContent repository, MetadataTools metadataTools,
                                                     ArchivaConfiguration archivaConfig,
                                                     RepositoryContentFactory repoContentFactory,
+                                                    RepositorySession repositorySession,
                                                     List<RepositoryListener> listeners )
     {
-        super( repository, listeners );
+        super( repository, repositorySession, listeners );
         this.metadataTools = metadataTools;
         this.archivaConfig = archivaConfig;
         this.repoContentFactory = repoContentFactory;
@@ -168,6 +171,7 @@ public class CleanupReleasedSnapshotsRep
                                                             artifactRef.getVersion(), artifactRef.getClassifier(),
                                                             artifactRef.getType(), repository.getId() );
 
+            MetadataRepository metadataRepository = repositorySession.getRepository();
             for ( String version : snapshotVersions )
             {
                 if ( releasedVersions.contains( VersionUtil.getReleaseVersion( version ) ) )
@@ -178,8 +182,9 @@ public class CleanupReleasedSnapshotsRep
                     // FIXME: looks incomplete, might not delete related metadata?
                     for ( RepositoryListener listener : listeners )
                     {
-                        listener.deleteArtifact( repository.getId(), artifact.getGroupId(), artifact.getArtifactId(),
-                                                 artifact.getVersion(), artifactFile.getName() );
+                        listener.deleteArtifact( metadataRepository, repository.getId(), artifact.getGroupId(),
+                                                 artifact.getArtifactId(), artifact.getVersion(),
+                                                 artifactFile.getName() );
                     }
 
                     needsMetadataUpdate = true;

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurge.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurge.java?rev=1053542&r1=1053541&r2=1053542&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurge.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurge.java Wed Dec 29 06:14:04 2010
@@ -19,6 +19,7 @@ package org.apache.maven.archiva.consume
  * under the License.
  */
 
+import org.apache.archiva.metadata.repository.RepositorySession;
 import org.apache.archiva.repository.events.RepositoryListener;
 import org.apache.commons.lang.time.DateUtils;
 import org.apache.maven.archiva.common.utils.VersionComparator;
@@ -42,7 +43,6 @@ import java.util.regex.Matcher;
 
 /**
  * Purge from repository all snapshots older than the specified days in the repository configuration.
- * 
  */
 public class DaysOldRepositoryPurge
     extends AbstractRepositoryPurge
@@ -53,10 +53,10 @@ public class DaysOldRepositoryPurge
 
     private int retentionCount;
 
-    public DaysOldRepositoryPurge( ManagedRepositoryContent repository, int daysOlder,
-                                   int retentionCount, List<RepositoryListener> listeners )
+    public DaysOldRepositoryPurge( ManagedRepositoryContent repository, int daysOlder, int retentionCount,
+                                   RepositorySession repositorySession, List<RepositoryListener> listeners )
     {
-        super( repository, listeners );
+        super( repository, repositorySession, listeners );
         this.daysOlder = daysOlder;
         this.retentionCount = retentionCount;
         timestampParser = new SimpleDateFormat( "yyyyMMdd.HHmmss" );
@@ -105,8 +105,8 @@ public class DaysOldRepositoryPurge
                     break;
                 }
 
-                ArtifactReference newArtifactReference =
-                    repository.toArtifactReference( artifactFile.getAbsolutePath() );
+                ArtifactReference newArtifactReference = repository.toArtifactReference(
+                    artifactFile.getAbsolutePath() );
                 newArtifactReference.setVersion( version );
 
                 File newArtifactFile = repository.toFile( newArtifactReference );

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java?rev=1053542&r1=1053541&r2=1053542&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java Wed Dec 29 06:14:04 2010
@@ -19,6 +19,8 @@ package org.apache.maven.archiva.consume
  * under the License.
  */
 
+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;
@@ -46,11 +48,9 @@ import java.util.List;
  * Consumer for removing old snapshots in the repository based on the criteria
  * specified by the user.
  *
- * 
- * @plexus.component 
- *      role="org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer"
- *      role-hint="repository-purge"
- *      instantiation-strategy="per-lookup"
+ * @plexus.component role="org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer"
+ * role-hint="repository-purge"
+ * instantiation-strategy="per-lookup"
  */
 public class RepositoryPurgeConsumer
     extends AbstractMonitoredConsumer
@@ -94,9 +94,20 @@ public class RepositoryPurgeConsumer
 
     private boolean deleteReleasedSnapshots;
 
-    /** @plexus.requirement role="org.apache.archiva.repository.events.RepositoryListener" */
+    /**
+     * @plexus.requirement role="org.apache.archiva.repository.events.RepositoryListener"
+     */
     private List<RepositoryListener> listeners = Collections.emptyList();
-    
+
+    /**
+     * TODO: this could be multiple implementations and needs to be configured.
+     *
+     * @plexus.requirement
+     */
+    private RepositorySessionFactory repositorySessionFactory;
+
+    private RepositorySession repositorySession;
+
     public String getId()
     {
         return this.id;
@@ -125,27 +136,10 @@ public class RepositoryPurgeConsumer
     public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered )
         throws ConsumerException
     {
+        ManagedRepositoryContent repositoryContent;
         try
         {
-            ManagedRepositoryContent repositoryContent = repositoryFactory.getManagedRepositoryContent( repository
-                .getId() );
-
-            if ( repository.getDaysOlder() != 0 )
-            {
-                repoPurge = new DaysOldRepositoryPurge( repositoryContent, repository.getDaysOlder(), 
-                                                        repository.getRetentionCount(), listeners );
-            }
-            else
-            {
-                repoPurge = new RetentionCountRepositoryPurge( repositoryContent, repository.getRetentionCount(), 
-                                                               listeners );
-            }
-            
-            cleanUp =
-                new CleanupReleasedSnapshotsRepositoryPurge( repositoryContent, metadataTools, configuration,
-                                                             repositoryFactory, listeners );
-
-            deleteReleasedSnapshots = repository.isDeleteReleasedSnapshots();
+            repositoryContent = repositoryFactory.getManagedRepositoryContent( repository.getId() );
         }
         catch ( RepositoryNotFoundException e )
         {
@@ -155,6 +149,24 @@ public class RepositoryPurgeConsumer
         {
             throw new ConsumerException( "Can't run repository purge: " + e.getMessage(), e );
         }
+
+        repositorySession = repositorySessionFactory.createSession();
+
+        if ( repository.getDaysOlder() != 0 )
+        {
+            repoPurge = new DaysOldRepositoryPurge( repositoryContent, repository.getDaysOlder(),
+                                                    repository.getRetentionCount(), repositorySession, listeners );
+        }
+        else
+        {
+            repoPurge = new RetentionCountRepositoryPurge( repositoryContent, repository.getRetentionCount(),
+                                                           repositorySession, listeners );
+        }
+
+        cleanUp = new CleanupReleasedSnapshotsRepositoryPurge( repositoryContent, metadataTools, configuration,
+                                                               repositoryFactory, repositorySession, listeners );
+
+        deleteReleasedSnapshots = repository.isDeleteReleasedSnapshots();
     }
 
     public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo )
@@ -189,7 +201,7 @@ public class RepositoryPurgeConsumer
 
     public void completeScan()
     {
-        /* do nothing */
+        repositorySession.close();
     }
 
     public void completeScan( boolean executeOnEntireRepo )

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurge.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurge.java?rev=1053542&r1=1053541&r2=1053542&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurge.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurge.java Wed Dec 29 06:14:04 2010
@@ -19,6 +19,7 @@ package org.apache.maven.archiva.consume
  * under the License.
  */
 
+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;
@@ -36,17 +37,16 @@ import java.util.Set;
 
 /**
  * Purge the repository by retention count. Retain only the specified number of snapshots.
- *
  */
 public class RetentionCountRepositoryPurge
     extends AbstractRepositoryPurge
 {
     private int retentionCount;
 
-    public RetentionCountRepositoryPurge( ManagedRepositoryContent repository, 
-                                          int retentionCount, List<RepositoryListener> listeners )
+    public RetentionCountRepositoryPurge( ManagedRepositoryContent repository, int retentionCount,
+                                          RepositorySession repositorySession, List<RepositoryListener> listeners )
     {
-        super( repository, listeners );
+        super( repository, repositorySession, listeners );
         this.retentionCount = retentionCount;
     }
 
@@ -61,7 +61,7 @@ public class RetentionCountRepositoryPur
             {
                 return;
             }
-                                                                     
+
             ArtifactReference artifact = repository.toArtifactReference( path );
 
             if ( VersionUtil.isSnapshot( artifact.getVersion() ) )
@@ -114,7 +114,7 @@ public class RetentionCountRepositoryPur
         artifact.setVersion( version );
         artifact.setClassifier( reference.getClassifier() );
         artifact.setType( reference.getType() );
-        
+
         try
         {
             Set<ArtifactReference> related = repository.getRelatedArtifacts( artifact );

Added: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/metadata/repository/TestRepositorySessionFactory.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/metadata/repository/TestRepositorySessionFactory.java?rev=1053542&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/metadata/repository/TestRepositorySessionFactory.java (added)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/metadata/repository/TestRepositorySessionFactory.java Wed Dec 29 06:14:04 2010
@@ -0,0 +1,43 @@
+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.
+ */
+
+public class TestRepositorySessionFactory
+    implements RepositorySessionFactory
+{
+    private MetadataRepository repository;
+
+    private MetadataResolver resolver;
+
+    public RepositorySession createSession()
+    {
+        return new RepositorySession( repository, resolver );
+    }
+
+    public void setRepository( MetadataRepository repository )
+    {
+        this.repository = repository;
+    }
+
+    public void setResolver( MetadataResolver resolver )
+    {
+        this.resolver = resolver;
+    }
+}

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java?rev=1053542&r1=1053541&r2=1053542&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java Wed Dec 29 06:14:04 2010
@@ -19,10 +19,11 @@ package org.apache.maven.archiva.consume
  * under the License.
  */
 
+import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.archiva.metadata.repository.RepositorySession;
 import org.apache.archiva.repository.events.RepositoryListener;
 import org.apache.commons.io.FileUtils;
 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
-import org.apache.maven.archiva.model.ArchivaArtifact;
 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
 import org.easymock.MockControl;
@@ -30,6 +31,9 @@ import org.easymock.MockControl;
 import java.io.File;
 import java.io.IOException;
 
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
 /**
  */
 public abstract class AbstractRepositoryPurgeTest
@@ -43,15 +47,20 @@ public abstract class AbstractRepository
 
     public static final int TEST_DAYS_OLDER = 30;
 
-    public static final String PATH_TO_BY_DAYS_OLD_ARTIFACT = "org/apache/maven/plugins/maven-install-plugin/2.2-SNAPSHOT/maven-install-plugin-2.2-20061118.060401-2.jar";
+    public static final String PATH_TO_BY_DAYS_OLD_ARTIFACT =
+        "org/apache/maven/plugins/maven-install-plugin/2.2-SNAPSHOT/maven-install-plugin-2.2-20061118.060401-2.jar";
 
-    public static final String PATH_TO_BY_DAYS_OLD_METADATA_DRIVEN_ARTIFACT = "org/codehaus/plexus/plexus-utils/1.4.3-SNAPSHOT/plexus-utils-1.4.3-20070113.163208-4.jar";
+    public static final String PATH_TO_BY_DAYS_OLD_METADATA_DRIVEN_ARTIFACT =
+        "org/codehaus/plexus/plexus-utils/1.4.3-SNAPSHOT/plexus-utils-1.4.3-20070113.163208-4.jar";
 
-    public static final String PATH_TO_BY_RETENTION_COUNT_ARTIFACT = "org/jruby/plugins/jruby-rake-plugin/1.0RC1-SNAPSHOT/jruby-rake-plugin-1.0RC1-20070504.153317-1.jar";
+    public static final String PATH_TO_BY_RETENTION_COUNT_ARTIFACT =
+        "org/jruby/plugins/jruby-rake-plugin/1.0RC1-SNAPSHOT/jruby-rake-plugin-1.0RC1-20070504.153317-1.jar";
 
-    public static final String PATH_TO_BY_RETENTION_COUNT_POM = "org/codehaus/castor/castor-anttasks/1.1.2-SNAPSHOT/castor-anttasks-1.1.2-20070506.163513-2.pom";
+    public static final String PATH_TO_BY_RETENTION_COUNT_POM =
+        "org/codehaus/castor/castor-anttasks/1.1.2-SNAPSHOT/castor-anttasks-1.1.2-20070506.163513-2.pom";
 
-    public static final String PATH_TO_TEST_ORDER_OF_DELETION = "org/apache/maven/plugins/maven-assembly-plugin/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070615.105019-3.jar";
+    public static final String PATH_TO_TEST_ORDER_OF_DELETION =
+        "org/apache/maven/plugins/maven-assembly-plugin/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070615.105019-3.jar";
 
     protected static final String RELEASES_TEST_REPO_ID = "releases-test-repo-one";
 
@@ -67,17 +76,25 @@ public abstract class AbstractRepository
 
     protected RepositoryListener listener;
 
+    protected RepositorySession repositorySession;
+
+    protected MetadataRepository metadataRepository;
+
     @Override
     protected void setUp()
         throws Exception
     {
         super.setUp();
-        
+
         listenerControl = MockControl.createControl( RepositoryListener.class );
 
         listener = (RepositoryListener) listenerControl.getMock();
+
+        repositorySession = mock( RepositorySession.class );
+        metadataRepository = mock( MetadataRepository.class );
+        when( repositorySession.getRepository() ).thenReturn( metadataRepository );
     }
-    
+
     @Override
     protected void tearDown()
         throws Exception
@@ -98,7 +115,7 @@ public abstract class AbstractRepository
         config.setSnapshots( true );
         config.setDeleteReleasedSnapshots( true );
         config.setRetentionCount( TEST_RETENTION_COUNT );
-        
+
         return config;
     }
 
@@ -107,7 +124,7 @@ public abstract class AbstractRepository
     {
         if ( repo == null )
         {
-            repo = (ManagedRepositoryContent) lookup( ManagedRepositoryContent.class, "default" );            
+            repo = (ManagedRepositoryContent) lookup( ManagedRepositoryContent.class, "default" );
             repo.setRepository( getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ) );
         }
 
@@ -123,7 +140,7 @@ public abstract class AbstractRepository
     {
         assertTrue( "File should exist: " + path, new File( path ).exists() );
     }
-    
+
     protected File getTestRepoRoot()
     {
         return getTestFile( "target/test-" + getName() + "/" + TEST_REPO_ID );
@@ -135,16 +152,11 @@ public abstract class AbstractRepository
         File testDir = getTestRepoRoot();
         FileUtils.deleteDirectory( testDir );
         FileUtils.copyDirectory( getTestFile( "target/test-classes/" + TEST_REPO_ID ), testDir );
-        
+
         File releasesTestDir = getTestFile( "target/test-" + getName() + "/" + RELEASES_TEST_REPO_ID );
         FileUtils.deleteDirectory( releasesTestDir );
         FileUtils.copyDirectory( getTestFile( "target/test-classes/" + RELEASES_TEST_REPO_ID ), releasesTestDir );
-        
-        return testDir.getAbsolutePath();
-    }
 
-    protected ArchivaArtifact createArtifact( String groupId, String artifactId, String version, String type )
-    {
-        return new ArchivaArtifact( groupId, artifactId, version, null, type, TEST_REPO_ID );
+        return testDir.getAbsolutePath();
     }
 }

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java?rev=1053542&r1=1053541&r2=1053542&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java Wed Dec 29 06:14:04 2010
@@ -30,6 +30,7 @@ import org.easymock.MockControl;
 
 import java.io.File;
 import java.util.Collections;
+import java.util.List;
 
 
 /**
@@ -43,29 +44,32 @@ public class CleanupReleasedSnapshotsRep
 
     public static final String PATH_TO_RELEASED_SNAPSHOT_IN_DIFF_REPO =
         "org/apache/archiva/released-artifact-in-diff-repo/1.0-SNAPSHOT/released-artifact-in-diff-repo-1.0-SNAPSHOT.jar";
-    
-    public static final String PATH_TO_HIGHER_SNAPSHOT_EXISTS_IN_SAME_REPO = "org/apache/maven/plugins/maven-source-plugin/2.0.3-SNAPSHOT/maven-source-plugin-2.0.3-SNAPSHOT.jar";
 
-    public static final String PATH_TO_RELEASED_SNAPSHOT_IN_SAME_REPO = "org/apache/maven/plugins/maven-plugin-plugin/2.3-SNAPSHOT/maven-plugin-plugin-2.3-SNAPSHOT.jar";
-    
+    public static final String PATH_TO_HIGHER_SNAPSHOT_EXISTS_IN_SAME_REPO =
+        "org/apache/maven/plugins/maven-source-plugin/2.0.3-SNAPSHOT/maven-source-plugin-2.0.3-SNAPSHOT.jar";
+
+    public static final String PATH_TO_RELEASED_SNAPSHOT_IN_SAME_REPO =
+        "org/apache/maven/plugins/maven-plugin-plugin/2.3-SNAPSHOT/maven-plugin-plugin-2.3-SNAPSHOT.jar";
+
     @Override
     protected void setUp()
         throws Exception
     {
         super.setUp();
-        
+
         MetadataTools metadataTools = (MetadataTools) lookup( MetadataTools.class );
-        RepositoryContentFactory factory = (RepositoryContentFactory) lookup( RepositoryContentFactory.class, "cleanup-released-snapshots");
-        
-        archivaConfiguration =
-            (ArchivaConfiguration) lookup( ArchivaConfiguration.class, "cleanup-released-snapshots" );
+        RepositoryContentFactory factory = (RepositoryContentFactory) lookup( RepositoryContentFactory.class,
+                                                                              "cleanup-released-snapshots" );
+
+        archivaConfiguration = (ArchivaConfiguration) lookup( ArchivaConfiguration.class,
+                                                              "cleanup-released-snapshots" );
 
         listenerControl = MockControl.createControl( RepositoryListener.class );
-        
+
         listener = (RepositoryListener) listenerControl.getMock();
-        repoPurge =
-            new CleanupReleasedSnapshotsRepositoryPurge( getRepository(), metadataTools, archivaConfiguration, factory,
-                                                         Collections.singletonList( listener ) );
+        List<RepositoryListener> listeners = Collections.singletonList( listener );
+        repoPurge = new CleanupReleasedSnapshotsRepositoryPurge( getRepository(), metadataTools, archivaConfiguration,
+                                                                 factory, repositorySession, listeners );
     }
 
     public void testReleasedSnapshotsExistsInSameRepo()
@@ -74,20 +78,20 @@ public class CleanupReleasedSnapshotsRep
         Configuration config = archivaConfiguration.getConfiguration();
         config.removeManagedRepository( config.findManagedRepositoryById( TEST_REPO_ID ) );
         config.addManagedRepository( getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ) );
-      
-        String repoRoot = prepareTestRepos();        
+
+        String repoRoot = prepareTestRepos();
 
         // test listeners for the correct artifacts
-        listener.deleteArtifact( getRepository().getId(), "org.apache.maven.plugins", "maven-plugin-plugin",
-                                 "2.3-SNAPSHOT", "maven-plugin-plugin-2.3-SNAPSHOT.jar" );
+        listener.deleteArtifact( metadataRepository, getRepository().getId(), "org.apache.maven.plugins",
+                                 "maven-plugin-plugin", "2.3-SNAPSHOT", "maven-plugin-plugin-2.3-SNAPSHOT.jar" );
         listenerControl.replay();
-        
+
         repoPurge.process( PATH_TO_RELEASED_SNAPSHOT_IN_SAME_REPO );
-        
+
         listenerControl.verify();
 
         String projectRoot = repoRoot + "/org/apache/maven/plugins/maven-plugin-plugin";
-        
+
         // check if the snapshot was removed
         assertDeleted( projectRoot + "/2.3-SNAPSHOT" );
         assertDeleted( projectRoot + "/2.3-SNAPSHOT/maven-plugin-plugin-2.3-SNAPSHOT.jar" );
@@ -111,19 +115,19 @@ public class CleanupReleasedSnapshotsRep
 
         // check if metadata file was updated
         File artifactMetadataFile = new File( projectRoot + "/maven-metadata.xml" );
-        
+
         String metadataXml = FileUtils.readFileToString( artifactMetadataFile, null );
-        
-        String expectedVersions = "<expected><versions><version>2.2</version>" +
-        		"<version>2.3</version></versions></expected>";
-        
+
+        String expectedVersions =
+            "<expected><versions><version>2.2</version>" + "<version>2.3</version></versions></expected>";
+
         XMLAssert.assertXpathEvaluatesTo( "2.3", "//metadata/versioning/release", metadataXml );
         XMLAssert.assertXpathEvaluatesTo( "2.3", "//metadata/versioning/latest", metadataXml );
         XMLAssert.assertXpathsEqual( "//expected/versions/version", expectedVersions,
                                      "//metadata/versioning/versions/version", metadataXml );
         XMLAssert.assertXpathEvaluatesTo( "20070315032817", "//metadata/versioning/lastUpdated", metadataXml );
     }
-    
+
     public void testNonArtifactFile()
         throws Exception
     {
@@ -149,25 +153,26 @@ public class CleanupReleasedSnapshotsRep
 
     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 ) );
-        
-        String repoRoot = prepareTestRepos();        
+
+        String repoRoot = prepareTestRepos();
 
         // test listeners for the correct artifacts
-        listener.deleteArtifact( getRepository().getId(), "org.apache.archiva", "released-artifact-in-diff-repo",
-                                 "1.0-SNAPSHOT", "released-artifact-in-diff-repo-1.0-SNAPSHOT.jar" );
+        listener.deleteArtifact( metadataRepository, getRepository().getId(), "org.apache.archiva",
+                                 "released-artifact-in-diff-repo", "1.0-SNAPSHOT",
+                                 "released-artifact-in-diff-repo-1.0-SNAPSHOT.jar" );
         listenerControl.replay();
-        
+
         repoPurge.process( PATH_TO_RELEASED_SNAPSHOT_IN_DIFF_REPO );
 
         listenerControl.verify();
-        
+
         String projectRoot = repoRoot + "/org/apache/archiva/released-artifact-in-diff-repo";
-        
+
         // check if the snapshot was removed
         assertDeleted( projectRoot + "/1.0-SNAPSHOT" );
         assertDeleted( projectRoot + "/1.0-SNAPSHOT/released-artifact-in-diff-repo-1.0-SNAPSHOT.jar" );
@@ -177,38 +182,38 @@ public class CleanupReleasedSnapshotsRep
         assertDeleted( projectRoot + "/1.0-SNAPSHOT/released-artifact-in-diff-repo-1.0-SNAPSHOT.pom.md5" );
         assertDeleted( projectRoot + "/1.0-SNAPSHOT/released-artifact-in-diff-repo-1.0-SNAPSHOT.pom.sha1" );
 
-        String releasesProjectRoot =
-            getTestFile( "target/test-" + getName() + "/releases-test-repo-one" ).getAbsolutePath() +
-                "/org/apache/archiva/released-artifact-in-diff-repo";
-        
+        String releasesProjectRoot = getTestFile(
+            "target/test-" + getName() + "/releases-test-repo-one" ).getAbsolutePath() +
+            "/org/apache/archiva/released-artifact-in-diff-repo";
+
         // check if the released version was not removed
-        assertExists( releasesProjectRoot + "/1.0" );        
+        assertExists( releasesProjectRoot + "/1.0" );
         assertExists( releasesProjectRoot + "/1.0/released-artifact-in-diff-repo-1.0.jar" );
         assertExists( releasesProjectRoot + "/1.0/released-artifact-in-diff-repo-1.0.jar.md5" );
         assertExists( releasesProjectRoot + "/1.0/released-artifact-in-diff-repo-1.0.jar.sha1" );
         assertExists( releasesProjectRoot + "/1.0/released-artifact-in-diff-repo-1.0.pom" );
         assertExists( releasesProjectRoot + "/1.0/released-artifact-in-diff-repo-1.0.pom.md5" );
-        assertExists( releasesProjectRoot + "/1.0/released-artifact-in-diff-repo-1.0.pom.sha1" );        
+        assertExists( releasesProjectRoot + "/1.0/released-artifact-in-diff-repo-1.0.pom.sha1" );
     }
 
     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 ) );
-        
+
         String repoRoot = prepareTestRepos();
 
         // test listeners for the correct artifacts - no deletions
         listenerControl.replay();
-        
+
         repoPurge.process( CleanupReleasedSnapshotsRepositoryPurgeTest.PATH_TO_HIGHER_SNAPSHOT_EXISTS_IN_SAME_REPO );
 
         listenerControl.verify();
-        
+
         String projectRoot = repoRoot + "/org/apache/maven/plugins/maven-source-plugin";
-        
+
         // check if the snapshot was not removed
         assertExists( projectRoot + "/2.0.3-SNAPSHOT" );
         assertExists( projectRoot + "/2.0.3-SNAPSHOT/maven-source-plugin-2.0.3-SNAPSHOT.jar" );
@@ -231,10 +236,10 @@ public class CleanupReleasedSnapshotsRep
         File artifactMetadataFile = new File( projectRoot + "/maven-metadata.xml" );
 
         String metadataXml = FileUtils.readFileToString( artifactMetadataFile, null );
-        
+
         String expectedVersions = "<expected><versions><version>2.0.3-SNAPSHOT</version>" +
-        		"<version>2.0.4-SNAPSHOT</version></versions></expected>";
-        
+            "<version>2.0.4-SNAPSHOT</version></versions></expected>";
+
         XMLAssert.assertXpathEvaluatesTo( "2.0.4-SNAPSHOT", "//metadata/versioning/latest", metadataXml );
         XMLAssert.assertXpathsEqual( "//expected/versions/version", expectedVersions,
                                      "//metadata/versioning/versions/version", metadataXml );

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurgeTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurgeTest.java?rev=1053542&r1=1053541&r2=1053542&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurgeTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurgeTest.java Wed Dec 29 06:14:04 2010
@@ -19,12 +19,15 @@ package org.apache.maven.archiva.consume
  * under the License.
  */
 
+import org.apache.archiva.repository.events.RepositoryListener;
 import org.apache.commons.lang.time.DateUtils;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
 
 import java.io.File;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Collections;
+import java.util.List;
 
 /**
  */
@@ -46,11 +49,10 @@ public class DaysOldRepositoryPurgeTest
     public void testByLastModified()
         throws Exception
     {
-        repoPurge =
-            new DaysOldRepositoryPurge( getRepository(),
-                                        getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ).getDaysOlder(),
-                                        getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ).getRetentionCount(),
-                                        Collections.singletonList( listener ) );
+        ManagedRepositoryConfiguration repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME );
+        repoPurge = new DaysOldRepositoryPurge( getRepository(), repoConfiguration.getDaysOlder(),
+                                                repoConfiguration.getRetentionCount(), repositorySession,
+                                                Collections.singletonList( listener ) );
 
         String repoRoot = prepareTestRepos();
 
@@ -59,14 +61,16 @@ public class DaysOldRepositoryPurgeTest
         setLastModified( projectRoot + "/2.2-SNAPSHOT/", OLD_TIMESTAMP );
 
         // test listeners for the correct artifacts
-        listener.deleteArtifact( getRepository().getId(), "org.apache.maven.plugins", "maven-install-plugin",
-                                 "2.2-SNAPSHOT", "maven-install-plugin-2.2-SNAPSHOT.jar" );
-        listener.deleteArtifact( getRepository().getId(), "org.apache.maven.plugins", "maven-install-plugin",
-                                 "2.2-SNAPSHOT", "maven-install-plugin-2.2-SNAPSHOT.pom" );
-        listener.deleteArtifact( getRepository().getId(), "org.apache.maven.plugins", "maven-install-plugin",
-                                 "2.2-20061118.060401-2", "maven-install-plugin-2.2-20061118.060401-2.jar" );
-        listener.deleteArtifact( getRepository().getId(), "org.apache.maven.plugins", "maven-install-plugin",
-                                 "2.2-20061118.060401-2", "maven-install-plugin-2.2-20061118.060401-2.pom" );
+        listener.deleteArtifact( metadataRepository, getRepository().getId(), "org.apache.maven.plugins",
+                                 "maven-install-plugin", "2.2-SNAPSHOT", "maven-install-plugin-2.2-SNAPSHOT.jar" );
+        listener.deleteArtifact( metadataRepository, getRepository().getId(), "org.apache.maven.plugins",
+                                 "maven-install-plugin", "2.2-SNAPSHOT", "maven-install-plugin-2.2-SNAPSHOT.pom" );
+        listener.deleteArtifact( metadataRepository, getRepository().getId(), "org.apache.maven.plugins",
+                                 "maven-install-plugin", "2.2-20061118.060401-2",
+                                 "maven-install-plugin-2.2-20061118.060401-2.jar" );
+        listener.deleteArtifact( metadataRepository, getRepository().getId(), "org.apache.maven.plugins",
+                                 "maven-install-plugin", "2.2-20061118.060401-2",
+                                 "maven-install-plugin-2.2-20061118.060401-2.pom" );
         listenerControl.replay();
 
         repoPurge.process( PATH_TO_BY_DAYS_OLD_ARTIFACT );
@@ -106,10 +110,10 @@ public class DaysOldRepositoryPurgeTest
     public void testOrderOfDeletion()
         throws Exception
     {
-        repoPurge =
-            new DaysOldRepositoryPurge( getRepository(), getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ).getDaysOlder(),
-                                        getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ).getRetentionCount(),
-                                        Collections.singletonList( listener ) );
+        ManagedRepositoryConfiguration repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME );
+        List<RepositoryListener> listeners = Collections.singletonList( listener );
+        repoPurge = new DaysOldRepositoryPurge( getRepository(), repoConfiguration.getDaysOlder(),
+                                                repoConfiguration.getRetentionCount(), repositorySession, listeners );
 
         String repoRoot = prepareTestRepos();
 
@@ -118,10 +122,12 @@ public class DaysOldRepositoryPurgeTest
         setLastModified( projectRoot + "/1.1.2-SNAPSHOT/", OLD_TIMESTAMP );
 
         // test listeners for the correct artifacts
-        listener.deleteArtifact( getRepository().getId(), "org.apache.maven.plugins", "maven-assembly-plugin",
-                                 "1.1.2-20070427.065136-1", "maven-assembly-plugin-1.1.2-20070427.065136-1.jar" );
-        listener.deleteArtifact( getRepository().getId(), "org.apache.maven.plugins", "maven-assembly-plugin",
-                                 "1.1.2-20070427.065136-1", "maven-assembly-plugin-1.1.2-20070427.065136-1.pom" );
+        listener.deleteArtifact( metadataRepository, getRepository().getId(), "org.apache.maven.plugins",
+                                 "maven-assembly-plugin", "1.1.2-20070427.065136-1",
+                                 "maven-assembly-plugin-1.1.2-20070427.065136-1.jar" );
+        listener.deleteArtifact( metadataRepository, getRepository().getId(), "org.apache.maven.plugins",
+                                 "maven-assembly-plugin", "1.1.2-20070427.065136-1",
+                                 "maven-assembly-plugin-1.1.2-20070427.065136-1.pom" );
         listenerControl.replay();
 
         repoPurge.process( PATH_TO_TEST_ORDER_OF_DELETION );
@@ -154,11 +160,10 @@ public class DaysOldRepositoryPurgeTest
     public void testMetadataDrivenSnapshots()
         throws Exception
     {
-        repoPurge =
-            new DaysOldRepositoryPurge( getRepository(),
-                                        getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ).getDaysOlder(),
-                                        getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ).getRetentionCount(),
-                                        Collections.singletonList( listener ) );
+        ManagedRepositoryConfiguration repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME );
+        List<RepositoryListener> listeners = Collections.singletonList( listener );
+        repoPurge = new DaysOldRepositoryPurge( getRepository(), repoConfiguration.getDaysOlder(),
+                                                repoConfiguration.getRetentionCount(), repositorySession, listeners );
 
         String repoRoot = prepareTestRepos();
 
@@ -185,9 +190,9 @@ public class DaysOldRepositoryPurgeTest
         }
 
         // test listeners for the correct artifacts
-        listener.deleteArtifact( getRepository().getId(), "org.codehaus.plexus", "plexus-utils",
+        listener.deleteArtifact( metadataRepository, getRepository().getId(), "org.codehaus.plexus", "plexus-utils",
                                  "1.4.3-20070113.163208-4", "plexus-utils-1.4.3-20070113.163208-4.jar" );
-        listener.deleteArtifact( getRepository().getId(), "org.codehaus.plexus", "plexus-utils",
+        listener.deleteArtifact( metadataRepository, getRepository().getId(), "org.codehaus.plexus", "plexus-utils",
                                  "1.4.3-20070113.163208-4", "plexus-utils-1.4.3-20070113.163208-4.pom" );
         listenerControl.replay();
 

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumerTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumerTest.java?rev=1053542&r1=1053541&r2=1053542&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumerTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumerTest.java Wed Dec 29 06:14:04 2010
@@ -19,6 +19,8 @@ package org.apache.maven.archiva.consume
  * under the License.
  */
 
+import org.apache.archiva.metadata.repository.RepositorySessionFactory;
+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;
@@ -62,13 +64,12 @@ public class RepositoryPurgeConsumerTest
         FileTypes fileTypes = (FileTypes) lookup( FileTypes.class );
         fileTypes.afterConfigurationChange( null, "repositoryScanning.fileTypes", null );
 
-        KnownRepositoryContentConsumer repoPurgeConsumer =
-            (KnownRepositoryContentConsumer) lookup( KnownRepositoryContentConsumer.class, "repository-purge" );
+        KnownRepositoryContentConsumer repoPurgeConsumer = (KnownRepositoryContentConsumer) lookup(
+            KnownRepositoryContentConsumer.class, "repository-purge" );
 
         File repoLocation = getTestFile( "target/test-" + getName() + "/test-repo" );
 
-        File localFile =
-            new File( repoLocation, path );
+        File localFile = new File( repoLocation, path );
 
         ConsumerWantsFilePredicate predicate = new ConsumerWantsFilePredicate();
         BaseFile baseFile = new BaseFile( repoLocation, localFile );
@@ -83,16 +84,15 @@ public class RepositoryPurgeConsumerTest
         File[] contents = dir.listFiles();
         for ( int i = 0; i < contents.length; i++ )
         {
-            contents[i].setLastModified( 1179382029 ); 
+            contents[i].setLastModified( 1179382029 );
         }
     }
 
     public void testConsumerByRetentionCount()
         throws Exception
     {
-        KnownRepositoryContentConsumer repoPurgeConsumer =
-            (KnownRepositoryContentConsumer) lookup( KnownRepositoryContentConsumer.class,
-                                                     "repo-purge-consumer-by-retention-count" );
+        KnownRepositoryContentConsumer repoPurgeConsumer = (KnownRepositoryContentConsumer) lookup(
+            KnownRepositoryContentConsumer.class, "repo-purge-consumer-by-retention-count" );
 
         ManagedRepositoryConfiguration repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME );
         repoConfiguration.setDaysOlder( 0 ); // force days older off to allow retention count purge to execute.
@@ -141,8 +141,8 @@ public class RepositoryPurgeConsumerTest
     private void addRepoToConfiguration( String configHint, ManagedRepositoryConfiguration repoConfiguration )
         throws Exception
     {
-        ArchivaConfiguration archivaConfiguration =
-            (ArchivaConfiguration) lookup( ArchivaConfiguration.class, configHint );
+        ArchivaConfiguration archivaConfiguration = (ArchivaConfiguration) lookup( ArchivaConfiguration.class,
+                                                                                   configHint );
         Configuration configuration = archivaConfiguration.getConfiguration();
         configuration.removeManagedRepository( configuration.findManagedRepositoryById( repoConfiguration.getId() ) );
         configuration.addManagedRepository( repoConfiguration );
@@ -151,9 +151,8 @@ public class RepositoryPurgeConsumerTest
     public void testConsumerByDaysOld()
         throws Exception
     {
-        KnownRepositoryContentConsumer repoPurgeConsumer =
-            (KnownRepositoryContentConsumer) lookup( KnownRepositoryContentConsumer.class,
-                                                     "repo-purge-consumer-by-days-old" );
+        KnownRepositoryContentConsumer repoPurgeConsumer = (KnownRepositoryContentConsumer) lookup(
+            KnownRepositoryContentConsumer.class, "repo-purge-consumer-by-days-old" );
 
         ManagedRepositoryConfiguration repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME );
         repoConfiguration.setDaysOlder( TEST_DAYS_OLDER );
@@ -182,7 +181,7 @@ public class RepositoryPurgeConsumerTest
         assertExists( projectRoot + "/2.2-SNAPSHOT/maven-install-plugin-2.2-20070513.034619-5.pom" );
         assertExists( projectRoot + "/2.2-SNAPSHOT/maven-install-plugin-2.2-20070513.034619-5.pom.md5" );
         assertExists( projectRoot + "/2.2-SNAPSHOT/maven-install-plugin-2.2-20070513.034619-5.pom.sha1" );
-        
+
         assertExists( projectRoot + "/2.2-SNAPSHOT/maven-install-plugin-2.2-20070510.010101-4.jar" );
         assertExists( projectRoot + "/2.2-SNAPSHOT/maven-install-plugin-2.2-20070510.010101-4.jar.md5" );
         assertExists( projectRoot + "/2.2-SNAPSHOT/maven-install-plugin-2.2-20070510.010101-4.jar.sha1" );
@@ -206,9 +205,8 @@ public class RepositoryPurgeConsumerTest
     public void testReleasedSnapshotsWereNotCleaned()
         throws Exception
     {
-        KnownRepositoryContentConsumer repoPurgeConsumer =
-            (KnownRepositoryContentConsumer) lookup( KnownRepositoryContentConsumer.class,
-                                                     "repo-purge-consumer-by-retention-count" );
+        KnownRepositoryContentConsumer repoPurgeConsumer = (KnownRepositoryContentConsumer) lookup(
+            KnownRepositoryContentConsumer.class, "repo-purge-consumer-by-retention-count" );
 
         ManagedRepositoryConfiguration repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME );
         repoConfiguration.setDeleteReleasedSnapshots( false ); // Set to NOT delete released snapshots.
@@ -218,7 +216,8 @@ public class RepositoryPurgeConsumerTest
 
         String repoRoot = prepareTestRepos();
 
-        repoPurgeConsumer.processFile( CleanupReleasedSnapshotsRepositoryPurgeTest.PATH_TO_RELEASED_SNAPSHOT_IN_SAME_REPO );
+        repoPurgeConsumer.processFile(
+            CleanupReleasedSnapshotsRepositoryPurgeTest.PATH_TO_RELEASED_SNAPSHOT_IN_SAME_REPO );
 
         // check if the snapshot wasn't removed
         String projectRoot = repoRoot + "/org/apache/maven/plugins/maven-plugin-plugin";
@@ -247,9 +246,8 @@ public class RepositoryPurgeConsumerTest
     public void testReleasedSnapshotsWereCleaned()
         throws Exception
     {
-        KnownRepositoryContentConsumer repoPurgeConsumer =
-            (KnownRepositoryContentConsumer) lookup( KnownRepositoryContentConsumer.class,
-                                                     "repo-purge-consumer-by-days-old" );
+        KnownRepositoryContentConsumer repoPurgeConsumer = (KnownRepositoryContentConsumer) lookup(
+            KnownRepositoryContentConsumer.class, "repo-purge-consumer-by-days-old" );
 
         ManagedRepositoryConfiguration repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME );
         repoConfiguration.setDeleteReleasedSnapshots( true );
@@ -259,7 +257,8 @@ public class RepositoryPurgeConsumerTest
 
         String repoRoot = prepareTestRepos();
 
-        repoPurgeConsumer.processFile( CleanupReleasedSnapshotsRepositoryPurgeTest.PATH_TO_RELEASED_SNAPSHOT_IN_SAME_REPO );
+        repoPurgeConsumer.processFile(
+            CleanupReleasedSnapshotsRepositoryPurgeTest.PATH_TO_RELEASED_SNAPSHOT_IN_SAME_REPO );
 
         String projectRoot = repoRoot + "/org/apache/maven/plugins/maven-plugin-plugin";
 
@@ -285,4 +284,14 @@ public class RepositoryPurgeConsumerTest
                                      "//metadata/versioning/versions/version", metadataXml );
         XMLAssert.assertXpathEvaluatesTo( "20070315032817", "//metadata/versioning/lastUpdated", metadataXml );
     }
+
+    @Override
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        TestRepositorySessionFactory factory = (TestRepositorySessionFactory) lookup( RepositorySessionFactory.class );
+        factory.setRepository( metadataRepository );
+    }
 }

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurgeTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurgeTest.java?rev=1053542&r1=1053541&r2=1053542&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurgeTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurgeTest.java Wed Dec 29 06:14:04 2010
@@ -1,7 +1,5 @@
 package org.apache.maven.archiva.consumers.core.repository;
 
-import java.util.Collections;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -11,7 +9,7 @@ import java.util.Collections;
  * "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
+ * 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
@@ -21,24 +19,27 @@ import java.util.Collections;
  * under the License.
  */
 
+import org.apache.archiva.repository.events.RepositoryListener;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+
+import java.util.Collections;
+import java.util.List;
+
 /**
  * Test RetentionsCountRepositoryPurgeTest
- *
  */
 public class RetentionCountRepositoryPurgeTest
     extends AbstractRepositoryPurgeTest
 {
-
     protected void setUp()
         throws Exception
     {
         super.setUp();
 
-        repoPurge =
-            new RetentionCountRepositoryPurge(
-                                               getRepository(),
-                                               getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ).getRetentionCount(),
-                                               Collections.singletonList( listener ) );
+        ManagedRepositoryConfiguration repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME );
+        List<RepositoryListener> listeners = Collections.singletonList( listener );
+        repoPurge = new RetentionCountRepositoryPurge( getRepository(), repoConfiguration.getRetentionCount(),
+                                                       repositorySession, listeners );
     }
 
     /**
@@ -50,18 +51,18 @@ public class RetentionCountRepositoryPur
         String repoRoot = prepareTestRepos();
 
         // test listeners for the correct artifacts
-        listener.deleteArtifact( getRepository().getId(), "org.jruby.plugins", "jruby-rake-plugin",
+        listener.deleteArtifact( metadataRepository, getRepository().getId(), "org.jruby.plugins", "jruby-rake-plugin",
                                  "1.0RC1-20070504.153317-1", "jruby-rake-plugin-1.0RC1-20070504.153317-1.jar" );
-        listener.deleteArtifact( getRepository().getId(), "org.jruby.plugins", "jruby-rake-plugin",
+        listener.deleteArtifact( metadataRepository, getRepository().getId(), "org.jruby.plugins", "jruby-rake-plugin",
                                  "1.0RC1-20070504.153317-1", "jruby-rake-plugin-1.0RC1-20070504.153317-1.pom" );
-        listener.deleteArtifact( getRepository().getId(), "org.jruby.plugins", "jruby-rake-plugin",
+        listener.deleteArtifact( metadataRepository, getRepository().getId(), "org.jruby.plugins", "jruby-rake-plugin",
                                  "1.0RC1-20070504.160758-2", "jruby-rake-plugin-1.0RC1-20070504.160758-2.jar" );
-        listener.deleteArtifact( getRepository().getId(), "org.jruby.plugins", "jruby-rake-plugin",
+        listener.deleteArtifact( metadataRepository, getRepository().getId(), "org.jruby.plugins", "jruby-rake-plugin",
                                  "1.0RC1-20070504.160758-2", "jruby-rake-plugin-1.0RC1-20070504.160758-2.pom" );
         listenerControl.replay();
-        
+
         repoPurge.process( PATH_TO_BY_RETENTION_COUNT_ARTIFACT );
-        
+
         listenerControl.verify();
 
         String versionRoot = repoRoot + "/org/jruby/plugins/jruby-rake-plugin/1.0RC1-SNAPSHOT";
@@ -106,18 +107,18 @@ public class RetentionCountRepositoryPur
         String repoRoot = prepareTestRepos();
 
         // test listeners for the correct artifacts
-        listener.deleteArtifact( getRepository().getId(), "org.codehaus.castor", "castor-anttasks",
+        listener.deleteArtifact( metadataRepository, getRepository().getId(), "org.codehaus.castor", "castor-anttasks",
                                  "1.1.2-20070427.065136-1", "castor-anttasks-1.1.2-20070427.065136-1.jar" );
-        listener.deleteArtifact( getRepository().getId(), "org.codehaus.castor", "castor-anttasks",
+        listener.deleteArtifact( metadataRepository, getRepository().getId(), "org.codehaus.castor", "castor-anttasks",
                                  "1.1.2-20070427.065136-1", "castor-anttasks-1.1.2-20070427.065136-1.pom" );
         listenerControl.replay();
-        
+
         repoPurge.process( PATH_TO_BY_RETENTION_COUNT_POM );
-        
+
         listenerControl.verify();
 
         String versionRoot = repoRoot + "/org/codehaus/castor/castor-anttasks/1.1.2-SNAPSHOT";
-        
+
         // assert if removed from repo
         assertDeleted( versionRoot + "/castor-anttasks-1.1.2-20070427.065136-1.jar" );
         assertDeleted( versionRoot + "/castor-anttasks-1.1.2-20070427.065136-1.jar.md5" );
@@ -154,19 +155,20 @@ public class RetentionCountRepositoryPur
         String repoRoot = prepareTestRepos();
 
         // test listeners for the correct artifacts
-        listener.deleteArtifact( getRepository().getId(), "org.apache.maven.plugins", "maven-assembly-plugin",
-                                 "1.1.2-20070427.065136-1", "maven-assembly-plugin-1.1.2-20070427.065136-1.jar" );
-        listener.deleteArtifact( getRepository().getId(), "org.apache.maven.plugins", "maven-assembly-plugin",
-                                 "1.1.2-20070427.065136-1", "maven-assembly-plugin-1.1.2-20070427.065136-1.pom" );
+        listener.deleteArtifact( metadataRepository, getRepository().getId(), "org.apache.maven.plugins",
+                                 "maven-assembly-plugin", "1.1.2-20070427.065136-1",
+                                 "maven-assembly-plugin-1.1.2-20070427.065136-1.jar" );
+        listener.deleteArtifact( metadataRepository, getRepository().getId(), "org.apache.maven.plugins",
+                                 "maven-assembly-plugin", "1.1.2-20070427.065136-1",
+                                 "maven-assembly-plugin-1.1.2-20070427.065136-1.pom" );
         listenerControl.replay();
-        
+
         repoPurge.process( PATH_TO_TEST_ORDER_OF_DELETION );
 
         listenerControl.verify();
 
-        String versionRoot = repoRoot + 
-            "/org/apache/maven/plugins/maven-assembly-plugin/1.1.2-SNAPSHOT";
-        
+        String versionRoot = repoRoot + "/org/apache/maven/plugins/maven-assembly-plugin/1.1.2-SNAPSHOT";
+
         assertDeleted( versionRoot + "/maven-assembly-plugin-1.1.2-20070427.065136-1.jar" );
         assertDeleted( versionRoot + "/maven-assembly-plugin-1.1.2-20070427.065136-1.jar.sha1" );
         assertDeleted( versionRoot + "/maven-assembly-plugin-1.1.2-20070427.065136-1.jar.md5" );

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumerTest.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumerTest.xml?rev=1053542&r1=1053541&r2=1053542&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumerTest.xml (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumerTest.xml Wed Dec 29 06:14:04 2010
@@ -42,6 +42,9 @@
           <role>org.apache.maven.archiva.configuration.FileTypes</role>
           <role-hint>retention-count</role-hint>
         </requirement>
+        <requirement>
+          <role>org.apache.archiva.metadata.repository.RepositorySessionFactory</role>
+        </requirement>
       </requirements>
       <configuration>
         <id>repository-purge</id>
@@ -125,6 +128,9 @@
           <role>org.apache.maven.archiva.configuration.FileTypes</role>
           <role-hint>days-old</role-hint>
         </requirement>
+        <requirement>
+          <role>org.apache.archiva.metadata.repository.RepositorySessionFactory</role>
+        </requirement>
       </requirements>
       <configuration>
         <id>repository-purge</id>
@@ -185,5 +191,9 @@
         </requirement>
       </requirements>
     </component>
+    <component>
+      <role>org.apache.archiva.metadata.repository.RepositorySessionFactory</role>
+      <implementation>org.apache.archiva.metadata.repository.TestRepositorySessionFactory</implementation>
+    </component>
   </components>
 </component-set>

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java?rev=1053542&r1=1053541&r2=1053542&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java Wed Dec 29 06:14:04 2010
@@ -24,8 +24,11 @@ import org.apache.archiva.metadata.model
 import org.apache.archiva.metadata.model.ProjectVersionMetadata;
 import org.apache.archiva.metadata.repository.MetadataRepository;
 import org.apache.archiva.metadata.repository.MetadataRepositoryException;
-import org.apache.archiva.metadata.repository.MetadataResolutionException;
+import org.apache.archiva.metadata.repository.RepositorySession;
+import org.apache.archiva.metadata.repository.RepositorySessionFactory;
 import org.apache.archiva.metadata.repository.storage.RepositoryStorage;
+import org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataInvalidException;
+import org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataNotFoundException;
 import org.apache.maven.archiva.common.utils.VersionUtil;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.ConfigurationNames;
@@ -81,9 +84,11 @@ public class ArchivaMetadataCreationCons
     private List<String> includes = new ArrayList<String>();
 
     /**
+     * FIXME: can be of other types
+     *
      * @plexus.requirement
      */
-    private MetadataRepository metadataRepository;
+    private RepositorySessionFactory repositorySessionFactory;
 
     /**
      * FIXME: this needs to be configurable based on storage type - and could also be instantiated per repo. Change to a
@@ -149,31 +154,35 @@ public class ArchivaMetadataCreationCons
         project.setId( artifact.getProject() );
 
         String projectVersion = VersionUtil.getBaseVersion( artifact.getVersion() );
-        // FIXME: maybe not too efficient since it may have already been read and stored for this artifact
-        ProjectVersionMetadata versionMetadata = null;
+
+        RepositorySession repositorySession = repositorySessionFactory.createSession();
         try
         {
-            versionMetadata = repositoryStorage.readProjectVersionMetadata( repoId, artifact.getNamespace(),
-                                                                            artifact.getProject(), projectVersion );
-        }
-        catch ( MetadataResolutionException e )
-        {
-            log.warn( "Error occurred resolving POM for artifact: " + path + "; message: " + e.getMessage() );
-        }
+            MetadataRepository metadataRepository = repositorySession.getRepository();
 
-        boolean createVersionMetadata = false;
-        if ( versionMetadata == null )
-        {
-            log.warn( "Missing or invalid POM for artifact: " + path + "; creating empty metadata" );
-            versionMetadata = new ProjectVersionMetadata();
-            versionMetadata.setId( projectVersion );
-            versionMetadata.setIncomplete( true );
-            createVersionMetadata = true;
-        }
+            boolean createVersionMetadata = false;
+
+            // FIXME: maybe not too efficient since it may have already been read and stored for this artifact
+            ProjectVersionMetadata versionMetadata = null;
+            try
+            {
+                versionMetadata = repositoryStorage.readProjectVersionMetadata( repoId, artifact.getNamespace(),
+                                                                                artifact.getProject(), projectVersion );
+            }
+            catch ( RepositoryStorageMetadataNotFoundException e )
+            {
+                log.warn( "Missing or invalid POM for artifact: " + path + "; creating empty metadata" );
+
+                versionMetadata = new ProjectVersionMetadata();
+                versionMetadata.setId( projectVersion );
+                versionMetadata.setIncomplete( true );
+                createVersionMetadata = true;
+            }
+            catch ( RepositoryStorageMetadataInvalidException e )
+            {
+                log.warn( "Error occurred resolving POM for artifact: " + path + "; message: " + e.getMessage() );
+            }
 
-        try
-        {
-            // FIXME: transaction
             // read the metadata and update it if it is newer or doesn't exist
             artifact.setWhenGathered( whenGathered );
             metadataRepository.updateArtifact( repoId, project.getNamespace(), project.getId(), projectVersion,
@@ -184,10 +193,16 @@ public class ArchivaMetadataCreationCons
                                                          versionMetadata );
             }
             metadataRepository.updateProject( repoId, project );
+            repositorySession.save();
         }
         catch ( MetadataRepositoryException e )
         {
             log.warn( "Error occurred persisting metadata for artifact: " + path + "; message: " + e.getMessage(), e );
+            repositorySession.revert();
+        }
+        finally
+        {
+            repositorySession.close();
         }
     }