mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
RM-1098: RM behvaiour refactoring
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@58640 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -121,14 +121,12 @@
|
|||||||
<property name="referenceName" value="{http://www.alfresco.org/model/rmcustom/1.0}supersedes"/>
|
<property name="referenceName" value="{http://www.alfresco.org/model/rmcustom/1.0}supersedes"/>
|
||||||
<property name="dispositionService" ref="dispositionService"/>
|
<property name="dispositionService" ref="dispositionService"/>
|
||||||
<property name="recordsManagementActionService" ref="recordsManagementActionService"/>
|
<property name="recordsManagementActionService" ref="recordsManagementActionService"/>
|
||||||
<property name="policyComponent" ref="policyComponent"/>
|
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="rmEventType.obsolete" class="org.alfresco.module.org_alfresco_module_rm.event.OnReferenceCreateEventType" parent="rmEventType">
|
<bean id="rmEventType.obsolete" class="org.alfresco.module.org_alfresco_module_rm.event.OnReferenceCreateEventType" parent="rmEventType">
|
||||||
<property name="referenceName" value="{http://www.alfresco.org/model/rmcustom/1.0}obsoletes"/>
|
<property name="referenceName" value="{http://www.alfresco.org/model/rmcustom/1.0}obsoletes"/>
|
||||||
<property name="dispositionService" ref="dispositionService"/>
|
<property name="dispositionService" ref="dispositionService"/>
|
||||||
<property name="recordsManagementActionService" ref="recordsManagementActionService"/>
|
<property name="recordsManagementActionService" ref="recordsManagementActionService"/>
|
||||||
<property name="policyComponent" ref="policyComponent"/>
|
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="rmEventType.crossReferencedRecordTransfered" class="org.alfresco.module.org_alfresco_module_rm.event.OnReferencedRecordActionedUpon" parent="rmEventType">
|
<bean id="rmEventType.crossReferencedRecordTransfered" class="org.alfresco.module.org_alfresco_module_rm.event.OnReferencedRecordActionedUpon" parent="rmEventType">
|
||||||
@@ -138,7 +136,6 @@
|
|||||||
<property name="dispositionService" ref="dispositionService"/>
|
<property name="dispositionService" ref="dispositionService"/>
|
||||||
<property name="recordsManagementAdminService" ref="recordsManagementAdminService"/>
|
<property name="recordsManagementAdminService" ref="recordsManagementAdminService"/>
|
||||||
<property name="recordsManagementActionService" ref="recordsManagementActionService"/>
|
<property name="recordsManagementActionService" ref="recordsManagementActionService"/>
|
||||||
<property name="policyComponent" ref="policyComponent"/>
|
|
||||||
<property name="recordService" ref="recordService" />
|
<property name="recordService" ref="recordService" />
|
||||||
<property name="recordFolderService" ref="RecordFolderService"/>
|
<property name="recordFolderService" ref="RecordFolderService"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
@@ -134,6 +134,10 @@
|
|||||||
<property name="filePlanAuthenticationService" ref="FilePlanAuthenticationService" />
|
<property name="filePlanAuthenticationService" ref="FilePlanAuthenticationService" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
<bean id="rma.extendedSecurity" class="org.alfresco.module.org_alfresco_module_rm.model.rma.aspect.ExtendedSecurityAspect" parent="rm.baseBehaviour">
|
||||||
|
<property name="extendedSecurityService" ref="ExtendedSecurityService"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
<!-- Base bean definition for customisable types bootstrap -->
|
<!-- Base bean definition for customisable types bootstrap -->
|
||||||
<bean id="customisableTypesBootstrap"
|
<bean id="customisableTypesBootstrap"
|
||||||
abstract="true"
|
abstract="true"
|
||||||
|
@@ -632,9 +632,7 @@
|
|||||||
|
|
||||||
<bean id="extendedSecurityService"
|
<bean id="extendedSecurityService"
|
||||||
class="org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityServiceImpl"
|
class="org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityServiceImpl"
|
||||||
init-method="init"
|
|
||||||
parent="baseService">
|
parent="baseService">
|
||||||
<property name="policyComponent" ref="policyComponent"/>
|
|
||||||
<property name="recordService" ref="recordService"/>
|
<property name="recordService" ref="recordService"/>
|
||||||
<property name="nodeService" ref="nodeService"/>
|
<property name="nodeService" ref="nodeService"/>
|
||||||
<property name="filePlanService" ref="filePlanService" />
|
<property name="filePlanService" ref="filePlanService" />
|
||||||
@@ -673,10 +671,8 @@
|
|||||||
|
|
||||||
<bean id="modelSecurityService"
|
<bean id="modelSecurityService"
|
||||||
class="org.alfresco.module.org_alfresco_module_rm.model.security.ModelSecurityServiceImpl"
|
class="org.alfresco.module.org_alfresco_module_rm.model.security.ModelSecurityServiceImpl"
|
||||||
init-method="init">
|
parent = "rm.baseBehaviour">
|
||||||
<property name="enabled" value="true" />
|
<property name="enabled" value="true" />
|
||||||
<property name="policyComponent" ref="policyComponent" />
|
|
||||||
<property name="nodeService" ref="NodeService" />
|
|
||||||
<property name="namespaceService" ref="namespaceService" />
|
<property name="namespaceService" ref="namespaceService" />
|
||||||
<property name="filePlanService" ref="FilePlanService" />
|
<property name="filePlanService" ref="FilePlanService" />
|
||||||
</bean>
|
</bean>
|
||||||
|
@@ -24,7 +24,6 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies;
|
|
||||||
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.OnCreateReference;
|
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.OnCreateReference;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService;
|
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.action.impl.CompleteEventAction;
|
import org.alfresco.module.org_alfresco_module_rm.action.impl.CompleteEventAction;
|
||||||
@@ -32,8 +31,9 @@ import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionAction;
|
|||||||
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
|
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
||||||
import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
|
import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
|
||||||
import org.alfresco.repo.policy.JavaBehaviour;
|
import org.alfresco.repo.policy.annotation.Behaviour;
|
||||||
import org.alfresco.repo.policy.PolicyComponent;
|
import org.alfresco.repo.policy.annotation.BehaviourBean;
|
||||||
|
import org.alfresco.repo.policy.annotation.BehaviourKind;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
@@ -43,6 +43,7 @@ import org.alfresco.service.namespace.QName;
|
|||||||
*
|
*
|
||||||
* @author Roy Wetherall
|
* @author Roy Wetherall
|
||||||
*/
|
*/
|
||||||
|
@BehaviourBean
|
||||||
public class OnReferenceCreateEventType extends SimpleRecordsManagementEventTypeImpl
|
public class OnReferenceCreateEventType extends SimpleRecordsManagementEventTypeImpl
|
||||||
implements RecordsManagementModel,
|
implements RecordsManagementModel,
|
||||||
OnCreateReference
|
OnCreateReference
|
||||||
@@ -53,9 +54,6 @@ public class OnReferenceCreateEventType extends SimpleRecordsManagementEventType
|
|||||||
/** Disposition service */
|
/** Disposition service */
|
||||||
private DispositionService dispositionService;
|
private DispositionService dispositionService;
|
||||||
|
|
||||||
/** Policy component */
|
|
||||||
private PolicyComponent policyComponent;
|
|
||||||
|
|
||||||
/** Reference */
|
/** Reference */
|
||||||
private QName reference;
|
private QName reference;
|
||||||
|
|
||||||
@@ -75,16 +73,6 @@ public class OnReferenceCreateEventType extends SimpleRecordsManagementEventType
|
|||||||
this.recordsManagementActionService = recordsManagementActionService;
|
this.recordsManagementActionService = recordsManagementActionService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Set policy components
|
|
||||||
*
|
|
||||||
* @param policyComponent policy component
|
|
||||||
*/
|
|
||||||
public void setPolicyComponent(PolicyComponent policyComponent)
|
|
||||||
{
|
|
||||||
this.policyComponent = policyComponent;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the reference
|
* Set the reference
|
||||||
*
|
*
|
||||||
@@ -95,19 +83,6 @@ public class OnReferenceCreateEventType extends SimpleRecordsManagementEventType
|
|||||||
this.reference = QName.createQName(reference);
|
this.reference = QName.createQName(reference);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.event.SimpleRecordsManagementEventTypeImpl#init()
|
|
||||||
*/
|
|
||||||
public void init()
|
|
||||||
{
|
|
||||||
super.init();
|
|
||||||
|
|
||||||
// Register interest in the on create reference policy
|
|
||||||
policyComponent.bindClassBehaviour(RecordsManagementPolicies.ON_CREATE_REFERENCE,
|
|
||||||
ASPECT_RECORD,
|
|
||||||
new JavaBehaviour(this, "onCreateReference", NotificationFrequency.TRANSACTION_COMMIT));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.event.SimpleRecordsManagementEventTypeImpl#isAutomaticEvent()
|
* @see org.alfresco.module.org_alfresco_module_rm.event.SimpleRecordsManagementEventTypeImpl#isAutomaticEvent()
|
||||||
*/
|
*/
|
||||||
@@ -120,6 +95,13 @@ public class OnReferenceCreateEventType extends SimpleRecordsManagementEventType
|
|||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.OnCreateReference#onCreateReference(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName)
|
* @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.OnCreateReference#onCreateReference(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
|
@Behaviour
|
||||||
|
(
|
||||||
|
kind = BehaviourKind.CLASS,
|
||||||
|
type = "rma:record",
|
||||||
|
notificationFrequency = NotificationFrequency.TRANSACTION_COMMIT
|
||||||
|
)
|
||||||
public void onCreateReference(final NodeRef fromNodeRef, final NodeRef toNodeRef, final QName reference)
|
public void onCreateReference(final NodeRef fromNodeRef, final NodeRef toNodeRef, final QName reference)
|
||||||
{
|
{
|
||||||
AuthenticationUtil.RunAsWork<Object> work = new AuthenticationUtil.RunAsWork<Object>()
|
AuthenticationUtil.RunAsWork<Object> work = new AuthenticationUtil.RunAsWork<Object>()
|
||||||
|
@@ -24,7 +24,6 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies;
|
|
||||||
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService;
|
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.action.impl.CompleteEventAction;
|
import org.alfresco.module.org_alfresco_module_rm.action.impl.CompleteEventAction;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService;
|
import org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService;
|
||||||
@@ -34,8 +33,9 @@ import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
|||||||
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
|
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.recordfolder.RecordFolderService;
|
||||||
import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
|
import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
|
||||||
import org.alfresco.repo.policy.JavaBehaviour;
|
import org.alfresco.repo.policy.annotation.Behaviour;
|
||||||
import org.alfresco.repo.policy.PolicyComponent;
|
import org.alfresco.repo.policy.annotation.BehaviourBean;
|
||||||
|
import org.alfresco.repo.policy.annotation.BehaviourKind;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
import org.alfresco.service.cmr.repository.AssociationRef;
|
import org.alfresco.service.cmr.repository.AssociationRef;
|
||||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||||
@@ -49,6 +49,7 @@ import org.alfresco.service.namespace.RegexQNamePattern;
|
|||||||
*
|
*
|
||||||
* @author Roy Wetherall
|
* @author Roy Wetherall
|
||||||
*/
|
*/
|
||||||
|
@BehaviourBean
|
||||||
public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEventTypeImpl
|
public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEventTypeImpl
|
||||||
implements RecordsManagementModel
|
implements RecordsManagementModel
|
||||||
|
|
||||||
@@ -65,9 +66,6 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent
|
|||||||
/** Node service */
|
/** Node service */
|
||||||
private NodeService nodeService;
|
private NodeService nodeService;
|
||||||
|
|
||||||
/** Policy component */
|
|
||||||
private PolicyComponent policyComponent;
|
|
||||||
|
|
||||||
/** Record service */
|
/** Record service */
|
||||||
private RecordService recordService;
|
private RecordService recordService;
|
||||||
|
|
||||||
@@ -128,14 +126,6 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent
|
|||||||
this.recordFolderService = recordFolderService;
|
this.recordFolderService = recordFolderService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param policyComponent policy component
|
|
||||||
*/
|
|
||||||
public void setPolicyComponent(PolicyComponent policyComponent)
|
|
||||||
{
|
|
||||||
this.policyComponent = policyComponent;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param reference reference name
|
* @param reference reference name
|
||||||
*/
|
*/
|
||||||
@@ -152,19 +142,6 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent
|
|||||||
this.actionName = actionName;
|
this.actionName = actionName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.event.SimpleRecordsManagementEventTypeImpl#init()
|
|
||||||
*/
|
|
||||||
public void init()
|
|
||||||
{
|
|
||||||
super.init();
|
|
||||||
|
|
||||||
// Register interest in the on create reference policy
|
|
||||||
policyComponent.bindClassBehaviour(RecordsManagementPolicies.BEFORE_RM_ACTION_EXECUTION,
|
|
||||||
ASPECT_FILE_PLAN_COMPONENT,
|
|
||||||
new JavaBehaviour(this, "beforeActionExecution", NotificationFrequency.FIRST_EVENT));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.event.SimpleRecordsManagementEventTypeImpl#isAutomaticEvent()
|
* @see org.alfresco.module.org_alfresco_module_rm.event.SimpleRecordsManagementEventTypeImpl#isAutomaticEvent()
|
||||||
*/
|
*/
|
||||||
@@ -181,6 +158,12 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent
|
|||||||
* @param name
|
* @param name
|
||||||
* @param parameters
|
* @param parameters
|
||||||
*/
|
*/
|
||||||
|
@Behaviour
|
||||||
|
(
|
||||||
|
kind = BehaviourKind.CLASS,
|
||||||
|
type = "rma:filePlanComponent",
|
||||||
|
notificationFrequency = NotificationFrequency.FIRST_EVENT
|
||||||
|
)
|
||||||
public void beforeActionExecution(final NodeRef nodeRef, final String name, final Map<String, Serializable> parameters)
|
public void beforeActionExecution(final NodeRef nodeRef, final String name, final Map<String, Serializable> parameters)
|
||||||
{
|
{
|
||||||
AuthenticationUtil.RunAsWork<Object> work = new AuthenticationUtil.RunAsWork<Object>()
|
AuthenticationUtil.RunAsWork<Object> work = new AuthenticationUtil.RunAsWork<Object>()
|
||||||
|
@@ -0,0 +1,92 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2005-2013 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.model.rma.aspect;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean;
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityService;
|
||||||
|
import org.alfresco.repo.node.NodeServicePolicies;
|
||||||
|
import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
|
||||||
|
import org.alfresco.repo.policy.annotation.Behaviour;
|
||||||
|
import org.alfresco.repo.policy.annotation.BehaviourBean;
|
||||||
|
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.service.cmr.repository.ChildAssociationRef;
|
||||||
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* rma:extendedSecurity behaviour bean
|
||||||
|
*
|
||||||
|
* @author Roy Wetherall
|
||||||
|
* @since 2.2
|
||||||
|
*/
|
||||||
|
@BehaviourBean
|
||||||
|
(
|
||||||
|
defaultType = "rma:extendedSecurity"
|
||||||
|
)
|
||||||
|
public class ExtendedSecurityAspect extends BaseBehaviourBean
|
||||||
|
implements NodeServicePolicies.OnMoveNodePolicy
|
||||||
|
{
|
||||||
|
/** extended security service */
|
||||||
|
protected ExtendedSecurityService extendedSecurityService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param extendedSecurityService extended security service
|
||||||
|
*/
|
||||||
|
public void setExtendedSecurityService(ExtendedSecurityService extendedSecurityService)
|
||||||
|
{
|
||||||
|
this.extendedSecurityService = extendedSecurityService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update extended security when moving a node.
|
||||||
|
*
|
||||||
|
* @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(final ChildAssociationRef origAssoc, final ChildAssociationRef newAssoc)
|
||||||
|
{
|
||||||
|
AuthenticationUtil.runAsSystem(new RunAsWork<Void>()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public Void doWork() throws Exception
|
||||||
|
{
|
||||||
|
NodeRef record = newAssoc.getChildRef();
|
||||||
|
NodeRef newParent = newAssoc.getParentRef();
|
||||||
|
NodeRef oldParent = origAssoc.getParentRef();
|
||||||
|
|
||||||
|
Set<String> readers = extendedSecurityService.getExtendedReaders(record);
|
||||||
|
Set<String> writers = extendedSecurityService.getExtendedWriters(record);
|
||||||
|
|
||||||
|
extendedSecurityService.addExtendedSecurity(newParent, readers, writers);
|
||||||
|
extendedSecurityService.removeExtendedSecurity(oldParent, readers, writers);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -26,14 +26,13 @@ import java.util.Set;
|
|||||||
|
|
||||||
import org.alfresco.module.org_alfresco_module_rm.capability.Capability;
|
import org.alfresco.module.org_alfresco_module_rm.capability.Capability;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
|
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean;
|
||||||
import org.alfresco.repo.node.NodeServicePolicies;
|
import org.alfresco.repo.node.NodeServicePolicies;
|
||||||
import org.alfresco.repo.policy.JavaBehaviour;
|
import org.alfresco.repo.policy.annotation.Behaviour;
|
||||||
import org.alfresco.repo.policy.PolicyComponent;
|
import org.alfresco.repo.policy.annotation.BehaviourBean;
|
||||||
import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
|
import org.alfresco.repo.policy.annotation.BehaviourKind;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
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.security.AccessStatus;
|
import org.alfresco.service.cmr.security.AccessStatus;
|
||||||
import org.alfresco.service.namespace.NamespaceService;
|
import org.alfresco.service.namespace.NamespaceService;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
@@ -48,8 +47,9 @@ import org.alfresco.util.EqualsHelper;
|
|||||||
* @author Roy Wetherall
|
* @author Roy Wetherall
|
||||||
* @since 2.1
|
* @since 2.1
|
||||||
*/
|
*/
|
||||||
public class ModelSecurityServiceImpl implements ModelSecurityService,
|
@BehaviourBean
|
||||||
RecordsManagementModel,
|
public class ModelSecurityServiceImpl extends BaseBehaviourBean
|
||||||
|
implements ModelSecurityService,
|
||||||
NodeServicePolicies.BeforeAddAspectPolicy,
|
NodeServicePolicies.BeforeAddAspectPolicy,
|
||||||
NodeServicePolicies.BeforeRemoveAspectPolicy,
|
NodeServicePolicies.BeforeRemoveAspectPolicy,
|
||||||
NodeServicePolicies.OnUpdatePropertiesPolicy
|
NodeServicePolicies.OnUpdatePropertiesPolicy
|
||||||
@@ -57,12 +57,6 @@ public class ModelSecurityServiceImpl implements ModelSecurityService,
|
|||||||
/** Indicates whether model security is enabled or not */
|
/** Indicates whether model security is enabled or not */
|
||||||
private boolean enabled = true;
|
private boolean enabled = true;
|
||||||
|
|
||||||
/** Policy component */
|
|
||||||
private PolicyComponent policyComponent;
|
|
||||||
|
|
||||||
/** Node service */
|
|
||||||
private NodeService nodeService;
|
|
||||||
|
|
||||||
/** Namespace service */
|
/** Namespace service */
|
||||||
private NamespaceService namespaceService;
|
private NamespaceService namespaceService;
|
||||||
|
|
||||||
@@ -75,17 +69,6 @@ public class ModelSecurityServiceImpl implements ModelSecurityService,
|
|||||||
/** Map of protected aspects keyed by name */
|
/** Map of protected aspects keyed by name */
|
||||||
private Map<QName, ProtectedAspect> protectedAspects= new HashMap<QName, ProtectedAspect>(21);
|
private Map<QName, ProtectedAspect> protectedAspects= new HashMap<QName, ProtectedAspect>(21);
|
||||||
|
|
||||||
/** Behaviour instances */
|
|
||||||
private JavaBehaviour beforeAddAspectBehaviour = new JavaBehaviour(this,
|
|
||||||
"beforeAddAspect",
|
|
||||||
NotificationFrequency.EVERY_EVENT);
|
|
||||||
private JavaBehaviour beforeRemoveAspectBehaviour = new JavaBehaviour(this,
|
|
||||||
"beforeRemoveAspect",
|
|
||||||
NotificationFrequency.EVERY_EVENT);
|
|
||||||
private JavaBehaviour onUpdatePropertiesBehaviour = new JavaBehaviour(this,
|
|
||||||
"onUpdateProperties",
|
|
||||||
NotificationFrequency.EVERY_EVENT);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.model.security.ModelSecurityService#setEnabled(boolean)
|
* @see org.alfresco.module.org_alfresco_module_rm.model.security.ModelSecurityService#setEnabled(boolean)
|
||||||
*/
|
*/
|
||||||
@@ -102,22 +85,6 @@ public class ModelSecurityServiceImpl implements ModelSecurityService,
|
|||||||
return enabled;
|
return enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param policyComponent policy component
|
|
||||||
*/
|
|
||||||
public void setPolicyComponent(PolicyComponent policyComponent)
|
|
||||||
{
|
|
||||||
this.policyComponent = policyComponent;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param nodeService node service
|
|
||||||
*/
|
|
||||||
public void setNodeService(NodeService nodeService)
|
|
||||||
{
|
|
||||||
this.nodeService = nodeService;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param namespaceService namespace service
|
* @param namespaceService namespace service
|
||||||
*/
|
*/
|
||||||
@@ -134,35 +101,15 @@ public class ModelSecurityServiceImpl implements ModelSecurityService,
|
|||||||
this.filePlanService = filePlanService;
|
this.filePlanService = filePlanService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Init method
|
|
||||||
*/
|
|
||||||
public void init()
|
|
||||||
{
|
|
||||||
// bind model security behaviours to all records management artifacts components
|
|
||||||
policyComponent.bindClassBehaviour(
|
|
||||||
NodeServicePolicies.BeforeAddAspectPolicy.QNAME,
|
|
||||||
this,
|
|
||||||
beforeAddAspectBehaviour);
|
|
||||||
policyComponent.bindClassBehaviour(
|
|
||||||
NodeServicePolicies.BeforeRemoveAspectPolicy.QNAME,
|
|
||||||
this,
|
|
||||||
beforeRemoveAspectBehaviour);
|
|
||||||
policyComponent.bindClassBehaviour(
|
|
||||||
NodeServicePolicies.OnUpdatePropertiesPolicy.QNAME,
|
|
||||||
this,
|
|
||||||
onUpdatePropertiesBehaviour);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.model.security.ModelSecurityService#disable()
|
* @see org.alfresco.module.org_alfresco_module_rm.model.security.ModelSecurityService#disable()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void disable()
|
public void disable()
|
||||||
{
|
{
|
||||||
beforeAddAspectBehaviour.disable();
|
getBehaviour("beforeAddAspect").disable();
|
||||||
beforeRemoveAspectBehaviour.disable();
|
getBehaviour("beforeRemoveAspect").disable();
|
||||||
onUpdatePropertiesBehaviour.disable();
|
getBehaviour("onUpdateProperties").disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -171,9 +118,9 @@ public class ModelSecurityServiceImpl implements ModelSecurityService,
|
|||||||
@Override
|
@Override
|
||||||
public void enable()
|
public void enable()
|
||||||
{
|
{
|
||||||
beforeAddAspectBehaviour.enable();
|
getBehaviour("beforeAddAspect").enable();
|
||||||
beforeRemoveAspectBehaviour.enable();
|
getBehaviour("beforeRemoveAspect").enable();
|
||||||
onUpdatePropertiesBehaviour.enable();
|
getBehaviour("onUpdateProperties").enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -322,6 +269,12 @@ public class ModelSecurityServiceImpl implements ModelSecurityService,
|
|||||||
* @see org.alfresco.repo.node.NodeServicePolicies.BeforeAddAspectPolicy#beforeAddAspect(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName)
|
* @see org.alfresco.repo.node.NodeServicePolicies.BeforeAddAspectPolicy#beforeAddAspect(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Behaviour
|
||||||
|
(
|
||||||
|
kind = BehaviourKind.CLASS,
|
||||||
|
isService = true,
|
||||||
|
name = "beforeAddAspect"
|
||||||
|
)
|
||||||
public void beforeAddAspect(NodeRef nodeRef, QName aspect)
|
public void beforeAddAspect(NodeRef nodeRef, QName aspect)
|
||||||
{
|
{
|
||||||
if (enabled == true)
|
if (enabled == true)
|
||||||
@@ -345,6 +298,12 @@ public class ModelSecurityServiceImpl implements ModelSecurityService,
|
|||||||
* @see org.alfresco.repo.node.NodeServicePolicies.BeforeRemoveAspectPolicy#beforeRemoveAspect(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName)
|
* @see org.alfresco.repo.node.NodeServicePolicies.BeforeRemoveAspectPolicy#beforeRemoveAspect(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Behaviour
|
||||||
|
(
|
||||||
|
kind = BehaviourKind.CLASS,
|
||||||
|
isService = true,
|
||||||
|
name = "beforeRemoveAspect"
|
||||||
|
)
|
||||||
public void beforeRemoveAspect(NodeRef nodeRef, QName aspect)
|
public void beforeRemoveAspect(NodeRef nodeRef, QName aspect)
|
||||||
{
|
{
|
||||||
if (enabled == true)
|
if (enabled == true)
|
||||||
@@ -368,6 +327,12 @@ public class ModelSecurityServiceImpl implements ModelSecurityService,
|
|||||||
* @see org.alfresco.repo.node.NodeServicePolicies.OnUpdatePropertiesPolicy#onUpdateProperties(org.alfresco.service.cmr.repository.NodeRef, java.util.Map, java.util.Map)
|
* @see org.alfresco.repo.node.NodeServicePolicies.OnUpdatePropertiesPolicy#onUpdateProperties(org.alfresco.service.cmr.repository.NodeRef, java.util.Map, java.util.Map)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Behaviour
|
||||||
|
(
|
||||||
|
kind = BehaviourKind.CLASS,
|
||||||
|
isService = true,
|
||||||
|
name = "onUpdateProperties"
|
||||||
|
)
|
||||||
public void onUpdateProperties(NodeRef nodeRef, Map<QName, Serializable> before, Map<QName, Serializable> after)
|
public void onUpdateProperties(NodeRef nodeRef, Map<QName, Serializable> before, Map<QName, Serializable> after)
|
||||||
{
|
{
|
||||||
if (enabled == true)
|
if (enabled == true)
|
||||||
|
@@ -30,12 +30,6 @@ import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
|||||||
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
|
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.role.FilePlanRoleService;
|
import org.alfresco.module.org_alfresco_module_rm.role.FilePlanRoleService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.util.ServiceBaseImpl;
|
import org.alfresco.module.org_alfresco_module_rm.util.ServiceBaseImpl;
|
||||||
import org.alfresco.repo.node.NodeServicePolicies;
|
|
||||||
import org.alfresco.repo.policy.JavaBehaviour;
|
|
||||||
import org.alfresco.repo.policy.PolicyComponent;
|
|
||||||
import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
|
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
|
||||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.cmr.security.PermissionService;
|
import org.alfresco.service.cmr.security.PermissionService;
|
||||||
@@ -51,16 +45,12 @@ import org.alfresco.util.ParameterCheck;
|
|||||||
*/
|
*/
|
||||||
public class ExtendedSecurityServiceImpl extends ServiceBaseImpl
|
public class ExtendedSecurityServiceImpl extends ServiceBaseImpl
|
||||||
implements ExtendedSecurityService,
|
implements ExtendedSecurityService,
|
||||||
RecordsManagementModel,
|
RecordsManagementModel
|
||||||
NodeServicePolicies.OnMoveNodePolicy
|
|
||||||
{
|
{
|
||||||
/** Ad hoc properties used for reference counting */
|
/** Ad hoc properties used for reference counting */
|
||||||
private final static QName PROP_EXTENDED_READER_ROLE = QName.createQName(RM_URI, "extendedReaderRole");
|
private final static QName PROP_EXTENDED_READER_ROLE = QName.createQName(RM_URI, "extendedReaderRole");
|
||||||
private final static QName PROP_EXTENDED_WRITER_ROLE = QName.createQName(RM_URI, "extendedWriterRole");
|
private final static QName PROP_EXTENDED_WRITER_ROLE = QName.createQName(RM_URI, "extendedWriterRole");
|
||||||
|
|
||||||
/** Policy component */
|
|
||||||
private PolicyComponent policyComponent;
|
|
||||||
|
|
||||||
/** Record service */
|
/** Record service */
|
||||||
private RecordService recordService;
|
private RecordService recordService;
|
||||||
|
|
||||||
@@ -70,14 +60,6 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl
|
|||||||
/** File plan role service */
|
/** File plan role service */
|
||||||
private FilePlanRoleService filePlanRoleService;
|
private FilePlanRoleService filePlanRoleService;
|
||||||
|
|
||||||
/**
|
|
||||||
* @param policyComponent policy component
|
|
||||||
*/
|
|
||||||
public void setPolicyComponent(PolicyComponent policyComponent)
|
|
||||||
{
|
|
||||||
this.policyComponent = policyComponent;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param recordService record service
|
* @param recordService record service
|
||||||
*/
|
*/
|
||||||
@@ -102,17 +84,6 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl
|
|||||||
this.filePlanRoleService = filePlanRoleService;
|
this.filePlanRoleService = filePlanRoleService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Init method
|
|
||||||
*/
|
|
||||||
public void init()
|
|
||||||
{
|
|
||||||
policyComponent.bindClassBehaviour(
|
|
||||||
NodeServicePolicies.OnMoveNodePolicy.QNAME,
|
|
||||||
ASPECT_EXTENDED_SECURITY,
|
|
||||||
new JavaBehaviour(this, "onMoveNode", NotificationFrequency.TRANSACTION_COMMIT));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityService#hasExtendedSecurity(org.alfresco.service.cmr.repository.NodeRef)
|
* @see org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityService#hasExtendedSecurity(org.alfresco.service.cmr.repository.NodeRef)
|
||||||
*/
|
*/
|
||||||
@@ -181,6 +152,14 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add extended security implementation method
|
||||||
|
*
|
||||||
|
* @param nodeRef
|
||||||
|
* @param readers
|
||||||
|
* @param writers
|
||||||
|
* @param applyToParents
|
||||||
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private void addExtendedSecurityImpl(NodeRef nodeRef, Set<String> readers, Set<String> writers, boolean applyToParents)
|
private void addExtendedSecurityImpl(NodeRef nodeRef, Set<String> readers, Set<String> writers, boolean applyToParents)
|
||||||
{
|
{
|
||||||
@@ -288,47 +267,6 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// private void removeExtendedSecurityRoles(NodeRef nodeRef, Set<String> readers, Set<String> writers)
|
|
||||||
// {
|
|
||||||
// NodeRef filePlan = filePlanService.getFilePlan(nodeRef);
|
|
||||||
//
|
|
||||||
// removeExtendedSecurityRolesImpl(filePlan, readers, PROP_EXTENDED_READER_ROLE, FilePlanRoleService.ROLE_EXTENDED_READERS);
|
|
||||||
// removeExtendedSecurityRolesImpl(filePlan, writers, PROP_EXTENDED_WRITER_ROLE, FilePlanRoleService.ROLE_EXTENDED_WRITERS);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// private void removeExtendedSecurityRolesImpl(NodeRef filePlan, Set<String> authorities, QName propertyName, String roleName)
|
|
||||||
// {
|
|
||||||
// if (authorities != null)
|
|
||||||
// {
|
|
||||||
// // get the reference count
|
|
||||||
// Map<String, Integer> referenceCountMap = (Map<String, Integer>)nodeService.getProperty(filePlan, propertyName);
|
|
||||||
//
|
|
||||||
// for (String authority : authorities)
|
|
||||||
// {
|
|
||||||
// if (authority.equals(PermissionService.ALL_AUTHORITIES) == false)
|
|
||||||
// {
|
|
||||||
// if (referenceCountMap == null)
|
|
||||||
// {
|
|
||||||
// // remove the authority from the role
|
|
||||||
// filePlanRoleService.unassignRoleFromAuthority(filePlan, roleName, authority);
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// Integer count = referenceCountMap.get(authority);
|
|
||||||
// if (count == null || count == 1)
|
|
||||||
// {
|
|
||||||
// // remove the authority from the role
|
|
||||||
// filePlanRoleService.unassignRoleFromAuthority(filePlan, roleName, authority);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// // update the reference count
|
|
||||||
// nodeService.setProperty(filePlan, propertyName, (Serializable)removeFromMap(referenceCountMap, authorities));
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param map
|
* @param map
|
||||||
@@ -364,13 +302,18 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl
|
|||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityService#removeExtendedSecurity(org.alfresco.service.cmr.repository.NodeRef, java.util.Set, java.util.Set)
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void removeExtendedSecurity(NodeRef nodeRef, Set<String> readers, Set<String> writers)
|
public void removeExtendedSecurity(NodeRef nodeRef, Set<String> readers, Set<String> writers)
|
||||||
{
|
{
|
||||||
removeExtendedSecurity(nodeRef, readers, writers, true);
|
removeExtendedSecurity(nodeRef, readers, writers, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityService#removeExtendedSecurity(org.alfresco.service.cmr.repository.NodeRef, java.util.Set, java.util.Set, boolean)
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void removeExtendedSecurity(NodeRef nodeRef, Set<String> readers, Set<String>writers, boolean applyToParents)
|
public void removeExtendedSecurity(NodeRef nodeRef, Set<String> readers, Set<String>writers, boolean applyToParents)
|
||||||
{
|
{
|
||||||
@@ -428,6 +371,13 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper method to remove items from map or reduce reference count
|
||||||
|
*
|
||||||
|
* @param map ref count map
|
||||||
|
* @param keys keys
|
||||||
|
* @return Map<String, Integer> ref count map
|
||||||
|
*/
|
||||||
private Map<String, Integer> removeFromMap(Map<String, Integer> map, Set<String> keys)
|
private Map<String, Integer> removeFromMap(Map<String, Integer> map, Set<String> keys)
|
||||||
{
|
{
|
||||||
if (map != null && keys != null && keys.size() != 0)
|
if (map != null && keys != null && keys.size() != 0)
|
||||||
@@ -464,12 +414,18 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl
|
|||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityService#removeAllExtendedSecurity(org.alfresco.service.cmr.repository.NodeRef)
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void removeAllExtendedSecurity(NodeRef nodeRef)
|
public void removeAllExtendedSecurity(NodeRef nodeRef)
|
||||||
{
|
{
|
||||||
removeAllExtendedSecurity(nodeRef, true);
|
removeAllExtendedSecurity(nodeRef, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityService#removeAllExtendedSecurity(org.alfresco.service.cmr.repository.NodeRef, boolean)
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void removeAllExtendedSecurity(NodeRef nodeRef, boolean applyToParents)
|
public void removeAllExtendedSecurity(NodeRef nodeRef, boolean applyToParents)
|
||||||
{
|
{
|
||||||
@@ -478,30 +434,4 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl
|
|||||||
removeExtendedSecurity(nodeRef, getExtendedReaders(nodeRef), getExtendedWriters(nodeRef));
|
removeExtendedSecurity(nodeRef, getExtendedReaders(nodeRef), getExtendedWriters(nodeRef));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @see org.alfresco.repo.node.NodeServicePolicies.OnMoveNodePolicy#onMoveNode(org.alfresco.service.cmr.repository.ChildAssociationRef, org.alfresco.service.cmr.repository.ChildAssociationRef)
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void onMoveNode(final ChildAssociationRef origAssoc, final ChildAssociationRef newAssoc)
|
|
||||||
{
|
|
||||||
AuthenticationUtil.runAsSystem(new RunAsWork<Void>()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public Void doWork() throws Exception
|
|
||||||
{
|
|
||||||
NodeRef record = newAssoc.getChildRef();
|
|
||||||
NodeRef newParent = newAssoc.getParentRef();
|
|
||||||
NodeRef oldParent = origAssoc.getParentRef();
|
|
||||||
|
|
||||||
Set<String> readers = getExtendedReaders(record);
|
|
||||||
Set<String> writers = getExtendedWriters(record);
|
|
||||||
|
|
||||||
addExtendedSecurity(newParent, readers, writers);
|
|
||||||
removeExtendedSecurity(oldParent, readers, writers);
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user