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 048f415c31..bbee8b5b35 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
@@ -58,6 +58,7 @@
+
@@ -65,12 +66,14 @@
+
+
@@ -85,6 +88,7 @@
+
@@ -99,6 +103,7 @@
+
@@ -113,6 +118,7 @@
+
@@ -129,6 +135,7 @@
+
@@ -143,6 +150,7 @@
+
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 2ed5d321ac..cda7d8f384 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
@@ -33,12 +33,15 @@ import static org.alfresco.util.ParameterCheck.mandatory;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.List;
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.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.rest.api.impl.Util;
import org.alfresco.rest.api.model.UserInfo;
import org.alfresco.rest.framework.WebApiDescription;
@@ -51,11 +54,13 @@ 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;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.namespace.QName;
+import org.alfresco.service.transaction.TransactionService;
import org.alfresco.util.ParameterCheck;
import org.springframework.beans.factory.InitializingBean;
@@ -76,6 +81,7 @@ public class FilePlanChildrenRelation implements RelationshipResourceAction.Read
private FileFolderService fileFolderService;
private ApiNodesModelFactory nodesModelFactory;
private SearchTypesFactory searchTypesFactory;
+ private TransactionService transactionService;
public void setApiUtils(FilePlanComponentsApiUtils apiUtils)
{
@@ -97,6 +103,11 @@ public class FilePlanChildrenRelation implements RelationshipResourceAction.Read
this.searchTypesFactory = searchTypesFactory;
}
+ public void setTransactionService(TransactionService transactionService)
+ {
+ this.transactionService = transactionService;
+ }
+
@Override
public void afterPropertiesSet() throws Exception
{
@@ -173,21 +184,38 @@ public class FilePlanChildrenRelation implements RelationshipResourceAction.Read
mandatory("parameters", parameters);
QName filePlanType = apiUtils.getFilePlanType();
- if(filePlanType == null)// rm site not created
+ if (filePlanType == null)// rm site not created
{
throw new EntityNotFoundException(filePlanId);
}
NodeRef parentNodeRef = apiUtils.lookupAndValidateNodeType(filePlanId, filePlanType);
+ RetryingTransactionCallback> callback = new RetryingTransactionCallback>()
+ {
+ public List execute()
+ {
+ List createdNodes = new LinkedList<>();
+ for (RecordCategory nodeInfo : nodeInfos)
+ {
+ // Create the node
+ NodeRef newNodeRef = apiUtils.createRMNode(parentNodeRef, nodeInfo.getName(), RECORD_CATEGORY_TYPE,
+ nodeInfo.getProperties(), nodeInfo.getAspectNames());
+ createdNodes.add(newNodeRef);
+ }
+ return createdNodes;
+ }
+ };
+ List createdNodes = transactionService.getRetryingTransactionHelper().doInTransaction(callback);
+
+ // Get the nodes info
List result = new ArrayList<>(nodeInfos.size());
Map mapUserInfo = new HashMap<>();
- for (RecordCategory nodeInfo : nodeInfos)
+ for (NodeRef newNodeRef : createdNodes)
{
- // Create the node
- NodeRef newNode = apiUtils.createRMNode(parentNodeRef, nodeInfo.getName(), RECORD_CATEGORY_TYPE, nodeInfo.getProperties(), nodeInfo.getAspectNames());
- FileInfo info = fileFolderService.getFileInfo(newNode);
+ FileInfo info = fileFolderService.getFileInfo(newNodeRef);
result.add(nodesModelFactory.createRecordCategory(info, parameters, mapUserInfo, false));
}
+
return result;
}
}
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 2e8a3097b5..c2fa329a16 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,6 +30,7 @@ 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.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.rest.framework.WebApiDescription;
import org.alfresco.rest.framework.WebApiParam;
import org.alfresco.rest.framework.core.exceptions.EntityNotFoundException;
@@ -43,6 +44,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.namespace.QName;
+import org.alfresco.service.transaction.TransactionService;
import org.alfresco.util.ParameterCheck;
import org.springframework.beans.factory.InitializingBean;
@@ -60,6 +62,7 @@ public class FilePlanEntityResource
private FilePlanComponentsApiUtils apiUtils;
private FileFolderService fileFolderService;
private ApiNodesModelFactory nodesModelFactory;
+ private TransactionService transactionService;
public void setApiUtils(FilePlanComponentsApiUtils apiUtils)
{
@@ -76,6 +79,11 @@ public class FilePlanEntityResource
this.nodesModelFactory = nodesModelFactory;
}
+ public void setTransactionService(TransactionService transactionService)
+ {
+ this.transactionService = transactionService;
+ }
+
@Override
public void afterPropertiesSet() throws Exception
{
@@ -117,7 +125,16 @@ public class FilePlanEntityResource
throw new EntityNotFoundException(filePlanId);
}
NodeRef nodeRef = apiUtils.lookupAndValidateNodeType(filePlanId, filePlanType);
- apiUtils.updateNode(nodeRef, filePlanInfo, parameters);
+
+ RetryingTransactionCallback callback = new RetryingTransactionCallback()
+ {
+ public Void execute()
+ {
+ apiUtils.updateNode(nodeRef, filePlanInfo, parameters);
+ return null;
+ }
+ };
+ transactionService.getRetryingTransactionHelper().doInTransaction(callback);
FileInfo info = fileFolderService.getFileInfo(nodeRef);
return nodesModelFactory.createFilePlan(info, parameters, null, false);
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/recordcategories/RecordCategoriesEntityResource.java b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/recordcategories/RecordCategoriesEntityResource.java
index 4b82ed9750..e3addac7b6 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/recordcategories/RecordCategoriesEntityResource.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/recordcategories/RecordCategoriesEntityResource.java
@@ -31,6 +31,7 @@ import static org.alfresco.module.org_alfresco_module_rm.util.RMParameterCheck.c
import static org.alfresco.util.ParameterCheck.mandatory;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
+import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.rest.api.Nodes;
import org.alfresco.rest.framework.WebApiDescription;
import org.alfresco.rest.framework.WebApiParam;
@@ -43,6 +44,7 @@ import org.alfresco.rm.rest.api.model.RecordCategory;
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.transaction.TransactionService;
import org.springframework.beans.factory.InitializingBean;
/**
@@ -62,6 +64,7 @@ public class RecordCategoriesEntityResource implements
private FilePlanComponentsApiUtils apiUtils;
private FileFolderService fileFolderService;
private ApiNodesModelFactory nodesModelFactory;
+ private TransactionService transactionService;
public void setApiUtils(FilePlanComponentsApiUtils apiUtils)
{
@@ -78,6 +81,11 @@ public class RecordCategoriesEntityResource implements
this.nodesModelFactory = nodesModelFactory;
}
+ public void setTransactionService(TransactionService transactionService)
+ {
+ this.transactionService = transactionService;
+ }
+
@Override
public void afterPropertiesSet() throws Exception
{
@@ -111,7 +119,16 @@ public class RecordCategoriesEntityResource implements
mandatory("parameters", parameters);
NodeRef nodeRef = apiUtils.lookupAndValidateNodeType(recordCategoryId, RecordsManagementModel.TYPE_RECORD_CATEGORY);
- apiUtils.updateNode(nodeRef, recordCategoryInfo, parameters);
+
+ RetryingTransactionCallback callback = new RetryingTransactionCallback()
+ {
+ public Void execute()
+ {
+ apiUtils.updateNode(nodeRef, recordCategoryInfo, parameters);
+ return null;
+ }
+ };
+ transactionService.getRetryingTransactionHelper().doInTransaction(callback);
FileInfo info = fileFolderService.getFileInfo(nodeRef);
return nodesModelFactory.createRecordCategory(info, parameters, null, false);
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 198863b2d8..1d600a6ebf 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
@@ -189,7 +189,8 @@ public class RecordCategoryChildrenRelation implements RelationshipResourceActio
RecordsManagementModel.TYPE_RECORD_CATEGORY);
}
// Create the node
- NodeRef newNode = apiUtils.createRMNode(nodeParent, nodeInfo.getName(), nodeInfo.getNodeType(), nodeInfo.getProperties(), nodeInfo.getAspectNames());
+ NodeRef newNode = apiUtils.createRMNode(nodeParent, nodeInfo.getName(), nodeInfo.getNodeType(),
+ nodeInfo.getProperties(), nodeInfo.getAspectNames());
createdNodes.add(newNode);
}
return createdNodes;
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/recordfolders/RecordFolderChildrenRelation.java b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/recordfolders/RecordFolderChildrenRelation.java
index 9ba8c695ba..ab68cf9ed4 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/recordfolders/RecordFolderChildrenRelation.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/recordfolders/RecordFolderChildrenRelation.java
@@ -31,7 +31,6 @@ import static org.alfresco.module.org_alfresco_module_rm.util.RMParameterCheck.c
import static org.alfresco.util.ParameterCheck.mandatory;
import java.util.AbstractList;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -57,7 +56,6 @@ import org.alfresco.rm.rest.api.impl.FilePlanComponentsApiUtils;
import org.alfresco.rm.rest.api.impl.SearchTypesFactory;
import org.alfresco.rm.rest.api.model.Record;
import org.alfresco.rm.rest.api.model.RecordFolder;
-import org.alfresco.rm.rest.api.model.UnfiledContainerChild;
import org.alfresco.rm.rest.api.model.UploadInfo;
import org.alfresco.service.cmr.model.FileFolderService;
import org.alfresco.service.cmr.model.FileInfo;
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/recordfolders/RecordFolderEntityResource.java b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/recordfolders/RecordFolderEntityResource.java
index 83acf7c9ca..c582f41888 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/recordfolders/RecordFolderEntityResource.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/recordfolders/RecordFolderEntityResource.java
@@ -31,6 +31,7 @@ import static org.alfresco.module.org_alfresco_module_rm.util.RMParameterCheck.c
import static org.alfresco.util.ParameterCheck.mandatory;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
+import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.rest.framework.WebApiDescription;
import org.alfresco.rest.framework.WebApiParam;
import org.alfresco.rest.framework.resource.EntityResource;
@@ -42,6 +43,7 @@ import org.alfresco.rm.rest.api.model.RecordFolder;
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.transaction.TransactionService;
import org.springframework.beans.factory.InitializingBean;
/**
@@ -59,6 +61,7 @@ public class RecordFolderEntityResource implements EntityResourceAction.ReadById
private FilePlanComponentsApiUtils apiUtils;
private FileFolderService fileFolderService;
private ApiNodesModelFactory nodesModelFactory;
+ private TransactionService transactionService;
public void setApiUtils(FilePlanComponentsApiUtils apiUtils)
{
@@ -75,6 +78,11 @@ public class RecordFolderEntityResource implements EntityResourceAction.ReadById
this.nodesModelFactory = nodesModelFactory;
}
+ public void setTransactionService(TransactionService transactionService)
+ {
+ this.transactionService = transactionService;
+ }
+
@Override
public void afterPropertiesSet() throws Exception
{
@@ -106,7 +114,16 @@ public class RecordFolderEntityResource implements EntityResourceAction.ReadById
mandatory("parameters", parameters);
NodeRef nodeRef = apiUtils.lookupAndValidateNodeType(recordFolderId, RecordsManagementModel.TYPE_RECORD_FOLDER);
- apiUtils.updateNode(nodeRef, recordFolderInfo, parameters);
+
+ RetryingTransactionCallback callback = new RetryingTransactionCallback()
+ {
+ public Void execute()
+ {
+ apiUtils.updateNode(nodeRef, recordFolderInfo, parameters);
+ return null;
+ }
+ };
+ transactionService.getRetryingTransactionHelper().doInTransaction(callback);
FileInfo info = fileFolderService.getFileInfo(nodeRef);
return nodesModelFactory.createRecordFolder(info, parameters, null, false);
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/records/RecordsEntityResource.java b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/records/RecordsEntityResource.java
index 931fd9e950..1b3e18b1eb 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/records/RecordsEntityResource.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/records/RecordsEntityResource.java
@@ -34,6 +34,7 @@ import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
import org.alfresco.repo.activities.ActivityType;
import org.alfresco.repo.node.integrity.IntegrityException;
+import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.rest.framework.BinaryProperties;
import org.alfresco.rest.framework.Operation;
import org.alfresco.rest.framework.WebApiDescription;
@@ -56,6 +57,7 @@ import org.alfresco.service.cmr.model.FileInfo;
import org.alfresco.service.cmr.model.FileNotFoundException;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
+import org.alfresco.service.transaction.TransactionService;
import org.alfresco.util.ParameterCheck;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.dao.ConcurrencyFailureException;
@@ -80,6 +82,7 @@ public class RecordsEntityResource implements BinaryResourceAction.Read,
private FileFolderService fileFolderService;
private RecordService recordService;
private NodeService nodeService;
+ private TransactionService transactionService;
public void setNodesModelFactory(ApiNodesModelFactory nodesModelFactory)
{
@@ -105,6 +108,12 @@ public class RecordsEntityResource implements BinaryResourceAction.Read,
{
this.fileFolderService = fileFolderService;
}
+
+ public void setTransactionService(TransactionService transactionService)
+ {
+ this.transactionService = transactionService;
+ }
+
/**
* Download content
*
@@ -197,7 +206,15 @@ public class RecordsEntityResource implements BinaryResourceAction.Read,
NodeRef record = apiUtils.validateRecord(recordId);
// update info
- apiUtils.updateNode(record, recordInfo, parameters);
+ RetryingTransactionCallback callback = new RetryingTransactionCallback()
+ {
+ public Void execute()
+ {
+ apiUtils.updateNode(record, recordInfo, parameters);
+ return null;
+ }
+ };
+ transactionService.getRetryingTransactionHelper().doInTransaction(callback);
// return record state
FileInfo info = fileFolderService.getFileInfo(record);
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/transfercontainers/TransferContainerEntityResource.java b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/transfercontainers/TransferContainerEntityResource.java
index b3b106e6ee..7e0ea82040 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/transfercontainers/TransferContainerEntityResource.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/transfercontainers/TransferContainerEntityResource.java
@@ -31,6 +31,7 @@ import static org.alfresco.module.org_alfresco_module_rm.util.RMParameterCheck.c
import static org.alfresco.util.ParameterCheck.mandatory;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
+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;
@@ -43,6 +44,7 @@ import org.alfresco.rm.rest.api.model.TransferContainer;
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.transaction.TransactionService;
import org.springframework.beans.factory.InitializingBean;
/**
@@ -60,6 +62,7 @@ public class TransferContainerEntityResource implements
private FilePlanComponentsApiUtils apiUtils;
private FileFolderService fileFolderService;
private ApiNodesModelFactory nodesModelFactory;
+ private TransactionService transactionService;
public void setApiUtils(FilePlanComponentsApiUtils apiUtils)
{
@@ -76,6 +79,11 @@ public class TransferContainerEntityResource implements
this.nodesModelFactory = nodesModelFactory;
}
+ public void setTransactionService(TransactionService transactionService)
+ {
+ this.transactionService = transactionService;
+ }
+
@Override
public void afterPropertiesSet() throws Exception
{
@@ -108,7 +116,17 @@ public class TransferContainerEntityResource implements
mandatory("parameters", parameters);
NodeRef nodeRef = apiUtils.lookupAndValidateNodeType(transferContainerId, RecordsManagementModel.TYPE_TRANSFER_CONTAINER);
- apiUtils.updateTransferContainer(nodeRef, transferContainerInfo, parameters);
+
+ // update info
+ RetryingTransactionCallback callback = new RetryingTransactionCallback()
+ {
+ public Void execute()
+ {
+ apiUtils.updateTransferContainer(nodeRef, transferContainerInfo, parameters);
+ return null;
+ }
+ };
+ transactionService.getRetryingTransactionHelper().doInTransaction(callback);
FileInfo info = fileFolderService.getFileInfo(nodeRef);
return nodesModelFactory.createTransferContainer(info, parameters, null, false);
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/unfiledcontainers/UnfiledContainerChildrenRelation.java b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/unfiledcontainers/UnfiledContainerChildrenRelation.java
index ab419a57ca..2e026f856c 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/unfiledcontainers/UnfiledContainerChildrenRelation.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/unfiledcontainers/UnfiledContainerChildrenRelation.java
@@ -31,7 +31,6 @@ import static org.alfresco.module.org_alfresco_module_rm.util.RMParameterCheck.c
import static org.alfresco.util.ParameterCheck.mandatory;
import java.util.AbstractList;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/unfiledcontainers/UnfiledContainerEntityResource.java b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/unfiledcontainers/UnfiledContainerEntityResource.java
index e3219d634f..9be5f5a79e 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/unfiledcontainers/UnfiledContainerEntityResource.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/unfiledcontainers/UnfiledContainerEntityResource.java
@@ -32,6 +32,7 @@ import static org.alfresco.util.ParameterCheck.mandatory;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.repo.activities.ActivityType;
+import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.rest.framework.WebApiDescription;
import org.alfresco.rest.framework.WebApiParam;
import org.alfresco.rest.framework.resource.EntityResource;
@@ -43,6 +44,7 @@ import org.alfresco.rm.rest.api.model.UnfiledContainer;
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.transaction.TransactionService;
import org.springframework.beans.factory.InitializingBean;
/**
@@ -60,6 +62,7 @@ public class UnfiledContainerEntityResource
private FilePlanComponentsApiUtils apiUtils;
private FileFolderService fileFolderService;
private ApiNodesModelFactory nodesModelFactory;
+ private TransactionService transactionService;
public void setApiUtils(FilePlanComponentsApiUtils apiUtils)
{
@@ -76,6 +79,11 @@ public class UnfiledContainerEntityResource
this.nodesModelFactory = nodesModelFactory;
}
+ public void setTransactionService(TransactionService transactionService)
+ {
+ this.transactionService = transactionService;
+ }
+
@Override
public void afterPropertiesSet() throws Exception
{
@@ -107,8 +115,17 @@ public class UnfiledContainerEntityResource
mandatory("parameters", parameters);
NodeRef nodeRef = apiUtils.lookupAndValidateNodeType(unfiledContainerId, RecordsManagementModel.TYPE_UNFILED_RECORD_CONTAINER);
- apiUtils.updateNode(nodeRef, unfiledContainerInfo, parameters);
-
+
+ RetryingTransactionCallback callback = new RetryingTransactionCallback()
+ {
+ public Void execute()
+ {
+ apiUtils.updateNode(nodeRef, unfiledContainerInfo, parameters);
+ return null;
+ }
+ };
+ transactionService.getRetryingTransactionHelper().doInTransaction(callback);
+
FileInfo info = fileFolderService.getFileInfo(nodeRef);
apiUtils.postActivity(info, unfiledContainerInfo.getParentId(), ActivityType.FILE_UPDATED);
return nodesModelFactory.createUnfiledContainer(info, parameters, null, false);
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/unfiledrecordfolders/UnfiledRecordFolderChildrenRelation.java b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/unfiledrecordfolders/UnfiledRecordFolderChildrenRelation.java
index 0a7faf4771..aebe691a3b 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/unfiledrecordfolders/UnfiledRecordFolderChildrenRelation.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/unfiledrecordfolders/UnfiledRecordFolderChildrenRelation.java
@@ -31,7 +31,6 @@ import static org.alfresco.module.org_alfresco_module_rm.util.RMParameterCheck.c
import static org.alfresco.util.ParameterCheck.mandatory;
import java.util.AbstractList;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
@@ -60,7 +59,6 @@ import org.alfresco.rm.rest.api.impl.FilePlanComponentsApiUtils;
import org.alfresco.rm.rest.api.impl.SearchTypesFactory;
import org.alfresco.rm.rest.api.model.RMNode;
import org.alfresco.rm.rest.api.model.UnfiledChild;
-import org.alfresco.rm.rest.api.model.UnfiledContainerChild;
import org.alfresco.rm.rest.api.model.UnfiledRecordFolder;
import org.alfresco.rm.rest.api.model.UnfiledRecordFolderChild;
import org.alfresco.rm.rest.api.model.UploadInfo;
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/unfiledrecordfolders/UnfiledRecordFolderEntityResource.java b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/unfiledrecordfolders/UnfiledRecordFolderEntityResource.java
index c03f04ca05..bf626a0020 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/unfiledrecordfolders/UnfiledRecordFolderEntityResource.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/rm/rest/api/unfiledrecordfolders/UnfiledRecordFolderEntityResource.java
@@ -32,6 +32,7 @@ import static org.alfresco.util.ParameterCheck.mandatory;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.repo.activities.ActivityType;
+import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.rest.api.Nodes;
import org.alfresco.rest.framework.WebApiDescription;
import org.alfresco.rest.framework.WebApiParam;
@@ -44,6 +45,7 @@ import org.alfresco.rm.rest.api.model.UnfiledRecordFolder;
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.transaction.TransactionService;
import org.springframework.beans.factory.InitializingBean;
/**
@@ -61,6 +63,8 @@ public class UnfiledRecordFolderEntityResource implements EntityResourceAction.R
private FilePlanComponentsApiUtils apiUtils;
private FileFolderService fileFolderService;
private ApiNodesModelFactory nodesModelFactory;
+ private TransactionService transactionService;
+
public void setApiUtils(FilePlanComponentsApiUtils apiUtils)
{
this.apiUtils = apiUtils;
@@ -76,6 +80,11 @@ public class UnfiledRecordFolderEntityResource implements EntityResourceAction.R
this.nodesModelFactory = nodesModelFactory;
}
+ public void setTransactionService(TransactionService transactionService)
+ {
+ this.transactionService = transactionService;
+ }
+
@Override
public void afterPropertiesSet() throws Exception
{
@@ -110,7 +119,16 @@ public class UnfiledRecordFolderEntityResource implements EntityResourceAction.R
mandatory("parameters", parameters);
NodeRef nodeRef = apiUtils.lookupAndValidateNodeType(unfiledRecordFolderId, RecordsManagementModel.TYPE_UNFILED_RECORD_FOLDER);
- apiUtils.updateNode(nodeRef, unfiledRecordFolderInfo, parameters);
+
+ RetryingTransactionCallback callback = new RetryingTransactionCallback()
+ {
+ public Void execute()
+ {
+ apiUtils.updateNode(nodeRef, unfiledRecordFolderInfo, parameters);
+ return null;
+ }
+ };
+ transactionService.getRetryingTransactionHelper().doInTransaction(callback);
FileInfo info = fileFolderService.getFileInfo(nodeRef);
apiUtils.postActivity(info, unfiledRecordFolderInfo.getParentId(), ActivityType.FILE_UPDATED);