From 3e39bb23b8961a1c9bdf5c1f68d4ef443925b767 Mon Sep 17 00:00:00 2001 From: aelamrani Date: Tue, 6 Mar 2018 17:57:04 +0100 Subject: [PATCH] fix: check top api parameter when deleting top apis This closes gravitee-io/issues#1131 --- .../management/service/impl/TopApiServiceImpl.java | 10 ++++++---- .../gravitee/management/service/TopApiServiceTest.java | 1 + 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/gravitee-management-api-service/src/main/java/io/gravitee/management/service/impl/TopApiServiceImpl.java b/gravitee-management-api-service/src/main/java/io/gravitee/management/service/impl/TopApiServiceImpl.java index e9755aba0e..9253145bc0 100644 --- a/gravitee-management-api-service/src/main/java/io/gravitee/management/service/impl/TopApiServiceImpl.java +++ b/gravitee-management-api-service/src/main/java/io/gravitee/management/service/impl/TopApiServiceImpl.java @@ -98,9 +98,11 @@ public List update(final List topApis) { @Override public void delete(final String apiId) { - final List topApis = findAll(); - topApis.removeIf(topApiEntity -> apiId.equals(topApiEntity.getApi())); - parameterService.updateMultipleValue(PORTAL_TOP_APIS.getKey(), - topApis.stream().sorted(comparing(TopApiEntity::getOrder)).map(TopApiEntity::getApi).collect(toList())); + if (!parameterService.findAll(PORTAL_TOP_APIS.getKey()).isEmpty()) { + final List topApis = findAll(); + topApis.removeIf(topApiEntity -> apiId.equals(topApiEntity.getApi())); + parameterService.updateMultipleValue(PORTAL_TOP_APIS.getKey(), + topApis.stream().sorted(comparing(TopApiEntity::getOrder)).map(TopApiEntity::getApi).collect(toList())); + } } } diff --git a/gravitee-management-api-service/src/test/java/io/gravitee/management/service/TopApiServiceTest.java b/gravitee-management-api-service/src/test/java/io/gravitee/management/service/TopApiServiceTest.java index 5fe7ce4e16..fa33a13fca 100644 --- a/gravitee-management-api-service/src/test/java/io/gravitee/management/service/TopApiServiceTest.java +++ b/gravitee-management-api-service/src/test/java/io/gravitee/management/service/TopApiServiceTest.java @@ -139,6 +139,7 @@ public void shouldDelete() { final ApiEntity api2 = new ApiEntity(); api2.setId("2"); + when(parameterService.findAll(eq(PORTAL_TOP_APIS.getKey()))).thenReturn(asList("1", "2")); when(parameterService.findAll(eq(PORTAL_TOP_APIS.getKey()), any(), any())).thenReturn(asList(api1, api2)); topApiService.delete("1");