diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml
index 73adaab087..9d658f65cc 100644
--- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml
+++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml
@@ -388,8 +388,7 @@
-
-
+
diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml
index c2fd343d4b..6916b0bd36 100644
--- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml
+++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml
@@ -1076,6 +1076,9 @@
+
+
+
@@ -1152,6 +1155,7 @@
org.alfresco.module.org_alfresco_module_rm.record.RecordService.makeRecord=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.record.RecordService.link=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.record.RecordService.unlink=RM_ALLOW
+ org.alfresco.module.org_alfresco_module_rm.record.RecordService.complete=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.record.RecordService.*=RM_DENY
]]>
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DeclareRecordAction.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DeclareRecordAction.java
index 180ef6b895..65d5fbae6a 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DeclareRecordAction.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DeclareRecordAction.java
@@ -27,33 +27,13 @@
package org.alfresco.module.org_alfresco_module_rm.action.impl;
-import static org.alfresco.module.org_alfresco_module_rm.record.RecordUtils.generateRecordIdentifier;
-
-import java.io.Serializable;
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
import org.alfresco.module.org_alfresco_module_rm.action.RMActionExecuterAbstractBase;
-import org.alfresco.module.org_alfresco_module_rm.record.RecordServiceImpl;
-import org.alfresco.module.org_alfresco_module_rm.util.TransactionalResourceHelper;
+import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
import org.alfresco.repo.action.executer.ActionExecuterAbstractBase;
-import org.alfresco.repo.security.authentication.AuthenticationUtil;
-import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
+import org.alfresco.repo.node.integrity.IntegrityException;
import org.alfresco.service.cmr.action.Action;
-import org.alfresco.service.cmr.dictionary.AspectDefinition;
-import org.alfresco.service.cmr.dictionary.PropertyDefinition;
-import org.alfresco.service.cmr.dictionary.TypeDefinition;
import org.alfresco.service.cmr.repository.NodeRef;
-import org.alfresco.service.cmr.security.OwnableService;
-import org.alfresco.service.namespace.QName;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.springframework.extensions.surf.util.I18NUtil;
+import org.alfresco.util.ParameterCheck;
/**
* Declare record action
@@ -65,33 +45,17 @@ public class DeclareRecordAction extends RMActionExecuterAbstractBase
/** action name */
public static final String NAME = "declareRecord";
- /** I18N */
- private static final String MSG_UNDECLARED_ONLY_RECORDS = "rm.action.undeclared-only-records";
- private static final String MSG_NO_DECLARE_MAND_PROP = "rm.action.no-declare-mand-prop";
-
- /** Logger */
- private static Log logger = LogFactory.getLog(DeclareRecordAction.class);
-
- /** check mandatory properties */
- private boolean checkMandatoryPropertiesEnabled = true;
-
- /** transactional resource helper */
- private TransactionalResourceHelper transactionalResourceHelper;
+ /** Record service */
+ private RecordService recordService;
/**
- * @param checkMandatoryPropertiesEnabled true if check mandatory properties is enabled, false otherwise
+ * Sets the record service
+ *
+ * @param recordService record service
*/
- public void setCheckMandatoryPropertiesEnabled(boolean checkMandatoryPropertiesEnabled)
+ public void setRecordService(RecordService recordService)
{
- this.checkMandatoryPropertiesEnabled = checkMandatoryPropertiesEnabled;
- }
-
- /**
- * @param transactionalResourceHelper
- */
- public void setTransactionalResourceHelper(TransactionalResourceHelper transactionalResourceHelper)
- {
- this.transactionalResourceHelper = transactionalResourceHelper;
+ this.recordService = recordService;
}
/**
@@ -100,167 +64,14 @@ public class DeclareRecordAction extends RMActionExecuterAbstractBase
@Override
protected void executeImpl(final Action action, final NodeRef actionedUponNodeRef)
{
- if (getNodeService().exists(actionedUponNodeRef) &&
- getRecordService().isRecord(actionedUponNodeRef) &&
- !getFreezeService().isFrozen(actionedUponNodeRef))
+ ParameterCheck.mandatory("actionedUponNodeRef", actionedUponNodeRef);
+ try
{
- if (!getRecordService().isDeclared(actionedUponNodeRef))
- {
- // if the record is newly created make sure the record identifier is set before completing the record
- Set newRecords = transactionalResourceHelper.getSet(RecordServiceImpl.KEY_NEW_RECORDS);
- if(newRecords.contains(actionedUponNodeRef))
- {
- generateRecordIdentifier(getNodeService(), getIdentifierService(), actionedUponNodeRef);
- }
-
- List missingProperties = new ArrayList<>(5);
- // Aspect not already defined - check mandatory properties then add
- if (!checkMandatoryPropertiesEnabled ||
- mandatoryPropertiesSet(actionedUponNodeRef, missingProperties))
- {
- getRecordService().disablePropertyEditableCheck();
- try
- {
- // Add the declared aspect
- Map declaredProps = new HashMap<>(2);
- declaredProps.put(PROP_DECLARED_AT, new Date());
- declaredProps.put(PROP_DECLARED_BY, AuthenticationUtil.getRunAsUser());
- this.getNodeService().addAspect(actionedUponNodeRef, ASPECT_DECLARED_RECORD, declaredProps);
-
- AuthenticationUtil.runAsSystem(new RunAsWork()
- {
- @Override
- public Void doWork()
- {
- // remove all owner related rights
- getOwnableService().setOwner(actionedUponNodeRef, OwnableService.NO_OWNER);
- return null;
- }
- });
- }
- finally
- {
- getRecordService().enablePropertyEditableCheck();
- }
- }
- else
- {
- logger.debug(buildMissingPropertiesErrorString(missingProperties));
- action.setParameterValue(ActionExecuterAbstractBase.PARAM_RESULT, "missingProperties");
- }
- }
+ recordService.complete(actionedUponNodeRef);
}
- else
- {
- if (logger.isWarnEnabled())
- {
- logger.warn(I18NUtil.getMessage(MSG_UNDECLARED_ONLY_RECORDS, actionedUponNodeRef.toString()));
- }
- }
- }
-
- private String buildMissingPropertiesErrorString(List missingProperties)
- {
- StringBuilder builder = new StringBuilder(255);
- builder.append(I18NUtil.getMessage(MSG_NO_DECLARE_MAND_PROP));
- builder.append(" ");
- for (String missingProperty : missingProperties)
- {
- builder.append(missingProperty).append(", ");
- }
- return builder.toString();
- }
-
- /**
- * Helper method to check whether all the mandatory properties of the node have been set
- *
- * @param nodeRef node reference
- * @return boolean true if all mandatory properties are set, false otherwise
- */
- private boolean mandatoryPropertiesSet(NodeRef nodeRef, List missingProperties)
- {
- boolean result = true;
-
- Map nodeRefProps = this.getNodeService().getProperties(nodeRef);
-
- QName nodeRefType = this.getNodeService().getType(nodeRef);
-
- TypeDefinition typeDef = this.getDictionaryService().getType(nodeRefType);
- for (PropertyDefinition propDef : typeDef.getProperties().values())
- {
- if (propDef.isMandatory() && nodeRefProps.get(propDef.getName()) == null)
- {
- logMissingProperty(propDef, missingProperties);
-
- result = false;
- break;
- }
+ catch (IntegrityException e) {
+ action.setParameterValue(ActionExecuterAbstractBase.PARAM_RESULT, e.getMessage());
}
- if (result)
- {
- Set aspects = this.getNodeService().getAspects(nodeRef);
- for (QName aspect : aspects)
- {
- AspectDefinition aspectDef = this.getDictionaryService().getAspect(aspect);
- for (PropertyDefinition propDef : aspectDef.getProperties().values())
- {
- if (propDef.isMandatory() && nodeRefProps.get(propDef.getName()) == null)
- {
- logMissingProperty(propDef, missingProperties);
-
- result = false;
- break;
- }
- }
- }
- }
-
- // check for missing mandatory metadata from custom aspect definitions
- if (result)
- {
- QName aspect = ASPECT_RECORD;
- if (nodeRefType.equals(TYPE_NON_ELECTRONIC_DOCUMENT))
- {
- aspect = TYPE_NON_ELECTRONIC_DOCUMENT;
- }
-
- // get customAspectImpl
- String localName = aspect.toPrefixString(getNamespaceService()).replace(":", "");
- localName = MessageFormat.format("{0}CustomProperties", localName);
- QName customAspect = QName.createQName(RM_CUSTOM_URI, localName);
-
- AspectDefinition aspectDef = this.getDictionaryService().getAspect(customAspect);
-
- for (PropertyDefinition propDef : aspectDef.getProperties().values())
- {
- if (propDef.isMandatory() && nodeRefProps.get(propDef.getName()) == null)
- {
- logMissingProperty(propDef, missingProperties);
-
- result = false;
- break;
- }
- }
- }
-
- return result;
- }
-
- /**
- * Log information about missing properties.
- *
- * @param propDef property definition
- * @param missingProperties missing properties
- */
- private void logMissingProperty(PropertyDefinition propDef, List missingProperties)
- {
- if (logger.isWarnEnabled())
- {
- StringBuilder msg = new StringBuilder();
- msg.append("Mandatory property missing: ").append(propDef.getName());
- logger.warn(msg.toString());
- }
- missingProperties.add(propDef.getName().toString());
}
}
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordService.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordService.java
index e7e7a16ab1..24bfb76579 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordService.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordService.java
@@ -293,4 +293,11 @@ public interface RecordService
* @since 2.3
*/
void unlink(NodeRef record, NodeRef recordFolder);
+
+ /**
+ * Completes a record
+ *
+ * @param nodeRef Record node reference
+ */
+ void complete(NodeRef nodeRef);
}
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java
index 040768700e..93612725a0 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java
@@ -34,6 +34,7 @@ import static org.alfresco.repo.policy.Behaviour.NotificationFrequency.TRANSACTI
import static org.alfresco.repo.policy.annotation.BehaviourKind.ASSOCIATION;
import java.io.Serializable;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
@@ -62,6 +63,7 @@ import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedul
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
import org.alfresco.module.org_alfresco_module_rm.dod5015.DOD5015Model;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
+import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
import org.alfresco.module.org_alfresco_module_rm.identifier.IdentifierService;
import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementCustomModel;
@@ -82,9 +84,9 @@ import org.alfresco.repo.content.ContentServicePolicies;
import org.alfresco.repo.node.NodeServicePolicies;
import org.alfresco.repo.node.integrity.IncompleteNodeTagger;
import org.alfresco.repo.node.integrity.IntegrityException;
+import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
import org.alfresco.repo.policy.ClassPolicyDelegate;
import org.alfresco.repo.policy.PolicyComponent;
-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;
@@ -160,6 +162,8 @@ public class RecordServiceImpl extends BaseBehaviourBean
private static final String MSG_NODE_HAS_ASPECT = "rm.service.node-has-aspect";
private static final String FINAL_VERSION = "rm.service.final-version";
private static final String FINAL_DESCRIPTION = "rm.service.final-version-description";
+ private static final String MSG_UNDECLARED_ONLY_RECORDS = "rm.action.undeclared-only-records";
+ private static final String MSG_NO_DECLARE_MAND_PROP = "rm.action.no-declare-mand-prop";
/** Always edit property array */
private static final QName[] ALWAYS_EDIT_PROPERTIES = new QName[]
@@ -170,6 +174,11 @@ public class RecordServiceImpl extends BaseBehaviourBean
/** always edit model URI's */
private List alwaysEditURIs;
+ /**
+ * check mandatory properties
+ */
+ private boolean checkMandatoryPropertiesEnabled = true;
+
/**
* @param alwaysEditURIs the alwaysEditURIs to set
*/
@@ -265,6 +274,12 @@ public class RecordServiceImpl extends BaseBehaviourBean
/** list of available record meta-data aspects and the file plan types the are applicable to */
private Map> recordMetaDataAspects;
+ /** Freeze service */
+ private FreezeService freezeService;
+
+ /** Namespace service */
+ private NamespaceService namespaceService;
+
/** policies */
private ClassPolicyDelegate beforeFileRecord;
private ClassPolicyDelegate onFileRecord;
@@ -424,6 +439,30 @@ public class RecordServiceImpl extends BaseBehaviourBean
this.incompleteNodeTagger = incompleteNodeTagger;
}
+ /**
+ * @param freezeService freeze service
+ */
+ public void setFreezeService(FreezeService freezeService)
+ {
+ this.freezeService = freezeService;
+ }
+
+ /**
+ * @param namespaceService namespace service
+ */
+ public void setNamespaceService(NamespaceService namespaceService)
+ {
+ this.namespaceService = namespaceService;
+ }
+
+ /**
+ * @param checkMandatoryPropertiesEnabled true if check mandatory properties is enabled, false otherwise
+ */
+ public void setCheckMandatoryPropertiesEnabled(boolean checkMandatoryPropertiesEnabled)
+ {
+ this.checkMandatoryPropertiesEnabled = checkMandatoryPropertiesEnabled;
+ }
+
/**
* Init method
*/
@@ -1347,94 +1386,6 @@ public class RecordServiceImpl extends BaseBehaviourBean
}
}
- /**
- * Helper method to 'complete' a record.
- *
- * @param record node reference to record
- */
- public void complete(NodeRef record)
- {
- ParameterCheck.mandatory("item", record);
-
- // TODO get this from config
- boolean checkMandatoryPropertiesEnabled = true;
-
- if (!checkMandatoryPropertiesEnabled || (isMandatoryPropertiesPopulated(record)))
- {
- disablePropertyEditableCheck();
- // Add the declared aspect
- Map declaredProps = new HashMap<>(2);
- declaredProps.put(RecordsManagementModel.PROP_DECLARED_AT, new Date());
- declaredProps.put(RecordsManagementModel.PROP_DECLARED_BY, AuthenticationUtil.getRunAsUser());
- nodeService.addAspect(record, RecordsManagementModel.ASPECT_DECLARED_RECORD, declaredProps);
- enablePropertyEditableCheck();
- }
- }
-
- /**
- * Helper method to determine whether a record's mandatory properties are set.
- *
- * @param nodeRef node reference to record
- * @return boolean true if all mandatory metadata properties are set, false otherwise
- */
- public boolean isMandatoryPropertiesPopulated(NodeRef nodeRef)
- {
- boolean result = true;
-
- // check for missing mandatory metadata from type definitions
- Map nodeRefProps = nodeService.getProperties(nodeRef);
- QName nodeRefType = nodeService.getType(nodeRef);
-
- TypeDefinition typeDef = dictionaryService.getType(nodeRefType);
- for (PropertyDefinition propDef : typeDef.getProperties().values())
- {
- if (propDef.isMandatory() && nodeRefProps.get(propDef.getName()) == null)
- {
- result = false;
- break;
- }
- }
-
- // check for missing mandatory metadata from aspect definitions
- if (result)
- {
- // TODO change to aspects = getAspects(nodeRef) ?
- Set aspects = nodeService.getAspects(nodeRef);
- for (QName aspect : aspects)
- {
- AspectDefinition aspectDef = dictionaryService.getAspect(aspect);
- for (PropertyDefinition propDef : aspectDef.getProperties().values())
- {
- if (propDef.isMandatory() && nodeRefProps.get(propDef.getName()) == null)
- {
- result = false;
- break;
- }
- }
- }
- }
-
- // check for missing mandatory metadata from custom aspect definitions
- if (result)
- {
- Collection aspects = dictionaryService.getAspects(RM_CUSTOM_MODEL);
- for (QName aspect : aspects)
- {
- AspectDefinition aspectDef = dictionaryService.getAspect(aspect);
- for (PropertyDefinition propDef : aspectDef.getProperties().values())
- {
- if (propDef.isMandatory() && nodeRefProps.get(propDef.getName()) == null)
- {
- result = false;
- break;
- }
- }
- }
- }
-
- return result;
- }
-
/**
* @see org.alfresco.module.org_alfresco_module_rm.record.RecordService#rejectRecord(org.alfresco.service.cmr.repository.NodeRef, java.lang.String)
*/
@@ -2012,4 +1963,173 @@ public class RecordServiceImpl extends BaseBehaviourBean
incompleteNodeTagger.beforeCommit(false);
}
}
+
+ /**
+ * Completes a record
+ *
+ * @param nodeRef Record node reference
+ */
+ @Override
+ public void complete(NodeRef nodeRef)
+ {
+ if (nodeService.exists(nodeRef) && isRecord(nodeRef) && !freezeService.isFrozen(nodeRef))
+ {
+ if (!isDeclared(nodeRef))
+ {
+ // if the record is newly created make sure the record identifier is set before completing the record
+ Set newRecords = transactionalResourceHelper.getSet(RecordServiceImpl.KEY_NEW_RECORDS);
+ if (newRecords.contains(nodeRef))
+ {
+ generateRecordIdentifier(nodeService, identifierService, nodeRef);
+ }
+
+ List missingProperties = new ArrayList<>(5);
+ // Aspect not already defined - check mandatory properties then add
+ if (!checkMandatoryPropertiesEnabled || mandatoryPropertiesSet(nodeRef, missingProperties))
+ {
+ disablePropertyEditableCheck();
+ try
+ {
+ // Add the declared aspect
+ Map declaredProps = new HashMap<>(2);
+ declaredProps.put(PROP_DECLARED_AT, new Date());
+ declaredProps.put(PROP_DECLARED_BY, AuthenticationUtil.getRunAsUser());
+ nodeService.addAspect(nodeRef, ASPECT_DECLARED_RECORD, declaredProps);
+
+ AuthenticationUtil.runAsSystem(new RunAsWork()
+ {
+ @Override
+ public Void doWork()
+ {
+ // remove all owner related rights
+ ownableService.setOwner(nodeRef, OwnableService.NO_OWNER);
+ return null;
+ }
+ });
+ }
+ finally
+ {
+ enablePropertyEditableCheck();
+ }
+ }
+ else
+ {
+ LOGGER.debug(buildMissingPropertiesErrorString(missingProperties));
+ throw new IntegrityException("The record has missing mandatory properties.", null);
+ }
+ }
+ else
+ {
+ throw new IntegrityException("The record is already completed.", null);
+ }
+ }
+ else
+ {
+ if (LOGGER.isWarnEnabled())
+ {
+ LOGGER.warn(I18NUtil.getMessage(MSG_UNDECLARED_ONLY_RECORDS, nodeRef.toString()));
+ }
+ throw new IntegrityException("The record does not exist or is frozen.", null);
+ }
+ }
+
+ private String buildMissingPropertiesErrorString(List missingProperties)
+ {
+ StringBuilder builder = new StringBuilder(255);
+ builder.append(I18NUtil.getMessage(MSG_NO_DECLARE_MAND_PROP));
+ builder.append(" ");
+ for (String missingProperty : missingProperties)
+ {
+ builder.append(missingProperty).append(", ");
+ }
+ return builder.toString();
+ }
+
+ /**
+ * Helper method to check whether all the mandatory properties of the node have been set
+ *
+ * @param nodeRef node reference
+ * @return boolean true if all mandatory properties are set, false otherwise
+ */
+ private boolean mandatoryPropertiesSet(final NodeRef nodeRef, final List missingProperties)
+ {
+ Map nodeRefProps = nodeService.getProperties(nodeRef);
+ QName nodeRefType = nodeService.getType(nodeRef);
+
+ // check for missing mandatory metadata from type definitions
+ TypeDefinition typeDef = dictionaryService.getType(nodeRefType);
+ checkDefinitionMandatoryPropsSet(typeDef, nodeRefProps, missingProperties);
+
+ // check for missing mandatory metadata from aspect definitions
+ Set aspects = nodeService.getAspects(nodeRef);
+ for (QName aspect : aspects)
+ {
+ AspectDefinition aspectDef = dictionaryService.getAspect(aspect);
+ checkDefinitionMandatoryPropsSet(aspectDef, nodeRefProps, missingProperties);
+ }
+
+ // check for missing mandatory metadata from custom aspect definitions
+ QName customAspect = getCustomAspectImpl(nodeRefType);
+ AspectDefinition aspectDef = dictionaryService.getAspect(customAspect);
+ checkDefinitionMandatoryPropsSet(aspectDef, nodeRefProps, missingProperties);
+
+ return missingProperties.isEmpty();
+ }
+
+ /**
+ * Helper method to check whether all the definition mandatory properties of the node have been set
+ *
+ * @param classDef the ClassDefinition defining the properties to be checked
+ * @param nodeRefProps the properties of the node to be checked
+ * @param missingProperties the list of mandatory properties found to be missing (currently only the first one)
+ * @return boolean true if all mandatory properties are set, false otherwise
+ */
+ private void checkDefinitionMandatoryPropsSet(final ClassDefinition classDef, final Map nodeRefProps,
+ final List missingProperties)
+ {
+ for (PropertyDefinition propDef : classDef.getProperties().values())
+ {
+ if (propDef.isMandatory() && nodeRefProps.get(propDef.getName()) == null)
+ {
+ logMissingProperty(propDef, missingProperties);;
+ }
+ }
+ }
+
+ /**
+ * Log information about missing properties.
+ *
+ * @param propDef property definition
+ * @param missingProperties missing properties
+ */
+ private void logMissingProperty(PropertyDefinition propDef, List missingProperties)
+ {
+ if (LOGGER.isWarnEnabled())
+ {
+ StringBuilder msg = new StringBuilder();
+ msg.append("Mandatory property missing: ").append(propDef.getName());
+ LOGGER.warn(msg.toString());
+ }
+ missingProperties.add(propDef.getName().toString());
+ }
+
+ /**
+ * Helper method to get the custom aspect for a given nodeRef type
+ *
+ * @param nodeRefType the node type for which to return custom aspect QName
+ * @return QName custom aspect
+ */
+ private QName getCustomAspectImpl(QName nodeRefType)
+ {
+ QName aspect = ASPECT_RECORD;
+ if (nodeRefType.equals(TYPE_NON_ELECTRONIC_DOCUMENT))
+ {
+ aspect = TYPE_NON_ELECTRONIC_DOCUMENT;
+ }
+
+ // get customAspectImpl
+ String localName = aspect.toPrefixString(namespaceService).replace(":", "");
+ localName = MessageFormat.format("{0}CustomProperties", localName);
+ return QName.createQName(RM_CUSTOM_URI, localName);
+ }
}
diff --git a/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/record/CompleteRecordTest.java b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/record/CompleteRecordTest.java
index b73ecc6f78..7642f101bb 100644
--- a/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/record/CompleteRecordTest.java
+++ b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/record/CompleteRecordTest.java
@@ -32,8 +32,8 @@ import java.util.HashMap;
import java.util.Map;
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionResult;
-import org.alfresco.module.org_alfresco_module_rm.action.impl.DeclareRecordAction;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementCustomModel;
+import org.alfresco.module.org_alfresco_module_rm.record.RecordServiceImpl;
import org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase;
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
import org.alfresco.service.cmr.repository.NodeRef;
@@ -55,9 +55,9 @@ public class CompleteRecordTest extends BaseRMTestCase
private static final boolean OPTIONAL_METADATA = false;
/**
- * complete record action
+ * Record service impl
*/
- private DeclareRecordAction action;
+ private RecordServiceImpl recordServiceImpl;
/**
* @see org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase#initServices()
@@ -67,8 +67,8 @@ public class CompleteRecordTest extends BaseRMTestCase
{
super.initServices();
- // get the action
- action = (DeclareRecordAction) applicationContext.getBean("declareRecord");
+ // get the record service
+ recordServiceImpl = (RecordServiceImpl) applicationContext.getBean("recordService");
}
/**
@@ -80,7 +80,7 @@ public class CompleteRecordTest extends BaseRMTestCase
super.tearDownImpl();
// ensure action is returned to original state
- action.setCheckMandatoryPropertiesEnabled(true);
+ recordServiceImpl.setCheckMandatoryPropertiesEnabled(true);
}
/**
@@ -100,7 +100,7 @@ public class CompleteRecordTest extends BaseRMTestCase
public void given()
{
// enable mandatory parameter check
- action.setCheckMandatoryPropertiesEnabled(true);
+ recordServiceImpl.setCheckMandatoryPropertiesEnabled(true);
// create a record
record = utils.createRecord(rmFolder, "record.txt", "title");
@@ -140,7 +140,7 @@ public class CompleteRecordTest extends BaseRMTestCase
public void given()
{
// enable mandatory parameter check
- action.setCheckMandatoryPropertiesEnabled(true);
+ recordServiceImpl.setCheckMandatoryPropertiesEnabled(true);
// create a record
record = utils.createRecord(rmFolder, "record.txt", "title");
@@ -183,7 +183,7 @@ public class CompleteRecordTest extends BaseRMTestCase
public void given() throws Exception
{
// enable mandatory parameter check
- action.setCheckMandatoryPropertiesEnabled(true);
+ recordServiceImpl.setCheckMandatoryPropertiesEnabled(true);
// create the custom metadata definition (that has a mandatory property) for electronic records
defineCustomMetadata(CUSTOM_ELECTRONIC_TEST, ASPECT_RECORD, MANDATORY_METADATA);
@@ -229,7 +229,7 @@ public class CompleteRecordTest extends BaseRMTestCase
public void given() throws Exception
{
// enable mandatory parameter check
- action.setCheckMandatoryPropertiesEnabled(true);
+ recordServiceImpl.setCheckMandatoryPropertiesEnabled(true);
// define the custom metadata definition (that has a mandatory property)
defineCustomMetadata(CUSTOM_ELECTRONIC_TEST, ASPECT_RECORD, MANDATORY_METADATA);
@@ -279,7 +279,7 @@ public class CompleteRecordTest extends BaseRMTestCase
public void given() throws Exception
{
// enable mandatory parameter check
- action.setCheckMandatoryPropertiesEnabled(true);
+ recordServiceImpl.setCheckMandatoryPropertiesEnabled(true);
// create the custom metadata definition (that has a mandatory property) for non-electronic records
defineCustomMetadata(CUSTOM_NON_ELECTRONIC_TEST, TYPE_NON_ELECTRONIC_DOCUMENT, MANDATORY_METADATA);
@@ -326,7 +326,7 @@ public class CompleteRecordTest extends BaseRMTestCase
public void given() throws Exception
{
// enable mandatory parameter check
- action.setCheckMandatoryPropertiesEnabled(true);
+ recordServiceImpl.setCheckMandatoryPropertiesEnabled(true);
// create the custom metadata definition (that has a mandatory property)
defineCustomMetadata(CUSTOM_NON_ELECTRONIC_TEST, TYPE_NON_ELECTRONIC_DOCUMENT, MANDATORY_METADATA);
@@ -375,7 +375,7 @@ public class CompleteRecordTest extends BaseRMTestCase
public void given() throws Exception
{
// enable mandatory parameter check
- action.setCheckMandatoryPropertiesEnabled(true);
+ recordServiceImpl.setCheckMandatoryPropertiesEnabled(true);
// create the custom metadata definition (that does not have a mandatory property)
defineCustomMetadata(CUSTOM_ELECTRONIC_TEST, ASPECT_RECORD, OPTIONAL_METADATA);
@@ -422,7 +422,7 @@ public class CompleteRecordTest extends BaseRMTestCase
public void given() throws Exception
{
// enable mandatory parameter check
- action.setCheckMandatoryPropertiesEnabled(true);
+ recordServiceImpl.setCheckMandatoryPropertiesEnabled(true);
// create the record custom metadata definition (that has a mandatory property)
defineCustomMetadata(CUSTOM_ELECTRONIC_TEST, ASPECT_RECORD, MANDATORY_METADATA);
@@ -469,7 +469,7 @@ public class CompleteRecordTest extends BaseRMTestCase
public void given() throws Exception
{
// enable mandatory parameter check
- action.setCheckMandatoryPropertiesEnabled(true);
+ recordServiceImpl.setCheckMandatoryPropertiesEnabled(true);
// create the non-electronic record custom metadata definition (that has a mandatory property)
defineCustomMetadata(CUSTOM_NON_ELECTRONIC_TEST, TYPE_NON_ELECTRONIC_DOCUMENT, MANDATORY_METADATA);
@@ -515,7 +515,7 @@ public class CompleteRecordTest extends BaseRMTestCase
public void given()
{
// disable mandatory parameter check
- action.setCheckMandatoryPropertiesEnabled(false);
+ recordServiceImpl.setCheckMandatoryPropertiesEnabled(false);
// create a record
record = utils.createRecord(rmFolder, "record.txt", "title");
@@ -555,7 +555,7 @@ public class CompleteRecordTest extends BaseRMTestCase
public void given()
{
// enable mandatory parameter check
- action.setCheckMandatoryPropertiesEnabled(false);
+ recordServiceImpl.setCheckMandatoryPropertiesEnabled(false);
// create a record
record = utils.createRecord(rmFolder, "record.txt", "title");