From 8acc3e6fc6c0207988d302205b31c1780e9c898c Mon Sep 17 00:00:00 2001 From: Carlos Tasada Date: Mon, 1 Apr 2024 17:44:28 +0200 Subject: [PATCH 1/2] fix: Sort Messages references Message references are now alphabetically sorted. When an Operation has multiple messages, the resulting order depends on how the classes are parsed. This can produce slightly different results in different machines, making problematic the comparison for changes. --- .../core/asyncapi/scanners/operations/OperationMerger.java | 6 +++++- .../asyncapi/scanners/operations/OperationMergerTest.java | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/springwolf-core/src/main/java/io/github/springwolf/core/asyncapi/scanners/operations/OperationMerger.java b/springwolf-core/src/main/java/io/github/springwolf/core/asyncapi/scanners/operations/OperationMerger.java index 4a021f047..b0d33b779 100644 --- a/springwolf-core/src/main/java/io/github/springwolf/core/asyncapi/scanners/operations/OperationMerger.java +++ b/springwolf-core/src/main/java/io/github/springwolf/core/asyncapi/scanners/operations/OperationMerger.java @@ -5,6 +5,7 @@ import io.github.springwolf.asyncapi.v3.model.operation.Operation; import java.util.Collection; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -62,6 +63,9 @@ private static List mergeMessageReferences( if (otherMessages != null) { messageReferences.addAll(otherMessages); } - return messageReferences.stream().toList(); + + return messageReferences.stream() + .sorted(Comparator.comparing(MessageReference::getRef)) + .toList(); } } diff --git a/springwolf-core/src/test/java/io/github/springwolf/core/asyncapi/scanners/operations/OperationMergerTest.java b/springwolf-core/src/test/java/io/github/springwolf/core/asyncapi/scanners/operations/OperationMergerTest.java index d45e897dc..6f3ffe1a1 100644 --- a/springwolf-core/src/test/java/io/github/springwolf/core/asyncapi/scanners/operations/OperationMergerTest.java +++ b/springwolf-core/src/test/java/io/github/springwolf/core/asyncapi/scanners/operations/OperationMergerTest.java @@ -122,7 +122,7 @@ void shouldMergeDifferentMessageForSameOperation() { // then expectedMessage only includes message1 and message2. // Message3 is not included as it is identical in terms of payload type (Message#name) to message 2 assertThat(mergedOperations).hasSize(1).hasEntrySatisfying(operationId, it -> { - assertThat(it.getMessages()).containsExactlyInAnyOrder(messageRef1, messageRef2); + assertThat(it.getMessages()).containsExactly(messageRef2, messageRef1); }); } From c30a87e7f4920a9e807762c7bc71c9c5c62f4697 Mon Sep 17 00:00:00 2001 From: Carlos Tasada Date: Mon, 1 Apr 2024 17:53:03 +0200 Subject: [PATCH 2/2] Fixed test --- .../springwolf-amqp-example/src/test/resources/asyncapi.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/springwolf-examples/springwolf-amqp-example/src/test/resources/asyncapi.json b/springwolf-examples/springwolf-amqp-example/src/test/resources/asyncapi.json index 8ee46a119..b8005b2ad 100644 --- a/springwolf-examples/springwolf-amqp-example/src/test/resources/asyncapi.json +++ b/springwolf-examples/springwolf-amqp-example/src/test/resources/asyncapi.json @@ -349,10 +349,10 @@ }, "messages": [ { - "$ref": "#/channels/multi-payload-queue/messages/io.github.springwolf.examples.amqp.dtos.ExamplePayloadDto" + "$ref": "#/channels/multi-payload-queue/messages/io.github.springwolf.examples.amqp.dtos.AnotherPayloadDto" }, { - "$ref": "#/channels/multi-payload-queue/messages/io.github.springwolf.examples.amqp.dtos.AnotherPayloadDto" + "$ref": "#/channels/multi-payload-queue/messages/io.github.springwolf.examples.amqp.dtos.ExamplePayloadDto" } ] }