diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-public-rest-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-public-rest-context.xml index bbee8b5b35..8d16ade1a0 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-public-rest-context.xml +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-public-rest-context.xml @@ -144,6 +144,7 @@ + diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java index 499b12c98f..7e4db3ee62 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java @@ -853,7 +853,7 @@ public class RecordServiceImpl extends BaseBehaviourBean // make the document a record makeRecord(nodeRef); - appendIdentifierToName(nodeService, nodeRef); + generateRecordIdentifier(nodeService, identifierService, nodeRef); if (latestVersionRecord != null) { @@ -1063,7 +1063,7 @@ public class RecordServiceImpl extends BaseBehaviourBean // make record makeRecord(record); - appendIdentifierToName(nodeService, record); + generateRecordIdentifier(nodeService, identifierService, record); // remove added copy assocs List recordAssocs = nodeService.getTargetAssocs(record, ContentModel.ASSOC_ORIGINAL); @@ -1198,7 +1198,7 @@ public class RecordServiceImpl extends BaseBehaviourBean { // make record makeRecord(record); - appendIdentifierToName(nodeService, record); + generateRecordIdentifier(nodeService, identifierService, record); } return record; @@ -1811,7 +1811,7 @@ public class RecordServiceImpl extends BaseBehaviourBean { if (nodeService.exists(nodeRef) && !nodeService.hasAspect(nodeRef, ContentModel.ASPECT_HIDDEN) && !nodeService.hasAspect(nodeRef, ContentModel.ASPECT_LOCKABLE)) { - appendIdentifierToName(nodeService, nodeRef); + generateRecordIdentifier(nodeService, identifierService, record); } } diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/files/FilesEntityResource.java b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/files/FilesEntityResource.java index 05981ff7d9..1bafd8322d 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/files/FilesEntityResource.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/files/FilesEntityResource.java @@ -31,6 +31,7 @@ import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService; import org.alfresco.module.org_alfresco_module_rm.record.RecordService; import org.alfresco.module.org_alfresco_module_rm.util.AuthenticationUtil; import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.rest.framework.Operation; import org.alfresco.rest.framework.WebApiDescription; import org.alfresco.rest.framework.resource.EntityResource; @@ -42,6 +43,7 @@ import org.alfresco.service.cmr.model.FileFolderService; import org.alfresco.service.cmr.model.FileInfo; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.StoreRef; +import org.alfresco.service.transaction.TransactionService; import org.alfresco.util.ParameterCheck; import org.springframework.beans.factory.InitializingBean; @@ -59,6 +61,7 @@ public class FilesEntityResource implements InitializingBean private FilePlanService filePlanService; private FileFolderService fileFolderService; private RecordService recordService; + private TransactionService transactionService; public void setAuthenticationUtil(AuthenticationUtil authenticationUtil) { @@ -85,6 +88,11 @@ public class FilesEntityResource implements InitializingBean this.nodesModelFactory = nodesModelFactory; } + public void setTransactionService(TransactionService transactionService) + { + this.transactionService = transactionService; + } + @Operation("declare") @WebApiDescription(title = "Declare as record", description="Declare a file as record.") public Record declareAsRecord(String fileId, Void body, Parameters parameters, WithResponse withResponse) @@ -104,7 +112,15 @@ public class FilesEntityResource implements InitializingBean // Create the record NodeRef file = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, fileId); - recordService.createRecord(filePlan, file, !hideRecord); + RetryingTransactionCallback callback = new RetryingTransactionCallback() + { + public Void execute() + { + recordService.createRecord(filePlan, file, !hideRecord); + return null; + } + }; + transactionService.getRetryingTransactionHelper().doInTransaction(callback, false, true); // Return record state FileInfo info = fileFolderService.getFileInfo(file);