This is an automated email from the ASF dual-hosted git repository. michaelo pushed a commit to branch MNG-6754 in repository https://gitbox.apache.org/repos/asf/maven.git
commit aa1dfd8acba15a2938a1ded9420d634eebd2839e Author: Michael Osipov <[email protected]> AuthorDate: Sat Oct 17 20:40:38 2020 +0200 Apply consistent timestamp to all metadata types --- .../artifact/installer/DefaultArtifactInstaller.java | 1 + .../resolver/transform/ReleaseArtifactTransformation.java | 1 + .../legacy/resolver/transform/SnapshotTransformation.java | 1 + .../maven/repository/internal/LocalSnapshotMetadata.java | 15 ++++++++------- .../internal/LocalSnapshotMetadataGenerator.java | 7 ++++++- .../apache/maven/repository/internal/MavenMetadata.java | 8 ++++++-- .../maven/repository/internal/MavenSnapshotMetadata.java | 5 +++-- .../maven/repository/internal/RemoteSnapshotMetadata.java | 10 +++------- .../maven/repository/internal/VersionsMetadata.java | 13 +++++++------ .../repository/internal/VersionsMetadataGenerator.java | 7 ++++++- 10 files changed, 42 insertions(+), 26 deletions(-) diff --git a/maven-compat/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java b/maven-compat/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java index a252975..5deee38 100644 --- a/maven-compat/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java +++ b/maven-compat/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java @@ -123,6 +123,7 @@ public class DefaultArtifactInstaller } Versioning versioning = new Versioning(); + // TODO Should this be changed for MNG-6754 too? versioning.updateTimestamp(); versioning.addVersion( artifact.getBaseVersion() ); if ( artifact.isRelease() ) diff --git a/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/ReleaseArtifactTransformation.java b/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/ReleaseArtifactTransformation.java index 3714924..b1d2c71 100644 --- a/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/ReleaseArtifactTransformation.java +++ b/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/ReleaseArtifactTransformation.java @@ -82,6 +82,7 @@ public class ReleaseArtifactTransformation private ArtifactMetadata createMetadata( Artifact artifact ) { Versioning versioning = new Versioning(); + // TODO Should this be changed for MNG-6754 too? versioning.updateTimestamp(); versioning.addVersion( artifact.getVersion() ); diff --git a/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/SnapshotTransformation.java b/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/SnapshotTransformation.java index 895b952..1a79049 100644 --- a/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/SnapshotTransformation.java +++ b/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/SnapshotTransformation.java @@ -91,6 +91,7 @@ public class SnapshotTransformation { Snapshot snapshot = new Snapshot(); + // TODO Should this be changed for MNG-6754 too? snapshot.setTimestamp( getDeploymentTimestamp() ); // we update the build number anyway so that it doesn't get lost. It requires the timestamp to take effect diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java index ce09efd..453e4d2 100644 --- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java +++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java @@ -22,6 +22,7 @@ package org.apache.maven.repository.internal; import java.io.File; import java.util.ArrayList; import java.util.Collection; +import java.util.Date; import java.util.LinkedHashMap; import java.util.Map; @@ -42,15 +43,15 @@ final class LocalSnapshotMetadata private final boolean legacyFormat; - LocalSnapshotMetadata( Artifact artifact, boolean legacyFormat ) + LocalSnapshotMetadata( Artifact artifact, boolean legacyFormat, Date timestamp ) { - super( createMetadata( artifact, legacyFormat ), null ); + super( createMetadata( artifact, legacyFormat ), null, timestamp ); this.legacyFormat = legacyFormat; } - LocalSnapshotMetadata( Metadata metadata, File file, boolean legacyFormat ) + LocalSnapshotMetadata( Metadata metadata, File file, boolean legacyFormat, Date timestamp ) { - super( metadata, file ); + super( metadata, file, timestamp ); this.legacyFormat = legacyFormat; } @@ -82,7 +83,7 @@ final class LocalSnapshotMetadata public MavenMetadata setFile( File file ) { - return new LocalSnapshotMetadata( metadata, file, legacyFormat ); + return new LocalSnapshotMetadata( metadata, file, legacyFormat, timestamp ); } public Object getKey() @@ -98,7 +99,7 @@ final class LocalSnapshotMetadata @Override protected void merge( Metadata recessive ) { - metadata.getVersioning().updateTimestamp(); + metadata.getVersioning().setLastUpdatedTimestamp( timestamp ); if ( !legacyFormat ) { @@ -160,4 +161,4 @@ final class LocalSnapshotMetadata return Nature.SNAPSHOT; } -} \ No newline at end of file +} diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java index 584e166..75b4e6b 100644 --- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java +++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java @@ -21,6 +21,7 @@ package org.apache.maven.repository.internal; import java.util.Collection; import java.util.Collections; +import java.util.Date; import java.util.LinkedHashMap; import java.util.Map; @@ -42,10 +43,14 @@ class LocalSnapshotMetadataGenerator private final boolean legacyFormat; + private final Date timestamp; + LocalSnapshotMetadataGenerator( RepositorySystemSession session, InstallRequest request ) { legacyFormat = ConfigUtils.getBoolean( session.getConfigProperties(), false, "maven.metadata.legacy" ); + timestamp = (Date) ConfigUtils.getObject( session, new Date(), "maven.startTime" ); + snapshots = new LinkedHashMap<>(); } @@ -59,7 +64,7 @@ class LocalSnapshotMetadataGenerator LocalSnapshotMetadata snapshotMetadata = snapshots.get( key ); if ( snapshotMetadata == null ) { - snapshotMetadata = new LocalSnapshotMetadata( artifact, legacyFormat ); + snapshotMetadata = new LocalSnapshotMetadata( artifact, legacyFormat, timestamp ); snapshots.put( key, snapshotMetadata ); } snapshotMetadata.bind( artifact ); diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java index aef44f6..bdddc70 100644 --- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java +++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java @@ -34,6 +34,7 @@ import java.io.IOException; import java.io.Reader; import java.io.Writer; import java.util.Collections; +import java.util.Date; import java.util.Map; /** @@ -46,16 +47,19 @@ abstract class MavenMetadata static final String MAVEN_METADATA_XML = "maven-metadata.xml"; + protected Metadata metadata; + private final File file; - protected Metadata metadata; + protected final Date timestamp; private boolean merged; - protected MavenMetadata( Metadata metadata, File file ) + protected MavenMetadata( Metadata metadata, File file, Date timestamp ) { this.metadata = metadata; this.file = file; + this.timestamp = timestamp; } public String getType() diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java index e4c9a7e..35d4d42 100644 --- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java +++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java @@ -22,6 +22,7 @@ package org.apache.maven.repository.internal; import java.io.File; import java.util.ArrayList; import java.util.Collection; +import java.util.Date; import org.apache.maven.artifact.repository.metadata.Metadata; import org.eclipse.aether.artifact.Artifact; @@ -38,9 +39,9 @@ abstract class MavenSnapshotMetadata protected final boolean legacyFormat; - protected MavenSnapshotMetadata( Metadata metadata, File file, boolean legacyFormat ) + protected MavenSnapshotMetadata( Metadata metadata, File file, boolean legacyFormat, Date timestamp ) { - super( metadata, file ); + super( metadata, file, timestamp ); this.legacyFormat = legacyFormat; } diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java index fe46228..d9b5616 100644 --- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java +++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java @@ -47,18 +47,14 @@ final class RemoteSnapshotMetadata private final Map<String, SnapshotVersion> versions = new LinkedHashMap<>(); - private final Date timestamp; - RemoteSnapshotMetadata( Artifact artifact, boolean legacyFormat, Date timestamp ) { - super( createRepositoryMetadata( artifact, legacyFormat ), null, legacyFormat ); - this.timestamp = timestamp; + super( createRepositoryMetadata( artifact, legacyFormat ), null, legacyFormat, timestamp ); } private RemoteSnapshotMetadata( Metadata metadata, File file, boolean legacyFormat, Date timestamp ) { - super( metadata, file, legacyFormat ); - this.timestamp = timestamp; + super( metadata, file, legacyFormat, timestamp ); } public MavenMetadata setFile( File file ) @@ -90,7 +86,7 @@ final class RemoteSnapshotMetadata Versioning versioning = new Versioning(); versioning.setSnapshot( snapshot ); - versioning.setLastUpdated( snapshot.getTimestamp().replace( ".", "" ) ); + versioning.setLastUpdatedTimestamp( timestamp ); lastUpdated = versioning.getLastUpdated(); metadata.setVersioning( versioning ); diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java index f7df64e..5103e5c 100644 --- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java +++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java @@ -22,6 +22,7 @@ package org.apache.maven.repository.internal; import java.io.File; import java.util.ArrayList; import java.util.Collection; +import java.util.Date; import java.util.LinkedHashSet; import org.apache.maven.artifact.repository.metadata.Metadata; @@ -38,15 +39,15 @@ final class VersionsMetadata private final Artifact artifact; - VersionsMetadata( Artifact artifact ) + VersionsMetadata( Artifact artifact, Date timestamp ) { - super( createRepositoryMetadata( artifact ), null ); + super( createRepositoryMetadata( artifact ), null, timestamp ); this.artifact = artifact; } - VersionsMetadata( Artifact artifact, File file ) + VersionsMetadata( Artifact artifact, File file, Date timestamp ) { - super( createRepositoryMetadata( artifact ), file ); + super( createRepositoryMetadata( artifact ), file, timestamp ); this.artifact = artifact; } @@ -76,7 +77,7 @@ final class VersionsMetadata protected void merge( Metadata recessive ) { Versioning versioning = metadata.getVersioning(); - versioning.updateTimestamp(); + versioning.setLastUpdatedTimestamp( timestamp ); if ( recessive.getVersioning() != null ) { @@ -107,7 +108,7 @@ final class VersionsMetadata public MavenMetadata setFile( File file ) { - return new VersionsMetadata( artifact, file ); + return new VersionsMetadata( artifact, file, timestamp ); } public String getGroupId() diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java index d6b5c8a..409eec4 100644 --- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java +++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java @@ -21,6 +21,7 @@ package org.apache.maven.repository.internal; import java.util.Collection; import java.util.Collections; +import java.util.Date; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; @@ -31,6 +32,7 @@ import org.eclipse.aether.deployment.DeployRequest; import org.eclipse.aether.impl.MetadataGenerator; import org.eclipse.aether.installation.InstallRequest; import org.eclipse.aether.metadata.Metadata; +import org.eclipse.aether.util.ConfigUtils; /** * @author Benjamin Bentmann @@ -43,6 +45,8 @@ class VersionsMetadataGenerator private Map<Object, VersionsMetadata> processedVersions; + private final Date timestamp; + VersionsMetadataGenerator( RepositorySystemSession session, InstallRequest request ) { this( session, request.getMetadata() ); @@ -57,6 +61,7 @@ class VersionsMetadataGenerator { versions = new LinkedHashMap<>(); processedVersions = new LinkedHashMap<>(); + timestamp = (Date) ConfigUtils.getObject( session, new Date(), "maven.startTime" ); /* * NOTE: This should be considered a quirk to support interop with Maven's legacy ArtifactDeployer which @@ -96,7 +101,7 @@ class VersionsMetadataGenerator VersionsMetadata versionsMetadata = versions.get( key ); if ( versionsMetadata == null ) { - versionsMetadata = new VersionsMetadata( artifact ); + versionsMetadata = new VersionsMetadata( artifact, timestamp ); versions.put( key, versionsMetadata ); } }
