diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/patch/rm-patch-v21-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/patch/rm-patch-v21-context.xml
index d6abeca930..3652efbb00 100755
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/patch/rm-patch-v21-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/patch/rm-patch-v21-context.xml
@@ -48,8 +48,8 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
\ No newline at end of file
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/AbstractModulePatch.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/AbstractModulePatch.java
index e1cd235e39..c5db8b4cc3 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/AbstractModulePatch.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/AbstractModulePatch.java
@@ -146,6 +146,9 @@ public abstract class AbstractModulePatch implements ModulePatch, BeanNameAware
return moduleId;
}
+ /**
+ * @param fixesFromSchema fixes from schema value
+ */
public void setFixesFromSchema(int fixesFromSchema)
{
this.fixesFromSchema = fixesFromSchema;
@@ -160,6 +163,9 @@ public abstract class AbstractModulePatch implements ModulePatch, BeanNameAware
return fixesFromSchema;
}
+ /**
+ * @param fixesToSchema fixes to schema value
+ */
public void setFixesToSchema(int fixesToSchema)
{
this.fixesToSchema = fixesToSchema;
@@ -206,15 +212,16 @@ public abstract class AbstractModulePatch implements ModulePatch, BeanNameAware
",to=" + fixesToSchema +
",target=" + targetSchema);
}
-
+
+ // do patch in transaction
transactionService.getRetryingTransactionHelper().doInTransaction(
new ApplyCallback(),
true,
false);
-
- if (LOGGER.isDebugEnabled())
+
+ if (LOGGER.isInfoEnabled())
{
- LOGGER.debug(" ... module patch applied");
+ LOGGER.info(" ... module patch applied");
}
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/common/CapabilityPatch.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/common/CapabilityPatch.java
index e977f71e96..0ac771a89d 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/common/CapabilityPatch.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/common/CapabilityPatch.java
@@ -21,13 +21,12 @@ package org.alfresco.module.org_alfresco_module_rm.patch.common;
import java.util.Set;
import org.alfresco.error.AlfrescoRuntimeException;
-import org.alfresco.module.org_alfresco_module_rm.capability.Capability;
-import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.patch.AbstractModulePatch;
-import org.alfresco.module.org_alfresco_module_rm.role.FilePlanRoleService;
-import org.alfresco.module.org_alfresco_module_rm.role.Role;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.security.AuthorityService;
+import org.alfresco.service.cmr.security.AuthorityType;
+import org.alfresco.service.cmr.security.PermissionService;
/**
* Abstract implementation of capability patch.
@@ -40,26 +39,26 @@ public abstract class CapabilityPatch extends AbstractModulePatch
/** File plan service */
private FilePlanService filePlanService;
- /** File plan role service */
- private FilePlanRoleService filePlanRoleService;
-
- /** Capability service */
- private CapabilityService capabilityService;
-
+ /** authority service */
+ private AuthorityService authorityService;
+
+ /** permission service */
+ private PermissionService permissionService;
+
/**
- * @param filePlanRoleService file plan role service
+ * @param authorityService authority service
*/
- public void setFilePlanRoleService(FilePlanRoleService filePlanRoleService)
+ public void setAuthorityService(AuthorityService authorityService)
{
- this.filePlanRoleService = filePlanRoleService;
+ this.authorityService = authorityService;
}
-
+
/**
- * @param capabilityService capability service
+ * @param permissionService permission service
*/
- public void setCapabilityService(CapabilityService capabilityService)
+ public void setPermissionService(PermissionService permissionService)
{
- this.capabilityService = capabilityService;
+ this.permissionService = permissionService;
}
/**
@@ -89,32 +88,17 @@ public abstract class CapabilityPatch extends AbstractModulePatch
*/
protected void addCapability(NodeRef filePlan, String capabilityName, String ... roles)
{
- Capability capability = capabilityService.getCapability(capabilityName);
- if (capability == null)
+ for (String role : roles)
{
- throw new AlfrescoRuntimeException("Can't patch capabilities, because capability " + capabilityName + " does not exist.");
- }
-
- for (String roleName : roles)
- {
- Role role = filePlanRoleService.getRole(filePlan, roleName);
-
- if (role != null)
+ String fullRoleName = role + filePlan.getId();
+ String roleAuthority = authorityService.getName(AuthorityType.GROUP, fullRoleName);
+ if (roleAuthority == null)
{
- // get the roles current capabilities
- Set capabilities = role.getCapabilities();
-
- // only update if the capability is missing
- if (!capabilities.contains(capability))
- {
- if (LOGGER.isDebugEnabled())
- {
- LOGGER.debug(" ... adding capability " + capabilityName + " to role " + role.getName());
- }
-
- capabilities.add(capability);
- filePlanRoleService.updateRole(filePlan, role.getName(), role.getDisplayLabel(), capabilities);
- }
+ throw new AlfrescoRuntimeException("Role " + role + " does not exist.");
+ }
+ else
+ {
+ permissionService.setPermission(filePlan, roleAuthority, capabilityName, true);
}
}
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/compatibility/ModulePatchComponent.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/compatibility/ModulePatchComponent.java
index 2367da6b41..e2232b6d1b 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/compatibility/ModulePatchComponent.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/compatibility/ModulePatchComponent.java
@@ -93,7 +93,7 @@ public abstract class ModulePatchComponent extends AbstractModuleComponent
{
LOGGER.info("Module patch component '" + getName() + "' is executing ...");
}
-
+
// execute path within an isolated transaction
retryingTransactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback()
{
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/v21/RMv21CapabilityPatch.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/v21/RMv21CapabilityPatch.java
index 6bd9855bfa..8844cba92b 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/v21/RMv21CapabilityPatch.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/v21/RMv21CapabilityPatch.java
@@ -21,12 +21,12 @@ package org.alfresco.module.org_alfresco_module_rm.patch.v21;
import java.util.Set;
import org.alfresco.error.AlfrescoRuntimeException;
-import org.alfresco.module.org_alfresco_module_rm.capability.Capability;
-import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.role.FilePlanRoleService;
-import org.alfresco.module.org_alfresco_module_rm.role.Role;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.security.AuthorityService;
+import org.alfresco.service.cmr.security.AuthorityType;
+import org.alfresco.service.cmr.security.PermissionService;
/**
* RM v2.1 patch to updated modified capabilities.
@@ -39,28 +39,12 @@ public class RMv21CapabilityPatch extends RMv21PatchComponent
{
/** File plan service */
private FilePlanService filePlanService;
-
- /** File plan role service */
- private FilePlanRoleService filePlanRoleService;
-
- /** Capability service */
- private CapabilityService capabilityService;
-
- /**
- * @param filePlanRoleService file plan role service
- */
- public void setFilePlanRoleService(FilePlanRoleService filePlanRoleService)
- {
- this.filePlanRoleService = filePlanRoleService;
- }
-
- /**
- * @param capabilityService capability service
- */
- public void setCapabilityService(CapabilityService capabilityService)
- {
- this.capabilityService = capabilityService;
- }
+
+ /** authority service */
+ private AuthorityService authorityService;
+
+ /** permission service */
+ private PermissionService permissionService;
/**
* @param filePlanService file plan service
@@ -78,6 +62,22 @@ public class RMv21CapabilityPatch extends RMv21PatchComponent
protected Set getFilePlans()
{
return filePlanService.getFilePlans();
+ }
+
+ /**
+ * @param authorityService authority service
+ */
+ public void setAuthorityService(AuthorityService authorityService)
+ {
+ this.authorityService = authorityService;
+ }
+
+ /**
+ * @param permissionService permission service
+ */
+ public void setPermissionService(PermissionService permissionService)
+ {
+ this.permissionService = permissionService;
}
/**
@@ -87,34 +87,19 @@ public class RMv21CapabilityPatch extends RMv21PatchComponent
* @param capabilityName capability name
* @param roles roles
*/
- protected void addCapability(NodeRef filePlan, String capabilityName, String ... roles)
+ private void addCapability(NodeRef filePlan, String capabilityName, String ... roles)
{
- Capability capability = capabilityService.getCapability(capabilityName);
- if (capability == null)
+ for (String role : roles)
{
- throw new AlfrescoRuntimeException("Unable to bootstrap RMv21 capabilities, because capability " + capabilityName + " does not exist.");
- }
-
- for (String roleName : roles)
- {
- Role role = filePlanRoleService.getRole(filePlan, roleName);
-
- if (role != null)
+ String fullRoleName = role + filePlan.getId();
+ String roleAuthority = authorityService.getName(AuthorityType.GROUP, fullRoleName);
+ if (roleAuthority == null)
{
- // get the roles current capabilities
- Set capabilities = role.getCapabilities();
-
- // only update if the capability is missing
- if (!capabilities.contains(capability))
- {
- if (LOGGER.isDebugEnabled())
- {
- LOGGER.debug(" ... adding capability " + capabilityName + " to role " + role.getName());
- }
-
- capabilities.add(capability);
- filePlanRoleService.updateRole(filePlan, role.getName(), role.getDisplayLabel(), capabilities);
- }
+ throw new AlfrescoRuntimeException("Role " + role + " does not exist.");
+ }
+ else
+ {
+ permissionService.setPermission(filePlan, roleAuthority, capabilityName, true);
}
}
}