diff --git a/config/alfresco/action-services-context.xml b/config/alfresco/action-services-context.xml
index 79b36a8294..b04f80f4e4 100644
--- a/config/alfresco/action-services-context.xml
+++ b/config/alfresco/action-services-context.xml
@@ -457,6 +457,18 @@
+
+
+
+
+
+
+
+
+ false
+
+
+
diff --git a/config/alfresco/messages/action-config.properties b/config/alfresco/messages/action-config.properties
index 4f1cf4e20a..12d3b36ed5 100644
--- a/config/alfresco/messages/action-config.properties
+++ b/config/alfresco/messages/action-config.properties
@@ -107,6 +107,10 @@ avm-revert-list.store.display-label=The name of the store being reverted, only n
avm-revert-list.staging.display-label=The name of the staging store to flatten to.
avm-revert-list.flatten-path.display-label=The store relative path that should be flattened.
+avm-revert-to-version.title=Revert a Node to a particular version.
+avm-revert-to-version.description=This reverts a Node to a particular version of that node.
+avm-revert-to-version.to-revert.display-label=The AVM Node Descriptor of the version to revert to.
+
avm-undo-list.title=Make a list of Nodes in a store transparent to staging.
avm-undo-list.description=This acts as a mistake eraser for a user's sandbox.
avm-undo-list.node-list.display-label=The string encoded list of nodes to revert.
diff --git a/source/java/org/alfresco/repo/avm/AVMCrawlTestP.java b/source/java/org/alfresco/repo/avm/AVMCrawlTestP.java
index e723dbb67b..1c63b95967 100644
--- a/source/java/org/alfresco/repo/avm/AVMCrawlTestP.java
+++ b/source/java/org/alfresco/repo/avm/AVMCrawlTestP.java
@@ -36,8 +36,8 @@ public class AVMCrawlTestP extends AVMServiceTestBase
public void testCrawl()
{
int n = 4; // Number of Threads.
- int m = 12; // How many multiples of content to start with.
- long runTime = 36000000; // 6 hours.
+ int m = 192; // How many multiples of content to start with.
+ long runTime = 3600000; // 6 hours.
fService.purgeStore("main");
BulkLoader loader = new BulkLoader();
loader.setAvmService(fService);
diff --git a/source/java/org/alfresco/repo/avm/AVMCrawler.java b/source/java/org/alfresco/repo/avm/AVMCrawler.java
index d31f776795..5c623fa4c8 100644
--- a/source/java/org/alfresco/repo/avm/AVMCrawler.java
+++ b/source/java/org/alfresco/repo/avm/AVMCrawler.java
@@ -120,7 +120,7 @@ class AVMCrawler implements Runnable
{
List reps = fService.getStores();
fOpCount++;
- AVMStoreDescriptor repDesc = reps.get(fRandom.nextInt(reps.size()));
+ AVMStoreDescriptor repDesc = reps.get(fRandom.nextInt(12));
Map rootListing = fService.getDirectoryListing(-1, repDesc.getName() + ":/");
fOpCount++;
// Get all the directories in the root.
diff --git a/source/java/org/alfresco/repo/avm/AVMServiceTest.java b/source/java/org/alfresco/repo/avm/AVMServiceTest.java
index d19dd97c45..be9eea6350 100644
--- a/source/java/org/alfresco/repo/avm/AVMServiceTest.java
+++ b/source/java/org/alfresco/repo/avm/AVMServiceTest.java
@@ -36,6 +36,7 @@ import org.alfresco.model.ContentModel;
import org.alfresco.model.WCMModel;
import org.alfresco.repo.action.ActionImpl;
import org.alfresco.repo.avm.actions.AVMRevertListAction;
+import org.alfresco.repo.avm.actions.AVMRevertToVersionAction;
import org.alfresco.repo.avm.actions.AVMUndoSandboxListAction;
import org.alfresco.repo.avm.actions.SimpleAVMPromoteAction;
import org.alfresco.repo.avm.actions.SimpleAVMSubmitAction;
@@ -71,6 +72,52 @@ import org.alfresco.util.Pair;
*/
public class AVMServiceTest extends AVMServiceTestBase
{
+ /**
+ * Test the revert to version action.
+ */
+ public void testRevertToVersionAction()
+ {
+ try
+ {
+ setupBasicTree();
+ fService.getFileOutputStream("main:/a/b/c/foo").close();
+ fService.createSnapshot("main", "v1", null);
+ fService.getFileOutputStream("main:/a/b/c/foo").close();
+ fService.createSnapshot("main", "v2", null);
+ fService.getFileOutputStream("main:/a/b/c/foo").close();
+ fService.createSnapshot("main", "v3", null);
+ fService.getFileOutputStream("main:/a/b/c/foo").close();
+ fService.createSnapshot("main", "v4", null);
+ fService.getFileOutputStream("main:/a/b/c/foo").close();
+ fService.createSnapshot("main", "v5", null);
+ fService.getFileOutputStream("main:/a/b/c/foo").close();
+ AVMNodeDescriptor desc = fService.lookup(-1, "main:/a/b/c/foo");
+ List history = fService.getHistory(desc, 100);
+ AVMNodeDescriptor toRevert = history.get(3);
+ final ActionImpl action = new ActionImpl(null,
+ GUID.generate(),
+ AVMRevertToVersionAction.NAME);
+ action.setParameterValue(AVMRevertToVersionAction.TOREVERT, toRevert);
+ final AVMRevertToVersionAction revert = (AVMRevertToVersionAction)fContext.getBean("avm-revert-to-version");
+ class TxnWork implements TransactionUtil.TransactionWork