RM-6941 added slf4j and test [ags]

This commit is contained in:
bdwiwedi
2021-08-12 12:21:37 +05:30
parent 3e447f38f6
commit 5752ddedbe
6 changed files with 343 additions and 289 deletions

View File

@@ -144,7 +144,7 @@
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
<scope>compile</scope> <scope>provided</scope>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -84,24 +84,11 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
*/ */
private FreezeService freezeService; private FreezeService freezeService;
/**
* @param freezeService freeze service
*/
public void setFreezeService(FreezeService freezeService)
{
this.freezeService = freezeService;
}
/** /**
* list of retention actions to automatically execute * list of retention actions to automatically execute
*/ */
private List<String> retentionActions; private List<String> retentionActions;
public void setRetentionActions(List<String> retentionActions)
{
this.retentionActions = retentionActions;
}
/** /**
* @return Policy component * @return Policy component
*/ */
@@ -118,6 +105,19 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
return this.nodeService; return this.nodeService;
} }
/**
* @param freezeService freeze service
*/
public void setFreezeService(FreezeService freezeService)
{
this.freezeService = freezeService;
}
public void setRetentionActions(List<String> retentionActions)
{
this.retentionActions = retentionActions;
}
/** /**
* Set the policy component * Set the policy component
* *
@@ -336,7 +336,8 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
String msg = I18NUtil.getMessage(MSG_NO_IMPLICIT_NODEREF, name); String msg = I18NUtil.getMessage(MSG_NO_IMPLICIT_NODEREF, name);
log.warn(msg); log.warn(msg);
throw new AlfrescoRuntimeException(msg); throw new AlfrescoRuntimeException(msg);
} else }
else
{ {
return this.executeRecordsManagementAction(implicitTargetNode, name, parameters); return this.executeRecordsManagementAction(implicitTargetNode, name, parameters);
} }

View File

@@ -288,5 +288,4 @@ public interface DispositionService
* @param record * @param record
*/ */
void recalculateNextDispositionStep(NodeRef record); void recalculateNextDispositionStep(NodeRef record);
} }

View File

@@ -66,15 +66,21 @@ import org.springframework.extensions.surf.util.I18NUtil;
*/ */
public class FreezeServiceImpl extends ServiceBaseImpl public class FreezeServiceImpl extends ServiceBaseImpl
implements FreezeService, implements FreezeService,
RecordsManagementModel RecordsManagementModel
{ {
/** I18N */ /**
* I18N
*/
private static final String MSG_HOLD_NAME = "rm.hold.name"; private static final String MSG_HOLD_NAME = "rm.hold.name";
/** File Plan Service */ /**
* File Plan Service
*/
private FilePlanService filePlanService; private FilePlanService filePlanService;
/** Hold service */ /**
* Hold service
*/
private HoldService holdService; private HoldService holdService;
/** /**
@@ -90,42 +96,48 @@ public class FreezeServiceImpl extends ServiceBaseImpl
/** /**
* @param recordFolderService record folder service * @param recordFolderService record folder service
*/ */
public void setRecordFolderService(RecordFolderService recordFolderService) { public void setRecordFolderService(RecordFolderService recordFolderService)
{
this.recordFolderService = recordFolderService; this.recordFolderService = recordFolderService;
} }
/** /**
* @param recordService record service * @param recordService record service
*/ */
public void setRecordService(RecordService recordService) { public void setRecordService(RecordService recordService)
{
this.recordService = recordService; this.recordService = recordService;
} }
/** /**
* @return File plan service * @return File plan service
*/ */
protected FilePlanService getFilePlanService() { protected FilePlanService getFilePlanService()
{
return this.filePlanService; return this.filePlanService;
} }
/** /**
* @return Hold service * @return Hold service
*/ */
protected HoldService getHoldService() { protected HoldService getHoldService()
{
return this.holdService; return this.holdService;
} }
/** /**
* @param filePlanService file plan service * @param filePlanService file plan service
*/ */
public void setFilePlanService(FilePlanService filePlanService) { public void setFilePlanService(FilePlanService filePlanService)
{
this.filePlanService = filePlanService; this.filePlanService = filePlanService;
} }
/** /**
* @param holdService hold service * @param holdService hold service
*/ */
public void setHoldService(HoldService holdService) { public void setHoldService(HoldService holdService)
{
this.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) * @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#isFrozen(org.alfresco.service.cmr.repository.NodeRef)
*/ */
@Override @Override
public boolean isFrozen(NodeRef nodeRef) { public boolean isFrozen(NodeRef nodeRef)
{
ParameterCheck.mandatory("nodeRef", nodeRef); ParameterCheck.mandatory("nodeRef", nodeRef);
return nodeService.hasAspect(nodeRef, ASPECT_FROZEN); return nodeService.hasAspect(nodeRef, ASPECT_FROZEN);
@@ -148,17 +161,19 @@ public class FreezeServiceImpl extends ServiceBaseImpl
*/ */
@Override @Override
@Deprecated @Deprecated
public Set<NodeRef> getFrozen(NodeRef hold) { public Set<NodeRef> getFrozen(NodeRef hold)
{
return new HashSet<>(getHoldService().getHeld(hold)); return new HashSet<>(getHoldService().getHeld(hold));
} }
/** /**
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#freeze(java.lang.String, * @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 @Override
@Deprecated @Deprecated
public NodeRef freeze(String reason, NodeRef nodeRef) { public NodeRef freeze(String reason, NodeRef nodeRef)
{
NodeRef hold = createHold(nodeRef, reason); NodeRef hold = createHold(nodeRef, reason);
getHoldService().addToHold(hold, nodeRef); getHoldService().addToHold(hold, nodeRef);
return hold; 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, * @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 @Override
@Deprecated @Deprecated
public void freeze(NodeRef hold, NodeRef nodeRef) { public void freeze(NodeRef hold, NodeRef nodeRef)
{
ParameterCheck.mandatory("hold", hold); ParameterCheck.mandatory("hold", hold);
ParameterCheck.mandatory("nodeRef", nodeRef); 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, * @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#freeze(java.lang.String,
* java.util.Set) * java.util.Set)
*/ */
@Override @Override
@Deprecated @Deprecated
public NodeRef freeze(String reason, Set<NodeRef> nodeRefs) { public NodeRef freeze(String reason, Set<NodeRef> nodeRefs)
{
NodeRef hold = null; NodeRef hold = null;
if (!nodeRefs.isEmpty()) { if (!nodeRefs.isEmpty())
{
final List<NodeRef> list = new ArrayList<>(nodeRefs); final List<NodeRef> list = new ArrayList<>(nodeRefs);
hold = createHold(list.get(0), reason); hold = createHold(list.get(0), reason);
getHoldService().addToHold(hold, list); 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, * @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#freeze(org.alfresco.service.cmr.repository.NodeRef,
* java.util.Set) * java.util.Set)
*/ */
@Override @Override
@Deprecated @Deprecated
public void freeze(NodeRef hold, Set<NodeRef> nodeRefs) { public void freeze(NodeRef hold, Set<NodeRef> nodeRefs)
{
ParameterCheck.mandatory("hold", hold); ParameterCheck.mandatory("hold", hold);
ParameterCheck.mandatoryCollection("nodeRefs", nodeRefs); ParameterCheck.mandatoryCollection("nodeRefs", nodeRefs);
for (NodeRef nodeRef : nodeRefs) { for (NodeRef nodeRef : nodeRefs)
{
freeze(hold, nodeRef); freeze(hold, nodeRef);
} }
} }
@@ -213,9 +233,11 @@ public class FreezeServiceImpl extends ServiceBaseImpl
*/ */
@Override @Override
@Deprecated @Deprecated
public void unFreeze(NodeRef nodeRef) { public void unFreeze(NodeRef nodeRef)
{
List<NodeRef> holds = getHoldService().heldBy(nodeRef, true); List<NodeRef> holds = getHoldService().heldBy(nodeRef, true);
for (NodeRef hold : holds) { for (NodeRef hold : holds)
{
getHoldService().removeFromHold(hold, nodeRef); getHoldService().removeFromHold(hold, nodeRef);
} }
} }
@@ -225,10 +247,12 @@ public class FreezeServiceImpl extends ServiceBaseImpl
*/ */
@Override @Override
@Deprecated @Deprecated
public void unFreeze(Set<NodeRef> nodeRefs) { public void unFreeze(Set<NodeRef> nodeRefs)
{
ParameterCheck.mandatoryCollection("nodeRefs", nodeRefs); ParameterCheck.mandatoryCollection("nodeRefs", nodeRefs);
for (NodeRef nodeRef : nodeRefs) { for (NodeRef nodeRef : nodeRefs)
{
unFreeze(nodeRef); unFreeze(nodeRef);
} }
} }
@@ -238,7 +262,8 @@ public class FreezeServiceImpl extends ServiceBaseImpl
*/ */
@Override @Override
@Deprecated @Deprecated
public void relinquish(NodeRef hold) { public void relinquish(NodeRef hold)
{
getHoldService().deleteHold(hold); getHoldService().deleteHold(hold);
} }
@@ -247,17 +272,19 @@ public class FreezeServiceImpl extends ServiceBaseImpl
*/ */
@Override @Override
@Deprecated @Deprecated
public String getReason(NodeRef hold) { public String getReason(NodeRef hold)
{
return getHoldService().getHoldReason(hold); return getHoldService().getHoldReason(hold);
} }
/** /**
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#updateReason(org.alfresco.service.cmr.repository.NodeRef, * @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#updateReason(org.alfresco.service.cmr.repository.NodeRef,
* java.lang.String) * java.lang.String)
*/ */
@Override @Override
@Deprecated @Deprecated
public void updateReason(NodeRef hold, String reason) { public void updateReason(NodeRef hold, String reason)
{
getHoldService().setHoldReason(hold, 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) * @see org.alfresco.module.org_alfresco_module_rm.hold.HoldService#getHolds(NodeRef)
*/ */
@Override @Override
public Set<NodeRef> getHolds(NodeRef filePlan) { public Set<NodeRef> getHolds(NodeRef filePlan)
{
ParameterCheck.mandatory("filePlan", filePlan); ParameterCheck.mandatory("filePlan", filePlan);
return new HashSet<>(getHoldService().getHolds(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) * @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#hasFrozenChildren(org.alfresco.service.cmr.repository.NodeRef)
*/ */
@Override @Override
public boolean hasFrozenChildren(final NodeRef nodeRef) { public boolean hasFrozenChildren(final NodeRef nodeRef)
{
ParameterCheck.mandatory("nodeRef", nodeRef); ParameterCheck.mandatory("nodeRef", nodeRef);
boolean result = false; boolean result = false;
// check that we are dealing with a record folder or a collaboration folder // check that we are dealing with a record folder or a collaboration folder
if (isRecordFolder(nodeRef) || 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; int heldCount = 0;
if (nodeService.hasAspect(nodeRef, ASPECT_HELD_CHILDREN)) { if (nodeService.hasAspect(nodeRef, ASPECT_HELD_CHILDREN))
heldCount = (Integer) getInternalNodeService().getProperty(nodeRef, PROP_HELD_CHILDREN_COUNT); {
} else { heldCount = (Integer)getInternalNodeService().getProperty(nodeRef, PROP_HELD_CHILDREN_COUNT);
final TransactionService transactionService = (TransactionService) applicationContext.getBean("transactionService"); }
else
{
final TransactionService transactionService = (TransactionService)applicationContext.getBean("transactionService");
heldCount = AuthenticationUtil.runAsSystem(new RunAsWork<Integer>() { heldCount = AuthenticationUtil.runAsSystem(new RunAsWork<Integer>()
{
@Override @Override
public Integer doWork() { public Integer doWork()
return transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Integer>() { {
public Integer execute() throws Throwable { return transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Integer>()
int heldCount = 0; {
public Integer execute() throws Throwable
{
int heldCount = 0;
// NOTE: this process remains to 'patch' older systems to improve performance next time around // NOTE: this process remains to 'patch' older systems to improve performance next time around
List<ChildAssociationRef> childAssocs = getInternalNodeService().getChildAssocs(nodeRef, ContentModel.ASSOC_CONTAINS, null); List<ChildAssociationRef> childAssocs = getInternalNodeService().getChildAssocs(nodeRef, ContentModel.ASSOC_CONTAINS, null);
if (childAssocs != null && !childAssocs.isEmpty()) { if (childAssocs != null && !childAssocs.isEmpty())
for (ChildAssociationRef childAssociationRef : childAssocs) { {
final NodeRef childRef = childAssociationRef.getChildRef(); for (ChildAssociationRef childAssociationRef : childAssocs)
if (childAssociationRef.isPrimary() && isFrozen(childRef)) { {
heldCount++; final NodeRef childRef = childAssociationRef.getChildRef();
} if (childAssociationRef.isPrimary() && isFrozen(childRef))
} {
} heldCount ++;
}
}
}
// add aspect and set count // add aspect and set count
Map<QName, Serializable> props = new HashMap<>(1); Map<QName, Serializable> props = new HashMap<>(1);
props.put(PROP_HELD_CHILDREN_COUNT, heldCount); props.put(PROP_HELD_CHILDREN_COUNT, heldCount);
getInternalNodeService().addAspect(nodeRef, ASPECT_HELD_CHILDREN, props); getInternalNodeService().addAspect(nodeRef, ASPECT_HELD_CHILDREN, props);
return heldCount; return heldCount;
} }
}, },
false, true); 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) * @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#getFreezeDate(org.alfresco.service.cmr.repository.NodeRef)
*/ */
@Override @Override
public Date getFreezeDate(NodeRef nodeRef) { public Date getFreezeDate(NodeRef nodeRef)
{
ParameterCheck.mandatory("nodeRef", nodeRef); ParameterCheck.mandatory("nodeRef", nodeRef);
if (isFrozen(nodeRef)) { if (isFrozen(nodeRef))
{
Serializable property = nodeService.getProperty(nodeRef, PROP_FROZEN_AT); Serializable property = nodeService.getProperty(nodeRef, PROP_FROZEN_AT);
if (property != null) { if (property != null)
{
return (Date) property; 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) * @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#getFreezeInitiator(org.alfresco.service.cmr.repository.NodeRef)
*/ */
@Override @Override
public String getFreezeInitiator(NodeRef nodeRef) { public String getFreezeInitiator(NodeRef nodeRef)
{
ParameterCheck.mandatory("nodeRef", nodeRef); ParameterCheck.mandatory("nodeRef", nodeRef);
if (isFrozen(nodeRef)) { if (isFrozen(nodeRef))
{
Serializable property = nodeService.getProperty(nodeRef, PROP_FROZEN_BY); Serializable property = nodeService.getProperty(nodeRef, PROP_FROZEN_BY);
if (property != null) { if (property != null)
{
return (String) property; return (String) property;
} }
} }
@@ -370,10 +416,11 @@ public class FreezeServiceImpl extends ServiceBaseImpl
* Creates a hold using the given nodeRef and reason * Creates a hold using the given nodeRef and reason
* *
* @param nodeRef the nodeRef which will be frozen * @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 * @return NodeRef of the created hold
*/ */
private NodeRef createHold(NodeRef nodeRef, String reason) { private NodeRef createHold(NodeRef nodeRef, String reason)
{
// get the hold container // get the hold container
final NodeRef filePlan = getFilePlanService().getFilePlan(nodeRef); final NodeRef filePlan = getFilePlanService().getFilePlan(nodeRef);
NodeRef holdContainer = getFilePlanService().getHoldContainer(filePlan); NodeRef holdContainer = getFilePlanService().getHoldContainer(filePlan);

View File

@@ -58,7 +58,8 @@ import org.springframework.extensions.surf.util.I18NUtil;
* @author Roy Wetherall * @author Roy Wetherall
*/ */
@Slf4j @Slf4j
public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecuter { public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecuter
{
/** batching properties */ /** batching properties */
private int batchSize; private int batchSize;
@@ -226,7 +227,8 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
} }
} }
log.debug("Job Finished"); log.debug("Job Finished");
} catch (AlfrescoRuntimeException exception) }
catch (AlfrescoRuntimeException exception)
{ {
log.debug(exception.getMessage()); log.debug(exception.getMessage());
} }
@@ -276,7 +278,8 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
log.debug("Processed action: " + dispAction + "on" + parent); log.debug("Processed action: " + dispAction + "on" + parent);
} catch (AlfrescoRuntimeException exception) }
catch (AlfrescoRuntimeException exception)
{ {
log.debug(exception.getMessage()); log.debug(exception.getMessage());

View File

@@ -51,215 +51,219 @@ public class FreezeServiceImplTest extends BaseRMTestCase
return true; return true;
} }
/** /**
* Test freeze service methods. * Test freeze service methods.
* *
* @deprecated as of 2.2 * @deprecated as of 2.2
*/ */
public void testFreezeService() throws Exception public void testFreezeService() throws Exception
{ {
doTestInTransaction(new Test<Void>() doTestInTransaction(new Test<Void>()
{ {
@Override @Override
public Void run() throws Exception 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<NodeRef> 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<NodeRef> 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)); String reason = holdService.getHoldReason(hold);
assertTrue(recordService.isRecord(recordTwo)); if (reason.equals("Freeze a set of nodes"))
assertTrue(recordService.isRecord(recordThree)); {
assertTrue(recordService.isRecord(recordFour)); assertEquals(newHold, hold);
assertTrue(filePlanService.isFilePlanComponent(recordOne)); frozenNodes = holdService.getHeld(hold);
assertTrue(filePlanService.isFilePlanComponent(recordTwo)); assertNotNull(frozenNodes);
assertTrue(filePlanService.isFilePlanComponent(recordThree)); assertEquals(3, frozenNodes.size());
assertTrue(filePlanService.isFilePlanComponent(recordFour)); }
else if (reason.equals("NewFreezeReason"))
// Freeze a record {
NodeRef hold101 = holdService.createHold(filePlan, "freezename 101", "FreezeReason", null); frozenNodes = holdService.getHeld(hold);
assertNotNull(frozenNodes);
assertNotNull(hold101); assertEquals(1, frozenNodes.size());
holdService.addToHold(hold101, recordOne); }
else
//assertTrue(freezeService.hasFrozenChildren(rmFolder)); {
throw new AlfrescoRuntimeException("The reason '" + reason + "' was not found in the existing holds.");
// 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<NodeRef> 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<NodeRef> 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<NodeRef> 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 // Check the nodes are frozen
doTestInTransaction(new Test<Void>() final List<NodeRef> testRecords = Arrays.asList(new NodeRef[]{recordOne, recordTwo, recordThree});
{ for (NodeRef nr : testRecords)
@Override
public Void run() throws Exception
{ {
// Relinquish the first hold assertTrue(freezeService.isFrozen(nr));
NodeRef holdNodeRef = holdAssocs.iterator().next(); assertNotNull(freezeService.getFreezeDate(nr));
holdService.deleteHold(holdNodeRef); assertNotNull(freezeService.getFreezeInitiator(nr));
// 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<NodeRef> 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<Void>()
{
@Override
public Void run() throws Exception
{
// Relinquish the first hold
holdService.deleteHold(holdAssocs.iterator().next());
// Check the nodes are unfrozen // Unfreeze a node
assertFalse(freezeService.isFrozen(recordOne)); holdService.removeFromAllHolds(recordThree);
assertFalse(freezeService.isFrozen(recordTwo)); // Check the holds
assertFalse(freezeService.isFrozen(recordThree)); holdAssocs = holdService.getHolds(filePlan);
assertFalse(freezeService.isFrozen(recordFour)); assertNotNull(holdAssocs);
// assertFalse(freezeService.hasFrozenChildren(rmFolder)); 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<Void>()
{
@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<NodeRef> 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<Void>()
{
@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; return null;
} }