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:
Roy Wetherall
2014-03-19 05:02:04 +00:00
parent e6f1c48f53
commit e0cdb0d2d0
30 changed files with 1495 additions and 894 deletions

View File

@@ -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
{

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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));

View File

@@ -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;
}
});
}
}

View File

@@ -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);
}
}