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: