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 2011/10/03 09:18:11 UTC

svn commit: r1178312 - /archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java

Author: brett
Date: Mon Oct  3 07:18:10 2011
New Revision: 1178312

URL: http://svn.apache.org/viewvc?rev=1178312&view=rev
Log:
prevent overzealous deletion of snapshot versions in the same artifact that may not be part of the currently scanned file

Modified:
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/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/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java?rev=1178312&r1=1178311&r2=1178312&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java Mon Oct  3 07:18:10 2011
@@ -116,19 +116,25 @@ public class CleanupReleasedSnapshotsRep
             reference.setGroupId( artifactRef.getGroupId() );
             reference.setArtifactId( artifactRef.getArtifactId() );
 
-            // Gather up all of the versions.
-            List<String> allVersions = new ArrayList<String>( repository.getVersions( reference ) );
+            // Gether the released versions
+            List<String> releasedVersions = new ArrayList<String>();
 
             List<ManagedRepository> repos = managedRepositoryAdmin.getManagedRepositories();
             for ( ManagedRepository repo : repos )
             {
-                if ( repo.isReleases() && !repo.getId().equals( repository.getId() ) )
+                if ( repo.isReleases() )
                 {
                     try
                     {
                         ManagedRepositoryContent repoContent =
                             repoContentFactory.getManagedRepositoryContent( repo.getId() );
-                        allVersions.addAll( repoContent.getVersions( reference ) );
+                        for ( String version : repoContent.getVersions( reference ) )
+                        {
+                            if ( !VersionUtil.isSnapshot( version ) )
+                            {
+                                releasedVersions.add( version );
+                            }
+                        }
                     }
                     catch ( RepositoryNotFoundException e )
                     {
@@ -141,25 +147,7 @@ public class CleanupReleasedSnapshotsRep
                 }
             }
 
-            // Split the versions into released and snapshots.
-            List<String> releasedVersions = new ArrayList<String>();
-            List<String> snapshotVersions = new ArrayList<String>();
-
-            for ( String version : allVersions )
-            {
-                if ( VersionUtil.isSnapshot( version ) )
-                {
-                    snapshotVersions.add( version );
-                }
-                else
-                {
-                    releasedVersions.add( version );
-                }
-            }
-
-            Collections.sort( allVersions, VersionComparator.getInstance() );
             Collections.sort( releasedVersions, VersionComparator.getInstance() );
-            Collections.sort( snapshotVersions, VersionComparator.getInstance() );
 
             // Now clean out any version that is earlier than the highest released version.
             boolean needsMetadataUpdate = false;
@@ -168,28 +156,22 @@ public class CleanupReleasedSnapshotsRep
             versionRef.setGroupId( artifactRef.getGroupId() );
             versionRef.setArtifactId( artifactRef.getArtifactId() );
 
-            ArchivaArtifact artifact =
-                new ArchivaArtifact( artifactRef.getGroupId(), artifactRef.getArtifactId(), artifactRef.getVersion(),
-                                     artifactRef.getClassifier(), artifactRef.getType(), repository.getId() );
-
             MetadataRepository metadataRepository = repositorySession.getRepository();
-            for ( String version : snapshotVersions )
-            {
-                if ( releasedVersions.contains( VersionUtil.getReleaseVersion( version ) ) )
-                {
-                    versionRef.setVersion( version );
-                    repository.deleteVersion( versionRef );
 
-                    // FIXME: looks incomplete, might not delete related metadata?
-                    for ( RepositoryListener listener : listeners )
-                    {
-                        listener.deleteArtifact( metadataRepository, repository.getId(), artifact.getGroupId(),
-                                                 artifact.getArtifactId(), artifact.getVersion(),
-                                                 artifactFile.getName() );
-                    }
+            if ( releasedVersions.contains( VersionUtil.getReleaseVersion( artifactRef.getVersion() ) ) )
+            {
+                versionRef.setVersion( artifactRef.getVersion() );
+                repository.deleteVersion( versionRef );
 
-                    needsMetadataUpdate = true;
+                // FIXME: looks incomplete, might not delete related metadata?
+                for ( RepositoryListener listener : listeners )
+                {
+                    listener.deleteArtifact( metadataRepository, repository.getId(), artifactRef.getGroupId(),
+                                             artifactRef.getArtifactId(), artifactRef.getVersion(),
+                                             artifactFile.getName() );
                 }
+
+                needsMetadataUpdate = true;
             }
 
             if ( needsMetadataUpdate )