diff --git a/amps/ags/rm-community/rm-community-repo/pom.xml b/amps/ags/rm-community/rm-community-repo/pom.xml index d58f39125c..d298cb58bd 100644 --- a/amps/ags/rm-community/rm-community-repo/pom.xml +++ b/amps/ags/rm-community/rm-community-repo/pom.xml @@ -144,7 +144,7 @@ org.projectlombok lombok - compile + 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 4b1e3bdefa..f2c40efe63 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 @@ -84,24 +84,11 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi */ private FreezeService freezeService; - /** - * @param freezeService freeze service - */ - public void setFreezeService(FreezeService freezeService) - { - this.freezeService = freezeService; - } - /** * list of retention actions to automatically execute */ private List retentionActions; - public void setRetentionActions(List retentionActions) - { - this.retentionActions = retentionActions; - } - /** * @return Policy component */ @@ -118,6 +105,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 * @@ -336,7 +336,8 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi String msg = I18NUtil.getMessage(MSG_NO_IMPLICIT_NODEREF, name); log.warn(msg); throw new AlfrescoRuntimeException(msg); - } else + } + else { return this.executeRecordsManagementAction(implicitTargetNode, name, parameters); } 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 4c71ac55e5..ce5ff5bc7d 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 @@ -288,5 +288,4 @@ public interface DispositionService * @param record */ void recalculateNextDispositionStep(NodeRef record); - } 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 037c543346..0e11d2dc79 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 @@ -66,15 +66,21 @@ import org.springframework.extensions.surf.util.I18NUtil; */ public class FreezeServiceImpl extends ServiceBaseImpl implements FreezeService, - RecordsManagementModel + RecordsManagementModel { - /** I18N */ + /** + * 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; /** @@ -90,42 +96,48 @@ public class FreezeServiceImpl extends ServiceBaseImpl /** * @param recordFolderService record folder service */ - public void setRecordFolderService(RecordFolderService recordFolderService) { + public void setRecordFolderService(RecordFolderService recordFolderService) + { this.recordFolderService = recordFolderService; } /** * @param recordService record service */ - public void setRecordService(RecordService recordService) { + 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; } @@ -133,7 +145,8 @@ 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); @@ -148,17 +161,19 @@ 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; @@ -166,11 +181,12 @@ 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); @@ -179,13 +195,15 @@ 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); @@ -195,15 +213,17 @@ 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); } } @@ -213,9 +233,11 @@ 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); } } @@ -225,10 +247,12 @@ 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); } } @@ -238,7 +262,8 @@ public class FreezeServiceImpl extends ServiceBaseImpl */ @Override @Deprecated - public void relinquish(NodeRef hold) { + public void relinquish(NodeRef hold) + { getHoldService().deleteHold(hold); } @@ -247,17 +272,19 @@ 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); } @@ -265,7 +292,8 @@ 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)); @@ -275,48 +303,60 @@ 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); } }); } @@ -332,12 +372,15 @@ 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) { + if (property != null) + { return (Date) property; } } @@ -349,12 +392,15 @@ 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) { + if (property != null) + { return (String) property; } } @@ -370,10 +416,11 @@ 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); 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 31ab970e49..0e8ad83003 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 @@ -58,7 +58,8 @@ import org.springframework.extensions.surf.util.I18NUtil; * @author Roy Wetherall */ @Slf4j -public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecuter { +public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecuter +{ /** batching properties */ private int batchSize; @@ -226,7 +227,8 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute } } log.debug("Job Finished"); - } catch (AlfrescoRuntimeException exception) + } + catch (AlfrescoRuntimeException exception) { log.debug(exception.getMessage()); } @@ -276,7 +278,8 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute log.debug("Processed action: " + dispAction + "on" + parent); - } catch (AlfrescoRuntimeException exception) + } + catch (AlfrescoRuntimeException exception) { log.debug(exception.getMessage()); 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 1226254292..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 @@ -51,215 +51,219 @@ public class FreezeServiceImplTest extends BaseRMTestCase 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 + 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); + + assertNotNull(hold101); + holdService.addToHold(hold101, recordOne); + + //assertTrue(freezeService.hasFrozenChildren(rmFolder)); + + // Check the hold exists + holdAssocs = holdService.getHolds(filePlan); + assertNotNull(holdAssocs); + assertEquals(1, holdAssocs.size()); + + NodeRef holdNodeRef = holdAssocs.iterator().next(); + + + assertEquals(holdNodeRef, hold101); + assertTrue(holdService.isHold(holdNodeRef)); + assertEquals("FreezeReason", holdService.getHoldReason(holdNodeRef)); + List frozenNodes = holdService.getHeld(holdNodeRef); + + 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)); + + // Update the freeze reason + holdService.setHoldReason(holdNodeRef, "NewFreezeReason"); + + // 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); + + holdService.addToHold(newHold, records); + assertNotNull(newHold); + assertTrue(holdService.isHold(newHold)); + + // Check the holds exist + holdAssocs = holdService.getHolds(filePlan); + assertNotNull(holdAssocs); + assertEquals(2, holdAssocs.size()); + + for (NodeRef hold : holdAssocs) { - 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); - - assertNotNull(hold101); - holdService.addToHold(hold101, recordOne); - - //assertTrue(freezeService.hasFrozenChildren(rmFolder)); - - // Check the hold exists - holdAssocs = holdService.getHolds(filePlan); - assertNotNull(holdAssocs); - assertEquals(1, holdAssocs.size()); - - NodeRef holdNodeRef = holdAssocs.iterator().next(); - - - assertEquals(holdNodeRef, hold101); - assertTrue(holdService.isHold(holdNodeRef)); - assertEquals("FreezeReason", holdService.getHoldReason(holdNodeRef)); - List frozenNodes = holdService.getHeld(holdNodeRef); - - 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)); - - // Update the freeze reason - holdService.setHoldReason(holdNodeRef, "NewFreezeReason"); - - // 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); - - holdService.addToHold(newHold, records); - assertNotNull(newHold); - assertTrue(holdService.isHold(newHold)); - - // 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."); - } - } - - // 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; + 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."); + } } - }); - //Splitting transaction to fix onCreateNodePolicy issue where there was a node not found exception - doTestInTransaction(new Test() - { - @Override - public Void run() throws Exception + + // Check the nodes are frozen + final List testRecords = Arrays.asList(new NodeRef[]{recordOne, recordTwo, recordThree}); + for (NodeRef nr : testRecords) { - // 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()); - - // 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); - - holdAssocs = holdService.getHolds(filePlan); - assertEquals(0, holdAssocs.size()); - - // 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; + assertTrue(freezeService.isFrozen(nr)); + assertNotNull(freezeService.getFreezeDate(nr)); + assertNotNull(freezeService.getFreezeInitiator(nr)); } - }); - //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)); + // 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); + + // 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)); + + // hold is not automatically removed + holdAssocs = holdService.getHolds(filePlan); + assertEquals(1, holdAssocs.size()); + + // delete hold + holdService.deleteHold(holdNodeRef); + + holdAssocs = holdService.getHolds(filePlan); + assertEquals(0, holdAssocs.size()); + + // 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()); + + // 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; }