[MNG-7374] Mutating RelocatedArtifact does not retain type
This closes #641
diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java
index 2e277f0..4614ccf 100644
--- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java
+++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java
@@ -86,6 +86,40 @@
}
}
+ // Revise these three methods when MRESOLVER-233 is delivered
+ @Override
+ public Artifact setVersion( String version )
+ {
+ String current = getVersion();
+ if ( current.equals( version ) || ( version == null && current.length() <= 0 ) )
+ {
+ return this;
+ }
+ return new RelocatedArtifact( artifact, groupId, artifactId, version );
+ }
+
+ @Override
+ public Artifact setFile( File file )
+ {
+ File current = getFile();
+ if ( Objects.equals( current, file ) )
+ {
+ return this;
+ }
+ return new RelocatedArtifact( artifact.setFile( file ), groupId, artifactId, version );
+ }
+
+ @Override
+ public Artifact setProperties( Map<String, String> properties )
+ {
+ Map<String, String> current = getProperties();
+ if ( current.equals( properties ) || ( properties == null && current.isEmpty() ) )
+ {
+ return this;
+ }
+ return new RelocatedArtifact( artifact.setProperties( properties ), groupId, artifactId, version );
+ }
+
public String getClassifier()
{
return artifact.getClassifier();