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 af6d959af3cc7bd772f1172a398cba5b1ffa1fe3..841ebadc3c95307592cf670dccf4f2a554aaec3a 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 84c21051ac68a3a6a379f60faaee4f30414d66c1..ff46338c3901fc0139357715ce8a8bb154bf540c 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 f485ab7570763862c4a3713349648f3da1fa572b..f7bd7b01231603ccc5750c1c855ad5379f98d57e 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 6894ae5a00dbd523c7d0e3c608f2d0e9a8f8cf0e..7f4ff1affeaf543bb54bc73e8a3b8ddfc255a8c4 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 @@ -534,7 +534,10 @@ public class DomainServiceImpl implements DomainService { @Override public void removeAppBaseFromAllDomains(ApplicationBase base) { - getDomains().forEach(domain -> removeFromDomain(base, domain)); + getDomains().forEach(domain -> { + removeFromDomain(base, domain); + + }); } private void removeFromDomain(ApplicationBase base, Domain domain) {