From 8163c6753a619db49f5d1de28b1b7bb09b4a16f9 Mon Sep 17 00:00:00 2001 From: Tuna Aksoy Date: Mon, 15 May 2017 22:29:33 +0100 Subject: [PATCH] RM-4528 (Electronic record using file upload creation in invalid parent container returns HTTP 500) --- .../api/fileplans/FilePlanEntityResource.java | 16 ++++++++++++++-- .../RecordCategoryChildrenRelation.java | 14 +++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/fileplans/FilePlanEntityResource.java b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/fileplans/FilePlanEntityResource.java index 5593a55a2a..dbba7749bf 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/fileplans/FilePlanEntityResource.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/fileplans/FilePlanEntityResource.java @@ -30,13 +30,16 @@ package org.alfresco.rm.rest.api.fileplans; import static org.alfresco.module.org_alfresco_module_rm.util.RMParameterCheck.checkNotBlank; import static org.alfresco.util.ParameterCheck.mandatory; +import org.alfresco.repo.node.integrity.IntegrityException; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.rest.framework.WebApiDescription; import org.alfresco.rest.framework.WebApiParam; import org.alfresco.rest.framework.core.exceptions.EntityNotFoundException; import org.alfresco.rest.framework.resource.EntityResource; import org.alfresco.rest.framework.resource.actions.interfaces.EntityResourceAction; +import org.alfresco.rest.framework.resource.actions.interfaces.MultiPartRelationshipResourceAction; 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.model.FilePlan; @@ -47,6 +50,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 entity resource @@ -55,8 +59,10 @@ import org.springframework.beans.factory.InitializingBean; * @since 2.6 */ @EntityResource(name = "file-plans", title = "File plans") -public class FilePlanEntityResource - implements EntityResourceAction.ReadById, EntityResourceAction.Update, InitializingBean +public class FilePlanEntityResource implements EntityResourceAction.ReadById, + EntityResourceAction.Update, + MultiPartRelationshipResourceAction.Create, + InitializingBean { private FilePlanComponentsApiUtils apiUtils; @@ -147,4 +153,10 @@ public class FilePlanEntityResource return nodesModelFactory.createFilePlan(info, parameters, null, false); } + + @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..66b2b8b71d 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,11 @@ 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); + } }