diff --git a/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/messages/action-service.properties b/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/messages/action-service.properties
index 0a1f596e61..ad0fbb49fd 100644
--- a/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/messages/action-service.properties
+++ b/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/messages/action-service.properties
@@ -45,4 +45,4 @@ rm.action.create.transfer.container.child-error-message=You can't create items i
rm.action.create.transfer.child-error-message=You can't create items in Transfer Folders.
rm.action.create.record.folder.child-error-message=You can only create records in record folders and this was a {0}.
rm.action.transfer-non-editable=You can't edit transfer folder or container metadata.
-rm.action.node.frozen.error-message=unable to perform action {0} because node is frozen or has frozen children
+rm.action.node.frozen.error-message=Unable to perform action {0} because node is frozen or has frozen children.
diff --git a/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-job-context.xml b/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-job-context.xml
index 139ffbd577..949ce23b70 100644
--- a/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-job-context.xml
+++ b/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-job-context.xml
@@ -80,6 +80,7 @@
+
diff --git a/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml b/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml
index 5dff18ec63..366a38eb8e 100644
--- a/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml
+++ b/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml
@@ -112,7 +112,6 @@
-
@@ -699,11 +698,10 @@
- cutoff
retain
-
+
@@ -908,6 +906,8 @@
+
+
diff --git a/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionServiceImpl.java b/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionServiceImpl.java
index a4c816d04c..9c6283ebce 100644
--- a/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionServiceImpl.java
+++ b/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionServiceImpl.java
@@ -35,59 +35,72 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import lombok.extern.slf4j.Slf4j;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.BeforeRMActionExecution;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.OnRMActionExecution;
+import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
import org.alfresco.module.org_alfresco_module_rm.util.PoliciesUtil;
-import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
import org.alfresco.repo.policy.ClassPolicyDelegate;
import org.alfresco.repo.policy.PolicyComponent;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.namespace.QName;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.springframework.extensions.surf.util.I18NUtil;
-import org.springframework.beans.factory.annotation.Autowired;
/**
* Records Management Action Service Implementation
*
* @author Roy Wetherall
*/
-public class RecordsManagementActionServiceImpl implements RecordsManagementActionService
-{
- /** I18N */
+@Slf4j
+public class RecordsManagementActionServiceImpl implements RecordsManagementActionService {
+ /**
+ * I18N
+ */
private static final String MSG_NOT_DEFINED = "rm.action.not-defined";
private static final String MSG_NO_IMPLICIT_NODEREF = "rm.action.no-implicit-noderef";
private static final String MSG_NODE_FROZEN = "rm.action.node.frozen.error-message";
- /** Logger */
- private static final Log logger = LogFactory.getLog(RecordsManagementActionServiceImpl.class);
- /** Registered records management actions */
+ /**
+ * Registered records management actions
+ */
private Map rmActions = new HashMap<>(13);
private Map rmConditions = new HashMap<>(13);
private Map dispositionActions = new HashMap<>(5);
- /** Policy component */
+ /**
+ * Policy component
+ */
private PolicyComponent policyComponent;
- /** Node service */
+ /**
+ * Node service
+ */
private NodeService nodeService;
- /** Policy delegates */
+ /**
+ * Policy delegates
+ */
private ClassPolicyDelegate beforeRMActionExecutionDelegate;
private ClassPolicyDelegate onRMActionExecutionDelegate;
- private DispositionService dispositionService;
+ /**
+ * Freeze Service
+ */
+ private FreezeService freezeService;
- public void setDispositionService(DispositionService dispositionService) {
- this.dispositionService = dispositionService;
+ /**
+ * @param freezeService freeze service
+ */
+ public void setFreezeService(FreezeService freezeService) {
+ this.freezeService = freezeService;
}
-
- /** list of disposition actions to automatically execute */
+ /**
+ * list of retention actions to automatically execute
+ */
private List retentionActions;
public void setRetentionActions(List retentionActions) {
@@ -97,16 +110,14 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
/**
* @return Policy component
*/
- protected PolicyComponent getPolicyComponent()
- {
+ protected PolicyComponent getPolicyComponent() {
return this.policyComponent;
}
/**
* @return Node Service
*/
- protected NodeService getNodeService()
- {
+ protected NodeService getNodeService() {
return this.nodeService;
}
@@ -115,26 +126,23 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
*
* @param policyComponent policy component
*/
- public void setPolicyComponent(PolicyComponent policyComponent)
- {
+ public void setPolicyComponent(PolicyComponent policyComponent) {
this.policyComponent = policyComponent;
}
/**
* Set the node service
*
- * @param nodeService node service
+ * @param nodeService node service
*/
- public void setNodeService(NodeService nodeService)
- {
+ public void setNodeService(NodeService nodeService) {
this.nodeService = nodeService;
}
/**
* Initialise RM action service
*/
- public void init()
- {
+ public void init() {
// Register the various policies
beforeRMActionExecutionDelegate = getPolicyComponent().registerClassPolicy(BeforeRMActionExecution.class);
onRMActionExecutionDelegate = getPolicyComponent().registerClassPolicy(OnRMActionExecution.class);
@@ -143,23 +151,18 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
/**
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#register(org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction)
*/
- public void register(RecordsManagementAction rmAction)
- {
- if (!rmActions.containsKey(rmAction.getName()))
- {
+ public void register(RecordsManagementAction rmAction) {
+ if (!rmActions.containsKey(rmAction.getName())) {
rmActions.put(rmAction.getName(), rmAction);
- if (rmAction.isDispositionAction())
- {
+ if (rmAction.isDispositionAction()) {
dispositionActions.put(rmAction.getName(), rmAction);
}
}
}
- public void register(RecordsManagementActionCondition rmCondition)
- {
- if (!rmConditions.containsKey(rmCondition.getBeanName()))
- {
+ public void register(RecordsManagementActionCondition rmCondition) {
+ if (!rmConditions.containsKey(rmCondition.getBeanName())) {
rmConditions.put(rmCondition.getBeanName(), rmCondition);
}
}
@@ -167,12 +170,11 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
/**
* Invoke beforeRMActionExecution policy
*
- * @param nodeRef node reference
- * @param name action name
- * @param parameters action parameters
+ * @param nodeRef node reference
+ * @param name action name
+ * @param parameters action parameters
*/
- protected void invokeBeforeRMActionExecution(NodeRef nodeRef, String name, Map parameters)
- {
+ protected void invokeBeforeRMActionExecution(NodeRef nodeRef, String name, Map parameters) {
// get qnames to invoke against
Set qnames = PoliciesUtil.getTypeAndAspectQNames(getNodeService(), nodeRef);
// execute policy for node type and aspects
@@ -183,12 +185,11 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
/**
* Invoke onRMActionExecution policy
*
- * @param nodeRef node reference
- * @param name action name
- * @param parameters action parameters
+ * @param nodeRef node reference
+ * @param name action name
+ * @param parameters action parameters
*/
- protected void invokeOnRMActionExecution(NodeRef nodeRef, String name, Map parameters)
- {
+ protected void invokeOnRMActionExecution(NodeRef nodeRef, String name, Map parameters) {
// get qnames to invoke against
Set qnames = PoliciesUtil.getTypeAndAspectQNames(getNodeService(), nodeRef);
// execute policy for node type and aspects
@@ -199,8 +200,7 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
/**
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#getRecordsManagementActions()
*/
- public List getRecordsManagementActions()
- {
+ public List getRecordsManagementActions() {
List result = new ArrayList<>(this.rmActions.size());
result.addAll(this.rmActions.values());
return Collections.unmodifiableList(result);
@@ -210,8 +210,7 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#getRecordsManagementActionConditions()
*/
@Override
- public List getRecordsManagementActionConditions()
- {
+ public List getRecordsManagementActionConditions() {
List result = new ArrayList<>(rmConditions.size());
result.addAll(rmConditions.values());
return Collections.unmodifiableList(result);
@@ -224,12 +223,10 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
* @return List of records management action
*/
@SuppressWarnings("unused")
- public List getDispositionActions(NodeRef nodeRef)
- {
+ public List getDispositionActions(NodeRef nodeRef) {
List result = new ArrayList<>(this.rmActions.size());
- for (RecordsManagementAction action : this.rmActions.values())
- {
+ for (RecordsManagementAction action : this.rmActions.values()) {
// TODO check the permissions on the action ...
}
@@ -239,8 +236,7 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
/**
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#getDispositionActions()
*/
- public List getDispositionActions()
- {
+ public List getDispositionActions() {
List result = new ArrayList<>(dispositionActions.size());
result.addAll(dispositionActions.values());
return Collections.unmodifiableList(result);
@@ -249,65 +245,50 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
/**
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#getDispositionAction(java.lang.String)
*/
- public RecordsManagementAction getDispositionAction(String name)
- {
+ public RecordsManagementAction getDispositionAction(String name) {
return dispositionActions.get(name);
}
/**
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#getRecordsManagementAction(java.lang.String)
*/
- public RecordsManagementAction getRecordsManagementAction(String name)
- {
+ public RecordsManagementAction getRecordsManagementAction(String name) {
return this.rmActions.get(name);
}
/**
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#executeRecordsManagementAction(org.alfresco.service.cmr.repository.NodeRef, java.lang.String)
*/
- public RecordsManagementActionResult executeRecordsManagementAction(NodeRef nodeRef, String name)
- {
+ public RecordsManagementActionResult executeRecordsManagementAction(NodeRef nodeRef, String name) {
return executeRecordsManagementAction(nodeRef, name, null);
}
/**
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#executeRecordsManagementAction(java.util.List, java.lang.String)
*/
- public Map executeRecordsManagementAction(List nodeRefs, String name)
- {
+ public Map executeRecordsManagementAction(List nodeRefs, String name) {
return executeRecordsManagementAction(nodeRefs, name, null);
}
/**
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#executeRecordsManagementAction(org.alfresco.service.cmr.repository.NodeRef, java.lang.String, java.util.Map)
*/
- public RecordsManagementActionResult executeRecordsManagementAction(NodeRef nodeRef, String name, Map parameters)
- {
- if (logger.isDebugEnabled())
- {
- logger.debug("Executing record management action on " + nodeRef);
- logger.debug(" actionName = " + name);
- logger.debug(" parameters = " + parameters);
- }
+ public RecordsManagementActionResult executeRecordsManagementAction(NodeRef nodeRef, String name, Map parameters) {
+ log.debug("Executing record management action on " + nodeRef);
+ log.debug(" actionName = " + name);
+ log.debug(" parameters = " + parameters);
RecordsManagementAction rmAction = this.rmActions.get(name);
- if (rmAction == null)
- {
+ if (rmAction == null) {
String msg = I18NUtil.getMessage(MSG_NOT_DEFINED, name);
- if (logger.isWarnEnabled())
- {
- logger.warn(msg);
- }
+ log.warn(msg);
throw new AlfrescoRuntimeException(msg);
}
- if (dispositionService.isFrozenOrHasFrozenChildren(nodeRef) && retentionActions.contains(name.toLowerCase())) {
- String msg = I18NUtil.getMessage(MSG_NODE_FROZEN, rmAction.getName());
+ if (freezeService.isFrozenOrHasFrozenChildren(nodeRef) && retentionActions.contains(name.toLowerCase())) {
+ String msg = I18NUtil.getMessage(MSG_NODE_FROZEN, name);
- if (logger.isDebugEnabled())
- {
- logger.debug(msg);
- }
+ log.debug(msg);
throw new AlfrescoRuntimeException(msg);
}
@@ -315,8 +296,7 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
// Execute action
invokeBeforeRMActionExecution(nodeRef, name, parameters);
RecordsManagementActionResult result = rmAction.execute(nodeRef, parameters);
- if (getNodeService().exists(nodeRef))
- {
+ if (getNodeService().exists(nodeRef)) {
invokeOnRMActionExecution(nodeRef, name, parameters);
}
@@ -326,22 +306,15 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
/**
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#executeRecordsManagementAction(java.lang.String, java.util.Map)
*/
- public RecordsManagementActionResult executeRecordsManagementAction(String name, Map parameters)
- {
+ public RecordsManagementActionResult executeRecordsManagementAction(String name, Map parameters) {
RecordsManagementAction rmAction = rmActions.get(name);
NodeRef implicitTargetNode = rmAction.getImplicitTargetNodeRef();
- if (implicitTargetNode == null)
- {
+ if (implicitTargetNode == null) {
String msg = I18NUtil.getMessage(MSG_NO_IMPLICIT_NODEREF, name);
- if (logger.isWarnEnabled())
- {
- logger.warn(msg);
- }
+ log.warn(msg);
throw new AlfrescoRuntimeException(msg);
- }
- else
- {
+ } else {
return this.executeRecordsManagementAction(implicitTargetNode, name, parameters);
}
}
@@ -349,12 +322,10 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
/**
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#executeRecordsManagementAction(java.util.List, java.lang.String, java.util.Map)
*/
- public Map executeRecordsManagementAction(List nodeRefs, String name, Map parameters)
- {
+ public Map executeRecordsManagementAction(List nodeRefs, String name, Map parameters) {
// Execute the action on each node in the list
Map results = new HashMap<>(nodeRefs.size());
- for (NodeRef nodeRef : nodeRefs)
- {
+ for (NodeRef nodeRef : nodeRefs) {
RecordsManagementActionResult result = executeRecordsManagementAction(nodeRef, name, parameters);
results.put(nodeRef, result);
}
diff --git a/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionService.java b/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionService.java
index f307a62927..4c71ac55e5 100644
--- a/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionService.java
+++ b/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionService.java
@@ -289,11 +289,4 @@ public interface DispositionService
*/
void recalculateNextDispositionStep(NodeRef record);
- /**
- * Check given node or its children are frozen
- * The node should be record or record folder for retention schedule
- *
- * @param nodeRef
- */
- boolean isFrozenOrHasFrozenChildren(NodeRef nodeRef);
}
diff --git a/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java b/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java
index b4684e4869..d8675595f1 100644
--- a/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java
+++ b/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java
@@ -45,7 +45,6 @@ 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;
@@ -116,9 +115,6 @@ public class DispositionServiceImpl extends ServiceBaseImpl
/** Record Service */
private RecordService recordService;
- /** Freeze Service */
- private FreezeService freezeService;
-
/** Transaction service */
private TransactionService transactionService;
@@ -191,14 +187,6 @@ public class DispositionServiceImpl extends ServiceBaseImpl
this.recordService = recordService;
}
- /**
- * @param freezeService freeze service
- */
- public void setFreezeService(FreezeService freezeService)
- {
- this.freezeService = freezeService;
- }
-
/**
* @param transactionService transaction service
*/
@@ -1469,23 +1457,4 @@ public class DispositionServiceImpl extends ServiceBaseImpl
newDispositionActionName, newDispositionActionDateAsOf, WriteMode.DATE_AND_NAME);
}
- /**
- * 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
- */
- @Override
- public boolean isFrozenOrHasFrozenChildren(NodeRef nodeRef)
- {
- if (recordFolderService.isRecordFolder(nodeRef))
- {
- return freezeService.isFrozen(nodeRef) || freezeService.hasFrozenChildren(nodeRef);
- }
- else if (recordService.isRecord(nodeRef))
- {
- return freezeService.isFrozen(nodeRef);
- }
- return Boolean.FALSE;
- }
}
diff --git a/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/freeze/FreezeService.java b/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/freeze/FreezeService.java
index eb9f8a1c7a..bbd84ea295 100644
--- a/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/freeze/FreezeService.java
+++ b/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/freeze/FreezeService.java
@@ -150,4 +150,12 @@ public interface FreezeService
*/
@Deprecated
Set getHolds(NodeRef filePlan);
+
+ /**
+ * Check given node or its children are frozen
+ * The node should be record or record folder for retention schedule
+ *
+ * @param nodeRef
+ */
+ boolean isFrozenOrHasFrozenChildren(NodeRef nodeRef);
}
diff --git a/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/freeze/FreezeServiceImpl.java b/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/freeze/FreezeServiceImpl.java
index 9f77ed6121..4a679b4460 100644
--- a/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/freeze/FreezeServiceImpl.java
+++ b/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/freeze/FreezeServiceImpl.java
@@ -43,6 +43,8 @@ import org.alfresco.model.ContentModel;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.hold.HoldService;
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;
import org.alfresco.module.org_alfresco_module_rm.util.ServiceBaseImpl;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
@@ -62,48 +64,73 @@ import org.springframework.extensions.surf.util.I18NUtil;
* @author Tuna Aksoy
* @since 2.1
*/
-public class FreezeServiceImpl extends ServiceBaseImpl
- implements FreezeService,
- RecordsManagementModel
-{
- /** I18N */
+public class FreezeServiceImpl extends ServiceBaseImpl
+ implements FreezeService,
+ RecordsManagementModel {
+ /**
+ * I18N
+ */
private static final String MSG_HOLD_NAME = "rm.hold.name";
- /** File Plan Service */
+ /**
+ * File Plan Service
+ */
private FilePlanService filePlanService;
- /** Hold service */
+ /**
+ * Hold service
+ */
private HoldService holdService;
+ /**
+ * Record Folder Service
+ */
+ private RecordFolderService recordFolderService;
+
+ /**
+ * Record Service
+ */
+ private RecordService recordService;
+
+ /**
+ * @param recordFolderService record folder service
+ */
+ public void setRecordFolderService(RecordFolderService recordFolderService) {
+ this.recordFolderService = recordFolderService;
+ }
+
+ /**
+ * @param recordService record service
+ */
+ public void setRecordService(RecordService recordService) {
+ this.recordService = recordService;
+ }
+
/**
* @return File plan service
*/
- protected FilePlanService getFilePlanService()
- {
+ protected FilePlanService getFilePlanService() {
return this.filePlanService;
}
/**
* @return Hold service
*/
- protected HoldService getHoldService()
- {
+ protected HoldService getHoldService() {
return this.holdService;
}
/**
* @param filePlanService file plan service
*/
- public void setFilePlanService(FilePlanService filePlanService)
- {
+ public void setFilePlanService(FilePlanService filePlanService) {
this.filePlanService = filePlanService;
}
/**
* @param holdService hold service
*/
- public void setHoldService(HoldService holdService)
- {
+ public void setHoldService(HoldService holdService) {
this.holdService = holdService;
}
@@ -111,8 +138,7 @@ public class FreezeServiceImpl extends ServiceBaseImpl
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#isFrozen(org.alfresco.service.cmr.repository.NodeRef)
*/
@Override
- public boolean isFrozen(NodeRef nodeRef)
- {
+ public boolean isFrozen(NodeRef nodeRef) {
ParameterCheck.mandatory("nodeRef", nodeRef);
return nodeService.hasAspect(nodeRef, ASPECT_FROZEN);
@@ -127,19 +153,17 @@ public class FreezeServiceImpl extends ServiceBaseImpl
*/
@Override
@Deprecated
- public Set getFrozen(NodeRef hold)
- {
+ public Set getFrozen(NodeRef hold) {
return new HashSet<>(getHoldService().getHeld(hold));
}
/**
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#freeze(java.lang.String,
- * org.alfresco.service.cmr.repository.NodeRef)
+ * org.alfresco.service.cmr.repository.NodeRef)
*/
@Override
@Deprecated
- public NodeRef freeze(String reason, NodeRef nodeRef)
- {
+ public NodeRef freeze(String reason, NodeRef nodeRef) {
NodeRef hold = createHold(nodeRef, reason);
getHoldService().addToHold(hold, nodeRef);
return hold;
@@ -147,12 +171,11 @@ public class FreezeServiceImpl extends ServiceBaseImpl
/**
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#freeze(org.alfresco.service.cmr.repository.NodeRef,
- * org.alfresco.service.cmr.repository.NodeRef)
+ * org.alfresco.service.cmr.repository.NodeRef)
*/
@Override
@Deprecated
- public void freeze(NodeRef hold, NodeRef nodeRef)
- {
+ public void freeze(NodeRef hold, NodeRef nodeRef) {
ParameterCheck.mandatory("hold", hold);
ParameterCheck.mandatory("nodeRef", nodeRef);
@@ -161,15 +184,13 @@ public class FreezeServiceImpl extends ServiceBaseImpl
/**
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#freeze(java.lang.String,
- * java.util.Set)
+ * java.util.Set)
*/
@Override
@Deprecated
- public NodeRef freeze(String reason, Set nodeRefs)
- {
+ public NodeRef freeze(String reason, Set nodeRefs) {
NodeRef hold = null;
- if (!nodeRefs.isEmpty())
- {
+ if (!nodeRefs.isEmpty()) {
final List list = new ArrayList<>(nodeRefs);
hold = createHold(list.get(0), reason);
getHoldService().addToHold(hold, list);
@@ -179,17 +200,15 @@ public class FreezeServiceImpl extends ServiceBaseImpl
/**
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#freeze(org.alfresco.service.cmr.repository.NodeRef,
- * java.util.Set)
+ * java.util.Set)
*/
@Override
@Deprecated
- public void freeze(NodeRef hold, Set nodeRefs)
- {
+ public void freeze(NodeRef hold, Set nodeRefs) {
ParameterCheck.mandatory("hold", hold);
ParameterCheck.mandatoryCollection("nodeRefs", nodeRefs);
- for (NodeRef nodeRef : nodeRefs)
- {
+ for (NodeRef nodeRef : nodeRefs) {
freeze(hold, nodeRef);
}
}
@@ -199,11 +218,9 @@ public class FreezeServiceImpl extends ServiceBaseImpl
*/
@Override
@Deprecated
- public void unFreeze(NodeRef nodeRef)
- {
+ public void unFreeze(NodeRef nodeRef) {
List holds = getHoldService().heldBy(nodeRef, true);
- for (NodeRef hold : holds)
- {
+ for (NodeRef hold : holds) {
getHoldService().removeFromHold(hold, nodeRef);
}
}
@@ -213,12 +230,10 @@ public class FreezeServiceImpl extends ServiceBaseImpl
*/
@Override
@Deprecated
- public void unFreeze(Set nodeRefs)
- {
+ public void unFreeze(Set nodeRefs) {
ParameterCheck.mandatoryCollection("nodeRefs", nodeRefs);
- for (NodeRef nodeRef : nodeRefs)
- {
+ for (NodeRef nodeRef : nodeRefs) {
unFreeze(nodeRef);
}
}
@@ -228,8 +243,7 @@ public class FreezeServiceImpl extends ServiceBaseImpl
*/
@Override
@Deprecated
- public void relinquish(NodeRef hold)
- {
+ public void relinquish(NodeRef hold) {
getHoldService().deleteHold(hold);
}
@@ -238,19 +252,17 @@ public class FreezeServiceImpl extends ServiceBaseImpl
*/
@Override
@Deprecated
- public String getReason(NodeRef hold)
- {
+ public String getReason(NodeRef hold) {
return getHoldService().getHoldReason(hold);
}
/**
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#updateReason(org.alfresco.service.cmr.repository.NodeRef,
- * java.lang.String)
+ * java.lang.String)
*/
@Override
@Deprecated
- public void updateReason(NodeRef hold, String reason)
- {
+ public void updateReason(NodeRef hold, String reason) {
getHoldService().setHoldReason(hold, reason);
}
@@ -258,8 +270,7 @@ public class FreezeServiceImpl extends ServiceBaseImpl
* @see org.alfresco.module.org_alfresco_module_rm.hold.HoldService#getHolds(NodeRef)
*/
@Override
- public Set getHolds(NodeRef filePlan)
- {
+ public Set getHolds(NodeRef filePlan) {
ParameterCheck.mandatory("filePlan", filePlan);
return new HashSet<>(getHoldService().getHolds(filePlan));
@@ -269,60 +280,48 @@ public class FreezeServiceImpl extends ServiceBaseImpl
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#hasFrozenChildren(org.alfresco.service.cmr.repository.NodeRef)
*/
@Override
- public boolean hasFrozenChildren(final NodeRef nodeRef)
- {
+ public boolean hasFrozenChildren(final NodeRef nodeRef) {
ParameterCheck.mandatory("nodeRef", nodeRef);
boolean result = false;
// check that we are dealing with a record folder or a collaboration folder
if (isRecordFolder(nodeRef) ||
- (instanceOf(nodeRef, TYPE_FOLDER) && !nodeService.hasAspect(nodeRef, ASPECT_SITE_CONTAINER)))
- {
+ (instanceOf(nodeRef, TYPE_FOLDER) && !nodeService.hasAspect(nodeRef, ASPECT_SITE_CONTAINER))) {
int heldCount = 0;
- if (nodeService.hasAspect(nodeRef, ASPECT_HELD_CHILDREN))
- {
- heldCount = (Integer)getInternalNodeService().getProperty(nodeRef, PROP_HELD_CHILDREN_COUNT);
- }
- else
- {
- final TransactionService transactionService = (TransactionService)applicationContext.getBean("transactionService");
+ if (nodeService.hasAspect(nodeRef, ASPECT_HELD_CHILDREN)) {
+ heldCount = (Integer) getInternalNodeService().getProperty(nodeRef, PROP_HELD_CHILDREN_COUNT);
+ } else {
+ final TransactionService transactionService = (TransactionService) applicationContext.getBean("transactionService");
- heldCount = AuthenticationUtil.runAsSystem(new RunAsWork()
- {
+ heldCount = AuthenticationUtil.runAsSystem(new RunAsWork() {
@Override
- public Integer doWork()
- {
- return transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback()
- {
- public Integer execute() throws Throwable
- {
- int heldCount = 0;
+ public Integer doWork() {
+ return transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() {
+ public Integer execute() throws Throwable {
+ int heldCount = 0;
- // NOTE: this process remains to 'patch' older systems to improve performance next time around
- List childAssocs = getInternalNodeService().getChildAssocs(nodeRef, ContentModel.ASSOC_CONTAINS, null);
- if (childAssocs != null && !childAssocs.isEmpty())
- {
- for (ChildAssociationRef childAssociationRef : childAssocs)
- {
- final NodeRef childRef = childAssociationRef.getChildRef();
- if (childAssociationRef.isPrimary() && isFrozen(childRef))
- {
- heldCount ++;
- }
- }
- }
+ // NOTE: this process remains to 'patch' older systems to improve performance next time around
+ List childAssocs = getInternalNodeService().getChildAssocs(nodeRef, ContentModel.ASSOC_CONTAINS, null);
+ if (childAssocs != null && !childAssocs.isEmpty()) {
+ for (ChildAssociationRef childAssociationRef : childAssocs) {
+ final NodeRef childRef = childAssociationRef.getChildRef();
+ if (childAssociationRef.isPrimary() && isFrozen(childRef)) {
+ heldCount++;
+ }
+ }
+ }
- // add aspect and set count
- Map props = new HashMap<>(1);
- props.put(PROP_HELD_CHILDREN_COUNT, heldCount);
- getInternalNodeService().addAspect(nodeRef, ASPECT_HELD_CHILDREN, props);
+ // add aspect and set count
+ Map props = new HashMap<>(1);
+ props.put(PROP_HELD_CHILDREN_COUNT, heldCount);
+ getInternalNodeService().addAspect(nodeRef, ASPECT_HELD_CHILDREN, props);
- return heldCount;
- }
- },
- false, true);
+ return heldCount;
+ }
+ },
+ false, true);
}
});
}
@@ -338,14 +337,14 @@ public class FreezeServiceImpl extends ServiceBaseImpl
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#getFreezeDate(org.alfresco.service.cmr.repository.NodeRef)
*/
@Override
- public Date getFreezeDate(NodeRef nodeRef)
- {
+ public Date getFreezeDate(NodeRef nodeRef) {
ParameterCheck.mandatory("nodeRef", nodeRef);
- if (isFrozen(nodeRef))
- {
+ if (isFrozen(nodeRef)) {
Serializable property = nodeService.getProperty(nodeRef, PROP_FROZEN_AT);
- if (property != null) { return (Date) property; }
+ if (property != null) {
+ return (Date) property;
+ }
}
return null;
@@ -355,14 +354,14 @@ public class FreezeServiceImpl extends ServiceBaseImpl
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#getFreezeInitiator(org.alfresco.service.cmr.repository.NodeRef)
*/
@Override
- public String getFreezeInitiator(NodeRef nodeRef)
- {
+ public String getFreezeInitiator(NodeRef nodeRef) {
ParameterCheck.mandatory("nodeRef", nodeRef);
- if (isFrozen(nodeRef))
- {
+ if (isFrozen(nodeRef)) {
Serializable property = nodeService.getProperty(nodeRef, PROP_FROZEN_BY);
- if (property != null) { return (String) property; }
+ if (property != null) {
+ return (String) property;
+ }
}
return null;
@@ -376,11 +375,10 @@ public class FreezeServiceImpl extends ServiceBaseImpl
* Creates a hold using the given nodeRef and reason
*
* @param nodeRef the nodeRef which will be frozen
- * @param reason the reason why the record will be frozen
+ * @param reason the reason why the record will be frozen
* @return NodeRef of the created hold
*/
- private NodeRef createHold(NodeRef nodeRef, String reason)
- {
+ private NodeRef createHold(NodeRef nodeRef, String reason) {
// get the hold container
final NodeRef filePlan = getFilePlanService().getFilePlan(nodeRef);
NodeRef holdContainer = getFilePlanService().getHoldContainer(filePlan);
@@ -392,4 +390,20 @@ public class FreezeServiceImpl extends ServiceBaseImpl
// create hold
return getHoldService().createHold(filePlan, holdName, reason, null);
}
+
+ /**
+ * 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
+ */
+ @Override
+ public boolean isFrozenOrHasFrozenChildren(NodeRef nodeRef) {
+ if (recordFolderService.isRecordFolder(nodeRef)) {
+ return isFrozen(nodeRef) || hasFrozenChildren(nodeRef);
+ } else if (recordService.isRecord(nodeRef)) {
+ return isFrozen(nodeRef);
+ }
+ return Boolean.FALSE;
+ }
}
diff --git a/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuter.java b/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuter.java
index 49f8fe5272..0f19f3af4d 100644
--- a/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuter.java
+++ b/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuter.java
@@ -33,8 +33,11 @@ import java.io.Serializable;
import java.util.List;
import java.util.Map;
+import lombok.extern.slf4j.Slf4j;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService;
+
+import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
@@ -44,8 +47,8 @@ import org.alfresco.service.cmr.search.ResultSet;
import org.alfresco.service.cmr.search.SearchParameters;
import org.alfresco.service.cmr.search.SearchService;
import org.alfresco.service.cmr.security.PersonService;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import org.springframework.extensions.surf.util.I18NUtil;
+
/**
* The Disposition Lifecycle Job Finds all disposition action nodes which are for disposition actions specified Where
@@ -54,69 +57,88 @@ import org.apache.commons.logging.LogFactory;
* @author mrogers
* @author Roy Wetherall
*/
-public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecuter
-{
- /** logger */
- private static final Log logger = LogFactory.getLog(DispositionLifecycleJobExecuter.class);
-
- /** batching properties */
+@Slf4j
+public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecuter {
+ /**
+ * batching properties
+ */
private int batchSize;
public static final int DEFAULT_BATCH_SIZE = 500;
+ private static final String MSG_NODE_FROZEN = "rm.action.node.frozen.error-message";
- /** list of disposition actions to automatically execute */
+ /**
+ * list of disposition actions to automatically execute
+ */
private List dispositionActions;
- /** query string */
+ /**
+ * query string
+ */
private String query;
- /** records management action service */
+ /**
+ * records management action service
+ */
private RecordsManagementActionService recordsManagementActionService;
- /** node service */
+ /**
+ * node service
+ */
private NodeService nodeService;
- /** search service */
+ /**
+ * search service
+ */
private SearchService searchService;
- /** person service */
+ /**
+ * person service
+ */
private PersonService personService;
+ /**
+ * Freeze Service
+ */
+ private FreezeService freezeService;
+
+ /**
+ * @param freezeService freeze service
+ */
+ public void setFreezeService(FreezeService freezeService) {
+ this.freezeService = freezeService;
+ }
+
/**
* List of disposition actions to automatically execute when eligible.
*
* @param dispositionActions disposition actions
*/
- public void setDispositionActions(List dispositionActions)
- {
+ public void setDispositionActions(List dispositionActions) {
this.dispositionActions = dispositionActions;
}
- public void setBatchSize(int batchSize)
- {
+ public void setBatchSize(int batchSize) {
this.batchSize = batchSize;
}
/**
* @param recordsManagementActionService records management action service
*/
- public void setRecordsManagementActionService(RecordsManagementActionService recordsManagementActionService)
- {
+ public void setRecordsManagementActionService(RecordsManagementActionService recordsManagementActionService) {
this.recordsManagementActionService = recordsManagementActionService;
}
/**
* @param nodeService node service
*/
- public void setNodeService(NodeService nodeService)
- {
+ public void setNodeService(NodeService nodeService) {
this.nodeService = nodeService;
}
/**
* @param searchService search service
*/
- public void setSearchService(SearchService searchService)
- {
+ public void setSearchService(SearchService searchService) {
this.searchService = searchService;
}
@@ -125,24 +147,18 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
*
* @return job query string
*/
- protected String getQuery()
- {
- if (query == null)
- {
+ protected String getQuery() {
+ if (query == null) {
StringBuilder sb = new StringBuilder();
sb.append("TYPE:\"rma:dispositionAction\" AND ");
sb.append("(@rma\\:dispositionAction:(");
boolean bFirst = true;
- for (String dispositionAction : dispositionActions)
- {
- if (bFirst)
- {
+ for (String dispositionAction : dispositionActions) {
+ if (bFirst) {
bFirst = false;
- }
- else
- {
+ } else {
sb.append(" OR ");
}
@@ -166,36 +182,26 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
* @see org.alfresco.module.org_alfresco_module_rm.job.RecordsManagementJobExecuter#execute()
*/
@Override
- public void executeImpl()
- {
- try
- {
- logger.debug("Job Starting");
+ public void executeImpl() {
+ try {
+ log.debug("Job Starting");
- if (dispositionActions == null || dispositionActions.isEmpty())
- {
- logger.debug("Job Finished as disposition action is empty");
+ if (dispositionActions == null || dispositionActions.isEmpty()) {
+ log.debug("Job Finished as disposition action is empty");
return;
}
boolean hasMore = true;
int skipCount = 0;
- if (batchSize < 1)
- {
- if (logger.isDebugEnabled())
- {
- logger.debug("Invalid value for batch size: " + batchSize + " default value used instead.");
- }
+ if (batchSize < 1) {
+ log.debug("Invalid value for batch size: " + batchSize + " default value used instead.");
batchSize = DEFAULT_BATCH_SIZE;
}
- if (logger.isTraceEnabled())
- {
- logger.trace("Using batch size of " + batchSize);
- }
- while (hasMore)
- {
+ log.trace("Using batch size of " + batchSize);
+
+ while (hasMore) {
SearchParameters params = new SearchParameters();
params.addStore(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE);
params.setLanguage(SearchService.LANGUAGE_FTS_ALFRESCO);
@@ -210,25 +216,16 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
skipCount += resultNodes.size(); // increase by page size
results.close();
- if (logger.isDebugEnabled())
- {
- logger.debug("Processing " + resultNodes.size() + " nodes");
- }
+ log.debug("Processing " + resultNodes.size() + " nodes");
// process search results
- if (!resultNodes.isEmpty())
- {
+ if (!resultNodes.isEmpty()) {
executeAction(resultNodes);
}
}
- logger.debug("Job Finished");
- }
- catch (AlfrescoRuntimeException exception)
- {
- if (logger.isDebugEnabled())
- {
- logger.debug(exception);
- }
+ log.debug("Job Finished");
+ } catch (AlfrescoRuntimeException exception) {
+ log.debug(exception.getMessage());
}
}
@@ -237,48 +234,41 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
*
* @param actionNodes - the disposition actions to execute
*/
- private void executeAction(final List actionNodes)
- {
+ private void executeAction(final List actionNodes) {
RetryingTransactionCallback processTranCB = () -> {
- for (NodeRef actionNode : actionNodes)
- {
- if (!nodeService.exists(actionNode))
- {
+ for (NodeRef actionNode : actionNodes) {
+ if (!nodeService.exists(actionNode)) {
continue;
}
final String dispAction = (String) nodeService.getProperty(actionNode, PROP_DISPOSITION_ACTION);
// Run disposition action
- if (dispAction == null || !dispositionActions.contains(dispAction))
- {
+ if (dispAction == null || !dispositionActions.contains(dispAction)) {
continue;
}
ChildAssociationRef parent = nodeService.getPrimaryParent(actionNode);
- if (!parent.getTypeQName().equals(ASSOC_NEXT_DISPOSITION_ACTION))
- {
+ if (!parent.getTypeQName().equals(ASSOC_NEXT_DISPOSITION_ACTION)) {
continue;
}
Map props = Map.of(PARAM_NO_ERROR_CHECK, false);
- try
- {
+ if (freezeService.isFrozenOrHasFrozenChildren(parent.getParentRef())) {
+ log.debug(I18NUtil.getMessage(MSG_NODE_FROZEN, dispAction));
+ continue;
+ }
+
+ try {
// execute disposition action
recordsManagementActionService
- .executeRecordsManagementAction(parent.getParentRef(), dispAction, props);
+ .executeRecordsManagementAction(parent.getParentRef(), dispAction, props);
+
+ log.debug("Processed action: " + dispAction + "on" + parent);
+
+ } catch (AlfrescoRuntimeException exception) {
+ log.debug(exception.getMessage());
- if (logger.isDebugEnabled())
- {
- logger.debug("Processed action: " + dispAction + "on" + parent);
- }
- }
- catch (AlfrescoRuntimeException exception)
- {
- if (logger.isDebugEnabled())
- {
- logger.debug(exception);
- }
}
}
return Boolean.TRUE;
@@ -286,13 +276,11 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
retryingTransactionHelper.doInTransaction(processTranCB, false, true);
}
- public PersonService getPersonService()
- {
+ public PersonService getPersonService() {
return personService;
}
- public void setPersonService(PersonService personService)
- {
+ public void setPersonService(PersonService personService) {
this.personService = personService;
}
}
diff --git a/amps/ags/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/FreezeServiceImplTest.java b/amps/ags/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/FreezeServiceImplTest.java
index 870cce7038..925ea68ce4 100644
--- a/amps/ags/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/FreezeServiceImplTest.java
+++ b/amps/ags/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/FreezeServiceImplTest.java
@@ -41,232 +41,236 @@ import org.alfresco.service.cmr.repository.NodeRef;
* @author Tuna Aksoy
* @since 2.1
*/
-public class FreezeServiceImplTest extends BaseRMTestCase
-{
+public class FreezeServiceImplTest extends BaseRMTestCase {
private List holdAssocs;
@Override
- protected boolean isRecordTest()
- {
+ protected boolean isRecordTest() {
return true;
}
- /**
- * Test freeze service methods.
- *
- * @deprecated as of 2.2
- */
- public void testFreezeService() throws Exception
- {
+ /**
+ * Test freeze service methods.
+ *
+ * @deprecated as of 2.2
+ */
+ public void testFreezeService() throws Exception {
- doTestInTransaction(new Test()
- {
- @Override
- public Void run() throws Exception
- {
- assertTrue(recordService.isRecord(recordOne));
- assertTrue(recordService.isRecord(recordTwo));
- assertTrue(recordService.isRecord(recordThree));
- assertTrue(recordService.isRecord(recordFour));
- assertTrue(filePlanService.isFilePlanComponent(recordOne));
- assertTrue(filePlanService.isFilePlanComponent(recordTwo));
- assertTrue(filePlanService.isFilePlanComponent(recordThree));
- assertTrue(filePlanService.isFilePlanComponent(recordFour));
+ doTestInTransaction(new Test() {
+ @Override
+ public Void run() throws Exception {
+ assertTrue(recordService.isRecord(recordOne));
+ assertTrue(recordService.isRecord(recordTwo));
+ assertTrue(recordService.isRecord(recordThree));
+ assertTrue(recordService.isRecord(recordFour));
+ assertTrue(filePlanService.isFilePlanComponent(recordOne));
+ assertTrue(filePlanService.isFilePlanComponent(recordTwo));
+ assertTrue(filePlanService.isFilePlanComponent(recordThree));
+ assertTrue(filePlanService.isFilePlanComponent(recordFour));
- // Freeze a record
- NodeRef hold101 = holdService.createHold(filePlan, "freezename 101", "FreezeReason", null);
+ // Freeze a record
+ NodeRef hold101 = holdService.createHold(filePlan, "freezename 101", "FreezeReason", null);
- assertNotNull(hold101);
- holdService.addToHold(hold101, recordOne);
+ assertNotNull(hold101);
+ holdService.addToHold(hold101, recordOne);
- //assertTrue(freezeService.hasFrozenChildren(rmFolder));
+ //assertTrue(freezeService.hasFrozenChildren(rmFolder));
- // Check the hold exists
- holdAssocs = holdService.getHolds(filePlan);
- assertNotNull(holdAssocs);
- assertEquals(1, holdAssocs.size());
+ // Check the hold exists
+ holdAssocs = holdService.getHolds(filePlan);
+ assertNotNull(holdAssocs);
+ assertEquals(1, holdAssocs.size());
- NodeRef holdNodeRef = holdAssocs.iterator().next();
+ NodeRef holdNodeRef = holdAssocs.iterator().next();
- assertEquals(holdNodeRef, hold101);
- assertTrue(holdService.isHold(holdNodeRef));
- assertEquals("FreezeReason", holdService.getHoldReason(holdNodeRef));
- List frozenNodes = holdService.getHeld(holdNodeRef);
+ assertEquals(holdNodeRef, hold101);
+ assertTrue(holdService.isHold(holdNodeRef));
+ assertEquals("FreezeReason", holdService.getHoldReason(holdNodeRef));
+ List frozenNodes = holdService.getHeld(holdNodeRef);
- assertNotNull(frozenNodes);
- assertEquals(1, frozenNodes.size());
+ assertNotNull(frozenNodes);
+ assertEquals(1, frozenNodes.size());
- // Check the nodes are frozen
- assertTrue(freezeService.isFrozen(recordOne));
- assertNotNull(freezeService.getFreezeDate(recordOne));
- assertNotNull(freezeService.getFreezeInitiator(recordOne));
- assertFalse(freezeService.isFrozen(recordTwo));
- assertFalse(freezeService.isFrozen(recordThree));
+ // Check the nodes are frozen
+ assertTrue(freezeService.isFrozen(recordOne));
+ assertNotNull(freezeService.getFreezeDate(recordOne));
+ assertNotNull(freezeService.getFreezeInitiator(recordOne));
+ assertFalse(freezeService.isFrozen(recordTwo));
+ assertFalse(freezeService.isFrozen(recordThree));
- // Update the freeze reason
- holdService.setHoldReason(holdNodeRef, "NewFreezeReason");
+ // Update the freeze reason
+ holdService.setHoldReason(holdNodeRef, "NewFreezeReason");
- // Check the hold has been updated
- assertEquals("NewFreezeReason", holdService.getHoldReason(holdNodeRef));
+ // Check the hold has been updated
+ assertEquals("NewFreezeReason", holdService.getHoldReason(holdNodeRef));
- // Freeze a number of records
- List records = new ArrayList<>();
- records.add(recordOne);
- records.add(recordTwo);
- records.add(recordThree);
- NodeRef newHold = holdService.createHold(filePlan, "Hold 102", "Freeze a set of nodes", null);
+ // Freeze a number of records
+ List records = new ArrayList<>();
+ records.add(recordOne);
+ records.add(recordTwo);
+ records.add(recordThree);
+ NodeRef newHold = holdService.createHold(filePlan, "Hold 102", "Freeze a set of nodes", null);
- holdService.addToHold(newHold, records);
- assertNotNull(newHold);
- assertTrue(holdService.isHold(newHold));
+ holdService.addToHold(newHold, records);
+ assertNotNull(newHold);
+ assertTrue(holdService.isHold(newHold));
- // Check the holds exist
- holdAssocs = holdService.getHolds(filePlan);
- assertNotNull(holdAssocs);
- assertEquals(2, holdAssocs.size());
+ // Check the holds exist
+ holdAssocs = holdService.getHolds(filePlan);
+ assertNotNull(holdAssocs);
+ assertEquals(2, holdAssocs.size());
- for (NodeRef hold : holdAssocs)
- {
- String reason = holdService.getHoldReason(hold);
- if (reason.equals("Freeze a set of nodes"))
- {
- assertEquals(newHold, hold);
- frozenNodes = holdService.getHeld(hold);
- assertNotNull(frozenNodes);
- assertEquals(3, frozenNodes.size());
- }
- else if (reason.equals("NewFreezeReason"))
- {
- frozenNodes = holdService.getHeld(hold);
- assertNotNull(frozenNodes);
- assertEquals(1, frozenNodes.size());
- }
- else
- {
- throw new AlfrescoRuntimeException("The reason '" + reason + "' was not found in the existing holds.");
- }
+ for (NodeRef hold : holdAssocs) {
+ String reason = holdService.getHoldReason(hold);
+ if (reason.equals("Freeze a set of nodes")) {
+ assertEquals(newHold, hold);
+ frozenNodes = holdService.getHeld(hold);
+ assertNotNull(frozenNodes);
+ assertEquals(3, frozenNodes.size());
+ } else if (reason.equals("NewFreezeReason")) {
+ frozenNodes = holdService.getHeld(hold);
+ assertNotNull(frozenNodes);
+ assertEquals(1, frozenNodes.size());
+ } else {
+ throw new AlfrescoRuntimeException("The reason '" + reason + "' was not found in the existing holds.");
+ }
+ }
+
+ // Check the nodes are frozen
+ final List testRecords = Arrays.asList(new NodeRef[]{recordOne, recordTwo, recordThree});
+ for (NodeRef nr : testRecords) {
+ assertTrue(freezeService.isFrozen(nr));
+ assertNotNull(freezeService.getFreezeDate(nr));
+ assertNotNull(freezeService.getFreezeInitiator(nr));
+ }
+
+ // Unfreeze a node
+ holdService.removeFromAllHolds(recordThree);
+ // Check the holds
+ holdAssocs = holdService.getHolds(filePlan);
+ assertNotNull(holdAssocs);
+ assertEquals(2, holdAssocs.size());
+ for (NodeRef hold : holdAssocs) {
+ String reason = holdService.getHoldReason(hold);
+ if (reason.equals("Freeze a set of nodes")) {
+ frozenNodes = holdService.getHeld(hold);
+ assertNotNull(frozenNodes);
+ assertEquals(2, frozenNodes.size());
+ } else if (reason.equals("NewFreezeReason")) {
+ frozenNodes = holdService.getHeld(hold);
+ assertNotNull(frozenNodes);
+ assertEquals(1, frozenNodes.size());
+ } else {
+ throw new AlfrescoRuntimeException("The reason '" + reason + "' was not found in the existing holds.");
+ }
+ }
+
+ // Check the nodes are frozen
+ assertTrue(freezeService.isFrozen(recordOne));
+ assertNotNull(freezeService.getFreezeDate(recordOne));
+ assertNotNull(freezeService.getFreezeInitiator(recordOne));
+ assertTrue(freezeService.isFrozen(recordTwo));
+ assertNotNull(freezeService.getFreezeDate(recordTwo));
+ assertNotNull(freezeService.getFreezeInitiator(recordTwo));
+ assertFalse(freezeService.isFrozen(recordThree));
+ assertFalse(freezeService.isFrozen(recordFour));
+ return null;
}
-
- // Check the nodes are frozen
- final List testRecords = Arrays.asList(new NodeRef[]{recordOne, recordTwo, recordThree});
- for (NodeRef nr : testRecords)
- {
- assertTrue(freezeService.isFrozen(nr));
- assertNotNull(freezeService.getFreezeDate(nr));
- assertNotNull(freezeService.getFreezeInitiator(nr));
- }
-
- // Unfreeze a node
- holdService.removeFromAllHolds(recordThree);
- // Check the holds
- holdAssocs = holdService.getHolds(filePlan);
- assertNotNull(holdAssocs);
- assertEquals(2, holdAssocs.size());
- for (NodeRef hold : holdAssocs)
- {
- String reason = holdService.getHoldReason(hold);
- if (reason.equals("Freeze a set of nodes"))
- {
- frozenNodes = holdService.getHeld(hold);
- assertNotNull(frozenNodes);
- assertEquals(2, frozenNodes.size());
- }
- else if (reason.equals("NewFreezeReason"))
- {
- frozenNodes = holdService.getHeld(hold);
- assertNotNull(frozenNodes);
- assertEquals(1, frozenNodes.size());
- }
- else
- {
- throw new AlfrescoRuntimeException("The reason '" + reason + "' was not found in the existing holds.");
- }
- }
-
- // Check the nodes are frozen
- assertTrue(freezeService.isFrozen(recordOne));
- assertNotNull(freezeService.getFreezeDate(recordOne));
- assertNotNull(freezeService.getFreezeInitiator(recordOne));
- assertTrue(freezeService.isFrozen(recordTwo));
- assertNotNull(freezeService.getFreezeDate(recordTwo));
- assertNotNull(freezeService.getFreezeInitiator(recordTwo));
- assertFalse(freezeService.isFrozen(recordThree));
- assertFalse(freezeService.isFrozen(recordFour));
- return null;
- }
- });
+ });
//Splitting transaction to fix onCreateNodePolicy issue where there was a node not found exception
- doTestInTransaction(new Test()
- {
- @Override
- public Void run() throws Exception
- {
- // Relinquish the first hold
- NodeRef holdNodeRef = holdAssocs.iterator().next();
- holdService.deleteHold(holdNodeRef);
+ doTestInTransaction(new Test() {
+ @Override
+ public Void run() throws Exception {
+ // Relinquish the first hold
+ NodeRef holdNodeRef = holdAssocs.iterator().next();
+ holdService.deleteHold(holdNodeRef);
- // Check the existing hold
- holdAssocs = holdService.getHolds(filePlan);
- assertNotNull(holdAssocs);
- assertEquals(1, holdAssocs.size());
+ // Check the existing hold
+ holdAssocs = holdService.getHolds(filePlan);
+ assertNotNull(holdAssocs);
+ assertEquals(1, holdAssocs.size());
- // Relinquish the second hold
- holdNodeRef = holdAssocs.iterator().next();
- holdService.removeFromAllHolds(holdService.getHeld(holdNodeRef));
+ // Relinquish the second hold
+ holdNodeRef = holdAssocs.iterator().next();
+ holdService.removeFromAllHolds(holdService.getHeld(holdNodeRef));
- // hold is not automatically removed
- holdAssocs = holdService.getHolds(filePlan);
- assertEquals(1, holdAssocs.size());
-
- // delete hold
- holdService.deleteHold(holdNodeRef);
+ // hold is not automatically removed
+ holdAssocs = holdService.getHolds(filePlan);
+ assertEquals(1, holdAssocs.size());
- holdAssocs = holdService.getHolds(filePlan);
- assertEquals(0, holdAssocs.size());
+ // delete hold
+ holdService.deleteHold(holdNodeRef);
- // Check the nodes are unfrozen
- assertFalse(freezeService.isFrozen(recordOne));
- assertFalse(freezeService.isFrozen(recordTwo));
- assertFalse(freezeService.isFrozen(recordThree));
- assertFalse(freezeService.isFrozen(recordFour));
- //assertFalse(freezeService.hasFrozenChildren(rmFolder));
+ holdAssocs = holdService.getHolds(filePlan);
+ assertEquals(0, holdAssocs.size());
- // Test freezing nodes, adding them to an existing hold
- NodeRef hold = holdService.createHold(filePlan, "hold 1", "AnotherFreezeReason", "description");
- holdService.addToHold(hold, recordFour);
- holdService.addToHold(hold, recordOne);
- List nodes = new ArrayList<>();
- nodes.add(recordTwo);
- nodes.add(recordThree);
- holdService.addToHold(hold, nodes);
- //assertTrue(freezeService.hasFrozenChildren(rmFolder));
- // Check the hold
- holdAssocs = holdService.getHolds(filePlan);
- assertNotNull(holdAssocs);
- assertEquals(1, holdAssocs.size());
- return null;
- }
- });
- //Splitting transaction to fix onCreateNodePolicy issue where there was a node not found exception
- doTestInTransaction(new Test()
- {
- @Override
- public Void run() throws Exception
- {
- // Relinquish the first hold
- holdService.deleteHold(holdAssocs.iterator().next());
+ // Check the nodes are unfrozen
+ assertFalse(freezeService.isFrozen(recordOne));
+ assertFalse(freezeService.isFrozen(recordTwo));
+ assertFalse(freezeService.isFrozen(recordThree));
+ assertFalse(freezeService.isFrozen(recordFour));
+ //assertFalse(freezeService.hasFrozenChildren(rmFolder));
- // Check the nodes are unfrozen
- assertFalse(freezeService.isFrozen(recordOne));
- assertFalse(freezeService.isFrozen(recordTwo));
- assertFalse(freezeService.isFrozen(recordThree));
- assertFalse(freezeService.isFrozen(recordFour));
- // assertFalse(freezeService.hasFrozenChildren(rmFolder));
+ // Test freezing nodes, adding them to an existing hold
+ NodeRef hold = holdService.createHold(filePlan, "hold 1", "AnotherFreezeReason", "description");
+ holdService.addToHold(hold, recordFour);
+ holdService.addToHold(hold, recordOne);
+ List nodes = new ArrayList<>();
+ nodes.add(recordTwo);
+ nodes.add(recordThree);
+ holdService.addToHold(hold, nodes);
+ //assertTrue(freezeService.hasFrozenChildren(rmFolder));
+ // Check the hold
+ holdAssocs = holdService.getHolds(filePlan);
+ assertNotNull(holdAssocs);
+ assertEquals(1, holdAssocs.size());
+ return null;
+ }
+ });
+ //Splitting transaction to fix onCreateNodePolicy issue where there was a node not found exception
+ doTestInTransaction(new Test() {
+ @Override
+ public Void run() throws Exception {
+ // Relinquish the first hold
+ holdService.deleteHold(holdAssocs.iterator().next());
- return null;
- }
- });
- }
+ // Check the nodes are unfrozen
+ assertFalse(freezeService.isFrozen(recordOne));
+ assertFalse(freezeService.isFrozen(recordTwo));
+ assertFalse(freezeService.isFrozen(recordThree));
+ assertFalse(freezeService.isFrozen(recordFour));
+ // assertFalse(freezeService.hasFrozenChildren(rmFolder));
+
+ return null;
+ }
+ });
+
+ doTestInTransaction(new Test() {
+ @Override
+ public Void run() throws Exception {
+ NodeRef hold101 = holdService.createHold(filePlan, "freezename 101", "FreezeReason", null);
+ // Freeze a record folder
+ assertNotNull(hold101);
+ holdService.addToHold(hold101, rmFolder);
+ assertTrue(recordFolderService.isRecordFolder(rmFolder));
+ assertTrue(freezeService.isFrozenOrHasFrozenChildren(rmFolder));
+ return null;
+ }
+ });
+
+ doTestInTransaction(new Test() {
+ @Override
+ public Void run() throws Exception {
+ NodeRef hold101 = holdService.createHold(filePlan, "freezename 101", "FreezeReason", null);
+ // Freeze a record inside a record folder
+ assertNotNull(hold101);
+ holdService.addToHold(hold101, recordThree);
+ assertTrue(recordService.isRecord(rmFolder));
+ assertTrue(freezeService.isFrozenOrHasFrozenChildren(rmFolder));
+ return null;
+ }
+ });
+ }
}
diff --git a/amps/module-info.java b/amps/module-info.java
new file mode 100644
index 0000000000..669eda1dd7
--- /dev/null
+++ b/amps/module-info.java
@@ -0,0 +1,5 @@
+module simple.lombok {
+ requires static lombok;
+ requires java.logging;
+
+}
\ No newline at end of file