diff --git a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/recordcategories/RecordCategoryTests.java b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/recordcategories/RecordCategoryTests.java index 92d1073588..b769d3d572 100644 --- a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/recordcategories/RecordCategoryTests.java +++ b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/recordcategories/RecordCategoryTests.java @@ -52,6 +52,7 @@ import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.NoSuchElementException; @@ -66,7 +67,10 @@ import org.alfresco.rest.rm.community.model.recordfolder.RecordFolder; import org.alfresco.rest.rm.community.requests.gscore.api.FilePlanAPI; import org.alfresco.rest.rm.community.requests.gscore.api.RecordCategoryAPI; import org.alfresco.rest.rm.community.requests.gscore.api.RecordFolderAPI; +import org.alfresco.rest.v0.RecordCategoriesAPI; +import org.alfresco.rest.core.v0.BaseAPI.RETENTION_SCHEDULE; import org.alfresco.utility.report.Bug; +import org.springframework.beans.factory.annotation.Autowired; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @@ -83,6 +87,9 @@ public class RecordCategoryTests extends BaseRMRestTest private static final int NUMBER_OF_CHILDREN = 10; private static final int NUMBER_OF_FOLDERS = 5; + @Autowired + private RecordCategoriesAPI recordCategoriesAPI; + /** * Invalid containers that cannot be deleted with record category end-point */ @@ -287,6 +294,7 @@ public class RecordCategoryTests extends BaseRMRestTest assertEquals(folderProperties.getTitle(), TITLE_PREFIX + RECORD_FOLDER_NAME); assertNotNull(folderProperties.getIdentifier()); } + /** *
      * Given that a record category exists
@@ -294,17 +302,37 @@ public class RecordCategoryTests extends BaseRMRestTest
      * When I ask the API to get me the children of the record category
      * Then I am returned the contained record categories and record folders and their details
      * 
+ *
+     * Given that a record category with a disposition schedule exists
+     * And contains a number of record categories and record folders
+     * When I ask the API to get me the children of the record category
+     * Then I am returned the contained record categories and record folders but not the disposition schedule
+     * 
*/ @Test - ( - description = "Get children of a record category" - ) + ( + description = "Get children of a record category excluding the disposition schedule" + ) + @Bug (id="RM-5115") public void getRecordCategoryChildren() throws Exception { // Create root level category RecordCategory rootRecordCategory = createRootCategory(getRandomAlphanumeric()); assertNotNull(rootRecordCategory.getId()); + // Create disposition schedule + String userName = getAdminUser().getUsername(); + String userPassword = getAdminUser().getPassword(); + String categoryName = rootRecordCategory.getName(); + recordCategoriesAPI.createRetentionSchedule(userName, userPassword, categoryName); + + // Add disposition schedule cut off step + HashMap cutOffStep = new HashMap<>(); + cutOffStep.put(RETENTION_SCHEDULE.NAME, "cutoff"); + cutOffStep.put(RETENTION_SCHEDULE.RETENTION_PERIOD, "day|2"); + cutOffStep.put(RETENTION_SCHEDULE.DESCRIPTION, "Cut off after 2 days"); + recordCategoriesAPI.addDispositionScheduleSteps(userName, userPassword, categoryName, cutOffStep); + // Add record category children List children = new ArrayList(); for (int i=0; i < NUMBER_OF_CHILDREN; i++) diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/impl/SearchTypesFactory.java b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/impl/SearchTypesFactory.java index 2e103a9874..cbaee33f3b 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/impl/SearchTypesFactory.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/impl/SearchTypesFactory.java @@ -198,6 +198,7 @@ public class SearchTypesFactory Boolean isRecordFolder = propertyWalker.getProperty(RecordCategoryChild.PARAM_IS_RECORD_FOLDER, WhereClauseParser.EQUALS, Boolean.class); Boolean isRecordCategory = propertyWalker.getProperty(RecordCategoryChild.PARAM_IS_RECORD_CATEGORY, WhereClauseParser.EQUALS, Boolean.class); + if ((isRecordFolder != null && isRecordFolder.booleanValue()) || (isRecordCategory != null && !isRecordCategory.booleanValue())) { includeRecordFolders = true; @@ -221,6 +222,7 @@ public class SearchTypesFactory if (nodeTypeQNameStr.equals(RecordsManagementModel.TYPE_RECORD_FOLDER)) { includeRecordFolders = true; + } else if (filterNodeTypeQName.equals(RecordsManagementModel.TYPE_RECORD_CATEGORY)) { diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/recordcategories/RecordCategoryChildrenRelation.java b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/recordcategories/RecordCategoryChildrenRelation.java index fe5bf6e998..2272ed2e7e 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/recordcategories/RecordCategoryChildrenRelation.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/recordcategories/RecordCategoryChildrenRelation.java @@ -33,12 +33,14 @@ import static org.alfresco.util.ParameterCheck.mandatory; import java.util.AbstractList; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import org.alfresco.model.ContentModel; import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; import org.alfresco.query.PagingResults; import org.alfresco.repo.node.getchildren.FilterProp; @@ -114,10 +116,11 @@ public class RecordCategoryChildrenRelation implements RelationshipResourceActio // list record categories and record folders Set searchTypeQNames = searchTypesFactory.buildSearchTypesCategoriesEndpoint(parameters, LIST_RECORD_CATEGORY_CHILDREN_EQUALS_QUERY_PROPERTIES); + Set assocTypeQNames = Collections.singleton(ContentModel.ASSOC_CONTAINS); List filterProps = apiUtils.getListChildrenFilterProps(parameters, LIST_RECORD_CATEGORY_CHILDREN_EQUALS_QUERY_PROPERTIES); final PagingResults pagingResults = fileFolderService.list(parentNodeRef, - null, + assocTypeQNames, searchTypeQNames, null, apiUtils.getSortProperties(parameters),