diff --git a/amps/ags/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/hold/PreventActionsOnFrozenContentTests.java b/amps/ags/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/hold/PreventActionsOnFrozenContentTests.java
index 62926a3930..f36627241e 100644
--- a/amps/ags/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/hold/PreventActionsOnFrozenContentTests.java
+++ b/amps/ags/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/hold/PreventActionsOnFrozenContentTests.java
@@ -67,7 +67,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
-
+import static org.apache.commons.httpclient.HttpStatus.SC_INTERNAL_SERVER_ERROR;
/**
* API tests to check actions on frozen content
*
@@ -309,11 +309,11 @@ public class PreventActionsOnFrozenContentTests extends BaseRMRestTest
STEP("Execute the retain action");
rmRolesAndActionsAPI.executeAction(getAdminUser().getUsername(), getAdminUser().getPassword(), record.getName(),
- RM_ACTIONS.END_RETENTION);
+ RM_ACTIONS.END_RETENTION, null, SC_INTERNAL_SERVER_ERROR);
STEP("Check the record search disposition properties");
Record recordUpdated = getRestAPIFactory().getRecordsAPI().getRecord(record.getId());
- assertTrue(recordUpdated.getProperties().getRecordSearchDispositionActionName().contains(RM_ACTIONS.DESTROY.getAction()));
+ assertTrue(recordUpdated.getProperties().getRecordSearchDispositionActionName().contains(RM_ACTIONS.END_RETENTION.getAction()));
assertTrue(recordUpdated.getProperties().getRecordSearchDispositionPeriod().contains("immediately"));
}
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 eeac19f2e6..dae1c555e2 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 the 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 8dd01c5ac8..2f76bdf22a 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,9 +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 95b668b250..ae80740b66 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
@@ -695,6 +695,13 @@
init-method="init" depends-on="org_alfresco_module_rm_resourceBundles">
+
+
+
+ retain
+
+
+
@@ -899,6 +906,8 @@
+
+
@@ -944,6 +953,7 @@
org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService.hasFrozenChildren=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService.getFreezeDate=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService.getFreezeInitiator=RM_ALLOW
+ org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService.isFrozenOrHasFrozenChildren=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService.*=RM_DENY
]]>
diff --git a/amps/ags/rm-community/rm-community-repo/pom.xml b/amps/ags/rm-community/rm-community-repo/pom.xml
index c3c636878b..0f25658ed2 100644
--- a/amps/ags/rm-community/rm-community-repo/pom.xml
+++ b/amps/ags/rm-community/rm-community-repo/pom.xml
@@ -141,6 +141,11 @@
spring-test
test
+
+ org.projectlombok
+ lombok
+ provided
+
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 69ecc6585d..6dbdc424be 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,17 +35,17 @@ 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.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;
/**
@@ -53,14 +53,13 @@ import org.springframework.extensions.surf.util.I18NUtil;
*
* @author Roy Wetherall
*/
+@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";
-
- /** Logger */
- private static Log logger = LogFactory.getLog(RecordsManagementActionServiceImpl.class);
+ private static final String MSG_NODE_FROZEN = "rm.action.node.frozen.error-message";
/** Registered records management actions */
private Map rmActions = new HashMap<>(13);
@@ -78,6 +77,16 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
private ClassPolicyDelegate beforeRMActionExecutionDelegate;
private ClassPolicyDelegate onRMActionExecutionDelegate;
+ /**
+ * Freeze Service
+ */
+ private FreezeService freezeService;
+
+ /**
+ * list of retention actions to automatically execute
+ */
+ private List retentionActions;
+
/**
* @return Policy component
*/
@@ -94,6 +103,19 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
return this.nodeService;
}
+ /**
+ * @param freezeService freeze service
+ */
+ public void setFreezeService(FreezeService freezeService)
+ {
+ this.freezeService = freezeService;
+ }
+
+ public void setRetentionActions(List retentionActions)
+ {
+ this.retentionActions = retentionActions;
+ }
+
/**
* Set the policy component
*
@@ -267,21 +289,23 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
*/
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);
- }
+ 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)
{
String msg = I18NUtil.getMessage(MSG_NOT_DEFINED, name);
- if (logger.isWarnEnabled())
- {
- logger.warn(msg);
- }
+ log.warn(msg);
+ throw new AlfrescoRuntimeException(msg);
+ }
+
+ if (retentionActions.contains(name.toLowerCase()) && freezeService.isFrozenOrHasFrozenChildren(nodeRef))
+ {
+ String msg = I18NUtil.getMessage(MSG_NODE_FROZEN, name);
+ log.debug(msg);
+
throw new AlfrescoRuntimeException(msg);
}
@@ -307,10 +331,7 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
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
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 b28ff08326..9c6897139d 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;
@@ -59,7 +58,6 @@ import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.repo.transaction.AlfrescoTransactionSupport;
import org.alfresco.repo.transaction.AlfrescoTransactionSupport.TxnReadState;
-import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
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..191f0309ef 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;
@@ -75,6 +77,32 @@ public class FreezeServiceImpl extends ServiceBaseImpl
/** 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
*/
@@ -392,4 +420,24 @@ 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 f450bb9fb5..4b1081deae 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
@@ -30,15 +30,14 @@ package org.alfresco.module.org_alfresco_module_rm.job;
import static org.alfresco.module.org_alfresco_module_rm.action.RMDispositionActionExecuterAbstractBase.PARAM_NO_ERROR_CHECK;
import java.io.Serializable;
-import java.util.HashMap;
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.module.org_alfresco_module_rm.record.RecordService;
-import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
@@ -48,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
@@ -58,14 +57,14 @@ import org.apache.commons.logging.LogFactory;
* @author mrogers
* @author Roy Wetherall
*/
+@Slf4j
public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecuter
{
- /** logger */
- private static Log logger = LogFactory.getLog(DispositionLifecycleJobExecuter.class);
/** 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 */
private List dispositionActions;
@@ -88,11 +87,13 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
/** freeze service */
private FreezeService freezeService;
- /** record service */
- private RecordService recordService;
-
- /** record folder service */
- private RecordFolderService recordFolderService;
+ /**
+ * @param freezeService freeze service
+ */
+ public void setFreezeService(FreezeService freezeService)
+ {
+ this.freezeService = freezeService;
+ }
/**
* List of disposition actions to automatically execute when eligible.
@@ -133,30 +134,6 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
this.searchService = searchService;
}
- /**
- * @param freezeService freeze service
- */
- public void setFreezeService(FreezeService freezeService)
- {
- this.freezeService = freezeService;
- }
-
- /**
- * @param recordService record service
- */
- public void setRecordService(RecordService recordService)
- {
- this.recordService = recordService;
- }
-
- /**
- * @param recordFolderService record folder service
- */
- public void setRecordFolderService(RecordFolderService recordFolderService)
- {
- this.recordFolderService = recordFolderService;
- }
-
/**
* Get the search query string.
*
@@ -207,11 +184,11 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
{
try
{
- logger.debug("Job Starting");
+ log.debug("Job Starting");
if (dispositionActions == null || dispositionActions.isEmpty())
{
- logger.debug("Job Finished as disposition action is empty");
+ log.debug("Job Finished as disposition action is empty");
return;
}
@@ -220,16 +197,11 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
if (batchSize < 1)
{
- if (logger.isDebugEnabled())
- {
- logger.debug("Invalid value for batch size: " + batchSize + " default value used instead.");
- }
+ 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);
- }
+
+ log.trace("Using batch size of " + batchSize);
while (hasMore)
{
@@ -247,10 +219,7 @@ 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())
@@ -258,14 +227,11 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
executeAction(resultNodes);
}
}
- logger.debug("Job Finished");
+ log.debug("Job Finished");
}
catch (AlfrescoRuntimeException exception)
{
- if (logger.isDebugEnabled())
- {
- logger.debug(exception);
- }
+ log.debug(exception.getMessage());
}
}
@@ -299,12 +265,9 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
}
Map props = Map.of(PARAM_NO_ERROR_CHECK, false);
- if (isFrozenOrHasFrozenChildren(parent.getParentRef()))
+ if (freezeService.isFrozenOrHasFrozenChildren(parent.getParentRef()))
{
- if (logger.isDebugEnabled()) {
- logger.debug("unable to perform action " + dispAction +
- " because node is frozen or has frozen children");
- }
+ log.debug(I18NUtil.getMessage(MSG_NODE_FROZEN, dispAction));
continue;
}
@@ -314,17 +277,13 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
recordsManagementActionService
.executeRecordsManagementAction(parent.getParentRef(), dispAction, props);
- if (logger.isDebugEnabled())
- {
- logger.debug("Processed action: " + dispAction + "on" + parent);
- }
+ log.debug("Processed action: " + dispAction + "on" + parent);
+
}
catch (AlfrescoRuntimeException exception)
{
- if (logger.isDebugEnabled())
- {
- logger.debug(exception);
- }
+ log.debug(exception.getMessage());
+
}
}
return Boolean.TRUE;
@@ -332,25 +291,6 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
retryingTransactionHelper.doInTransaction(processTranCB, false, true);
}
- /**
- * 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)
- {
- if (recordFolderService.isRecordFolder(nodeRef))
- {
- return freezeService.isFrozen(nodeRef) || freezeService.hasFrozenChildren(nodeRef);
- }
- if (recordService.isRecord(nodeRef))
- {
- return freezeService.isFrozen(nodeRef);
- }
- throw new AlfrescoRuntimeException("The nodeRef '" + nodeRef + "' is neither a record nor a record folder.");
- }
-
public PersonService getPersonService()
{
return 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..94e81e8e64 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
@@ -53,7 +53,7 @@ public class FreezeServiceImplTest extends BaseRMTestCase
/**
* Test freeze service methods.
- *
+ *
* @deprecated as of 2.2
*/
public void testFreezeService() throws Exception
@@ -219,7 +219,7 @@ public class FreezeServiceImplTest extends BaseRMTestCase
// hold is not automatically removed
holdAssocs = holdService.getHolds(filePlan);
assertEquals(1, holdAssocs.size());
-
+
// delete hold
holdService.deleteHold(holdNodeRef);
@@ -265,8 +265,38 @@ public class FreezeServiceImplTest extends BaseRMTestCase
assertFalse(freezeService.isFrozen(recordFour));
// assertFalse(freezeService.hasFrozenChildren(rmFolder));
- return null;
- }
- });
- }
+ return null;
+ }
+ });
+
+ doTestInTransaction(new Test()
+ {
+ @Override
+ public Void run() throws Exception
+ {
+ NodeRef hold101 = holdService.createHold(filePlan, "freezename 103", "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 104", "FreezeReason", null);
+ // Freeze a record inside a record folder
+ assertNotNull(hold101);
+ holdService.addToHold(hold101, recordThree);
+ assertTrue(recordService.isRecord(recordThree));
+ 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
diff --git a/pom.xml b/pom.xml
index 4aac78a06b..7f2ab284b9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -851,6 +851,7 @@
org.projectlombok
lombok
1.18.20
+ provided