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 9d1dfa9a90..5e3122cc2c 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..f45b4a85b9 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
@@ -29,6 +29,7 @@ package org.alfresco.rm.rest.api.impl;
import java.security.InvalidParameterException;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
@@ -198,6 +199,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 +223,7 @@ public class SearchTypesFactory
if (nodeTypeQNameStr.equals(RecordsManagementModel.TYPE_RECORD_FOLDER))
{
includeRecordFolders = true;
+
}
else if (filterNodeTypeQName.equals(RecordsManagementModel.TYPE_RECORD_CATEGORY))
{
@@ -249,6 +252,16 @@ public class SearchTypesFactory
return searchTypeQNames;
}
+ /**
+ * Helper method to build association types for categories endpoint
+ * @return
+ */
+ public Set buildAssocTypesCategoriesEndpoint()
+ {
+ Set assocTypeQNames = Collections.singleton(ContentModel.ASSOC_CONTAINS);
+ return assocTypeQNames;
+ }
+
/**
* Helper method to build search types for transfer containers endpoint
* @return
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 7863035e60..992605e605 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
@@ -114,10 +114,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 = searchTypesFactory.buildAssocTypesCategoriesEndpoint();
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),