mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged HEAD-BUG-FIX (5.0/Cloud) to HEAD (5.0/Cloud)
78565: Merged V4.2-BUG-FIX (4.2.4) to HEAD-BUG-FIX (5.0/Cloud) 77792: Merged V4.2.3 (4.2.3) to V4.2-BUG-FIX (4.2.4) 77393: Merged DEV to V4.2.3 (4.2.3) 76812: MNT-11695 : Site cannot be deleted if copy/move outbound rule exists Fixed move action, implemented a JUnit test to simulate the issue. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@82602 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2005-2010 Alfresco Software Limited.
|
* Copyright (C) 2005-2014 Alfresco Software Limited.
|
||||||
*
|
*
|
||||||
* This file is part of Alfresco
|
* This file is part of Alfresco
|
||||||
*
|
*
|
||||||
@@ -19,6 +19,7 @@
|
|||||||
package org.alfresco.repo.action.executer;
|
package org.alfresco.repo.action.executer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.repo.action.ParameterDefinitionImpl;
|
import org.alfresco.repo.action.ParameterDefinitionImpl;
|
||||||
@@ -29,6 +30,7 @@ import org.alfresco.service.cmr.model.FileFolderService;
|
|||||||
import org.alfresco.service.cmr.model.FileNotFoundException;
|
import org.alfresco.service.cmr.model.FileNotFoundException;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeService;
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
|
import org.alfresco.service.namespace.QName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Move action executor.
|
* Move action executor.
|
||||||
@@ -81,6 +83,15 @@ public class MoveActionExecuter extends ActionExecuterAbstractBase
|
|||||||
&& !this.nodeService.hasAspect(actionedUponNodeRef, ContentModel.ASPECT_WORKING_COPY))
|
&& !this.nodeService.hasAspect(actionedUponNodeRef, ContentModel.ASPECT_WORKING_COPY))
|
||||||
{
|
{
|
||||||
NodeRef destinationParent = (NodeRef) ruleAction.getParameterValue(PARAM_DESTINATION_FOLDER);
|
NodeRef destinationParent = (NodeRef) ruleAction.getParameterValue(PARAM_DESTINATION_FOLDER);
|
||||||
|
|
||||||
|
// Check the destination not to be in a pending delete list
|
||||||
|
// MNT-11695
|
||||||
|
Set<QName> destinationAspects = nodeService.getAspects(destinationParent);
|
||||||
|
if (destinationAspects.contains(ContentModel.ASPECT_PENDING_DELETE))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
fileFolderService.move(actionedUponNodeRef, destinationParent, null);
|
fileFolderService.move(actionedUponNodeRef, destinationParent, null);
|
||||||
|
@@ -32,6 +32,7 @@ import org.alfresco.repo.action.evaluator.ComparePropertyValueEvaluator;
|
|||||||
import org.alfresco.repo.action.executer.AddFeaturesActionExecuter;
|
import org.alfresco.repo.action.executer.AddFeaturesActionExecuter;
|
||||||
import org.alfresco.repo.action.executer.CopyActionExecuter;
|
import org.alfresco.repo.action.executer.CopyActionExecuter;
|
||||||
import org.alfresco.repo.action.executer.ImageTransformActionExecuter;
|
import org.alfresco.repo.action.executer.ImageTransformActionExecuter;
|
||||||
|
import org.alfresco.repo.action.executer.MoveActionExecuter;
|
||||||
import org.alfresco.repo.content.MimetypeMap;
|
import org.alfresco.repo.content.MimetypeMap;
|
||||||
import org.alfresco.repo.content.transform.AbstractContentTransformerTest;
|
import org.alfresco.repo.content.transform.AbstractContentTransformerTest;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
@@ -1289,5 +1290,54 @@ public class RuleServiceImplTest extends BaseRuleTest
|
|||||||
txn.begin();
|
txn.begin();
|
||||||
assertFalse("The folder should be deleted.", nodeService.exists(parentFolderNodeRef));
|
assertFalse("The folder should be deleted.", nodeService.exists(parentFolderNodeRef));
|
||||||
txn.commit();
|
txn.commit();
|
||||||
|
|
||||||
|
// Now test move action
|
||||||
|
txn = transactionService.getUserTransaction();
|
||||||
|
txn.begin();
|
||||||
|
// Create 1 folder with 2 folders inside
|
||||||
|
parentFolderNodeRef = this.nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("parentnode" + GUID.generate()),
|
||||||
|
ContentModel.TYPE_FOLDER).getChildRef();
|
||||||
|
folder1NodeRef = this.nodeService.createNode(parentFolderNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("parentnode" + GUID.generate()),
|
||||||
|
ContentModel.TYPE_FOLDER).getChildRef();
|
||||||
|
folder2NodeRef = this.nodeService.createNode(parentFolderNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("parentnode" + GUID.generate()),
|
||||||
|
ContentModel.TYPE_FOLDER).getChildRef();
|
||||||
|
|
||||||
|
// Create rule for folder1
|
||||||
|
testRule = new Rule();
|
||||||
|
testRule.setRuleTypes(Collections.singletonList(RuleType.OUTBOUND));
|
||||||
|
testRule.setTitle("RuleServiceTest" + GUID.generate());
|
||||||
|
testRule.setDescription(DESCRIPTION);
|
||||||
|
testRule.applyToChildren(true);
|
||||||
|
action = this.actionService.createAction(MoveActionExecuter.NAME);
|
||||||
|
action.setParameterValue(CopyActionExecuter.PARAM_DESTINATION_FOLDER, folder2NodeRef);
|
||||||
|
testRule.setAction(action);
|
||||||
|
this.ruleService.saveRule(folder1NodeRef, testRule);
|
||||||
|
assertNotNull("Rule was not saved", testRule.getNodeRef());
|
||||||
|
|
||||||
|
actionedQName = QName.createQName("actioneduponnode" + GUID.generate());
|
||||||
|
// New node
|
||||||
|
actionedUponNodeRef = this.nodeService.createNode(folder1NodeRef, ContentModel.ASSOC_CHILDREN, actionedQName, ContentModel.TYPE_CONTENT).getChildRef();
|
||||||
|
writer = this.contentService.getWriter(actionedUponNodeRef, ContentModel.PROP_CONTENT, true);
|
||||||
|
writer.setMimetype("text/plain");
|
||||||
|
writer.putContent("TestContent");
|
||||||
|
txn.commit();
|
||||||
|
|
||||||
|
// Remove the parent folder
|
||||||
|
txn = transactionService.getUserTransaction();
|
||||||
|
txn.begin();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
nodeService.deleteNode(parentFolderNodeRef);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
fail("The nodes should be deleted without errors, but exception was thrown: " + e);
|
||||||
|
}
|
||||||
|
txn.commit();
|
||||||
|
|
||||||
|
txn = transactionService.getUserTransaction();
|
||||||
|
txn.begin();
|
||||||
|
assertFalse("The folder should be deleted.", nodeService.exists(parentFolderNodeRef));
|
||||||
|
txn.commit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user