diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml
index 07adb5d9bf..6c0783de97 100644
--- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml
+++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml
@@ -52,6 +52,7 @@
+
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordsManagementSearchBehaviour.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordsManagementSearchBehaviour.java
index 95a77f610f..b6e778e094 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordsManagementSearchBehaviour.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordsManagementSearchBehaviour.java
@@ -45,6 +45,7 @@ import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedul
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
import org.alfresco.module.org_alfresco_module_rm.event.EventCompletionDetails;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
+import org.alfresco.module.org_alfresco_module_rm.model.rma.aspect.FrozenAspect;
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
import org.alfresco.module.org_alfresco_module_rm.vital.VitalRecordDefinition;
@@ -99,6 +100,11 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel
/** Record service*/
private RecordService recordService;
+ /**
+ * Frozen aspect
+ */
+ private FrozenAspect frozenAspect;
+
/**
* @param nodeService the nodeService to set
*/
@@ -155,6 +161,15 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel
this.recordService = recordService;
}
+ /**
+ * @param frozenAspect frozen aspect
+ */
+ public void setFrozenAspect(FrozenAspect frozenAspect)
+ {
+ this.frozenAspect = frozenAspect;
+ }
+
+
/** on add search aspect behaviour */
private JavaBehaviour onAddSearchAspect = new JavaBehaviour(this, "rmSearchAspectAdd", NotificationFrequency.TRANSACTION_COMMIT);
@@ -800,26 +815,34 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel
if (!methodCached("setVitalRecordDefinitionDetails", nodeRef))
{
VitalRecordDefinition vrd = vitalRecordService.getVitalRecordDefinition(nodeRef);
-
- if (vrd != null && vrd.isEnabled() && vrd.getReviewPeriod() != null)
+ try
{
- // Set the property values
- nodeService.setProperty(nodeRef, PROP_RS_VITAL_RECORD_REVIEW_PERIOD, vrd.getReviewPeriod().getPeriodType());
- nodeService.setProperty(nodeRef, PROP_RS_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION, vrd.getReviewPeriod().getExpression());
-
- if (logger.isDebugEnabled())
+ frozenAspect.disableOnPropUpdateFrozenAspect();
+ if (vrd != null && vrd.isEnabled() && vrd.getReviewPeriod() != null)
{
- logger.debug("Set rma:recordSearchVitalRecordReviewPeriod for node " + nodeRef + " to: " +
+ // Set the property values
+ nodeService.setProperty(nodeRef, PROP_RS_VITAL_RECORD_REVIEW_PERIOD, vrd.getReviewPeriod().getPeriodType());
+ nodeService.setProperty(nodeRef, PROP_RS_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION, vrd.getReviewPeriod().getExpression());
+
+ if (logger.isDebugEnabled())
+ {
+ logger.debug("Set rma:recordSearchVitalRecordReviewPeriod for node " + nodeRef + " to: " +
vrd.getReviewPeriod().getPeriodType());
- logger.debug("Set rma:recordSearchVitalRecordReviewPeriodExpression for node " + nodeRef + " to: " +
+ logger.debug("Set rma:recordSearchVitalRecordReviewPeriodExpression for node " + nodeRef + " to: " +
vrd.getReviewPeriod().getExpression());
+ }
+ }
+ else
+ {
+ // Clear the vital record properties
+ nodeService.setProperty(nodeRef, PROP_RS_VITAL_RECORD_REVIEW_PERIOD, null);
+ nodeService.setProperty(nodeRef, PROP_RS_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION, null);
}
}
- else
+ finally
{
- // Clear the vital record properties
- nodeService.setProperty(nodeRef, PROP_RS_VITAL_RECORD_REVIEW_PERIOD, null);
- nodeService.setProperty(nodeRef, PROP_RS_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION, null);
+ frozenAspect.enableOnPropUpdateFrozenAspect();
+
}
}
}
@@ -871,13 +894,21 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel
{
if (schedule != null)
{
- nodeService.setProperty(recordOrFolder, PROP_RS_DISPOITION_AUTHORITY, schedule.getDispositionAuthority());
- nodeService.setProperty(recordOrFolder, PROP_RS_DISPOITION_INSTRUCTIONS, schedule.getDispositionInstructions());
-
- if (logger.isDebugEnabled())
+ try
{
- logger.debug("Set rma:recordSearchDispositionAuthority for node " + recordOrFolder + " to: " + schedule.getDispositionAuthority());
- logger.debug("Set rma:recordSearchDispositionInstructions for node " + recordOrFolder + " to: " + schedule.getDispositionInstructions());
+ frozenAspect.disableOnPropUpdateFrozenAspect();
+ nodeService.setProperty(recordOrFolder, PROP_RS_DISPOITION_AUTHORITY, schedule.getDispositionAuthority());
+ nodeService.setProperty(recordOrFolder, PROP_RS_DISPOITION_INSTRUCTIONS, schedule.getDispositionInstructions());
+
+ if (logger.isDebugEnabled())
+ {
+ logger.debug("Set rma:recordSearchDispositionAuthority for node " + recordOrFolder + " to: " + schedule.getDispositionAuthority());
+ logger.debug("Set rma:recordSearchDispositionInstructions for node " + recordOrFolder + " to: " + schedule.getDispositionInstructions());
+ }
+ }
+ finally
+ {
+ frozenAspect.enableOnPropUpdateFrozenAspect();
}
}
}
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/FrozenAspect.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/FrozenAspect.java
index 7f4648fb6c..b40ccea490 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/FrozenAspect.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/FrozenAspect.java
@@ -68,6 +68,11 @@ public class FrozenAspect extends BaseBehaviourBean
NodeServicePolicies.OnUpdatePropertiesPolicy,
NodeServicePolicies.BeforeMoveNodePolicy
{
+ /**
+ * Behaviour name for on update properties for frozen aspect
+ */
+ private static final String ON_UPDATE_PROP_FROZEN_BEHAVIOUR_NAME = "onUpdatePropertiesFrozenAspect";
+
/** freeze service */
protected FreezeService freezeService;
@@ -79,6 +84,32 @@ public class FrozenAspect extends BaseBehaviourBean
this.freezeService = freezeService;
}
+
+ /**
+ * Disable the on update properties for frozen aspect behaviour
+ */
+ public void disableOnPropUpdateFrozenAspect()
+ {
+ org.alfresco.repo.policy.Behaviour behaviour = getBehaviour(ON_UPDATE_PROP_FROZEN_BEHAVIOUR_NAME);
+ if (behaviour != null)
+ {
+ behaviour.disable();
+ }
+
+ }
+
+ /**
+ * Enable the on update properties for frozen aspect
+ */
+ public void enableOnPropUpdateFrozenAspect()
+ {
+ org.alfresco.repo.policy.Behaviour behaviour = getBehaviour(ON_UPDATE_PROP_FROZEN_BEHAVIOUR_NAME);
+ if (behaviour != null && !behaviour.isEnabled())
+ {
+ behaviour.enable();
+ }
+ }
+
/**
* Ensure that no frozen node is deleted.
*
@@ -229,6 +260,7 @@ public class FrozenAspect extends BaseBehaviourBean
@Behaviour
(
kind = BehaviourKind.CLASS,
+ name = ON_UPDATE_PROP_FROZEN_BEHAVIOUR_NAME,
notificationFrequency = NotificationFrequency.FIRST_EVENT
)
public void onUpdateProperties(NodeRef nodeRef, Map before, Map after)