Author: oching
Date: Mon Nov 5 22:16:12 2007
New Revision: 592297
URL: http://svn.apache.org/viewvc?rev=592297&view=rev
Log:
[MRM-556]
- respect set retention count when purging by number of days old (used same
logic for purging by retention count)
- updated edit managed repository validation for the number of days old minimum
range
- adjusted DaysOldRepositoryPurgeTest for the changes
Modified:
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurge.java
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurgeTest.java
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/stubs/LuceneRepositoryContentIndexStub.java
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction-validation.xml
Modified:
maven/archiva/trunk/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/maven/archiva/trunk/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurge.java?rev=592297&r1=592296&r2=592297&view=diff
==============================================================================
---
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurge.java
(original)
+++
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurge.java
Mon Nov 5 22:16:12 2007
@@ -20,10 +20,12 @@
*/
import org.apache.commons.lang.time.DateUtils;
+import org.apache.maven.archiva.common.utils.VersionComparator;
import org.apache.maven.archiva.common.utils.VersionUtil;
import org.apache.maven.archiva.database.ArtifactDAO;
import org.apache.maven.archiva.indexer.RepositoryContentIndex;
import org.apache.maven.archiva.model.ArtifactReference;
+import org.apache.maven.archiva.model.VersionedReference;
import org.apache.maven.archiva.repository.ContentNotFoundException;
import org.apache.maven.archiva.repository.ManagedRepositoryContent;
import org.apache.maven.archiva.repository.layout.LayoutException;
@@ -31,8 +33,11 @@
import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Calendar;
+import java.util.Collections;
import java.util.Date;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
@@ -49,11 +54,14 @@
private int daysOlder;
+ private int retentionCount;
+
public DaysOldRepositoryPurge( ManagedRepositoryContent repository,
ArtifactDAO artifactDao,
- int daysOlder, Map<String,
RepositoryContentIndex> indices )
+ int daysOlder, int retentionCount,
Map<String, RepositoryContentIndex> indices )
{
super( repository, artifactDao, indices );
this.daysOlder = daysOlder;
+ this.retentionCount = retentionCount;
timestampParser = new SimpleDateFormat( "yyyyMMdd.HHmmss" );
timestampParser.setTimeZone( DateUtils.UTC_TIME_ZONE );
}
@@ -75,12 +83,29 @@
Calendar olderThanThisDate = Calendar.getInstance(
DateUtils.UTC_TIME_ZONE );
olderThanThisDate.add( Calendar.DATE, -daysOlder );
+ // respect retention count
+ VersionedReference reference = new VersionedReference();
+ reference.setGroupId( artifact.getGroupId() );
+ reference.setArtifactId( artifact.getArtifactId() );
+ reference.setVersion( artifact.getVersion() );
+
+ List<String> versions = new ArrayList<String>(
repository.getVersions( reference ) );
+
+ Collections.sort( versions, VersionComparator.getInstance() );
+
+
// Is this a generic snapshot "1.0-SNAPSHOT" ?
if ( VersionUtil.isGenericSnapshot( artifact.getVersion() ) )
{
if ( artifactFile.lastModified() <
olderThanThisDate.getTimeInMillis() )
- {
- doPurgeAllRelated( artifactFile );
+ {
+ if ( retentionCount > versions.size() )
+ {
+ // Done. nothing to do here. skip it.
+ return;
+ }
+
+ purgeArtifact( versions, artifactFile );
}
}
// Is this a timestamp snapshot "1.0-20070822.123456-42" ?
@@ -89,12 +114,25 @@
Calendar timestampCal = uniqueSnapshotToCalendar(
artifact.getVersion() );
if ( timestampCal.getTimeInMillis() <
olderThanThisDate.getTimeInMillis() )
- {
- doPurgeAllRelated( artifactFile );
+ {
+ if ( retentionCount > versions.size() )
+ {
+ // Done. nothing to do here. skip it.
+ return;
+ }
+
+ purgeArtifact( versions, artifactFile );
}
else if ( artifactFile.lastModified() <
olderThanThisDate.getTimeInMillis() )
- {
- doPurgeAllRelated( artifactFile );
+ {
+
+ if ( retentionCount > versions.size() )
+ {
+ // Done. nothing to do here. skip it.
+ return;
+ }
+
+ purgeArtifact( versions, artifactFile );
}
}
}
@@ -102,6 +140,10 @@
{
throw new RepositoryPurgeException( le.getMessage() );
}
+ catch ( ContentNotFoundException e )
+ {
+ throw new RepositoryPurgeException( e.getMessage() );
+ }
}
private Calendar uniqueSnapshotToCalendar( String version )
@@ -150,6 +192,21 @@
{
// Nothing to do here.
// TODO: Log this?
+ }
+ }
+
+ private void purgeArtifact( List<String> versions, File artifactFile )
+ throws LayoutException
+ {
+ int countToPurge = versions.size() - retentionCount;
+
+ while( versions.iterator().hasNext() )
+ {
+ if ( countToPurge-- <= 0 )
+ {
+ break;
+ }
+ doPurgeAllRelated( artifactFile );
}
}
}
Modified:
maven/archiva/trunk/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/maven/archiva/trunk/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java?rev=592297&r1=592296&r2=592297&view=diff
==============================================================================
---
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java
(original)
+++
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java
Mon Nov 5 22:16:12 2007
@@ -149,7 +149,7 @@
if ( repository.getDaysOlder() != 0 )
{
repoPurge = new DaysOldRepositoryPurge( repositoryContent,
dao.getArtifactDAO(), repository
- .getDaysOlder(), indices );
+ .getDaysOlder(), repository.getRetentionCount(), indices );
}
else
{
Modified:
maven/archiva/trunk/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/maven/archiva/trunk/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurgeTest.java?rev=592297&r1=592296&r2=592297&view=diff
==============================================================================
---
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurgeTest.java
(original)
+++
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurgeTest.java
Mon Nov 5 22:16:12 2007
@@ -35,18 +35,18 @@
extends AbstractRepositoryPurgeTest
{
+ private Map<String, RepositoryContentIndex> map;
+
protected void setUp()
throws Exception
{
super.setUp();
- Map<String, RepositoryContentIndex> map = new HashMap<String,
RepositoryContentIndex>();
+ map = new HashMap<String, RepositoryContentIndex>();
map.put( "filecontent", new LuceneRepositoryContentIndexStub() );
map.put( "hashcodes", new LuceneRepositoryContentIndexStub() );
- map.put( "bytecode", new LuceneRepositoryContentIndexStub() );
+ map.put( "bytecode", new LuceneRepositoryContentIndexStub() );
- repoPurge =
- new DaysOldRepositoryPurge( getRepository(), dao,
getRepoConfiguration().getDaysOlder(), map );
}
private void setLastModified( String dirPath )
@@ -61,7 +61,11 @@
public void testByLastModified()
throws Exception
- {
+ {
+ repoPurge =
+ new DaysOldRepositoryPurge( getRepository(), dao,
getRepoConfiguration().getDaysOlder(),
+ 1, map );
+
populateDbForTestByLastModified();
String repoRoot = prepareTestRepo();
@@ -83,6 +87,10 @@
public void testMetadataDrivenSnapshots()
throws Exception
{
+ repoPurge =
+ new DaysOldRepositoryPurge( getRepository(), dao,
getRepoConfiguration().getDaysOlder(),
+ getRepoConfiguration().getRetentionCount(), map );
+
populateDbForTestMetadataDrivenSnapshots();
String repoRoot = prepareTestRepo();
Modified:
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/stubs/LuceneRepositoryContentIndexStub.java
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/stubs/LuceneRepositoryContentIndexStub.java?rev=592297&r1=592296&r2=592297&view=diff
==============================================================================
---
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/stubs/LuceneRepositoryContentIndexStub.java
(original)
+++
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/stubs/LuceneRepositoryContentIndexStub.java
Mon Nov 5 22:16:12 2007
@@ -46,7 +46,10 @@
throws RepositoryIndexException
{
// TODO Auto-generated method stub
- Assert.assertEquals( 2, records.size() );
+ if( records.size() != 0 )
+ {
+ Assert.assertEquals( 2, records.size() );
+ }
}
public boolean exists()
Modified:
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction-validation.xml
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction-validation.xml?rev=592297&r1=592296&r2=592297&view=diff
==============================================================================
---
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction-validation.xml
(original)
+++
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction-validation.xml
Mon Nov 5 22:16:12 2007
@@ -46,7 +46,7 @@
</field>
<field name="repository.daysOlder">
<field-validator type="int">
- <param name="min">1</param>
+ <param name="min">0</param>
<param name="max">1000</param>
<message>Repository Purge By Days Older Than needs to be
between ${min} and ${max}.</message>
</field-validator>