You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by oc...@apache.org on 2007/11/06 07:16:13 UTC

svn commit: r592297 - in /maven/archiva/trunk: archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/ archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/...

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>    



Re: svn commit: r592297 - in /maven/archiva/trunk: archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/ archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/...

Posted by Maria Odea Ching <oc...@exist.com>.
Brett Porter wrote:
>
> On 06/11/2007, at 5:16 PM, oching@apache.org wrote:
>
>> - adjusted DaysOldRepositoryPurgeTest for the changes
>
> but there's no tests for the actual changes... :)

Ooops, sorry about that :)

>
>> 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() );
>> +        }
>>      }
>
> Is this likely to ever give a false-positive if it was meant to be 
> two, but came out as 0?

The deleteRecords(..) is still being invoked in the purge even if the 
list of records to be deleted is empty so the assert fails each time 
this method is invoked with that value.

>
> Maybe it would be better to define the expected size in the 
> constructor for the stub? (or use mock objects :)

I think I tried using mock objects for the tests before but encountered 
some problems with EasyMock's expect and return when a method parameter 
was created with "new [CLASS]()" inside of the class being tested. 
Anyway, I'll see what I can do about the tests :-)

>
> Thanks,
> Brett
>
> -- 
> Brett Porter - brett@apache.org
> Blog: http://www.devzuz.org/blogs/bporter/
>
>

Thanks,
Deng


Re: svn commit: r592297 - in /maven/archiva/trunk: archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/ archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/...

Posted by Brett Porter <br...@apache.org>.
On 06/11/2007, at 5:16 PM, oching@apache.org wrote:

> - adjusted DaysOldRepositoryPurgeTest for the changes

but there's no tests for the actual changes... :)

> 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() );
> +        }
>      }

Is this likely to ever give a false-positive if it was meant to be  
two, but came out as 0?

Maybe it would be better to define the expected size in the  
constructor for the stub? (or use mock objects :)

Thanks,
Brett

--
Brett Porter - brett@apache.org
Blog: http://www.devzuz.org/blogs/bporter/