diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/extended-repository-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/extended-repository-context.xml
index 2e82dcff34..e17cd9fabe 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/extended-repository-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/extended-repository-context.xml
@@ -236,4 +236,5 @@
+
\ No newline at end of file
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/actions.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/actions.properties
index 955c445165..36276075ef 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/actions.properties
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/actions.properties
@@ -37,8 +37,20 @@ rm.action.records_only_undeclared=Only records can be undeclared.
rm.action.event-not-undone=The event {0} can not be undone, because it is not defined on the disposition lifecycle.
rm.action.reject-no-reason=Can not reject a record without a reason.
rm.action.reject-only-unfiled-records=Can only reject unfiled records.
+
#
-# i18n for Rule Actions
+# i18n for Records Management Action Conditions
+#
+# Is declared
+isDeclared.title=Is Record Declared
+isDeclared.description=Is the record declared.
+
+# Is filed
+isRecordFiled.title=Is Record Filed
+isRecordFiled.description=Is the record filed.
+
+#
+# i18n for Records Management Actions
#
# Create record
create-record.title=Create record
@@ -56,4 +68,4 @@ fileTo.createRecordFolder.display-label=Create Record Folder
# Reject
reject.title=Reject
reject.description=Rejects a record and moves the document to its original location
-reject.reason.display-label=Reject reason
\ No newline at end of file
+reject.reason.display-label=Reject reason
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml
index 4c47f237de..ab802c31bd 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml
@@ -11,6 +11,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml
index f020ed05ca..e6e7a3612b 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml
@@ -2,6 +2,7 @@
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Get action condition definition collection for DM
+ Gets a collection of the available action condition definitions in DM.
+ /api/rm/dm-actionconditiondefinitions
+ argument
+ user
+ required
+
\ No newline at end of file
diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/dm-actionconditiondefinitions.get.json.ftl b/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/dm-actionconditiondefinitions.get.json.ftl
new file mode 100644
index 0000000000..1515eae7dd
--- /dev/null
+++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/dm-actionconditiondefinitions.get.json.ftl
@@ -0,0 +1 @@
+<#include "actionconditiondefinitions.get.json.ftl">
\ No newline at end of file
diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/rm-actionconditiondefinitions.get.desc.xml b/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/rm-actionconditiondefinitions.get.desc.xml
new file mode 100644
index 0000000000..8627529e25
--- /dev/null
+++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/rm-actionconditiondefinitions.get.desc.xml
@@ -0,0 +1,8 @@
+
+ Get action condition definition collection for RM
+ Gets a collection of the available action condition definitions in RM.
+ /api/rm/rm-actionconditiondefinitions
+ argument
+ user
+ required
+
\ No newline at end of file
diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/rm-actionconditiondefinitions.get.json.ftl b/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/rm-actionconditiondefinitions.get.json.ftl
new file mode 100644
index 0000000000..1515eae7dd
--- /dev/null
+++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/rule/rm-actionconditiondefinitions.get.json.ftl
@@ -0,0 +1 @@
+<#include "actionconditiondefinitions.get.json.ftl">
\ No newline at end of file
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RMActionExecuterAbstractBase.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RMActionExecuterAbstractBase.java
index 36269d40d1..9ca08ba400 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RMActionExecuterAbstractBase.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RMActionExecuterAbstractBase.java
@@ -42,7 +42,6 @@ import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
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.vital.VitalRecordService;
-import org.alfresco.repo.action.ExtendedActionDefinitionImpl;
import org.alfresco.repo.action.executer.ActionExecuterAbstractBase;
import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.action.ActionDefinition;
@@ -284,7 +283,7 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
@Override
protected ActionDefinition createActionDefinition(String name)
{
- return new ExtendedActionDefinitionImpl(name);
+ return new RecordsManagementActionDefinitionImpl(name);
}
/**
@@ -294,7 +293,7 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
public ActionDefinition getActionDefinition()
{
ActionDefinition actionDefinition = super.getActionDefinition();
- ((ExtendedActionDefinitionImpl)this.actionDefinition).setApplicableKinds(applicableKinds);
+ ((RecordsManagementActionDefinitionImpl)this.actionDefinition).setApplicableKinds(applicableKinds);
return actionDefinition;
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementAction.java
index d50dfa0c76..6744989ad2 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementAction.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementAction.java
@@ -66,17 +66,6 @@ public interface RecordsManagementAction
* @param parameters action parameters
*/
public RecordsManagementActionResult execute(NodeRef filePlanComponent, Map parameters);
-
-
- /**
- * Can this action be executed?
- * Does it meet all of its entry requirements - EXCEPT permission checks.
- *
- * @param filePlanComponent file plan component the action is executed upon
- * @param parameters action parameters
- * @return
- */
- // public boolean isExecutable(NodeRef filePlanComponent, Map parameters);
/**
* Some admin-related rmActions execute against a target nodeRef which is not provided
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionDefinition.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionDefinition.java
new file mode 100644
index 0000000000..0a321ebbe2
--- /dev/null
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionDefinition.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2005-2012 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 .
+ */
+package org.alfresco.module.org_alfresco_module_rm.action;
+
+/**
+ * Records management condition definition.
+ *
+ * Primarily used as a marker interface.
+ *
+ * @author Roy Wetherall
+ * @since 2.1
+ */
+public interface RecordsManagementActionConditionDefinition
+{
+}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionDefinitionImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionDefinitionImpl.java
new file mode 100644
index 0000000000..bc32058653
--- /dev/null
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionDefinitionImpl.java
@@ -0,0 +1,44 @@
+/*
+ * 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 .
+ */
+package org.alfresco.module.org_alfresco_module_rm.action;
+
+import org.alfresco.repo.action.ActionConditionDefinitionImpl;
+
+/**
+ * Records management condition definition implementation.
+ *
+ * @author Roy Wetherall
+ * @since 2.1
+ */
+public class RecordsManagementActionConditionDefinitionImpl extends ActionConditionDefinitionImpl
+ implements RecordsManagementActionConditionDefinition
+{
+ /** Serial Version UID */
+ private static final long serialVersionUID = -7599279732731533610L;
+
+ /**
+ * Default constructor.
+ *
+ * @param name name of the condition
+ */
+ public RecordsManagementActionConditionDefinitionImpl(String name)
+ {
+ super(name);
+ }
+}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionEvaluatorAbstractBase.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionEvaluatorAbstractBase.java
new file mode 100644
index 0000000000..34c090c0dc
--- /dev/null
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionEvaluatorAbstractBase.java
@@ -0,0 +1,65 @@
+/*
+ * 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 .
+ */
+package org.alfresco.module.org_alfresco_module_rm.action;
+
+import java.util.List;
+
+import org.alfresco.repo.action.evaluator.ActionConditionEvaluatorAbstractBase;
+import org.alfresco.service.cmr.action.ActionConditionDefinition;
+import org.alfresco.service.cmr.action.ParameterDefinition;
+
+/**
+ * Records management action condition evaluator abstract base implementation.
+ *
+ * @author Roy Wetherall
+ * @since 2.1
+ */
+public abstract class RecordsManagementActionConditionEvaluatorAbstractBase extends ActionConditionEvaluatorAbstractBase
+{
+ /**
+ * @see org.alfresco.repo.action.evaluator.ActionConditionEvaluatorAbstractBase#getActionConditionDefintion()
+ *
+ * TODO base class should provide "createActionDefinition" method that can be over-ridden like the ActionExecuter
+ * base class to prevent duplication of code and a cleaner extension.
+ */
+ @Override
+ public ActionConditionDefinition getActionConditionDefintion()
+ {
+ if (this.actionConditionDefinition == null)
+ {
+ this.actionConditionDefinition = new RecordsManagementActionConditionDefinitionImpl(name);
+ ((RecordsManagementActionConditionDefinitionImpl)actionConditionDefinition).setTitleKey(getTitleKey());
+ ((RecordsManagementActionConditionDefinitionImpl)actionConditionDefinition).setDescriptionKey(getDescriptionKey());
+ ((RecordsManagementActionConditionDefinitionImpl)actionConditionDefinition).setAdhocPropertiesAllowed(getAdhocPropertiesAllowed());
+ ((RecordsManagementActionConditionDefinitionImpl)actionConditionDefinition).setConditionEvaluator(name);
+ ((RecordsManagementActionConditionDefinitionImpl)actionConditionDefinition).setParameterDefinitions(getParameterDefintions());
+ }
+ return this.actionConditionDefinition;
+ }
+
+ /**
+ * @see org.alfresco.repo.action.ParameterizedItemAbstractBase#addParameterDefinitions(java.util.List)
+ */
+ @Override
+ protected void addParameterDefinitions(List arg0)
+ {
+ // No param implementation by default
+ }
+
+}
diff --git a/rm-server/source/java/org/alfresco/repo/action/ExtendedActionDefinition.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionDefinition.java
similarity index 88%
rename from rm-server/source/java/org/alfresco/repo/action/ExtendedActionDefinition.java
rename to rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionDefinition.java
index 0ba40438eb..b5a1a461c9 100644
--- a/rm-server/source/java/org/alfresco/repo/action/ExtendedActionDefinition.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionDefinition.java
@@ -16,7 +16,7 @@
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see .
*/
-package org.alfresco.repo.action;
+package org.alfresco.module.org_alfresco_module_rm.action;
import java.util.Set;
@@ -28,7 +28,7 @@ import org.alfresco.module.org_alfresco_module_rm.FilePlanComponentKind;
* @author Roy Wetherall
* @since 2.1
*/
-public interface ExtendedActionDefinition
+public interface RecordsManagementActionDefinition
{
/**
* @return list of applicable file plan component kinds
diff --git a/rm-server/source/java/org/alfresco/repo/action/ExtendedActionDefinitionImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionDefinitionImpl.java
similarity index 77%
rename from rm-server/source/java/org/alfresco/repo/action/ExtendedActionDefinitionImpl.java
rename to rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionDefinitionImpl.java
index ba85e48b52..6bf7d90627 100644
--- a/rm-server/source/java/org/alfresco/repo/action/ExtendedActionDefinitionImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionDefinitionImpl.java
@@ -16,11 +16,12 @@
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see .
*/
-package org.alfresco.repo.action;
+package org.alfresco.module.org_alfresco_module_rm.action;
import java.util.Set;
import org.alfresco.module.org_alfresco_module_rm.FilePlanComponentKind;
+import org.alfresco.repo.action.ActionDefinitionImpl;
/**
* Extended action definition implementation.
@@ -28,7 +29,7 @@ import org.alfresco.module.org_alfresco_module_rm.FilePlanComponentKind;
* @author Roy Wetherall
* @since 2.1
*/
-public class ExtendedActionDefinitionImpl extends ActionDefinitionImpl implements ExtendedActionDefinition
+public class RecordsManagementActionDefinitionImpl extends ActionDefinitionImpl implements RecordsManagementActionDefinition
{
/** generated serial version id */
private static final long serialVersionUID = -5226538434707253206L;
@@ -41,7 +42,7 @@ public class ExtendedActionDefinitionImpl extends ActionDefinitionImpl implement
*
* @param name action definition name
*/
- public ExtendedActionDefinitionImpl(String name)
+ public RecordsManagementActionDefinitionImpl(String name)
{
super(name);
}
@@ -55,7 +56,7 @@ public class ExtendedActionDefinitionImpl extends ActionDefinitionImpl implement
}
/**
- * @see org.alfresco.repo.action.ExtendedActionDefinition#getApplicableKinds()
+ * @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionDefinition#getApplicableKinds()
*/
@Override
public Set getApplicableKinds()
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/evaluator/CapabilityConditionEvaluator.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/evaluator/CapabilityConditionEvaluator.java
new file mode 100644
index 0000000000..aeb062b5a5
--- /dev/null
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/evaluator/CapabilityConditionEvaluator.java
@@ -0,0 +1,57 @@
+/*
+ * 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 .
+ */
+package org.alfresco.module.org_alfresco_module_rm.action.evaluator;
+
+import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionConditionEvaluatorAbstractBase;
+import org.alfresco.module.org_alfresco_module_rm.capability.declarative.CapabilityCondition;
+import org.alfresco.service.cmr.action.ActionCondition;
+import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.util.ParameterCheck;
+
+/**
+ * Records management evaluator base implementation that delegates to a configured capability condition
+ * implementation.
+ *
+ * @author Roy Wetherall
+ * @since 2.1
+ */
+public class CapabilityConditionEvaluator extends RecordsManagementActionConditionEvaluatorAbstractBase
+{
+ /** Capability Condition */
+ private CapabilityCondition capabilityCondition;
+
+ /**
+ * @param capabilityCondition capability condition
+ */
+ public void setCapabilityCondition(CapabilityCondition capabilityCondition)
+ {
+ this.capabilityCondition = capabilityCondition;
+ }
+
+ /**
+ * @see org.alfresco.repo.action.evaluator.ActionConditionEvaluatorAbstractBase#evaluateImpl(org.alfresco.service.cmr.action.ActionCondition, org.alfresco.service.cmr.repository.NodeRef)
+ */
+ @Override
+ protected boolean evaluateImpl(ActionCondition actionCondition, NodeRef actionedUponNodeRef)
+ {
+ // check a capability condition has been set and delegate
+ ParameterCheck.mandatory("capabilityCondition", capabilityCondition);
+ return capabilityCondition.evaluate(actionedUponNodeRef);
+ }
+}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RMDelegateAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DelegateAction.java
similarity index 88%
rename from rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RMDelegateAction.java
rename to rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DelegateAction.java
index 7816fb0fcf..44e40094f1 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RMDelegateAction.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DelegateAction.java
@@ -16,10 +16,11 @@
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see .
*/
-package org.alfresco.module.org_alfresco_module_rm.action;
+package org.alfresco.module.org_alfresco_module_rm.action.impl;
import java.util.List;
+import org.alfresco.module.org_alfresco_module_rm.action.RMActionExecuterAbstractBase;
import org.alfresco.repo.action.executer.ActionExecuter;
import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.action.ParameterDefinition;
@@ -33,7 +34,7 @@ import org.alfresco.service.cmr.repository.NodeRef;
* @author Roy Wetherall
* @since 2.1
*/
-public class RMDelegateAction extends RMActionExecuterAbstractBase
+public class DelegateAction extends RMActionExecuterAbstractBase
{
/** Delegate action executer*/
private ActionExecuter delegateActionExecuter;
diff --git a/rm-server/source/java/org/alfresco/repo/action/ExtendedActionServiceImpl.java b/rm-server/source/java/org/alfresco/repo/action/ExtendedActionServiceImpl.java
index da5e4816a0..d92acadf91 100644
--- a/rm-server/source/java/org/alfresco/repo/action/ExtendedActionServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/repo/action/ExtendedActionServiceImpl.java
@@ -24,6 +24,7 @@ import java.util.Set;
import org.alfresco.module.org_alfresco_module_rm.FilePlanComponentKind;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
+import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionDefinition;
import org.alfresco.service.cmr.action.ActionDefinition;
import org.alfresco.service.cmr.repository.NodeRef;
@@ -71,11 +72,11 @@ public class ExtendedActionServiceImpl extends ActionServiceImpl
// check each action definition
for (ActionDefinition actionDefinition : actionDefinitions)
{
- if (actionDefinition instanceof ExtendedActionDefinition)
+ if (actionDefinition instanceof RecordsManagementActionDefinition)
{
if (kind != null)
{
- Set applicableKinds = ((ExtendedActionDefinition)actionDefinition).getApplicableKinds();
+ Set applicableKinds = ((RecordsManagementActionDefinition)actionDefinition).getApplicableKinds();
if (applicableKinds == null || applicableKinds.size() == 0 || applicableKinds.contains(kind))
{
// an RM action can only act on a RM artifact
@@ -96,13 +97,4 @@ public class ExtendedActionServiceImpl extends ActionServiceImpl
return result;
}
-
- /**
- * @see org.alfresco.repo.action.ActionServiceImpl#postCommit()
- */
- @Override
- public void postCommit()
- {
- super.postCommit();
- }
}
diff --git a/rm-server/source/java/org/alfresco/repo/web/scripts/rule/AbstractActionDefinitionsGet.java b/rm-server/source/java/org/alfresco/repo/web/scripts/rule/AbstractActionDefinitionsGet.java
index e9214366f9..bd33a2c5f1 100644
--- a/rm-server/source/java/org/alfresco/repo/web/scripts/rule/AbstractActionDefinitionsGet.java
+++ b/rm-server/source/java/org/alfresco/repo/web/scripts/rule/AbstractActionDefinitionsGet.java
@@ -23,8 +23,12 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import org.alfresco.repo.action.ExtendedActionDefinition;
+import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionConditionDefinition;
+import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionDefinition;
+import org.alfresco.service.cmr.action.ActionConditionDefinition;
import org.alfresco.service.cmr.action.ActionDefinition;
+import org.alfresco.service.cmr.action.ActionService;
+import org.springframework.extensions.webscripts.DeclarativeWebScript;
/**
* An abstract class for the java backed webscripts to get the filtered action definition list.
@@ -32,8 +36,15 @@ import org.alfresco.service.cmr.action.ActionDefinition;
* @author Tuna Aksoy
* @since 2.1
*/
-public class AbstractActionDefinitionsGet extends AbstractRuleWebScript
+public class AbstractActionDefinitionsGet extends DeclarativeWebScript
{
+ private ActionService actionService;
+
+ public void setActionService(ActionService actionService)
+ {
+ this.actionService = actionService;
+ }
+
/**
* Returns a model with the filtered action definitions
*
@@ -50,6 +61,21 @@ public class AbstractActionDefinitionsGet extends AbstractRuleWebScript
return model;
}
+
+ /**
+ *
+ * @param removeRmDefs
+ * @return
+ */
+ protected Map getModelWithFilteredActionConditionDefinitions(boolean removeRmDefs)
+ {
+ List defs = filterActionConditionDefinitons(actionService.getActionConditionDefinitions(), removeRmDefs);
+
+ Map model = new HashMap();
+ model.put("actionconditiondefinitions", defs);
+
+ return model;
+ }
/**
* Filters the action definition list
@@ -62,11 +88,29 @@ public class AbstractActionDefinitionsGet extends AbstractRuleWebScript
{
for (Iterator iterator = actionDefinitions.iterator(); iterator.hasNext();)
{
- if ((iterator.next() instanceof ExtendedActionDefinition) == removeRmRelatedActionDefs)
+ if ((iterator.next() instanceof RecordsManagementActionDefinition) == removeRmRelatedActionDefs)
{
iterator.remove();
}
}
return actionDefinitions;
}
+
+ /**
+ *
+ * @param defs
+ * @param removeRmRelated
+ * @return
+ */
+ private List filterActionConditionDefinitons(List defs, boolean removeRmRelated)
+ {
+ for (Iterator iterator = defs.iterator(); iterator.hasNext();)
+ {
+ if ((iterator.next() instanceof RecordsManagementActionConditionDefinition) == removeRmRelated)
+ {
+ iterator.remove();
+ }
+ }
+ return defs;
+ }
}
diff --git a/rm-server/source/java/org/alfresco/repo/web/scripts/rule/DmActionConditionDefinitionsGet.java b/rm-server/source/java/org/alfresco/repo/web/scripts/rule/DmActionConditionDefinitionsGet.java
new file mode 100644
index 0000000000..5a10df93c1
--- /dev/null
+++ b/rm-server/source/java/org/alfresco/repo/web/scripts/rule/DmActionConditionDefinitionsGet.java
@@ -0,0 +1,43 @@
+/*
+ * 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 .
+ */
+package org.alfresco.repo.web.scripts.rule;
+
+import java.util.Map;
+
+import org.springframework.extensions.webscripts.Cache;
+import org.springframework.extensions.webscripts.Status;
+import org.springframework.extensions.webscripts.WebScriptRequest;
+
+/**
+ * Implementation for java backed webscript to get the DM related action condition definition list.
+ *
+ * @author Roy Wetherall
+ * @since 2.1
+ */
+public class DmActionConditionDefinitionsGet extends AbstractActionDefinitionsGet
+{
+ /**
+ * @see org.springframework.extensions.webscripts.DeclarativeWebScript#executeImpl(org.springframework.extensions.webscripts.WebScriptRequest, org.springframework.extensions.webscripts.Status, org.springframework.extensions.webscripts.Cache)
+ */
+ @Override
+ protected Map executeImpl(WebScriptRequest req, Status status, Cache cache)
+ {
+ return getModelWithFilteredActionConditionDefinitions(true);
+ }
+}
diff --git a/rm-server/source/java/org/alfresco/repo/web/scripts/rule/RmActionConditionDefinitionsGet.java b/rm-server/source/java/org/alfresco/repo/web/scripts/rule/RmActionConditionDefinitionsGet.java
new file mode 100644
index 0000000000..3ab7743ffd
--- /dev/null
+++ b/rm-server/source/java/org/alfresco/repo/web/scripts/rule/RmActionConditionDefinitionsGet.java
@@ -0,0 +1,43 @@
+/*
+ * 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 .
+ */
+package org.alfresco.repo.web.scripts.rule;
+
+import java.util.Map;
+
+import org.springframework.extensions.webscripts.Cache;
+import org.springframework.extensions.webscripts.Status;
+import org.springframework.extensions.webscripts.WebScriptRequest;
+
+/**
+ * Implementation for Java backed webscript to get the RM related action condition definition list.
+ *
+ * @author Roy Wetherall
+ * @since 2.1
+ */
+public class RmActionConditionDefinitionsGet extends AbstractActionDefinitionsGet
+{
+ /**
+ * @see org.springframework.extensions.webscripts.DeclarativeWebScript#executeImpl(org.springframework.extensions.webscripts.WebScriptRequest, org.springframework.extensions.webscripts.Status, org.springframework.extensions.webscripts.Cache)
+ */
+ @Override
+ protected Map executeImpl(WebScriptRequest req, Status status, Cache cache)
+ {
+ return getModelWithFilteredActionConditionDefinitions(false);
+ }
+}
diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/ActionTestSuite.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/ActionTestSuite.java
index b4cd9a4797..a71f65f3e6 100644
--- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/ActionTestSuite.java
+++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/ActionTestSuite.java
@@ -25,6 +25,8 @@ import org.alfresco.module.org_alfresco_module_rm.test.action.CreateRecordAction
import org.alfresco.module.org_alfresco_module_rm.test.action.FileToActionTest;
import org.alfresco.module.org_alfresco_module_rm.test.action.HideRecordActionTest;
import org.alfresco.module.org_alfresco_module_rm.test.action.RejectActionTest;
+import org.alfresco.module.org_alfresco_module_rm.test.service.ExtendedActionServiceTest;
+import org.alfresco.module.org_alfresco_module_rm.test.service.RecordsManagementActionServiceImplTest;
/**
@@ -43,6 +45,8 @@ public class ActionTestSuite extends TestSuite
public static Test suite()
{
TestSuite suite = new TestSuite();
+ suite.addTestSuite(RecordsManagementActionServiceImplTest.class);
+ suite.addTestSuite(ExtendedActionServiceTest.class);
suite.addTestSuite(CreateRecordActionTest.class);
suite.addTestSuite(HideRecordActionTest.class);
suite.addTestSuite(RejectActionTest.class);
diff --git a/rm-server/test/resources/test-context.xml b/rm-server/test/resources/test-context.xml
index 54f0990aa9..9e137f05d3 100644
--- a/rm-server/test/resources/test-context.xml
+++ b/rm-server/test/resources/test-context.xml
@@ -95,7 +95,7 @@
-
+