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/