diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml
index 5e8913befb..7a9777937f 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml
@@ -426,6 +426,7 @@
+
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/JSONConversionComponent.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/JSONConversionComponent.java
index c94320cf3c..e94d1a1ae2 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/JSONConversionComponent.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/JSONConversionComponent.java
@@ -146,10 +146,13 @@ public class JSONConversionComponent extends org.alfresco.repo.jscript.app.JSONC
// Unfiled container node reference
NodeRef unfiledRecordContainer = recordService.getUnfiledContainer(filePlan);
- rmNodeValues.put("unfiledRecordContainer", unfiledRecordContainer.toString());
- rmNodeValues.put("properties", propertiesToJSON(unfiledRecordContainer, useShortQName));
- QName type = fileFolderService.getFileInfo(unfiledRecordContainer).getType();
- rmNodeValues.put("type", useShortQName ? type.toPrefixString(namespaceService) : type.toString());
+ if (unfiledRecordContainer != null)
+ {
+ rmNodeValues.put("unfiledRecordContainer", unfiledRecordContainer.toString());
+ rmNodeValues.put("properties", propertiesToJSON(unfiledRecordContainer, useShortQName));
+ QName type = fileFolderService.getFileInfo(unfiledRecordContainer).getType();
+ rmNodeValues.put("type", useShortQName ? type.toPrefixString(namespaceService) : type.toString());
+ }
// Set the indicators array
setIndicators(rmNodeValues, nodeRef);
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java
index b2f9ae0421..6f95143ed5 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java
@@ -210,13 +210,27 @@ public class RecordServiceImpl implements RecordService, RecordsManagementModel
public NodeRef getUnfiledContainer(NodeRef filePlan)
{
ParameterCheck.mandatory("filePlan", filePlan);
+
+ if (recordsManagementService.isFilePlan(filePlan) == false)
+ {
+ throw new AlfrescoRuntimeException("Unable to get the unfiled container, because passed node is not a file plan.");
+ }
+ NodeRef result = null;
+
List assocs = nodeService.getChildAssocs(filePlan, ASSOC_UNFILED_RECORDS,
RegexQNamePattern.MATCH_ALL);
- if (assocs.size() != 1) { throw new AlfrescoRuntimeException(
- "Error getting the unfiled container, because the container cannot be indentified."); }
-
- return assocs.get(0).getChildRef();
+ if (assocs.size() > 1)
+ {
+ throw new AlfrescoRuntimeException(
+ "Unable to get the unfiled container, because the container cannot be indentified.");
+ }
+ else if (assocs.size() == 1 )
+ {
+ result = assocs.get(0).getChildRef();
+ }
+
+ return result;
}
/**
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/RecordsManagementSecurityServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/RecordsManagementSecurityServiceImpl.java
index 43cf909c56..c2f5767c16 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/RecordsManagementSecurityServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/RecordsManagementSecurityServiceImpl.java
@@ -37,6 +37,7 @@ import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.module.org_alfresco_module_rm.model.security.ModelSecurityService;
+import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
import org.alfresco.repo.node.NodeServicePolicies;
import org.alfresco.repo.policy.JavaBehaviour;
import org.alfresco.repo.policy.PolicyComponent;
@@ -86,6 +87,9 @@ public class RecordsManagementSecurityServiceImpl implements RecordsManagementSe
/** Model security service */
private ModelSecurityService modelSecurityService;
+
+ /** Record service */
+ private RecordService recordService;
/** Node service */
private NodeService nodeService;
@@ -148,6 +152,16 @@ public class RecordsManagementSecurityServiceImpl implements RecordsManagementSe
{
this.recordsManagementService = recordsManagementService;
}
+
+ /**
+ * Set record service
+ *
+ * @param recordService record service
+ */
+ public void setRecordService(RecordService recordService)
+ {
+ this.recordService = recordService;
+ }
/**
* Set the node service
@@ -239,22 +253,27 @@ public class RecordsManagementSecurityServiceImpl implements RecordsManagementSe
*/
private NodeRef createUnfiledContainer(NodeRef rmRootNode, String allRoles)
{
- // create the properties map
- Map properties = new HashMap(1);
- properties.put(ContentModel.PROP_NAME, NAME_UNFILED_CONTAINER);
-
- // create the unfiled container
- NodeRef container = nodeService.createNode(
- rmRootNode,
- ASSOC_UNFILED_RECORDS,
- QName.createQName(RM_URI, NAME_UNFILED_CONTAINER),
- TYPE_UNFILED_RECORD_CONTAINER,
- properties).getChildRef();
-
- // set inheritance to false
- permissionService.setInheritParentPermissions(container, false);
- permissionService.setPermission(container, allRoles, RMPermissionModel.READ_RECORDS, true);
- permissionService.setPermission(container, ExtendedReaderDynamicAuthority.EXTENDED_READER, RMPermissionModel.READ_RECORDS, true);
+ NodeRef container = recordService.getUnfiledContainer(rmRootNode);
+
+ if (container == null)
+ {
+ // create the properties map
+ Map properties = new HashMap(1);
+ properties.put(ContentModel.PROP_NAME, NAME_UNFILED_CONTAINER);
+
+ // create the unfiled container
+ container = nodeService.createNode(
+ rmRootNode,
+ ASSOC_UNFILED_RECORDS,
+ QName.createQName(RM_URI, NAME_UNFILED_CONTAINER),
+ TYPE_UNFILED_RECORD_CONTAINER,
+ properties).getChildRef();
+
+ // set inheritance to false
+ permissionService.setInheritParentPermissions(container, false);
+ permissionService.setPermission(container, allRoles, RMPermissionModel.READ_RECORDS, true);
+ permissionService.setPermission(container, ExtendedReaderDynamicAuthority.EXTENDED_READER, RMPermissionModel.READ_RECORDS, true);
+ }
return container;
}