From e8ced44c3d055adf8be170f0e0b84e9c3ac9b4d8 Mon Sep 17 00:00:00 2001 From: Michael Haubenwallner Date: Wed, 17 Jan 2024 15:19:59 +0100 Subject: [PATCH] MavenTargetLocation: use serialize for equals and hashCode In the TargetPlatformPreferencePage, upon the Apply button, some target definition containing some MavenTargetLocation always was rewritten to it's .target file. This was because MavenTargetLocation.equals never returned true for multiple reasons, starting with MavenTargetDependency lacking an impl of equals(). Using serialize(), we can be sure to perform the equals check on any relevant attribute, including deeply nested ones. Beyond that, also use serialize() to implement hashCode(). --- org.eclipse.m2e.pde.target/META-INF/MANIFEST.MF | 2 +- .../org/eclipse/m2e/pde/target/MavenTargetLocation.java | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/org.eclipse.m2e.pde.target/META-INF/MANIFEST.MF b/org.eclipse.m2e.pde.target/META-INF/MANIFEST.MF index ddbfc7e92a..3b25ea985e 100644 --- a/org.eclipse.m2e.pde.target/META-INF/MANIFEST.MF +++ b/org.eclipse.m2e.pde.target/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: M2E PDE Integration Bundle-SymbolicName: org.eclipse.m2e.pde.target;singleton:=true -Bundle-Version: 2.0.500.qualifier +Bundle-Version: 2.0.600.qualifier Automatic-Module-Name: org.eclipse.m2e.pde.target Bundle-RequiredExecutionEnvironment: JavaSE-17 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.27.0,4.0.0)", diff --git a/org.eclipse.m2e.pde.target/src/org/eclipse/m2e/pde/target/MavenTargetLocation.java b/org.eclipse.m2e.pde.target/src/org/eclipse/m2e/pde/target/MavenTargetLocation.java index 9f27a4e8e1..b25a9524d7 100644 --- a/org.eclipse.m2e.pde.target/src/org/eclipse/m2e/pde/target/MavenTargetLocation.java +++ b/org.eclipse.m2e.pde.target/src/org/eclipse/m2e/pde/target/MavenTargetLocation.java @@ -514,7 +514,7 @@ public String getLocation(boolean resolve) throws CoreException { @Override public int hashCode() { - return Objects.hash(roots, dependencyScopes, failedArtifacts, metadataMode); + return serialize().hashCode(); } @Override @@ -523,9 +523,8 @@ public boolean equals(Object obj) { return true; } return obj instanceof MavenTargetLocation other // - && Objects.equals(roots, other.roots)// - && Objects.equals(dependencyScopes, other.dependencyScopes) - && Objects.equals(failedArtifacts, other.failedArtifacts); + // check each and every relevant attribute, including nested ones + && serialize().equals(other.serialize()); } public boolean isIncludeSource() {