From d06477afafcd53af251ccd1b4c2c8d7ed3e59dbb Mon Sep 17 00:00:00 2001 From: Nidhi Date: Fri, 2 Aug 2024 12:22:03 +0530 Subject: [PATCH] fix: Do not return composed action collections after refactor (#35350) --- .../base/ActionCollectionServiceCE.java | 3 ++- .../base/ActionCollectionServiceCEImpl.java | 17 +++++++++-------- .../ce/CustomActionCollectionRepositoryCE.java | 5 ++++- .../CustomActionCollectionRepositoryCEImpl.java | 16 ++++++++++++++-- .../refactors/ce/RefactoringServiceTest.java | 3 ++- 5 files changed, 31 insertions(+), 13 deletions(-) diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCE.java index b048168c81..7f44a12aea 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCE.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCE.java @@ -40,7 +40,8 @@ public interface ActionCollectionServiceCE extends CrudService splitValidActionsByViewMode( ActionCollectionDTO actionCollectionDTO, List actionsList, Boolean viewMode); - Flux getActionCollectionsByViewMode(MultiValueMap params, Boolean viewMode); + Flux getNonComposedActionCollectionsByViewMode( + MultiValueMap params, Boolean viewMode); Mono update(String id, ActionCollectionDTO actionCollectionDTO); diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCEImpl.java index 49635f17a0..b7d369ef72 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCEImpl.java @@ -130,7 +130,7 @@ public class ActionCollectionServiceCEImpl extends BaseService getPopulatedActionCollectionsByViewMode( MultiValueMap params, Boolean viewMode) { - return this.getActionCollectionsByViewMode(params, viewMode) + return this.getNonComposedActionCollectionsByViewMode(params, viewMode) .flatMap(actionCollectionDTO -> this.populateActionCollectionByViewMode(actionCollectionDTO, viewMode)); } @@ -187,7 +187,7 @@ public class ActionCollectionServiceCEImpl extends BaseService repository - .findByApplicationIdAndViewMode( + .findNonComposedByApplicationIdAndViewMode( branchedApplicationId, true, actionPermission.getExecutePermission()) .flatMap(this::generateActionCollectionViewDTO)); } @@ -195,7 +195,8 @@ public class ActionCollectionServiceCEImpl extends BaseService getActionCollectionsForViewMode(String branchedApplicationId) { return repository - .findByApplicationIdAndViewMode(branchedApplicationId, true, actionPermission.getExecutePermission()) + .findNonComposedByApplicationIdAndViewMode( + branchedApplicationId, true, actionPermission.getExecutePermission()) .flatMap(this::generateActionCollectionViewDTO); } @@ -235,16 +236,16 @@ public class ActionCollectionServiceCEImpl extends BaseService getActionCollectionsByViewMode( + public Flux getNonComposedActionCollectionsByViewMode( MultiValueMap params, Boolean viewMode) { if (params == null || viewMode == null) { return Flux.empty(); } - return getActionCollectionsFromRepoByViewMode(params, viewMode) + return getNonComposedActionCollectionsFromRepoByViewMode(params, viewMode) .flatMap(actionCollection -> generateActionCollectionByViewMode(actionCollection, viewMode)); } - protected Flux getActionCollectionsFromRepoByViewMode( + protected Flux getNonComposedActionCollectionsFromRepoByViewMode( MultiValueMap params, Boolean viewMode) { if (params.getFirst(FieldName.APPLICATION_ID) != null) { // Fetch unpublished pages because GET actions is only called during edit mode. For view mode, different @@ -254,7 +255,7 @@ public class ActionCollectionServiceCEImpl extends BaseService repository.findByApplicationIdAndViewMode( + .flatMapMany(childApplicationId -> repository.findNonComposedByApplicationIdAndViewMode( childApplicationId, viewMode, actionPermission.getReadPermission())); } String pageId = null; @@ -262,7 +263,7 @@ public class ActionCollectionServiceCEImpl extends BaseService findByApplicationId( String applicationId, Optional aclPermission, Optional sort); - Flux findByApplicationIdAndViewMode( + Flux findNonComposedByApplicationIdAndViewMode( String applicationId, boolean viewMode, AclPermission aclPermission); Flux findByPageId(String pageId, AclPermission permission); @@ -39,4 +39,7 @@ public interface CustomActionCollectionRepositoryCE extends AppsmithRepository findByPageIdAndViewMode(String pageId, boolean viewMode, AclPermission permission); + + Flux findAllNonComposedByPageIdAndViewMode( + String pageId, boolean viewMode, AclPermission permission); } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomActionCollectionRepositoryCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomActionCollectionRepositoryCEImpl.java index cce3cc3ff8..b47d675148 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomActionCollectionRepositoryCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomActionCollectionRepositoryCEImpl.java @@ -60,7 +60,7 @@ public class CustomActionCollectionRepositoryCEImpl extends BaseAppsmithReposito } @Override - public Flux findByApplicationIdAndViewMode( + public Flux findNonComposedByApplicationIdAndViewMode( String applicationId, boolean viewMode, AclPermission aclPermission) { BridgeQuery bridgeQuery = getBridgeQueryForFindByApplicationIdAndViewMode(applicationId, viewMode); @@ -138,6 +138,13 @@ public class CustomActionCollectionRepositoryCEImpl extends BaseAppsmithReposito @Override public Flux findByPageIdAndViewMode(String pageId, boolean viewMode, AclPermission permission) { + final BridgeQuery query = getActionCollectionsByPageIdAndViewModeQuery(pageId, viewMode); + + return queryBuilder().criteria(query).permission(permission).all(); + } + + protected BridgeQuery getActionCollectionsByPageIdAndViewModeQuery( + String pageId, boolean viewMode) { final BridgeQuery query = Bridge.query(); if (Boolean.TRUE.equals(viewMode)) { @@ -153,7 +160,12 @@ public class CustomActionCollectionRepositoryCEImpl extends BaseAppsmithReposito // would exist. To handle this, only fetch non-deleted actions query.isNull(ActionCollection.Fields.unpublishedCollection_deletedAt); } + return query; + } - return queryBuilder().criteria(query).permission(permission).all(); + @Override + public Flux findAllNonComposedByPageIdAndViewMode( + String pageId, boolean viewMode, AclPermission permission) { + return this.findByPageIdAndViewMode(pageId, viewMode, permission); } } diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/refactors/ce/RefactoringServiceTest.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/refactors/ce/RefactoringServiceTest.java index 12a39821c3..28e8b18141 100644 --- a/app/server/appsmith-server/src/test/java/com/appsmith/server/refactors/ce/RefactoringServiceTest.java +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/refactors/ce/RefactoringServiceTest.java @@ -281,7 +281,8 @@ public class RefactoringServiceTest { mockActionCollectionDTO.setName("testCollection"); mockActionCollectionDTO.setActions(List.of(firstAction, secondAction)); - Mockito.when(actionCollectionService.getActionCollectionsByViewMode(Mockito.any(), Mockito.anyBoolean())) + Mockito.when(actionCollectionService.getNonComposedActionCollectionsByViewMode( + Mockito.any(), Mockito.anyBoolean())) .thenReturn(Flux.just(mockActionCollectionDTO)); Mono nameAllowedMono = refactoringService.isNameAllowed(