mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Hold Service Improvements:
* HoldService API explanded beyound immediate use case needs to form a more complete API, plus some tweaks to method names * unit test (via Mockito) added .. still some todo's (see RM-1326) * integration test added .. to test behaviour interactions (see RM-1326) * method level permissions added to Hold service .. should see filtering of results based on permissions * added behaviour to HoldService to unfreeze records and record folders when hold is deleted (same as old relinquish action) * deprecation of dupliacte methods found in FreezeService * fix up use of deprecated methods throughout code .. note that warnings have only been hidden in actions that are soon to be deprecated too git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@64834 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -27,6 +27,7 @@ import org.alfresco.module.org_alfresco_module_rm.test.service.FilePlanPermissio
|
||||
import org.alfresco.module.org_alfresco_module_rm.test.service.FilePlanRoleServiceImplTest;
|
||||
import org.alfresco.module.org_alfresco_module_rm.test.service.FilePlanServiceImplTest;
|
||||
import org.alfresco.module.org_alfresco_module_rm.test.service.FreezeServiceImplTest;
|
||||
import org.alfresco.module.org_alfresco_module_rm.test.service.HoldServiceImplTest;
|
||||
import org.alfresco.module.org_alfresco_module_rm.test.service.ModelSecurityServiceImplTest;
|
||||
import org.alfresco.module.org_alfresco_module_rm.test.service.RecordServiceImplTest;
|
||||
import org.alfresco.module.org_alfresco_module_rm.test.service.RecordsManagementActionServiceImplTest;
|
||||
@@ -70,7 +71,8 @@ import org.junit.runners.Suite.SuiteClasses;
|
||||
FilePlanServiceImplTest.class,
|
||||
FilePlanPermissionServiceImplTest.class,
|
||||
ReportServiceImplTest.class,
|
||||
RecordsManagementQueryDAOImplTest.class
|
||||
RecordsManagementQueryDAOImplTest.class,
|
||||
HoldServiceImplTest.class
|
||||
})
|
||||
public class ServicesTestSuite
|
||||
{
|
||||
|
@@ -126,9 +126,9 @@ public class RM1008Test extends BaseRMTestCase
|
||||
public NodeRef run()
|
||||
{
|
||||
// create hold object
|
||||
freezeService.freeze("test", rmFolder);
|
||||
List<NodeRef> holds = holdService.getHolds(filePlan);
|
||||
return holds.iterator().next();
|
||||
NodeRef hold = holdService.createHold(filePlan, "my hold", "my reason", "my description");
|
||||
holdService.addToHold(hold, rmFolder);
|
||||
return hold;
|
||||
}
|
||||
}, rmAdminName);
|
||||
|
||||
|
@@ -51,7 +51,8 @@ public class RM1030Test extends BaseRMTestCase
|
||||
assertEquals(0, holds.size());
|
||||
|
||||
// freeze record contained within the record folder
|
||||
NodeRef hold = freezeService.freeze("in true life for serious", recordOne);
|
||||
NodeRef hold = holdService.createHold(filePlan, "my hold 2", "in true life for serious", "my decription");
|
||||
holdService.addToHold(hold, recordOne);
|
||||
assertNotNull(hold);
|
||||
|
||||
return hold;
|
||||
@@ -77,7 +78,8 @@ public class RM1030Test extends BaseRMTestCase
|
||||
public NodeRef run()
|
||||
{
|
||||
// freeze the record folder that contains the frozen record
|
||||
NodeRef folderHold = freezeService.freeze("innit but", rmFolder);
|
||||
NodeRef folderHold = holdService.createHold(filePlan, "my hold 3", "innit but", "my decription");
|
||||
holdService.addToHold(folderHold, rmFolder);
|
||||
assertNotNull(folderHold);
|
||||
|
||||
return folderHold;
|
||||
@@ -103,7 +105,7 @@ public class RM1030Test extends BaseRMTestCase
|
||||
public Void run()
|
||||
{
|
||||
// relinquish the record folder hold
|
||||
freezeService.relinquish(recordFolderHold);
|
||||
holdService.deleteHold(recordFolderHold);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -125,7 +127,7 @@ public class RM1030Test extends BaseRMTestCase
|
||||
public Void run()
|
||||
{
|
||||
// relinquish the record hold
|
||||
freezeService.relinquish(recordHold);
|
||||
holdService.deleteHold(recordHold);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@@ -18,10 +18,9 @@
|
||||
*/
|
||||
package org.alfresco.module.org_alfresco_module_rm.test.service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase;
|
||||
@@ -61,7 +60,9 @@ public class FreezeServiceImplTest extends BaseRMTestCase
|
||||
assertTrue(filePlanService.isFilePlanComponent(recordFour));
|
||||
|
||||
// Freeze a record
|
||||
freezeService.freeze("FreezeReason", recordOne);
|
||||
NodeRef hold101 = holdService.createHold(filePlan, "freezename 101", "FreezeReason", null);
|
||||
assertNotNull(hold101);
|
||||
holdService.addToHold(hold101, recordOne);
|
||||
assertTrue(freezeService.hasFrozenChildren(rmFolder));
|
||||
|
||||
// Check the hold exists
|
||||
@@ -69,9 +70,10 @@ public class FreezeServiceImplTest extends BaseRMTestCase
|
||||
assertNotNull(holdAssocs);
|
||||
assertEquals(1, holdAssocs.size());
|
||||
NodeRef holdNodeRef = holdAssocs.iterator().next();
|
||||
assertTrue(freezeService.isHold(holdNodeRef));
|
||||
assertEquals("FreezeReason", freezeService.getReason(holdNodeRef));
|
||||
Set<NodeRef> frozenNodes = freezeService.getFrozen(holdNodeRef);
|
||||
assertEquals(holdNodeRef, hold101);
|
||||
assertTrue(holdService.isHold(holdNodeRef));
|
||||
assertEquals("FreezeReason", holdService.getHoldReason(holdNodeRef));
|
||||
List<NodeRef> frozenNodes = holdService.getHeld(holdNodeRef);
|
||||
assertNotNull(frozenNodes);
|
||||
assertEquals(1, frozenNodes.size());
|
||||
|
||||
@@ -83,19 +85,20 @@ public class FreezeServiceImplTest extends BaseRMTestCase
|
||||
assertFalse(freezeService.isFrozen(recordThree));
|
||||
|
||||
// Update the freeze reason
|
||||
freezeService.updateReason(holdNodeRef, "NewFreezeReason");
|
||||
holdService.setHoldReason(holdNodeRef, "NewFreezeReason");
|
||||
|
||||
// Check the hold has been updated
|
||||
assertEquals("NewFreezeReason", freezeService.getReason(holdNodeRef));
|
||||
assertEquals("NewFreezeReason", holdService.getHoldReason(holdNodeRef));
|
||||
|
||||
// Freeze a number of records
|
||||
Set<NodeRef> records = new HashSet<NodeRef>();
|
||||
List<NodeRef> records = new ArrayList<NodeRef>();
|
||||
records.add(recordOne);
|
||||
records.add(recordTwo);
|
||||
records.add(recordThree);
|
||||
NodeRef newHold = freezeService.freeze("Freeze a set of nodes", records);
|
||||
NodeRef newHold = holdService.createHold(filePlan, "Hold 102", "Freeze a set of nodes", null);
|
||||
holdService.addToHold(newHold, records);
|
||||
assertNotNull(newHold);
|
||||
assertTrue(freezeService.isHold(newHold));
|
||||
assertTrue(holdService.isHold(newHold));
|
||||
|
||||
// Check the holds exist
|
||||
holdAssocs = holdService.getHolds(filePlan);
|
||||
@@ -103,17 +106,17 @@ public class FreezeServiceImplTest extends BaseRMTestCase
|
||||
assertEquals(2, holdAssocs.size());
|
||||
for (NodeRef hold : holdAssocs)
|
||||
{
|
||||
String reason = freezeService.getReason(hold);
|
||||
String reason = holdService.getHoldReason(hold);
|
||||
if (reason.equals("Freeze a set of nodes"))
|
||||
{
|
||||
assertEquals(newHold, hold);
|
||||
frozenNodes = freezeService.getFrozen(hold);
|
||||
frozenNodes = holdService.getHeld(hold);
|
||||
assertNotNull(frozenNodes);
|
||||
assertEquals(3, frozenNodes.size());
|
||||
}
|
||||
else if (reason.equals("NewFreezeReason"))
|
||||
{
|
||||
frozenNodes = freezeService.getFrozen(hold);
|
||||
frozenNodes = holdService.getHeld(hold);
|
||||
assertNotNull(frozenNodes);
|
||||
assertEquals(1, frozenNodes.size());
|
||||
}
|
||||
@@ -133,7 +136,7 @@ public class FreezeServiceImplTest extends BaseRMTestCase
|
||||
}
|
||||
|
||||
// Unfreeze a node
|
||||
freezeService.unFreeze(recordThree);
|
||||
holdService.removeFromAllHolds(recordThree);
|
||||
|
||||
// Check the holds
|
||||
holdAssocs = holdService.getHolds(filePlan);
|
||||
@@ -141,16 +144,16 @@ public class FreezeServiceImplTest extends BaseRMTestCase
|
||||
assertEquals(2, holdAssocs.size());
|
||||
for (NodeRef hold : holdAssocs)
|
||||
{
|
||||
String reason = freezeService.getReason(hold);
|
||||
String reason = holdService.getHoldReason(hold);
|
||||
if (reason.equals("Freeze a set of nodes"))
|
||||
{
|
||||
frozenNodes = freezeService.getFrozen(hold);
|
||||
frozenNodes = holdService.getHeld(hold);
|
||||
assertNotNull(frozenNodes);
|
||||
assertEquals(2, frozenNodes.size());
|
||||
}
|
||||
else if (reason.equals("NewFreezeReason"))
|
||||
{
|
||||
frozenNodes = freezeService.getFrozen(hold);
|
||||
frozenNodes = holdService.getHeld(hold);
|
||||
assertNotNull(frozenNodes);
|
||||
assertEquals(1, frozenNodes.size());
|
||||
}
|
||||
@@ -172,7 +175,7 @@ public class FreezeServiceImplTest extends BaseRMTestCase
|
||||
|
||||
// Relinquish the first hold
|
||||
holdNodeRef = holdAssocs.iterator().next();
|
||||
freezeService.relinquish(holdNodeRef);
|
||||
holdService.deleteHold(holdNodeRef);
|
||||
|
||||
// Check the existing hold
|
||||
holdAssocs = holdService.getHolds(filePlan);
|
||||
@@ -181,9 +184,14 @@ public class FreezeServiceImplTest extends BaseRMTestCase
|
||||
|
||||
// Relinquish the second hold
|
||||
holdNodeRef = holdAssocs.iterator().next();
|
||||
freezeService.unFreeze(freezeService.getFrozen(holdNodeRef));
|
||||
holdService.removeFromAllHolds(holdService.getHeld(holdNodeRef));
|
||||
|
||||
// All holds should be deleted
|
||||
// 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());
|
||||
|
||||
@@ -195,12 +203,13 @@ public class FreezeServiceImplTest extends BaseRMTestCase
|
||||
assertFalse(freezeService.hasFrozenChildren(rmFolder));
|
||||
|
||||
// Test freezing nodes, adding them to an existing hold
|
||||
NodeRef hold = freezeService.freeze("AnotherFreezeReason", recordFour);
|
||||
holdService.addToHoldContainer(hold, recordOne);
|
||||
Set<NodeRef> nodes = new HashSet<NodeRef>();
|
||||
NodeRef hold = holdService.createHold(filePlan, "hold 1", "AnotherFreezeReason", "description");
|
||||
holdService.addToHold(hold, recordFour);
|
||||
holdService.addToHold(hold, recordOne);
|
||||
List<NodeRef> nodes = new ArrayList<NodeRef>();
|
||||
nodes.add(recordTwo);
|
||||
nodes.add(recordThree);
|
||||
freezeService.freeze(hold, nodes);
|
||||
holdService.addToHold(hold, nodes);
|
||||
assertTrue(freezeService.hasFrozenChildren(rmFolder));
|
||||
|
||||
// Check the hold
|
||||
@@ -209,7 +218,7 @@ public class FreezeServiceImplTest extends BaseRMTestCase
|
||||
assertEquals(1, holdAssocs.size());
|
||||
|
||||
// Relinquish the first hold
|
||||
freezeService.relinquish(holdAssocs.iterator().next());
|
||||
holdService.deleteHold(holdAssocs.iterator().next());
|
||||
|
||||
// Check the nodes are unfrozen
|
||||
assertFalse(freezeService.isFrozen(recordOne));
|
||||
|
@@ -0,0 +1,142 @@
|
||||
/*
|
||||
* Copyright (C) 2005-2012 Alfresco Software Limited.
|
||||
*
|
||||
* This file is part of Alfresco
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.alfresco.module.org_alfresco_module_rm.test.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
|
||||
/**
|
||||
* Hold service integration test.
|
||||
*
|
||||
* @author Roy Wetherall
|
||||
* @since 2.2
|
||||
*/
|
||||
public class HoldServiceImplTest extends BaseRMTestCase
|
||||
{
|
||||
@Override
|
||||
protected boolean isRecordTest()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public void testDeleteHoldBehaviourForRecordFolder()
|
||||
{
|
||||
doTestInTransaction(new Test<Void>()
|
||||
{
|
||||
@Override
|
||||
public Void run() throws Exception
|
||||
{
|
||||
// create test holds
|
||||
NodeRef hold1 = holdService.createHold(filePlan, "hold one", "I have my reasons", "but I'll not describe them here!");
|
||||
assertNotNull(hold1);
|
||||
|
||||
// add the record folder to hold1
|
||||
holdService.addToHold(hold1, rmFolder);
|
||||
|
||||
// assert that the folder and records are frozen
|
||||
assertTrue(freezeService.isFrozen(rmFolder));
|
||||
assertTrue(freezeService.isFrozen(recordOne));
|
||||
assertTrue(freezeService.isFrozen(recordDeclaredOne));
|
||||
|
||||
// check the contents of the hold
|
||||
List<NodeRef> frozenNodes = holdService.getHeld(hold1);
|
||||
assertNotNull(frozenNodes);
|
||||
assertEquals(1, frozenNodes.size());
|
||||
assertEquals(rmFolder, frozenNodes.get(0));
|
||||
|
||||
// delete the hold
|
||||
holdService.deleteHold(hold1);
|
||||
|
||||
// assert that the folder and records no longer frozen
|
||||
assertFalse(freezeService.isFrozen(rmFolder));
|
||||
assertFalse(freezeService.isFrozen(recordOne));
|
||||
assertFalse(freezeService.isFrozen(recordDeclaredOne));
|
||||
|
||||
// confirm the hold has been deleted
|
||||
assertNull(holdService.getHold(filePlan, "hold one"));
|
||||
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void testDeleteHoldBehaviourForMultipleHolds()
|
||||
{
|
||||
doTestInTransaction(new Test<Void>()
|
||||
{
|
||||
@Override
|
||||
public Void run() throws Exception
|
||||
{
|
||||
// create test holds
|
||||
NodeRef hold1 = holdService.createHold(filePlan, "hold one", "I have my reasons", "but I'll not describe them here!");
|
||||
assertNotNull(hold1);
|
||||
NodeRef hold2 = holdService.createHold(filePlan, "hold two", "secrets are everything", "no then! that's just not on!");
|
||||
assertNotNull(hold2);
|
||||
|
||||
// add the record folder to hold1
|
||||
holdService.addToHold(hold1, rmFolder);
|
||||
|
||||
// assert that the folder and records are frozen
|
||||
assertTrue(freezeService.isFrozen(rmFolder));
|
||||
assertTrue(freezeService.isFrozen(recordOne));
|
||||
assertTrue(freezeService.isFrozen(recordDeclaredOne));
|
||||
|
||||
// check the contents of the hold
|
||||
List<NodeRef> frozenNodes = holdService.getHeld(hold1);
|
||||
assertNotNull(frozenNodes);
|
||||
assertEquals(1, frozenNodes.size());
|
||||
assertEquals(rmFolder, frozenNodes.get(0));
|
||||
|
||||
holdService.addToHold(hold2, recordOne);
|
||||
|
||||
// assert that the folder and records are frozen
|
||||
assertTrue(freezeService.isFrozen(rmFolder));
|
||||
assertTrue(freezeService.isFrozen(recordOne));
|
||||
assertTrue(freezeService.isFrozen(recordDeclaredOne));
|
||||
|
||||
// delete the hold
|
||||
holdService.deleteHold(hold1);
|
||||
|
||||
// assert that the folder and records no longer frozen
|
||||
assertFalse(freezeService.isFrozen(rmFolder));
|
||||
assertTrue(freezeService.isFrozen(recordOne));
|
||||
assertFalse(freezeService.isFrozen(recordDeclaredOne));
|
||||
|
||||
// confirm the hold has been deleted
|
||||
assertNull(holdService.getHold(filePlan, "hold one"));
|
||||
|
||||
// delete the hold
|
||||
holdService.deleteHold(hold2);
|
||||
|
||||
// assert that the folder and records no longer frozen
|
||||
assertFalse(freezeService.isFrozen(rmFolder));
|
||||
assertFalse(freezeService.isFrozen(recordOne));
|
||||
assertFalse(freezeService.isFrozen(recordDeclaredOne));
|
||||
|
||||
// confirm the hold has been deleted
|
||||
assertNull(holdService.getHold(filePlan, "hold two"));
|
||||
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
@@ -34,8 +34,8 @@ import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedul
|
||||
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEventService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.fileplan.hold.HoldService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.hold.HoldService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.identifier.IdentifierService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.rma.type.RmSiteType;
|
||||
@@ -436,7 +436,7 @@ public abstract class BaseRMTestCase extends RetryingTransactionHelperTestCase
|
||||
List<NodeRef> holds = holdService.getHolds(filePlan);
|
||||
for (NodeRef hold : holds)
|
||||
{
|
||||
freezeService.relinquish(hold);
|
||||
holdService.deleteHold(hold);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user