looks good, but should there be a test case?

On 16/10/2007, at 9:31 AM, [EMAIL PROTECTED] wrote:

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.


--
Brett Porter - [EMAIL PROTECTED]
Blog: http://www.devzuz.org/blogs/bporter/

Reply via email to