This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git

commit c8e2af96a34e69995fb8399541959ea506f57f69
Author: Guillaume Nodet <gno...@gmail.com>
AuthorDate: Fri Jan 24 23:16:23 2025 +0100

    [MNG-8540] Add equals/hashCode to requests
---
 .../ArtifactCoordinatesFactoryRequest.java         | 19 ++++++++++++
 .../api/services/ArtifactDeployerRequest.java      | 14 +++++++++
 .../maven/api/services/ArtifactFactoryRequest.java | 18 +++++++++++
 .../api/services/ArtifactInstallerRequest.java     | 11 +++++++
 .../api/services/ArtifactResolverRequest.java      | 13 ++++++++
 .../DependencyCoordinatesFactoryRequest.java       | 31 +++++++++++++++++++
 .../api/services/DependencyResolverRequest.java    | 31 +++++++++++++++++++
 .../maven/api/services/ModelBuilderRequest.java    | 35 ++++++++++++++++++++++
 .../maven/api/services/ProjectBuilderRequest.java  | 17 +++++++++++
 .../org/apache/maven/api/services/Request.java     | 21 +++++++++++++
 .../maven/api/services/SettingsBuilderRequest.java | 16 ++++++++++
 .../api/services/ToolchainsBuilderRequest.java     | 13 ++++++++
 .../api/services/VersionRangeResolverRequest.java  | 13 ++++++++
 .../maven/api/services/VersionResolverRequest.java | 13 ++++++++
 .../api/services/RequestImplementationTest.java    | 35 ++++++++++++++++++++++
 15 files changed, 300 insertions(+)

diff --git 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactCoordinatesFactoryRequest.java
 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactCoordinatesFactoryRequest.java
index 074c9bcebd..7a8361e9a3 100644
--- 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactCoordinatesFactoryRequest.java
+++ 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactCoordinatesFactoryRequest.java
@@ -18,6 +18,8 @@
  */
 package org.apache.maven.api.services;
 
+import java.util.Objects;
+
 import org.apache.maven.api.ArtifactCoordinates;
 import org.apache.maven.api.Session;
 import org.apache.maven.api.annotations.Experimental;
@@ -235,6 +237,23 @@ public String getCoordinatesString() {
                 return coordinatesString;
             }
 
+            @Override
+            public boolean equals(Object o) {
+                return o instanceof DefaultArtifactFactoryRequestArtifact that
+                        && Objects.equals(groupId, that.groupId)
+                        && Objects.equals(artifactId, that.artifactId)
+                        && Objects.equals(version, that.version)
+                        && Objects.equals(classifier, that.classifier)
+                        && Objects.equals(extension, that.extension)
+                        && Objects.equals(type, that.type)
+                        && Objects.equals(coordinatesString, 
that.coordinatesString);
+            }
+
+            @Override
+            public int hashCode() {
+                return Objects.hash(groupId, artifactId, version, classifier, 
extension, type, coordinatesString);
+            }
+
             @Override
             public String toString() {
                 return "ArtifactFactoryRequestArtifact[" + "groupId='"
diff --git 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactDeployerRequest.java
 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactDeployerRequest.java
index c2eaedf58b..8d54d882c0 100644
--- 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactDeployerRequest.java
+++ 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactDeployerRequest.java
@@ -20,6 +20,7 @@
 
 import java.util.Collection;
 import java.util.List;
+import java.util.Objects;
 
 import org.apache.maven.api.ProducedArtifact;
 import org.apache.maven.api.RemoteRepository;
@@ -144,6 +145,19 @@ public int getRetryFailedDeploymentCount() {
                 return retryFailedDeploymentCount;
             }
 
+            @Override
+            public boolean equals(Object o) {
+                return o instanceof DefaultArtifactDeployerRequest that
+                        && retryFailedDeploymentCount == 
that.retryFailedDeploymentCount
+                        && Objects.equals(repository, that.repository)
+                        && Objects.equals(artifacts, that.artifacts);
+            }
+
+            @Override
+            public int hashCode() {
+                return Objects.hash(repository, artifacts, 
retryFailedDeploymentCount);
+            }
+
             @Override
             public String toString() {
                 return "ArtifactDeployerRequest[" + "repository="
diff --git 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactFactoryRequest.java
 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactFactoryRequest.java
index c162f42093..0d97922374 100644
--- 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactFactoryRequest.java
+++ 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactFactoryRequest.java
@@ -18,6 +18,8 @@
  */
 package org.apache.maven.api.services;
 
+import java.util.Objects;
+
 import org.apache.maven.api.Session;
 import org.apache.maven.api.annotations.Experimental;
 import org.apache.maven.api.annotations.Immutable;
@@ -198,6 +200,22 @@ public String getType() {
                 return type;
             }
 
+            @Override
+            public boolean equals(Object o) {
+                return o instanceof DefaultArtifactFactoryRequest that
+                        && Objects.equals(groupId, that.groupId)
+                        && Objects.equals(artifactId, that.artifactId)
+                        && Objects.equals(version, that.version)
+                        && Objects.equals(classifier, that.classifier)
+                        && Objects.equals(extension, that.extension)
+                        && Objects.equals(type, that.type);
+            }
+
+            @Override
+            public int hashCode() {
+                return Objects.hash(groupId, artifactId, version, classifier, 
extension, type);
+            }
+
             @Override
             public String toString() {
                 return "ArtifactFactoryRequest[" + "groupId='"
diff --git 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactInstallerRequest.java
 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactInstallerRequest.java
index 7c3130aced..6f5a57e0ea 100644
--- 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactInstallerRequest.java
+++ 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactInstallerRequest.java
@@ -21,6 +21,7 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 
 import org.apache.maven.api.ProducedArtifact;
 import org.apache.maven.api.Session;
@@ -106,6 +107,16 @@ public Collection<ProducedArtifact> getArtifacts() {
                 return artifacts;
             }
 
+            @Override
+            public boolean equals(Object o) {
+                return o instanceof DefaultArtifactInstallerRequest that && 
Objects.equals(artifacts, that.artifacts);
+            }
+
+            @Override
+            public int hashCode() {
+                return Objects.hashCode(artifacts);
+            }
+
             @Override
             public String toString() {
                 return "ArtifactInstallerRequest[" + "artifacts=" + artifacts 
+ ']';
diff --git 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactResolverRequest.java
 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactResolverRequest.java
index 4651a07332..36336eae08 100644
--- 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactResolverRequest.java
+++ 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactResolverRequest.java
@@ -20,6 +20,7 @@
 
 import java.util.Collection;
 import java.util.List;
+import java.util.Objects;
 
 import org.apache.maven.api.ArtifactCoordinates;
 import org.apache.maven.api.RemoteRepository;
@@ -141,6 +142,18 @@ public List<RemoteRepository> getRepositories() {
                 return repositories;
             }
 
+            @Override
+            public boolean equals(Object o) {
+                return o instanceof DefaultArtifactResolverRequest that
+                        && Objects.equals(coordinates, that.coordinates)
+                        && Objects.equals(repositories, that.repositories);
+            }
+
+            @Override
+            public int hashCode() {
+                return Objects.hash(coordinates, repositories);
+            }
+
             @Override
             public String toString() {
                 return "ArtifactResolverRequest[" + "coordinates="
diff --git 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/DependencyCoordinatesFactoryRequest.java
 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/DependencyCoordinatesFactoryRequest.java
index 5bcf124711..52a4204592 100644
--- 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/DependencyCoordinatesFactoryRequest.java
+++ 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/DependencyCoordinatesFactoryRequest.java
@@ -21,6 +21,7 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Objects;
 
 import org.apache.maven.api.ArtifactCoordinates;
 import org.apache.maven.api.Dependency;
@@ -301,6 +302,36 @@ public Collection<Exclusion> getExclusions() {
                 return exclusions;
             }
 
+            @Override
+            public boolean equals(Object o) {
+                return o instanceof DefaultDependencyCoordinatesFactoryRequest 
that
+                        && optional == that.optional
+                        && Objects.equals(groupId, that.groupId)
+                        && Objects.equals(artifactId, that.artifactId)
+                        && Objects.equals(version, that.version)
+                        && Objects.equals(classifier, that.classifier)
+                        && Objects.equals(extension, that.extension)
+                        && Objects.equals(type, that.type)
+                        && Objects.equals(coordinateString, 
that.coordinateString)
+                        && Objects.equals(scope, that.scope)
+                        && Objects.equals(exclusions, that.exclusions);
+            }
+
+            @Override
+            public int hashCode() {
+                return Objects.hash(
+                        groupId,
+                        artifactId,
+                        version,
+                        classifier,
+                        extension,
+                        type,
+                        coordinateString,
+                        scope,
+                        optional,
+                        exclusions);
+            }
+
             @Override
             public String toString() {
                 return "DependencyCoordinatesFactoryRequest[" + "groupId='"
diff --git 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/DependencyResolverRequest.java
 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/DependencyResolverRequest.java
index 532a9b6551..f419d7ff60 100644
--- 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/DependencyResolverRequest.java
+++ 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/DependencyResolverRequest.java
@@ -22,6 +22,7 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.function.Predicate;
 
@@ -499,6 +500,36 @@ public List<RemoteRepository> getRepositories() {
                 return repositories;
             }
 
+            @Override
+            public boolean equals(Object o) {
+                return o instanceof DefaultDependencyResolverRequest that
+                        && verbose == that.verbose
+                        && requestType == that.requestType
+                        && Objects.equals(project, that.project)
+                        && Objects.equals(rootArtifact, that.rootArtifact)
+                        && Objects.equals(root, that.root)
+                        && Objects.equals(dependencies, that.dependencies)
+                        && Objects.equals(managedDependencies, 
that.managedDependencies)
+                        && Objects.equals(pathScope, that.pathScope)
+                        && Objects.equals(pathTypeFilter, that.pathTypeFilter)
+                        && Objects.equals(repositories, that.repositories);
+            }
+
+            @Override
+            public int hashCode() {
+                return Objects.hash(
+                        requestType,
+                        project,
+                        rootArtifact,
+                        root,
+                        dependencies,
+                        managedDependencies,
+                        verbose,
+                        pathScope,
+                        pathTypeFilter,
+                        repositories);
+            }
+
             @Override
             public String toString() {
                 return "DependencyResolverRequest[" + "requestType="
diff --git 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ModelBuilderRequest.java
 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ModelBuilderRequest.java
index 882ba3861c..4a995e241d 100644
--- 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ModelBuilderRequest.java
+++ 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ModelBuilderRequest.java
@@ -22,6 +22,7 @@
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 import org.apache.maven.api.RemoteRepository;
 import org.apache.maven.api.Session;
@@ -402,6 +403,40 @@ public ModelTransformer getLifecycleBindingsInjector() {
                 return lifecycleBindingsInjector;
             }
 
+            @Override
+            public boolean equals(Object o) {
+                return o instanceof DefaultModelBuilderRequest that
+                        && locationTracking == that.locationTracking
+                        && recursive == that.recursive
+                        && requestType == that.requestType
+                        && Objects.equals(source, that.source)
+                        && Objects.equals(profiles, that.profiles)
+                        && Objects.equals(activeProfileIds, 
that.activeProfileIds)
+                        && Objects.equals(inactiveProfileIds, 
that.inactiveProfileIds)
+                        && Objects.equals(systemProperties, 
that.systemProperties)
+                        && Objects.equals(userProperties, that.userProperties)
+                        && repositoryMerging == that.repositoryMerging
+                        && Objects.equals(repositories, that.repositories)
+                        && Objects.equals(lifecycleBindingsInjector, 
that.lifecycleBindingsInjector);
+            }
+
+            @Override
+            public int hashCode() {
+                return Objects.hash(
+                        requestType,
+                        locationTracking,
+                        recursive,
+                        source,
+                        profiles,
+                        activeProfileIds,
+                        inactiveProfileIds,
+                        systemProperties,
+                        userProperties,
+                        repositoryMerging,
+                        repositories,
+                        lifecycleBindingsInjector);
+            }
+
             @Override
             public String toString() {
                 return "ModelBuilderRequest[" + "requestType="
diff --git 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ProjectBuilderRequest.java
 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ProjectBuilderRequest.java
index e0e9eee5b5..505098468c 100644
--- 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ProjectBuilderRequest.java
+++ 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ProjectBuilderRequest.java
@@ -20,6 +20,7 @@
 
 import java.nio.file.Path;
 import java.util.List;
+import java.util.Objects;
 import java.util.Optional;
 
 import org.apache.maven.api.RemoteRepository;
@@ -188,6 +189,22 @@ public List<RemoteRepository> getRepositories() {
                 return repositories;
             }
 
+            @Override
+            public boolean equals(Object o) {
+                return o instanceof DefaultProjectBuilderRequest that
+                        && allowStubModel == that.allowStubModel
+                        && recursive == that.recursive
+                        && processPlugins == that.processPlugins
+                        && Objects.equals(path, that.path)
+                        && Objects.equals(source, that.source)
+                        && Objects.equals(repositories, that.repositories);
+            }
+
+            @Override
+            public int hashCode() {
+                return Objects.hash(path, source, allowStubModel, recursive, 
processPlugins, repositories);
+            }
+
             @Override
             public String toString() {
                 return "ProjectBuilderRequest[" + "path="
diff --git 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/Request.java 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/Request.java
index 28eecc94d8..b65d4a2d34 100644
--- 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/Request.java
+++ 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/Request.java
@@ -78,6 +78,27 @@ public interface Request<S extends ProtoSession> {
     @Nullable
     RequestTrace getTrace();
 
+    /**
+     * Returns a hashcode value for this request, based on all significant 
fields.
+     * Implementations must ensure that if two requests are equal according to
+     * {@link #equals(Object)}, they have the same hashcode.
+     *
+     * @return a hash code value for this request
+     */
+    @Override
+    int hashCode();
+
+    /**
+     * Returns {@code true} if the specified object is equal to this request.
+     * Two requests are considered equal if they have the same type and all
+     * significant fields are equal.
+     *
+     * @param obj the object to compare with this request
+     * @return {@code true} if the objects are equal, {@code false} otherwise
+     */
+    @Override
+    boolean equals(Object obj);
+
     /**
      * Returns a string representation of this request, used for debugging and 
logging purposes.
      * The format should include the request type and any significant 
attributes that define the
diff --git 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/SettingsBuilderRequest.java
 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/SettingsBuilderRequest.java
index a310bb8c18..1ab8a9a15b 100644
--- 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/SettingsBuilderRequest.java
+++ 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/SettingsBuilderRequest.java
@@ -20,6 +20,7 @@
 
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.function.UnaryOperator;
 
@@ -222,6 +223,21 @@ public Optional<UnaryOperator<String>> 
getInterpolationSource() {
                 return Optional.ofNullable(interpolationSource);
             }
 
+            @Override
+            public boolean equals(Object o) {
+                return o instanceof DefaultSettingsBuilderRequest that
+                        && Objects.equals(installationSettingsSource, 
that.installationSettingsSource)
+                        && Objects.equals(projectSettingsSource, 
that.projectSettingsSource)
+                        && Objects.equals(userSettingsSource, 
that.userSettingsSource)
+                        && Objects.equals(interpolationSource, 
that.interpolationSource);
+            }
+
+            @Override
+            public int hashCode() {
+                return Objects.hash(
+                        installationSettingsSource, projectSettingsSource, 
userSettingsSource, interpolationSource);
+            }
+
             @Override
             public String toString() {
                 return "SettingsBuilderRequest[" + 
"installationSettingsSource="
diff --git 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ToolchainsBuilderRequest.java
 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ToolchainsBuilderRequest.java
index 1af9a50dad..0257ae6760 100644
--- 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ToolchainsBuilderRequest.java
+++ 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ToolchainsBuilderRequest.java
@@ -20,6 +20,7 @@
 
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.util.Objects;
 import java.util.Optional;
 
 import org.apache.maven.api.ProtoSession;
@@ -148,6 +149,18 @@ public Optional<Source> getUserToolchainsSource() {
                 return Optional.ofNullable(userToolchainsSource);
             }
 
+            @Override
+            public boolean equals(Object o) {
+                return o instanceof DefaultToolchainsBuilderRequest that
+                        && Objects.equals(installationToolchainsSource, 
that.installationToolchainsSource)
+                        && Objects.equals(userToolchainsSource, 
that.userToolchainsSource);
+            }
+
+            @Override
+            public int hashCode() {
+                return Objects.hash(installationToolchainsSource, 
userToolchainsSource);
+            }
+
             @Override
             public String toString() {
                 return "ToolchainsBuilderRequest[" + 
"installationToolchainsSource="
diff --git 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/VersionRangeResolverRequest.java
 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/VersionRangeResolverRequest.java
index 3ab8a89b1e..52abe9e89a 100644
--- 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/VersionRangeResolverRequest.java
+++ 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/VersionRangeResolverRequest.java
@@ -19,6 +19,7 @@
 package org.apache.maven.api.services;
 
 import java.util.List;
+import java.util.Objects;
 
 import org.apache.maven.api.ArtifactCoordinates;
 import org.apache.maven.api.RemoteRepository;
@@ -125,6 +126,18 @@ public List<RemoteRepository> getRepositories() {
                 return repositories;
             }
 
+            @Override
+            public boolean equals(Object o) {
+                return o instanceof DefaultVersionResolverRequest that
+                        && Objects.equals(artifactCoordinates, 
that.artifactCoordinates)
+                        && Objects.equals(repositories, that.repositories);
+            }
+
+            @Override
+            public int hashCode() {
+                return Objects.hash(artifactCoordinates, repositories);
+            }
+
             @Override
             public String toString() {
                 return "VersionResolverRequest[" + "artifactCoordinates="
diff --git 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/VersionResolverRequest.java
 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/VersionResolverRequest.java
index f2751d0c0c..c8dee58a8f 100644
--- 
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/VersionResolverRequest.java
+++ 
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/VersionResolverRequest.java
@@ -19,6 +19,7 @@
 package org.apache.maven.api.services;
 
 import java.util.List;
+import java.util.Objects;
 
 import org.apache.maven.api.ArtifactCoordinates;
 import org.apache.maven.api.RemoteRepository;
@@ -127,6 +128,18 @@ public List<RemoteRepository> getRepositories() {
                 return repositories;
             }
 
+            @Override
+            public boolean equals(Object o) {
+                return o instanceof DefaultVersionResolverRequest that
+                        && Objects.equals(artifactCoordinates, 
that.artifactCoordinates)
+                        && Objects.equals(repositories, that.repositories);
+            }
+
+            @Override
+            public int hashCode() {
+                return Objects.hash(artifactCoordinates, repositories);
+            }
+
             @Override
             public String toString() {
                 return "VersionResolverRequest[" + "artifactCoordinates="
diff --git 
a/api/maven-api-core/src/test/java/org/apache/maven/api/services/RequestImplementationTest.java
 
b/api/maven-api-core/src/test/java/org/apache/maven/api/services/RequestImplementationTest.java
index 61dc77c2e9..b618a100ca 100644
--- 
a/api/maven-api-core/src/test/java/org/apache/maven/api/services/RequestImplementationTest.java
+++ 
b/api/maven-api-core/src/test/java/org/apache/maven/api/services/RequestImplementationTest.java
@@ -22,6 +22,7 @@
 import java.util.List;
 
 import org.apache.maven.api.ArtifactCoordinates;
+import org.apache.maven.api.PathScope;
 import org.apache.maven.api.RemoteRepository;
 import org.apache.maven.api.Session;
 import org.junit.jupiter.api.Test;
@@ -59,6 +60,11 @@ void testArtifactResolverRequestEquality() {
                 .repositories(repositories1)
                 .build();
 
+        // Test equals and hashCode
+        assertEquals(request1, request2);
+        assertEquals(request1.hashCode(), request2.hashCode());
+        assertNotEquals(request1, request3);
+
         // Test toString
         String toString = request1.toString();
         assertTrue(toString.contains("coordinates="));
@@ -76,4 +82,33 @@ void testRequestTraceIntegration() {
         assertEquals(trace, request.getTrace());
         assertEquals(session, request.getSession());
     }
+
+    @Test
+    void testDependencyResolverRequestEquality() {
+        Session session = mock(Session.class);
+
+        DependencyResolverRequest.DependencyResolverRequestBuilder builder = 
DependencyResolverRequest.builder();
+        DependencyResolverRequest request1 = builder.session(session)
+                .requestType(DependencyResolverRequest.RequestType.COLLECT)
+                .pathScope(PathScope.MAIN_COMPILE)
+                .build();
+
+        DependencyResolverRequest request2 = builder.session(session)
+                .requestType(DependencyResolverRequest.RequestType.COLLECT)
+                .pathScope(PathScope.MAIN_COMPILE)
+                .build();
+
+        DependencyResolverRequest request3 = builder.session(session)
+                .requestType(DependencyResolverRequest.RequestType.RESOLVE)
+                .pathScope(PathScope.MAIN_COMPILE)
+                .build();
+
+        assertEquals(request1, request2);
+        assertEquals(request1.hashCode(), request2.hashCode());
+        assertNotEquals(request1, request3);
+
+        String toString = request1.toString();
+        assertTrue(toString.contains("requestType="));
+        assertTrue(toString.contains("pathScope="));
+    }
 }

Reply via email to