Author: joakime
Date: Mon Oct 15 18:31:40 2007
New Revision: 584994

URL: http://svn.apache.org/viewvc?rev=584994&view=rev
Log:
[MRM-535] metadata-updater is changing lastUpdating timestamp when it shouldn't
Correcting logic in snapshot metadata to only update on the following 
conditions.
* Last Updated exist in original metadata.xml or ...
* Last Updated timestamp as found in unique (timestamped) snapshots is newer.


Modified:
    
maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/MetadataTools.java

Modified: 
maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/MetadataTools.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/MetadataTools.java?rev=584994&r1=584993&r2=584994&view=diff
==============================================================================
--- 
maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/MetadataTools.java
 (original)
+++ 
maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/MetadataTools.java
 Mon Oct 15 18:31:40 2007
@@ -501,6 +501,22 @@
 
         return cal.getTime();
     }
+    
+    private long toLastUpdatedLong( String timestampString )
+    {
+        try
+        {
+            Date date = lastUpdatedFormat.parse( timestampString );
+            Calendar cal = Calendar.getInstance( DateUtils.UTC_TIME_ZONE );
+            cal.setTime( date );
+
+            return cal.getTimeInMillis();
+        }
+        catch ( ParseException e )
+        {
+            return 0;
+        }
+    }
 
     private long getLastUpdated( ArchivaRepositoryMetadata metadata )
     {
@@ -570,16 +586,12 @@
     {
         File metadataFile = new File( managedRepository.getRepoRoot(), toPath( 
reference ) );
 
-        long originalLastUpdated = getExistingLastUpdated( metadataFile );
+        long lastUpdated = getExistingLastUpdated( metadataFile );
 
         ArchivaRepositoryMetadata metadata = new ArchivaRepositoryMetadata();
         metadata.setGroupId( reference.getGroupId() );
         metadata.setArtifactId( reference.getArtifactId() );
-        if ( originalLastUpdated > 0 )
-        {
-            metadata.setLastUpdatedTimestamp( toLastUpdatedDate( 
originalLastUpdated ) );
-        }
-
+        
         if ( VersionUtil.isSnapshot( reference.getVersion() ) )
         {
             // Do SNAPSHOT handling.
@@ -619,7 +631,11 @@
                     {
                         String tsDate = mtimestamp.group( 1 );
                         String tsTime = mtimestamp.group( 2 );
-                        metadata.setLastUpdated( tsDate + tsTime );
+                        
+                        long snapshotLastUpdated = toLastUpdatedLong( tsDate + 
tsTime );
+                        
+                        lastUpdated = Math.max( lastUpdated, 
snapshotLastUpdated );
+                        
                         metadata.getSnapshotVersion().setTimestamp( m.group( 2 
) );
                     }
                 }
@@ -631,9 +647,12 @@
 
                 metadata.setSnapshotVersion( new SnapshotVersion() );
 
-                /* TODO: Should this be the last updated timestamp of the 
file, or in the case of an 
+                /* Disabled due to decision in [MRM-535].
+                 * Do not set metadata.lastUpdated to file.lastModified.
+                 * 
+                 * Should this be the last updated timestamp of the file, or 
in the case of an 
                  * archive, the most recent timestamp in the archive?
-                 */
+                 * 
                 ArtifactReference artifact = getFirstArtifact( 
managedRepository, reference );
 
                 if ( artifact == null )
@@ -648,6 +667,7 @@
                     Date lastModified = new Date( artifactFile.lastModified() 
);
                     metadata.setLastUpdatedTimestamp( lastModified );
                 }
+                */
             }
             else
             {
@@ -659,6 +679,12 @@
         {
             // Do RELEASE handling.
             metadata.setVersion( reference.getVersion() );
+        }
+
+        // Set last updated
+        if ( lastUpdated > 0 )
+        {
+            metadata.setLastUpdatedTimestamp( toLastUpdatedDate( lastUpdated ) 
);
         }
 
         // Save the metadata model to disk.


Reply via email to