diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-capabilities-classification-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-capabilities-classification-context.xml
index f4dfcfb640..04f71c3fa5 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-capabilities-classification-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-capabilities-classification-context.xml
@@ -14,12 +14,12 @@
-
+
-
+
@@ -28,25 +28,25 @@
parent="declarativeCapability">
-
+
-
+
-
+
-
+
-
+
@@ -55,11 +55,11 @@
parent="declarativeCapability">
-
+
-
+
@@ -69,7 +69,7 @@
-
+
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 a17e7410f5..498a5f59e1 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
@@ -93,6 +93,7 @@
+
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java
index 470c66ffdd..3883e7a097 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java
@@ -33,6 +33,7 @@ import org.alfresco.module.org_alfresco_module_rm.disposition.property.Dispositi
import org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEvent;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanComponentKind;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
+import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
@@ -87,6 +88,9 @@ public class DispositionServiceImpl extends ServiceBaseImpl
/** Record Service */
private RecordService recordService;
+ /** Freeze Service */
+ private FreezeService freezeService;
+
/** Disposition properties */
private Map dispositionProperties = new HashMap(4);
@@ -156,6 +160,14 @@ public class DispositionServiceImpl extends ServiceBaseImpl
this.recordService = recordService;
}
+ /**
+ * @param freezeService freeze service
+ */
+ public void setFreezeService(FreezeService freezeService)
+ {
+ this.freezeService = freezeService;
+ }
+
/**
* Set the dispositionSelectionStrategy bean.
*
@@ -965,7 +977,7 @@ public class DispositionServiceImpl extends ServiceBaseImpl
if (FilePlanComponentKind.RECORD_FOLDER.equals(filePlanService.getFilePlanComponentKind(nodeRef)) ||
FilePlanComponentKind.RECORD.equals(filePlanService.getFilePlanComponentKind(nodeRef)))
{
- if (!isDisposableItemCutoff(nodeRef))
+ if (!isDisposableItemCutoff(nodeRef) && !isFrozenOrHasFrozenChildren(nodeRef))
{
if (recordFolderService.isRecordFolder(nodeRef))
{
@@ -999,6 +1011,32 @@ public class DispositionServiceImpl extends ServiceBaseImpl
}
}
+ /**
+ * Helper method to determine if a node is frozen or has frozen children
+ *
+ * @param nodeRef Node to be checked
+ * @return true
if the node is frozen or has frozen children, false
otherwise
+ */
+ private boolean isFrozenOrHasFrozenChildren(NodeRef nodeRef)
+ {
+ boolean result = false;
+
+ if (recordFolderService.isRecordFolder(nodeRef))
+ {
+ result = freezeService.isFrozen(nodeRef) || freezeService.hasFrozenChildren(nodeRef);
+ }
+ else if (recordService.isRecord(nodeRef))
+ {
+ result = freezeService.isFrozen(nodeRef);
+ }
+ else
+ {
+ throw new AlfrescoRuntimeException("The nodeRef '" + nodeRef + "' is neither a record nor a record folder.");
+ }
+
+ return result;
+ }
+
/**
* Helper method to apply the cut off
*
diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/CapabilityServiceImplTest.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/CapabilityServiceImplTest.java
index 19f894e944..640093da54 100644
--- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/CapabilityServiceImplTest.java
+++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/CapabilityServiceImplTest.java
@@ -109,7 +109,7 @@ public class CapabilityServiceImplTest extends BaseRMTestCase
public Void run() throws Exception
{
int initialSize = capabilityService.getGroups().size();
-
+
GroupImpl testGroup = new GroupImpl();
testGroup.setId("testGroup");
testGroup.setIndex(140);
@@ -155,30 +155,30 @@ public class CapabilityServiceImplTest extends BaseRMTestCase
List groups = capabilityService.getGroups();
assertNotNull(groups);
- Group auditGroup = groups.get(0);
- assertNotNull(auditGroup);
+ Group recordsGroup = groups.get(0);
+ assertNotNull(recordsGroup);
- List auditCapabilities = capabilityService.getCapabilitiesByGroup(auditGroup);
- assertNotNull(auditCapabilities);
+ List recordCapabilities = capabilityService.getCapabilitiesByGroup(recordsGroup);
+ assertNotNull(recordCapabilities);
- int vitalRecordCapabilitiesSize = auditCapabilities.size();
- assertTrue(vitalRecordCapabilitiesSize > 1);
+ int recordCapabilitiesSize = recordCapabilities.size();
+ assertTrue(recordCapabilitiesSize > 1);
- for (int i = 1; i == vitalRecordCapabilitiesSize; i++)
+ for (int i = 1; i == recordCapabilitiesSize; i++)
{
- Capability capability = auditCapabilities.get(i);
+ Capability capability = recordCapabilities.get(i);
assertNotNull(capability);
assertEquals(i * 10, capability.getIndex());
}
- Group vitalRecordsGroup = groups.get(groups.size() - 1);
- assertNotNull(vitalRecordsGroup);
+ Group rulesGroup = groups.get(groups.size() - 2);
+ assertNotNull(rulesGroup);
- List vitalRecordCapabilities = capabilityService.getCapabilitiesByGroupId(vitalRecordsGroup.getId());
- assertNotNull(vitalRecordCapabilities);
+ List ruleCapabilities = capabilityService.getCapabilitiesByGroupId(rulesGroup.getId());
+ assertNotNull(ruleCapabilities);
- vitalRecordCapabilitiesSize = vitalRecordCapabilities.size();
- assertTrue(vitalRecordCapabilitiesSize > 0);
+ int ruleCapabilitiesSize = ruleCapabilities.size();
+ assertTrue(ruleCapabilitiesSize > 0);
return null;
}