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 d77fab9f4abbb31e5c7ed4fabacf086f5a496cf1..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
@@ -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 90d9ca9a1ccbec2b99140d4e8fea6898a7770261..d3c645f890f97fd226061f03ae830b15588f2e06 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";
}