diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-version-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-version-context.xml
index e58a78ee8a..224648258d 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-version-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-version-context.xml
@@ -18,6 +18,7 @@
+
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/version/RecordableVersionServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/version/RecordableVersionServiceImpl.java
index b782aa43ee..bf6f64c1fc 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/version/RecordableVersionServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/version/RecordableVersionServiceImpl.java
@@ -29,6 +29,7 @@ import java.util.Map;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
+import org.alfresco.module.org_alfresco_module_rm.model.security.ModelSecurityService;
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
import org.alfresco.module.org_alfresco_module_rm.relationship.RelationshipService;
import org.alfresco.module.org_alfresco_module_rm.util.AuthenticationUtil;
@@ -78,6 +79,9 @@ public class RecordableVersionServiceImpl extends Version2ServiceImpl
/** record service */
private RecordService recordService;
+
+ /** model security service */
+ private ModelSecurityService modelSecurityService;
/**
* @param filePlanService file plan service
@@ -110,6 +114,14 @@ public class RecordableVersionServiceImpl extends Version2ServiceImpl
{
this.recordService = recordService;
}
+
+ /**
+ * @param modelSecurityService model security service
+ */
+ public void setModelSecurityService(ModelSecurityService modelSecurityService)
+ {
+ this.modelSecurityService = modelSecurityService;
+ }
/**
* @see org.alfresco.repo.version.Version2ServiceImpl#createVersion(org.alfresco.service.cmr.repository.NodeRef, java.util.Map, int)
@@ -273,6 +285,12 @@ public class RecordableVersionServiceImpl extends Version2ServiceImpl
// disable other behaviours that we don't want to trigger during this process
policyBehaviourFilter.disableBehaviour(ContentModel.ASPECT_MULTILINGUAL_DOCUMENT);
policyBehaviourFilter.disableBehaviour(ContentModel.TYPE_MULTILINGUAL_CONTAINER);
+
+ // disable model security check
+ modelSecurityService.disable();
+
+ // disable property editable check
+ recordService.disablePropertyEditableCheck();
try
{
@@ -325,6 +343,12 @@ public class RecordableVersionServiceImpl extends Version2ServiceImpl
}
finally
{
+ // enable model security check
+ modelSecurityService.enable();
+
+ // enable property editable check
+ recordService.enablePropertyEditableCheck();
+
// Enable behaviours
this.policyBehaviourFilter.enableBehaviour(ContentModel.ASPECT_VERSIONABLE);
this.policyBehaviourFilter.enableBehaviour(ContentModel.ASPECT_MULTILINGUAL_DOCUMENT);
diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/version/AdHocRecordableVersions.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/version/AdHocRecordableVersions.java
index a529df9f8c..4ac4106b6c 100644
--- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/version/AdHocRecordableVersions.java
+++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/version/AdHocRecordableVersions.java
@@ -25,6 +25,8 @@ import java.util.Map;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.module.org_alfresco_module_rm.test.util.TestModel;
import org.alfresco.module.org_alfresco_module_rm.version.RecordableVersionServiceImpl;
+import org.alfresco.repo.security.authentication.AuthenticationUtil;
+import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.repo.version.VersionModel;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.version.Version;
@@ -160,13 +162,21 @@ public class AdHocRecordableVersions extends RecordableVersionsBaseTest
public void when()
{
// create version
- Version version = versionService.createVersion(dmDocument, versionProperties);
+ final Version version = versionService.createVersion(dmDocument, versionProperties);
- // add custom meta-data to record
- NodeRef record = (NodeRef)version.getVersionProperties().get(RecordableVersionServiceImpl.PROP_VERSION_RECORD);
- assertNotNull(record);
- recordService.addRecordType(record, TestModel.ASPECT_RECORD_METADATA);
- nodeService.setProperty(record, TestModel.PROPERTY_RECORD_METADATA, "Peter Wetherall");
+ AuthenticationUtil.runAs(new RunAsWork()
+ {
+ public Void doWork() throws Exception
+ {
+ // add custom meta-data to record
+ NodeRef record = (NodeRef)version.getVersionProperties().get(RecordableVersionServiceImpl.PROP_VERSION_RECORD);
+ assertNotNull(record);
+ recordService.addRecordType(record, TestModel.ASPECT_RECORD_METADATA);
+ nodeService.setProperty(record, TestModel.PROPERTY_RECORD_METADATA, "Peter Wetherall");
+
+ return null;
+ }
+ }, AuthenticationUtil.getAdminUserName());
}
public void then()