From ad177aa7eb5aaa72c6c6fa896294690412edde41 Mon Sep 17 00:00:00 2001 From: kbeyro <121854496+kbeyro@users.noreply.github.com> Date: Wed, 24 Jul 2024 11:41:54 +0200 Subject: [PATCH] add unsubscribe to delete app logic --- .../portal/api/market/ApplicationController.java | 4 ++++ .../service/ApplicationSubscriptionService.java | 2 ++ .../impl/ApplicationSubscriptionServiceImpl.java | 6 ++++++ .../portal/service/impl/DomainServiceImpl.java | 13 ++++++------- .../portal/service/impl/DomainServiceTest.java | 9 +++++---- 5 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/main/java/net/geant/nmaas/portal/api/market/ApplicationController.java b/src/main/java/net/geant/nmaas/portal/api/market/ApplicationController.java index af6d959af..841ebadc3 100644 --- a/src/main/java/net/geant/nmaas/portal/api/market/ApplicationController.java +++ b/src/main/java/net/geant/nmaas/portal/api/market/ApplicationController.java @@ -29,6 +29,7 @@ import net.geant.nmaas.portal.persistent.entity.Role; import net.geant.nmaas.portal.persistent.entity.User; import net.geant.nmaas.portal.persistent.repositories.RatingRepository; import net.geant.nmaas.portal.service.ApplicationInstanceService; +import net.geant.nmaas.portal.service.ApplicationSubscriptionService; import net.geant.nmaas.portal.service.impl.ApplicationServiceImpl; import org.springframework.context.ApplicationEventPublisher; import org.springframework.http.HttpStatus; @@ -86,6 +87,8 @@ public class ApplicationController extends AppBaseController { private final AppInstanceController appInstanceController; + private final ApplicationSubscriptionService applicationSubscriptionService; + /* * Application Base Part */ @@ -166,6 +169,7 @@ public class ApplicationController extends AppBaseController { throw new ProcessingException("Can't delete " + base.getName() + " application base since version " + app.getVersion() + " is not deleted"); } } + applicationSubscriptionService.unsubscribeAll(base); appBaseService.deleteAppBase(base); } diff --git a/src/main/java/net/geant/nmaas/portal/service/ApplicationSubscriptionService.java b/src/main/java/net/geant/nmaas/portal/service/ApplicationSubscriptionService.java index 84c21051a..ff46338c3 100644 --- a/src/main/java/net/geant/nmaas/portal/service/ApplicationSubscriptionService.java +++ b/src/main/java/net/geant/nmaas/portal/service/ApplicationSubscriptionService.java @@ -33,6 +33,8 @@ public interface ApplicationSubscriptionService { void unsubscribe(ApplicationSubscription appSub); void unsubscribe(Long applicationId, Long domainId); void unsubscribe(ApplicationBase application, Domain domain); + + void unsubscribeAll(ApplicationBase applicationBase); List<ApplicationBase> getSubscribedApplications(); List<ApplicationBase> getSubscribedApplications(Long domainId); diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationSubscriptionServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationSubscriptionServiceImpl.java index f485ab757..f7bd7b012 100644 --- a/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationSubscriptionServiceImpl.java +++ b/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationSubscriptionServiceImpl.java @@ -203,6 +203,12 @@ public class ApplicationSubscriptionServiceImpl implements ApplicationSubscripti unsubscribe(appSub); } + @Override + public void unsubscribeAll(ApplicationBase applicationBase) { + List<ApplicationSubscription> subList = getSubscriptionsBy(null, applicationBase); + subList.forEach(this::unsubscribe); + } + @Override public List<ApplicationBase> getSubscribedApplications() { return getSubscribedApplications(null); diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java index d77fab9f4..7f4ff1aff 100644 --- a/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java +++ b/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java @@ -27,7 +27,10 @@ import net.geant.nmaas.portal.persistent.entity.UserRole; import net.geant.nmaas.portal.persistent.repositories.DomainAnnotationsRepository; import net.geant.nmaas.portal.persistent.repositories.DomainRepository; import net.geant.nmaas.portal.persistent.repositories.UserRoleRepository; -import net.geant.nmaas.portal.service.*; +import net.geant.nmaas.portal.service.ApplicationStatePerDomainService; +import net.geant.nmaas.portal.service.DomainGroupService; +import net.geant.nmaas.portal.service.DomainService; +import net.geant.nmaas.portal.service.UserService; import org.apache.commons.lang3.StringUtils; import org.modelmapper.ModelMapper; import org.springframework.beans.factory.annotation.Autowired; @@ -74,8 +77,6 @@ public class DomainServiceImpl implements DomainService { private final ApplicationEventPublisher eventPublisher; private final DomainAnnotationsRepository domainAnnotationsRepository; - private final ApplicationSubscriptionService applicationSubscriptionService; - @Value("${domain.global:GLOBAL}") String globalDomain; @@ -92,8 +93,7 @@ public class DomainServiceImpl implements DomainService { ApplicationStatePerDomainService applicationStatePerDomainService, DomainGroupService domainGroupService, ApplicationEventPublisher eventPublisher, - DomainAnnotationsRepository domainAnnotationsRepository, - ApplicationSubscriptionService applicationSubscriptionService + DomainAnnotationsRepository domainAnnotationsRepository ) { this.validator = validator; this.namespaceValidator = namespaceValidator; @@ -108,7 +108,6 @@ public class DomainServiceImpl implements DomainService { this.domainGroupService = domainGroupService; this.eventPublisher = eventPublisher; this.domainAnnotationsRepository = domainAnnotationsRepository; - this.applicationSubscriptionService = applicationSubscriptionService; } @Override @@ -537,7 +536,7 @@ public class DomainServiceImpl implements DomainService { public void removeAppBaseFromAllDomains(ApplicationBase base) { getDomains().forEach(domain -> { removeFromDomain(base, domain); - this.applicationSubscriptionService.unsubscribe(base, domain); + }); } diff --git a/src/test/java/net/geant/nmaas/portal/service/impl/DomainServiceTest.java b/src/test/java/net/geant/nmaas/portal/service/impl/DomainServiceTest.java index 90d9ca9a1..d3c645f89 100644 --- a/src/test/java/net/geant/nmaas/portal/service/impl/DomainServiceTest.java +++ b/src/test/java/net/geant/nmaas/portal/service/impl/DomainServiceTest.java @@ -25,7 +25,10 @@ import net.geant.nmaas.portal.persistent.repositories.DomainAnnotationsRepositor import net.geant.nmaas.portal.persistent.repositories.DomainGroupRepository; import net.geant.nmaas.portal.persistent.repositories.DomainRepository; import net.geant.nmaas.portal.persistent.repositories.UserRoleRepository; -import net.geant.nmaas.portal.service.*; +import net.geant.nmaas.portal.service.ApplicationStatePerDomainService; +import net.geant.nmaas.portal.service.DomainGroupService; +import net.geant.nmaas.portal.service.DomainService; +import net.geant.nmaas.portal.service.UserService; import net.geant.nmaas.portal.service.impl.domains.DefaultCodenameValidator; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -71,8 +74,6 @@ public class DomainServiceTest { DomainGroupService domainGroupService; DomainAnnotationsRepository domainAnnotationsRepository = mock(DomainAnnotationsRepository.class); - ApplicationSubscriptionService applicationSubscriptionService = mock(ApplicationSubscriptionService.class); - DomainService domainService; @BeforeEach @@ -84,7 +85,7 @@ public class DomainServiceTest { namespaceValidator, domainRepository, domainDcnDetailsRepository, domainTechDetailsRepository, userService, userRoleRepo, dcnRepositoryManager, - modelMapper, applicationStatePerDomainService, domainGroupService, eventPublisher, domainAnnotationsRepository, applicationSubscriptionService); + modelMapper, applicationStatePerDomainService, domainGroupService, eventPublisher, domainAnnotationsRepository); ((DomainServiceImpl) domainService).globalDomain = "GLOBAL"; } -- GitLab