From d0c7cdddb8d3dd7b097c42c43971f337dd24425c Mon Sep 17 00:00:00 2001 From: Tuna Aksoy Date: Mon, 15 May 2017 11:03:26 +0100 Subject: [PATCH] RM-4528 (Electronic record using file upload creation in invalid parent container returns HTTP 500) --- .../api/fileplans/FilePlanChildrenRelation.java | 16 +++++++++++++--- .../RecordCategoryChildrenRelation.java | 13 ++++++++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/fileplans/FilePlanChildrenRelation.java b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/fileplans/FilePlanChildrenRelation.java index 923b70c636..7051160d40 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/fileplans/FilePlanChildrenRelation.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/fileplans/FilePlanChildrenRelation.java @@ -39,22 +39,23 @@ import java.util.Map; import java.util.Set; import org.alfresco.query.PagingResults; -import org.alfresco.repo.activities.ActivityType; import org.alfresco.repo.node.getchildren.FilterProp; +import org.alfresco.repo.node.integrity.IntegrityException; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.rest.api.impl.Util; import org.alfresco.rest.api.model.UserInfo; import org.alfresco.rest.framework.WebApiDescription; import org.alfresco.rest.framework.core.exceptions.EntityNotFoundException; import org.alfresco.rest.framework.resource.RelationshipResource; +import org.alfresco.rest.framework.resource.actions.interfaces.MultiPartRelationshipResourceAction; import org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceAction; import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo; import org.alfresco.rest.framework.resource.parameters.Parameters; +import org.alfresco.rest.framework.webscripts.WithResponse; import org.alfresco.rm.rest.api.impl.ApiNodesModelFactory; import org.alfresco.rm.rest.api.impl.FilePlanComponentsApiUtils; import org.alfresco.rm.rest.api.impl.SearchTypesFactory; import org.alfresco.rm.rest.api.model.FilePlan; -import org.alfresco.rm.rest.api.model.Record; import org.alfresco.rm.rest.api.model.RecordCategory; import org.alfresco.service.cmr.model.FileFolderService; import org.alfresco.service.cmr.model.FileInfo; @@ -63,6 +64,7 @@ import org.alfresco.service.namespace.QName; import org.alfresco.service.transaction.TransactionService; import org.alfresco.util.ParameterCheck; import org.springframework.beans.factory.InitializingBean; +import org.springframework.extensions.webscripts.servlet.FormData; /** * File plan children relation @@ -72,7 +74,9 @@ import org.springframework.beans.factory.InitializingBean; */ @RelationshipResource(name="categories", entityResource = FilePlanEntityResource.class, title = "Category children of file plan") public class FilePlanChildrenRelation implements RelationshipResourceAction.Read, - RelationshipResourceAction.Create, InitializingBean + RelationshipResourceAction.Create, + MultiPartRelationshipResourceAction.Create, + InitializingBean { /** Record category type */ public static final String RECORD_CATEGORY_TYPE = "rma:recordCategory"; @@ -218,4 +222,10 @@ public class FilePlanChildrenRelation implements RelationshipResourceAction.Read return result; } + + @Override + public FilePlan create(String entityResourceId, FormData formData, Parameters parameters, WithResponse withResponse) + { + throw new IntegrityException("Uploading records into file plan root is not allowed.", null); + } } 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 e1bdb8a680..e9fa2147f0 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 @@ -45,15 +45,18 @@ 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; +import org.alfresco.repo.node.integrity.IntegrityException; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.rest.api.Nodes; import org.alfresco.rest.api.impl.Util; import org.alfresco.rest.api.model.UserInfo; import org.alfresco.rest.framework.WebApiDescription; import org.alfresco.rest.framework.resource.RelationshipResource; +import org.alfresco.rest.framework.resource.actions.interfaces.MultiPartRelationshipResourceAction; import org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceAction; import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo; import org.alfresco.rest.framework.resource.parameters.Parameters; +import org.alfresco.rest.framework.webscripts.WithResponse; import org.alfresco.rm.rest.api.impl.ApiNodesModelFactory; import org.alfresco.rm.rest.api.impl.FilePlanComponentsApiUtils; import org.alfresco.rm.rest.api.impl.SearchTypesFactory; @@ -66,6 +69,7 @@ import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.namespace.QName; import org.alfresco.service.transaction.TransactionService; import org.apache.commons.lang3.StringUtils; +import org.springframework.extensions.webscripts.servlet.FormData; /** * Record category children relation @@ -76,7 +80,8 @@ import org.apache.commons.lang3.StringUtils; */ @RelationshipResource(name="children", entityResource = RecordCategoriesEntityResource.class, title = "Children of a record category") public class RecordCategoryChildrenRelation implements RelationshipResourceAction.Read, - RelationshipResourceAction.Create + RelationshipResourceAction.Create, + MultiPartRelationshipResourceAction.Create { private final static Set LIST_RECORD_CATEGORY_CHILDREN_EQUALS_QUERY_PROPERTIES = new HashSet<>(Arrays .asList(new String[] { RecordCategoryChild.PARAM_IS_RECORD_CATEGORY, RecordCategoryChild.PARAM_IS_RECORD_FOLDER, @@ -208,4 +213,10 @@ public class RecordCategoryChildrenRelation implements RelationshipResourceActio return result; } + + @Override + public RecordCategoryChild create(String entityResourceId, FormData formData, Parameters parameters, WithResponse withResponse) + { + throw new IntegrityException("Uploading records into record categories is not allowed.", null); + } }