diff --git a/core/src/main/java/org/openapitools/openapidiff/core/compare/PathsDiff.java b/core/src/main/java/org/openapitools/openapidiff/core/compare/PathsDiff.java
index 49cbff9c4..8b4f459b8 100644
--- a/core/src/main/java/org/openapitools/openapidiff/core/compare/PathsDiff.java
+++ b/core/src/main/java/org/openapitools/openapidiff/core/compare/PathsDiff.java
@@ -125,6 +125,8 @@ private static boolean methodsAndParametersIntersect(PathItem a, PathItem b) {
}
/**
+ * Checks if provided parameter pairs are equal by type and format
+ *
* @param left parameters from the first compared method
* @param right parameters from the second compared method
* @return true
in case each parameter pair is of the same type; false
@@ -134,9 +136,21 @@ private static boolean parametersIntersect(List left, List
int parametersSize = left.size();
long intersectedParameters =
IntStream.range(0, left.size())
- .filter(
- i -> left.get(i).getSchema().getType().equals(right.get(i).getSchema().getType()))
+ .filter(i -> parametersTypeEquals(left.get(i), right.get(i)))
.count();
return parametersSize == intersectedParameters;
}
+
+ /**
+ * Checks if provided parameter pair is equal by type and format
+ *
+ * @param left parameter from the first compared method
+ * @param right parameter from the second compared method
+ * @return true
in case parameter pair is of the same type; false
+ * otherwise
+ */
+ private static boolean parametersTypeEquals(Parameter left, Parameter right) {
+ return Objects.equals(left.getSchema().getType(), right.getSchema().getType())
+ && Objects.equals(left.getSchema().getFormat(), right.getSchema().getFormat());
+ }
}
diff --git a/core/src/test/resources/parameters_overloading.yaml b/core/src/test/resources/parameters_overloading.yaml
index bd3bee96c..061444451 100644
--- a/core/src/test/resources/parameters_overloading.yaml
+++ b/core/src/test/resources/parameters_overloading.yaml
@@ -3,6 +3,21 @@ info:
title: Projects API
version: 1.0.0
paths:
+ /projects/{key}:
+ get:
+ parameters:
+ - in: path
+ name: key
+ required: true
+ schema:
+ type: string
+ responses:
+ '200':
+ description: 'Success'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SampleResponse'
/projects/{id}:
get:
parameters:
@@ -35,6 +50,26 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/SampleResponse'
+ /projects/{id}.{idPostfix}:
+ get:
+ parameters:
+ - in: path
+ name: id
+ required: true
+ schema:
+ type: string
+ - in: path
+ name: idPostfix
+ required: true
+ schema:
+ type: string
+ responses:
+ '200':
+ description: 'Success'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SampleResponse'
components:
schemas:
SampleResponse: