Merge branch 'merge-3.1/RM-7060_FixSearchAspect' into 'release/V3.1'

Resolve RM-7060 "Merge 3.1/ fixsearchaspect"

See merge request records-management/records-management!1331
This commit is contained in:
Roxana Lucanu
2019-12-10 07:04:45 +00:00
3 changed files with 48 additions and 3 deletions

View File

@@ -49,9 +49,12 @@ import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
import org.alfresco.module.org_alfresco_module_rm.vital.VitalRecordDefinition;
import org.alfresco.module.org_alfresco_module_rm.vital.VitalRecordService;
import org.alfresco.repo.node.NodeServicePolicies;
import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
import org.alfresco.repo.policy.JavaBehaviour;
import org.alfresco.repo.policy.PolicyComponent;
import org.alfresco.repo.policy.annotation.Behaviour;
import org.alfresco.repo.policy.annotation.BehaviourKind;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.repo.transaction.TransactionalResourceHelper;
@@ -73,7 +76,8 @@ import org.apache.commons.logging.LogFactory;
* @author Roy Wetherall
* @since 1.0
*/
public class RecordsManagementSearchBehaviour implements RecordsManagementModel
public class RecordsManagementSearchBehaviour implements RecordsManagementModel,
NodeServicePolicies.OnMoveNodePolicy
{
/** logger */
private static Log logger = LogFactory.getLog(RecordsManagementSearchBehaviour.class);
@@ -172,6 +176,9 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel
private JavaBehaviour jbEventExecutionUpdate = new JavaBehaviour(this, "eventExecutionUpdate", NotificationFrequency.TRANSACTION_COMMIT);
private JavaBehaviour jbEventExecutionDelete = new JavaBehaviour(this, "eventExecutionDelete", NotificationFrequency.TRANSACTION_COMMIT);
/** on move record or record folder behavior */
private JavaBehaviour jbMoveNode = new JavaBehaviour(this, "onMoveNode", NotificationFrequency.TRANSACTION_COMMIT);
/** Array of behaviours related to disposition schedule artifacts */
private JavaBehaviour[] jbDispositionBehaviours =
{
@@ -248,6 +255,11 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel
QName.createQName(NamespaceService.ALFRESCO_URI, "onUpdateProperties"),
ASPECT_VITAL_RECORD_DEFINITION,
new JavaBehaviour(this, "vitalRecordDefintionUpdateProperties", NotificationFrequency.TRANSACTION_COMMIT));
this.policyComponent.bindClassBehaviour(
QName.createQName(NamespaceService.ALFRESCO_URI, "onMoveNode"),
ASPECT_FILE_PLAN_COMPONENT,
jbMoveNode);
}
/**
@@ -936,4 +948,37 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel
return results;
}
/**
* Record and record folder move behavior
*
* @see org.alfresco.repo.node.NodeServicePolicies.OnMoveNodePolicy#onMoveNode(org.alfresco.service.cmr.repository.ChildAssociationRef, org.alfresco.service.cmr.repository.ChildAssociationRef)
*/
@Override
@Behaviour
(
kind = BehaviourKind.CLASS,
notificationFrequency = NotificationFrequency.TRANSACTION_COMMIT
)
public void onMoveNode(ChildAssociationRef oldChildAssocRef, ChildAssociationRef newChildAssocRef)
{
// check the parent has actually changed
if (!oldChildAssocRef.getParentRef().equals(newChildAssocRef.getParentRef()))
{
final NodeRef recordOrFolder = newChildAssocRef.getChildRef();
final boolean isRecordOrFolder = recordService.isRecord(recordOrFolder) || recordFolderService.isRecordFolder(recordOrFolder);
AuthenticationUtil.runAsSystem(new AuthenticationUtil.RunAsWork<Void>()
{
@Override
public Void doWork()
{
if (nodeService.exists(recordOrFolder) && isRecordOrFolder)
{
applySearchAspect(recordOrFolder);
}
return null;
}
});
}
}
}

View File

@@ -120,7 +120,7 @@ public class MoveRecordTest extends BaseRMTestCase
assertNull(dispositionService.getNextDispositionAction(record));
// check the search aspect properties
assertFalse(nodeService.hasAspect(record, ASPECT_RM_SEARCH));
assertTrue(nodeService.hasAspect(record, ASPECT_RM_SEARCH));
}
});

View File

@@ -218,7 +218,7 @@ public class MoveRecordFolderTest extends BaseRMTestCase
assertNull(dispositionService.getNextDispositionAction(recordFolder));
// check the search aspect properties
assertFalse(nodeService.hasAspect(recordFolder, ASPECT_RM_SEARCH));
assertTrue(nodeService.hasAspect(recordFolder, ASPECT_RM_SEARCH));
}
});
}