From 452a3569cd0a002ff3c253867a943621d186519f Mon Sep 17 00:00:00 2001 From: Tuna Aksoy Date: Tue, 16 May 2017 09:59:43 +0100 Subject: [PATCH 1/4] RM-4528 (Electronic record using file upload creation in invalid parent container returns HTTP 500) --- .../fileplans/FilePlanChildrenRelation.java | 20 ++++++++++++++++--- .../api/fileplans/FilePlanEntityResource.java | 11 ---------- .../RecordCategoryChildrenRelation.java | 3 +-- 3 files changed, 18 insertions(+), 16 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..f89c5bf6f1 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,23 +39,25 @@ 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.rm.rest.api.model.RecordCategoryChild; import org.alfresco.service.cmr.model.FileFolderService; import org.alfresco.service.cmr.model.FileInfo; import org.alfresco.service.cmr.repository.NodeRef; @@ -63,6 +65,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 +75,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 +223,13 @@ public class FilePlanChildrenRelation implements RelationshipResourceAction.Read return result; } + + /** + * @see org.alfresco.rest.framework.resource.actions.interfaces.MultiPartRelationshipResourceAction.Create#create(java.lang.String, org.springframework.extensions.webscripts.servlet.FormData, org.alfresco.rest.framework.resource.parameters.Parameters, org.alfresco.rest.framework.webscripts.WithResponse) + */ + @Override + public RecordCategoryChild 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/fileplans/FilePlanEntityResource.java b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/fileplans/FilePlanEntityResource.java index dbba7749bf..76df9f5308 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,16 +30,13 @@ 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; @@ -50,7 +47,6 @@ 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 @@ -61,7 +57,6 @@ import org.springframework.extensions.webscripts.servlet.FormData; @EntityResource(name = "file-plans", title = "File plans") public class FilePlanEntityResource implements EntityResourceAction.ReadById, EntityResourceAction.Update, - MultiPartRelationshipResourceAction.Create, InitializingBean { @@ -153,10 +148,4 @@ public class FilePlanEntityResource implements EntityResourceAction.ReadById Date: Tue, 16 May 2017 12:54:14 +0100 Subject: [PATCH 2/4] RM-4528 (Electronic record using file upload creation in invalid parent container returns HTTP 500) --- .../rm/rest/api/fileplans/FilePlanChildrenRelation.java | 5 ++--- 1 file changed, 2 insertions(+), 3 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 f89c5bf6f1..d8c3e20dab 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 @@ -57,7 +57,6 @@ 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.RecordCategory; -import org.alfresco.rm.rest.api.model.RecordCategoryChild; import org.alfresco.service.cmr.model.FileFolderService; import org.alfresco.service.cmr.model.FileInfo; import org.alfresco.service.cmr.repository.NodeRef; @@ -76,7 +75,7 @@ import org.springframework.extensions.webscripts.servlet.FormData; @RelationshipResource(name="categories", entityResource = FilePlanEntityResource.class, title = "Category children of file plan") public class FilePlanChildrenRelation implements RelationshipResourceAction.Read, RelationshipResourceAction.Create, - MultiPartRelationshipResourceAction.Create, + MultiPartRelationshipResourceAction.Create, InitializingBean { /** Record category type */ @@ -228,7 +227,7 @@ public class FilePlanChildrenRelation implements RelationshipResourceAction.Read * @see org.alfresco.rest.framework.resource.actions.interfaces.MultiPartRelationshipResourceAction.Create#create(java.lang.String, org.springframework.extensions.webscripts.servlet.FormData, org.alfresco.rest.framework.resource.parameters.Parameters, org.alfresco.rest.framework.webscripts.WithResponse) */ @Override - public RecordCategoryChild create(String entityResourceId, FormData formData, Parameters parameters, WithResponse withResponse) + public RecordCategory create(String entityResourceId, FormData formData, Parameters parameters, WithResponse withResponse) { throw new IntegrityException("Uploading records into file plan root is not allowed.", null); } From d5faebc9f34b439b352a7d05e54b93ccd572b18d Mon Sep 17 00:00:00 2001 From: Rodica Sutu Date: Tue, 16 May 2017 15:18:24 +0300 Subject: [PATCH 3/4] tests updates, remove FIXME notes add a check for the issue RM-4372 --- .../rm/community/model/record/RecordProperties.java | 2 ++ .../org/alfresco/rest/rm/community/base/TestData.java | 4 +++- .../rm/community/recordfolders/RecordFolderTests.java | 10 +++------- .../unfiledcontainers/UnfiledContainerTests.java | 3 ++- .../UnfiledRecordsFolderTests.java | 6 ++++-- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/model/record/RecordProperties.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/model/record/RecordProperties.java index 8732533cf2..5e7a08322e 100644 --- a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/model/record/RecordProperties.java +++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/model/record/RecordProperties.java @@ -64,6 +64,7 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_ORIGINATING_USER_ID; import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_ORIGINATING_CREATION_DATE; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import org.alfresco.rest.rm.community.model.common.Owner; @@ -86,6 +87,7 @@ import lombok.NoArgsConstructor; @EqualsAndHashCode(callSuper = true) @NoArgsConstructor @AllArgsConstructor +@JsonIgnoreProperties(ignoreUnknown = true) public class RecordProperties extends TestModel { /*************************/ diff --git a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/base/TestData.java b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/base/TestData.java index d5a24f5789..a1ebcb2d11 100644 --- a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/base/TestData.java +++ b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/base/TestData.java @@ -187,7 +187,9 @@ public interface TestData { RECORD_CATEGORY_TYPE }, { RECORD_FOLDER_TYPE }, { TRANSFER_CONTAINER_TYPE }, - { UNFILED_CONTAINER_TYPE } + { TRANSFER_TYPE }, + { UNFILED_CONTAINER_TYPE }, + }; } } diff --git a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/recordfolders/RecordFolderTests.java b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/recordfolders/RecordFolderTests.java index 6381fe88f9..8a7209340a 100644 --- a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/recordfolders/RecordFolderTests.java +++ b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/recordfolders/RecordFolderTests.java @@ -34,6 +34,7 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.IS_CLOSED; import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentType.CONTENT_TYPE; import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentType.FILE_PLAN_TYPE; +import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentType.FOLDER_TYPE; import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentType.NON_ELECTRONIC_RECORD_TYPE; import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentType.RECORD_CATEGORY_TYPE; import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentType.RECORD_FOLDER_TYPE; @@ -105,7 +106,8 @@ public class RecordFolderTests extends BaseRMRestTest { UNFILED_CONTAINER_TYPE }, { UNFILED_RECORD_FOLDER_TYPE }, { TRANSFER_TYPE }, - { RECORD_CATEGORY_TYPE } + { RECORD_CATEGORY_TYPE }, + { FOLDER_TYPE } }; } @@ -370,9 +372,6 @@ public class RecordFolderTests extends BaseRMRestTest // Make a request to close the record folder RecordFolder updatedRecordFolder = recordFolderAPI.updateRecordFolder(recordFolderModel, recordFolder.getId()); - //FIXME - remove this workaround after RM-4921 is fixed. - updatedRecordFolder = recordFolderAPI.getRecordFolder(updatedRecordFolder.getId()); - // Verify that the record folder is closed now assertTrue(updatedRecordFolder.getProperties().getIsClosed()); @@ -386,9 +385,6 @@ public class RecordFolderTests extends BaseRMRestTest // Make a request to reopen the record folder updatedRecordFolder = recordFolderAPI.updateRecordFolder(recordFolderModel, recordFolder.getId()); - //FIXME - remove this workaround after RM-4921 is fixed. - updatedRecordFolder = recordFolderAPI.getRecordFolder(updatedRecordFolder.getId()); - // Verify that the record folder is open now assertFalse(updatedRecordFolder.getProperties().getIsClosed()); } diff --git a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/unfiledcontainers/UnfiledContainerTests.java b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/unfiledcontainers/UnfiledContainerTests.java index 3deeab829c..c384ecb206 100644 --- a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/unfiledcontainers/UnfiledContainerTests.java +++ b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/unfiledcontainers/UnfiledContainerTests.java @@ -431,7 +431,8 @@ public class UnfiledContainerTests extends BaseRMRestTest try { getRestAPIFactory().getUnfiledContainersAPI().createUnfiledContainerChild(unfiledFolderModel, UNFILED_RECORDS_CONTAINER_ALIAS); - } catch (Exception error) + } + catch (Exception error) { } // Verify the status code diff --git a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/unfiledrecordfolders/UnfiledRecordsFolderTests.java b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/unfiledrecordfolders/UnfiledRecordsFolderTests.java index 7e6c18b500..e640e9d86a 100644 --- a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/unfiledrecordfolders/UnfiledRecordsFolderTests.java +++ b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/unfiledrecordfolders/UnfiledRecordsFolderTests.java @@ -487,8 +487,10 @@ public class UnfiledRecordsFolderTests extends BaseRMRestTest assertTrue(record.getName().equals(createdComponent.getName()), "The record name "+ record.getName()+" is not equal with the record name returned when creating the record " + createdComponent .getName()); - - assertTrue(record.getName().equals(record.getProperties().getIdentifier())); + String identifier = " \\(" + record.getProperties().getIdentifier() + "\\)"; + String regex= "(" + NONELECTRONIC_RECORD_NAME + "|" + ELECTRONIC_RECORD_NAME + ")" + "[0-9]+" + identifier; + assertTrue(record.getName().matches(regex), + "The record name :" + record.getName() +"doesn't match the expression " + regex); assertTrue(createdComponent.getName().contains(createdComponent.getProperties().getIdentifier())); assertEquals(createdComponent.getNodeType(), record.getNodeType()); From 77830f8fc4346b4d7e3a7e94ec8b318775ae4117 Mon Sep 17 00:00:00 2001 From: Rodica Sutu Date: Wed, 17 May 2017 09:44:46 +0300 Subject: [PATCH 4/4] minor indentation --- .../unfiledrecordfolders/UnfiledRecordsFolderTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/unfiledrecordfolders/UnfiledRecordsFolderTests.java b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/unfiledrecordfolders/UnfiledRecordsFolderTests.java index e640e9d86a..4e09cee2e7 100644 --- a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/unfiledrecordfolders/UnfiledRecordsFolderTests.java +++ b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/unfiledrecordfolders/UnfiledRecordsFolderTests.java @@ -490,7 +490,7 @@ public class UnfiledRecordsFolderTests extends BaseRMRestTest String identifier = " \\(" + record.getProperties().getIdentifier() + "\\)"; String regex= "(" + NONELECTRONIC_RECORD_NAME + "|" + ELECTRONIC_RECORD_NAME + ")" + "[0-9]+" + identifier; assertTrue(record.getName().matches(regex), - "The record name :" + record.getName() +"doesn't match the expression " + regex); + "The record name:" + record.getName() + " doesn't match the expression " + regex); assertTrue(createdComponent.getName().contains(createdComponent.getProperties().getIdentifier())); assertEquals(createdComponent.getNodeType(), record.getNodeType());