From cb6e4d2e79d7c1a7bf30b05f42df2598073a3eed Mon Sep 17 00:00:00 2001 From: ayeshLK Date: Wed, 3 Apr 2024 14:50:52 +0530 Subject: [PATCH] Fix logic issue in selecting the relevant HATEOAS resource when resource method is not configured --- .../service/mapper/hateoas/HateoasMapperImpl.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/ballerina-to-openapi/src/main/java/io/ballerina/openapi/service/mapper/hateoas/HateoasMapperImpl.java b/ballerina-to-openapi/src/main/java/io/ballerina/openapi/service/mapper/hateoas/HateoasMapperImpl.java index 6c9c97c9a..20d35682e 100644 --- a/ballerina-to-openapi/src/main/java/io/ballerina/openapi/service/mapper/hateoas/HateoasMapperImpl.java +++ b/ballerina-to-openapi/src/main/java/io/ballerina/openapi/service/mapper/hateoas/HateoasMapperImpl.java @@ -175,7 +175,7 @@ private Map mapHateoasLinksToOpenApiLinks(Service hateoasService, .filter(resources -> link.getResourceName().equals(resources.getKey())) .findFirst() .flatMap(hateoasResourceMapping -> hateoasResourceMapping.getValue().stream() - .filter(hateoasRes -> link.getResourceMethod().equals(hateoasRes.resourceMethod())) + .filter(hateoasRes -> isValidResource(link, hateoasRes)) .findFirst()); if (resource.isEmpty()) { continue; @@ -187,4 +187,13 @@ private Map mapHateoasLinksToOpenApiLinks(Service hateoasService, } return hateoasLinks; } + + private boolean isValidResource(HateoasLink link, Resource currentResource) { + // If the `resourceMethod` is not provided that means there will be only one mapping for the resource, + // by returning `true` here will make sure the first resource matching the resource-name would be selected + if (Objects.isNull(link.getResourceMethod())) { + return true; + } + return currentResource.resourceMethod().equals(link.getResourceMethod()); + } }