diff --git a/gravitee-apim-rest-api/gravitee-apim-rest-api-management-v2/gravitee-apim-rest-api-management-v2-rest/src/main/java/io/gravitee/rest/api/management/v2/rest/mapper/ApiCRDMapper.java b/gravitee-apim-rest-api/gravitee-apim-rest-api-management-v2/gravitee-apim-rest-api-management-v2-rest/src/main/java/io/gravitee/rest/api/management/v2/rest/mapper/ApiCRDMapper.java index f45581b53f7..bae352b2f50 100644 --- a/gravitee-apim-rest-api/gravitee-apim-rest-api-management-v2/gravitee-apim-rest-api-management-v2-rest/src/main/java/io/gravitee/rest/api/management/v2/rest/mapper/ApiCRDMapper.java +++ b/gravitee-apim-rest-api/gravitee-apim-rest-api-management-v2/gravitee-apim-rest-api-management-v2-rest/src/main/java/io/gravitee/rest/api/management/v2/rest/mapper/ApiCRDMapper.java @@ -18,11 +18,14 @@ import io.gravitee.apim.core.utils.CollectionUtils; import io.gravitee.definition.model.v4.ApiType; import io.gravitee.definition.model.v4.endpointgroup.EndpointGroup; +import io.gravitee.definition.model.v4.flow.Flow; import io.gravitee.definition.model.v4.nativeapi.NativeEndpointGroup; +import io.gravitee.definition.model.v4.nativeapi.NativeFlow; import io.gravitee.definition.model.v4.nativeapi.NativeListener; import io.gravitee.rest.api.management.v2.rest.model.ApiCRDSpec; import io.gravitee.rest.api.management.v2.rest.model.ApiLifecycleState; import io.gravitee.rest.api.management.v2.rest.model.EndpointGroupV4; +import io.gravitee.rest.api.management.v2.rest.model.FlowV4; import io.gravitee.rest.api.management.v2.rest.model.Listener; import io.gravitee.rest.api.management.v2.rest.model.PageCRD; import io.gravitee.rest.api.management.v2.rest.model.PlanCRD; @@ -56,6 +59,7 @@ public interface ApiCRDMapper { @Mapping(target = "lifecycleState", qualifiedByName = "mapLifecycleState") @Mapping(target = "listeners", expression = "java(mapApiCRDListeners(coreSpec))") @Mapping(target = "endpointGroups", expression = "java(mapApiCRDEndpointGroups(coreSpec))") + @Mapping(target = "flows", expression = "java(mapApiCRDFlows(coreSpec))") ApiCRDSpec map(io.gravitee.apim.core.api.model.crd.ApiCRDSpec coreSpec); @Mapping(target = "security.type", qualifiedByName = "mapSecurityType") @@ -102,4 +106,16 @@ default List mapApiCRDEndpointGroups(io.gravitee.apim.core.api. return EndpointMapper.INSTANCE.mapEndpointGroupHttpV4((List) spec.getEndpointGroups()); } } + + default List mapApiCRDFlows(io.gravitee.apim.core.api.model.crd.ApiCRDSpec spec) { + if (CollectionUtils.isEmpty(spec.getFlows())) { + return List.of(); + } + + if (ApiType.NATIVE.name().equalsIgnoreCase(spec.getType())) { + return FlowMapper.INSTANCE.mapFromNativeV4((List) spec.getFlows()); + } else { + return FlowMapper.INSTANCE.mapFromHttpV4((List) spec.getFlows()); + } + } }