diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/action-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/action-context.xml
index c2da41d10d..ca3a80db91 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/action-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/action-context.xml
@@ -18,6 +18,7 @@
+
{http://www.alfresco.org/model/content/1.0}content
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/dm/CreateRecordAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/dm/CreateRecordAction.java
index c5632abac1..90901bd66a 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/dm/CreateRecordAction.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/dm/CreateRecordAction.java
@@ -31,6 +31,7 @@ import org.alfresco.repo.action.executer.ActionExecuterAbstractBase;
import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.action.ParameterDefinition;
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
+import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.apache.commons.logging.Log;
@@ -68,6 +69,9 @@ public class CreateRecordAction extends ActionExecuterAbstractBase
/** File plan service */
private FilePlanService filePlanService;
+ /** Dictionary service */
+ private DictionaryService dictionaryService;
+
/**
* @param recordsManagementService records management service
*/
@@ -100,13 +104,36 @@ public class CreateRecordAction extends ActionExecuterAbstractBase
this.filePlanService = filePlanService;
}
+ @Override
+ public void setDictionaryService(DictionaryService dictionaryService)
+ {
+ this.dictionaryService = dictionaryService;
+ }
+
/**
* @see org.alfresco.repo.action.executer.ActionExecuterAbstractBase#executeImpl(org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef)
*/
@Override
protected void executeImpl(final Action action, final NodeRef actionedUponNodeRef)
{
- if (nodeService.hasAspect(actionedUponNodeRef, ASPECT_RECORD) == true)
+
+ if (nodeService.exists(actionedUponNodeRef) == false)
+ {
+ // do not create record if the actioned upon node does not exist!
+ if (logger.isDebugEnabled() == true)
+ {
+ logger.debug("Can not create record, because " + actionedUponNodeRef.toString() + " does not exist.");
+ }
+ }
+ else if (dictionaryService.isSubClass(ContentModel.TYPE_CONTENT, nodeService.getType(actionedUponNodeRef)) == false)
+ {
+ // TODO eventually we should support other types .. either as record folders or as composite records
+ if (logger.isDebugEnabled() == true)
+ {
+ logger.debug("Can not create record, because " + actionedUponNodeRef.toString() + " is not a supported type.");
+ }
+ }
+ else if (nodeService.hasAspect(actionedUponNodeRef, ASPECT_RECORD) == true)
{
// Do not create record if the actioned upon node is already a record!
if (logger.isDebugEnabled() == true)