diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DeclareRecordAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DeclareRecordAction.java index b731d952e7..e4af363cd6 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DeclareRecordAction.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DeclareRecordAction.java @@ -43,156 +43,149 @@ import org.springframework.extensions.surf.util.I18NUtil; /** * Declare record action - * + * * @author Roy Wetherall */ public class DeclareRecordAction extends RMActionExecuterAbstractBase { - /** 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"; + /** 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); + /** Logger */ + private static Log logger = LogFactory.getLog(DeclareRecordAction.class); - /** - * @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.exists(actionedUponNodeRef) == true && - recordService.isRecord(actionedUponNodeRef) == true && - freezeService.isFrozen(actionedUponNodeRef) == false) - { - if (recordService.isDeclared(actionedUponNodeRef) == false) - { - List missingProperties = new ArrayList(5); - // Aspect not already defined - check mandatory properties then add - if (mandatoryPropertiesSet(actionedUponNodeRef, missingProperties) == true) + /** + * @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.exists(actionedUponNodeRef) == true && + recordService.isRecord(actionedUponNodeRef) == true && + freezeService.isFrozen(actionedUponNodeRef) == false) + { + if (recordService.isDeclared(actionedUponNodeRef) == false) { - recordService.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.nodeService.addAspect(actionedUponNodeRef, ASPECT_DECLARED_RECORD, declaredProps); - - AuthenticationUtil.runAsSystem(new RunAsWork() - { - @Override - public Void doWork() throws Exception - { - // remove all owner related rights - ownableService.setOwner(actionedUponNodeRef, OwnableService.NO_OWNER); - return null; - } - }); - } - finally + List missingProperties = new ArrayList(5); + // Aspect not already defined - check mandatory properties then add + if (mandatoryPropertiesSet(actionedUponNodeRef, missingProperties) == true) { - recordService.enablePropertyEditableCheck(); + recordService.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.nodeService.addAspect(actionedUponNodeRef, ASPECT_DECLARED_RECORD, declaredProps); + + AuthenticationUtil.runAsSystem(new RunAsWork() + { + @Override + public Void doWork() throws Exception + { + // remove all owner related rights + ownableService.setOwner(actionedUponNodeRef, OwnableService.NO_OWNER); + return null; + } + }); + } + finally + { + recordService.enablePropertyEditableCheck(); + } + } + else + { + logger.debug(buildMissingPropertiesErrorString(missingProperties)); + action.setParameterValue(ActionExecuterAbstractBase.PARAM_RESULT, "missingProperties"); } } - else - { - logger.debug(buildMissingPropertiesErrorString(missingProperties)); - action.setParameterValue(ActionExecuterAbstractBase.PARAM_RESULT, "missingProperties"); - } - } - } - else - { + } + 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; + 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(); + } - Map nodeRefProps = this.nodeService.getProperties(nodeRef); + /** + * 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; - QName nodeRefType = this.nodeService.getType(nodeRef); + Map nodeRefProps = this.nodeService.getProperties(nodeRef); - TypeDefinition typeDef = this.dictionaryService.getType(nodeRefType); - for (PropertyDefinition propDef : typeDef.getProperties().values()) - { - if (propDef.isMandatory() == true) - { - if (nodeRefProps.get(propDef.getName()) == null) + QName nodeRefType = this.nodeService.getType(nodeRef); + + TypeDefinition typeDef = this.dictionaryService.getType(nodeRefType); + for (PropertyDefinition propDef : typeDef.getProperties().values()) + { + if (propDef.isMandatory() && nodeRefProps.get(propDef.getName()) == null) { - logMissingProperty(propDef, missingProperties); + logMissingProperty(propDef, missingProperties); - result = false; - break; + result = false; + break; } - } - } + } - if (result != false) - { - Set aspects = this.nodeService.getAspects(nodeRef); - for (QName aspect : aspects) - { - AspectDefinition aspectDef = this.dictionaryService.getAspect(aspect); - for (PropertyDefinition propDef : aspectDef.getProperties().values()) + if (result != false) + { + Set aspects = this.nodeService.getAspects(nodeRef); + for (QName aspect : aspects) { - if (propDef.isMandatory() == true) - { - if (nodeRefProps.get(propDef.getName()) == null) - { - logMissingProperty(propDef, missingProperties); + AspectDefinition aspectDef = this.dictionaryService.getAspect(aspect); + for (PropertyDefinition propDef : aspectDef.getProperties().values()) + { + if (propDef.isMandatory() && nodeRefProps.get(propDef.getName()) == null) + { + logMissingProperty(propDef, missingProperties); - result = false; - break; - } - } + result = false; + break; + } + } } - } - } + } - return result; - } + 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()); - } + /** + * 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-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/FileToAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/FileToAction.java index a26cafe619..54c3605193 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/FileToAction.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/FileToAction.java @@ -74,50 +74,48 @@ public class FileToAction extends RMActionExecuterAbstractBase @Override protected void executeImpl(final Action action, final NodeRef actionedUponNodeRef) { - if (nodeService.exists(actionedUponNodeRef) == true && - freezeService.isFrozen(actionedUponNodeRef) == false) + if (nodeService.exists(actionedUponNodeRef) && + freezeService.isFrozen(actionedUponNodeRef) == false && + recordService.isFiled(actionedUponNodeRef) == false) { - if (recordService.isFiled(actionedUponNodeRef) == false) + // first look to see if the destination record folder has been specified + NodeRef recordFolder = (NodeRef)action.getParameterValue(PARAM_DESTINATION_RECORD_FOLDER); + if (recordFolder == null) { - // first look to see if the destination record folder has been specified - NodeRef recordFolder = (NodeRef)action.getParameterValue(PARAM_DESTINATION_RECORD_FOLDER); - if (recordFolder == null) - { - // get the reference to the record folder based on the relative path - recordFolder = createOrResolveRecordFolder(action, actionedUponNodeRef); - } + // get the reference to the record folder based on the relative path + recordFolder = createOrResolveRecordFolder(action, actionedUponNodeRef); + } - if (recordFolder == null) - { - throw new AlfrescoRuntimeException("Unable to execute file to action, because the destination record folder could not be determined."); - } + if (recordFolder == null) + { + throw new AlfrescoRuntimeException("Unable to execute file to action, because the destination record folder could not be determined."); + } - if (recordFolderService.isRecordFolder(recordFolder) == true) - { - final NodeRef finalRecordFolder = recordFolder; + if (recordFolderService.isRecordFolder(recordFolder)) + { + final NodeRef finalRecordFolder = recordFolder; - AuthenticationUtil.runAsSystem(new RunAsWork() + AuthenticationUtil.runAsSystem(new RunAsWork() + { + @Override + public Void doWork() throws Exception { - @Override - public Void doWork() throws Exception + try { - try - { - fileFolderService.move(actionedUponNodeRef, finalRecordFolder, null); - } - catch (FileNotFoundException fileNotFound) - { - throw new AlfrescoRuntimeException("Unable to execute file to action, because the move operation failed.", fileNotFound); - } - - return null; + fileFolderService.move(actionedUponNodeRef, finalRecordFolder, null); } - }); - } - else - { - throw new AlfrescoRuntimeException("Unable to execute file to action, becuase the destination was not a record folder."); - } + catch (FileNotFoundException fileNotFound) + { + throw new AlfrescoRuntimeException("Unable to execute file to action, because the move operation failed.", fileNotFound); + } + + return null; + } + }); + } + else + { + throw new AlfrescoRuntimeException("Unable to execute file to action, becuase the destination was not a record folder."); } } } @@ -164,7 +162,7 @@ public class FileToAction extends RMActionExecuterAbstractBase if (recordFolder == null) { - if (create == true) + if (create) { // get the parent into which we are going to create the new record folder NodeRef parent = resolveParent(context, pathValues, create); @@ -259,7 +257,7 @@ public class FileToAction extends RMActionExecuterAbstractBase { NodeRef result = null; - if (ArrayUtils.isEmpty(pathValues) == true) + if (ArrayUtils.isEmpty(pathValues)) { // this should never occur since if the path is empty then the context it the resolution of the // path .. the context must already exist diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java index a15cb1d9a8..9ff0c6e046 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java @@ -306,9 +306,9 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin @Override public Void doWork() throws Exception { - if (nodeService.exists(nodeRef) == true && - dictionaryService.getAllModels().contains(RM_CUSTOM_MODEL) == true && - isCustomisable(aspectTypeQName) == true) + if (nodeService.exists(nodeRef) && + dictionaryService.getAllModels().contains(RM_CUSTOM_MODEL) && + isCustomisable(aspectTypeQName)) { QName customPropertyAspect = getCustomAspect(aspectTypeQName); nodeService.addAspect(nodeRef, customPropertyAspect, null); @@ -336,8 +336,8 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin @Override public Void doWork() throws Exception { - if (nodeService.exists(nodeRef) == true && - isCustomisable(aspectTypeQName) == true) + if (nodeService.exists(nodeRef) && + isCustomisable(aspectTypeQName)) { QName customPropertyAspect = getCustomAspect(aspectTypeQName); nodeService.removeAspect(nodeRef, customPropertyAspect); @@ -367,13 +367,13 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin @Override public Void doWork() throws Exception { - if (dictionaryService.getAllModels().contains(RecordsManagementCustomModel.RM_CUSTOM_MODEL) == true) + if (dictionaryService.getAllModels().contains(RecordsManagementCustomModel.RM_CUSTOM_MODEL)) { NodeRef nodeRef = childAssocRef.getChildRef(); QName type = nodeService.getType(nodeRef); while (type != null && ContentModel.TYPE_CMOBJECT.equals(type) == false) { - if (isCustomisable(type) == true) + if (isCustomisable(type)) { QName customPropertyAspect = getCustomAspect(type); nodeService.addAspect(nodeRef, customPropertyAspect, null); @@ -438,7 +438,7 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin while (type != null && ContentModel.TYPE_CMOBJECT.equals(type) == false) { // Add to the list if the type is customisable - if (isCustomisable(type) == true) + if (isCustomisable(type)) { result.add(type); } @@ -463,7 +463,7 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin while (tempAspect != null) { // Add to the list if the aspect is customisable - if (isCustomisable(tempAspect) == true) + if (isCustomisable(tempAspect)) { result.add(tempAspect); } @@ -499,33 +499,31 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin { AspectDefinition aspectDef = dictionaryService.getAspect(aspect); String name = aspectDef.getName().getLocalName(); - if (name.endsWith("Properties") == true) + if (name.endsWith("Properties")) { QName type = null; String prefixString = aspectDef.getDescription(dictionaryService); if (prefixString == null) { // Backward compatibility from previous RM V1.0 custom models - if (CompatibilityModel.NAME_CUSTOM_RECORD_PROPERTIES.equals(name) == true) + if (CompatibilityModel.NAME_CUSTOM_RECORD_PROPERTIES.equals(name)) { type = RecordsManagementModel.ASPECT_RECORD; } - else if (CompatibilityModel.NAME_CUSTOM_RECORD_FOLDER_PROPERTIES.equals(name) == true) + else if (CompatibilityModel.NAME_CUSTOM_RECORD_FOLDER_PROPERTIES.equals(name)) { type = RecordsManagementModel.TYPE_RECORD_FOLDER; } - else if (CompatibilityModel.NAME_CUSTOM_RECORD_CATEGORY_PROPERTIES.equals(name) == true) + else if (CompatibilityModel.NAME_CUSTOM_RECORD_CATEGORY_PROPERTIES.equals(name)) { type = RecordsManagementModel.TYPE_RECORD_CATEGORY; } - else if (CompatibilityModel.NAME_CUSTOM_RECORD_SERIES_PROPERTIES.equals(name) == true) + else if (CompatibilityModel.NAME_CUSTOM_RECORD_SERIES_PROPERTIES.equals(name) && + // Only add the deprecated record series type as customisable if + // a v1.0 installation has added custom properties + aspectDef.getProperties().size() != 0) { - // Only add the deprecated record series type as customisable if - // a v1.0 installation has added custom properties - if (aspectDef.getProperties().size() != 0) - { - type = CompatibilityModel.TYPE_RECORD_SERIES; - } + type = CompatibilityModel.TYPE_RECORD_SERIES; } } else @@ -539,7 +537,7 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin customisableTypes.put(type, aspect); // Remove customisable type from the pending list - if (pendingCustomisableTypes != null && pendingCustomisableTypes.contains(type) == true) + if (pendingCustomisableTypes != null && pendingCustomisableTypes.contains(type)) { pendingCustomisableTypes.remove(type); } @@ -692,7 +690,7 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin ParameterCheck.mandatory("propertyName", propertyName); boolean result = false; - if (RM_CUSTOM_URI.equals(propertyName.getNamespaceURI()) == true && + if (RM_CUSTOM_URI.equals(propertyName.getNamespaceURI()) && dictionaryService.getProperty(propertyName) != null) { result = true; @@ -1403,12 +1401,9 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin for (M2ClassAssociation assoc : customAssocsAspect.getAssociations()) { - if (refQName.toPrefixString(namespaceService).equals(assoc.getName())) + if (refQName.toPrefixString(namespaceService).equals(assoc.getName()) && newTitle != null) { - if (newTitle != null) - { - assoc.setTitle(newTitle); - } + assoc.setTitle(newTitle); } } writeCustomContentModel(modelRef, deserializedModel); diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityServiceImpl.java index 7acd93033c..972181d4da 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityServiceImpl.java @@ -212,12 +212,9 @@ public class CapabilityServiceImpl implements CapabilityService for (Capability capability : getCapabilities()) { Group group = capability.getGroup(); - if (group != null) + if (group != null && group.getId().equalsIgnoreCase(id)) { - if (group.getId().equalsIgnoreCase(id)) - { - capabilities.add(capability); - } + capabilities.add(capability); } } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMSecurityCommon.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMSecurityCommon.java index 3cf137ef7c..b69cf43929 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMSecurityCommon.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMSecurityCommon.java @@ -64,16 +64,16 @@ public class RMSecurityCommon implements ApplicationContextAware /** Application context */ protected ApplicationContext applicationContext; - + /** * @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext) */ @Override - public void setApplicationContext(ApplicationContext applicationContext) throws BeansException + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } - + /** * @param nodeService node service */ @@ -101,7 +101,7 @@ public class RMSecurityCommon implements ApplicationContextAware /** * @return FilePlanService file plan service */ - protected FilePlanService getFilePlanService() + protected FilePlanService getFilePlanService() { if (filePlanService == null) { @@ -331,28 +331,25 @@ public class RMSecurityCommon implements ApplicationContextAware } } } - else if (AssociationRef.class.isAssignableFrom(params[position])) + else if (AssociationRef.class.isAssignableFrom(params[position]) && invocation.getArguments()[position] != null) { - if (invocation.getArguments()[position] != null) + if (parent) { - if (parent) + testNodeRef = ((AssociationRef) invocation.getArguments()[position]).getSourceRef(); + } + else + { + testNodeRef = ((AssociationRef) invocation.getArguments()[position]).getTargetRef(); + } + if (logger.isDebugEnabled()) + { + if (nodeService.exists(testNodeRef)) { - testNodeRef = ((AssociationRef) invocation.getArguments()[position]).getSourceRef(); + logger.debug("\tPermission test on node " + nodeService.getPath(testNodeRef)); } else { - testNodeRef = ((AssociationRef) invocation.getArguments()[position]).getTargetRef(); - } - if (logger.isDebugEnabled()) - { - if (nodeService.exists(testNodeRef)) - { - logger.debug("\tPermission test on node " + nodeService.getPath(testNodeRef)); - } - else - { - logger.debug("\tPermission test on non-existing node " + testNodeRef); - } + logger.debug("\tPermission test on non-existing node " + testNodeRef); } } } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/HasDispositionDateCapabilityCondition.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/HasDispositionDateCapabilityCondition.java index d8fb70dcbc..de468aac67 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/HasDispositionDateCapabilityCondition.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/HasDispositionDateCapabilityCondition.java @@ -57,12 +57,9 @@ public class HasDispositionDateCapabilityCondition extends AbstractCapabilityCon result = true; } } - else if (filePlanService.isFilePlanComponent(nodeRef)) + else if (filePlanService.isFilePlanComponent(nodeRef) && nodeService.getProperty(nodeRef, PROP_DISPOSITION_AS_OF) != null) { - if (nodeService.getProperty(nodeRef, PROP_DISPOSITION_AS_OF) != null) - { - result = true; - } + result = true; } return result; diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/MayBeScheduledCapabilityCondition.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/MayBeScheduledCapabilityCondition.java index a35ac33ebb..92df5a7b1d 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/MayBeScheduledCapabilityCondition.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/MayBeScheduledCapabilityCondition.java @@ -62,20 +62,16 @@ public class MayBeScheduledCapabilityCondition extends AbstractCapabilityConditi boolean result = false; DispositionSchedule dispositionSchedule = dispositionService.getDispositionSchedule(nodeRef); - if (dispositionSchedule != null) + if (dispositionSchedule != null && checkDispositionLevel(nodeRef, dispositionSchedule)) { - if (checkDispositionLevel(nodeRef, dispositionSchedule) == true) + for (DispositionActionDefinition dispositionActionDefinition : dispositionSchedule.getDispositionActionDefinitions()) { - for (DispositionActionDefinition dispositionActionDefinition : dispositionSchedule.getDispositionActionDefinitions()) + if (dispositionActionDefinition.getName().equals(dispositionAction)) { - if (dispositionActionDefinition.getName().equals(dispositionAction) == true) - { - result = true; - break; - } + result = true; + break; } } - } return result; } @@ -91,11 +87,11 @@ public class MayBeScheduledCapabilityCondition extends AbstractCapabilityConditi { boolean result = false; boolean isRecordLevelDisposition = dispositionSchedule.isRecordLevelDisposition(); - if (recordService.isRecord(nodeRef) == true && isRecordLevelDisposition == true) + if (recordService.isRecord(nodeRef) && isRecordLevelDisposition) { result = true; } - else if (recordFolderService.isRecordFolder(nodeRef) == true && isRecordLevelDisposition == false) + else if (recordFolderService.isRecordFolder(nodeRef) && isRecordLevelDisposition == false) { result = true; diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/ChangeOrDeleteReferencesCapability.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/ChangeOrDeleteReferencesCapability.java index f66af073e8..6577d2c4e7 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/ChangeOrDeleteReferencesCapability.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/ChangeOrDeleteReferencesCapability.java @@ -25,7 +25,7 @@ import org.alfresco.service.cmr.repository.NodeRef; /** * Change or delete references capability - * + * * @author Roy Wetherall */ public class ChangeOrDeleteReferencesCapability extends DeclarativeCapability @@ -39,7 +39,7 @@ public class ChangeOrDeleteReferencesCapability extends DeclarativeCapability // Can't be sure, because we don't have information about the target so we still abstain return AccessDecisionVoter.ACCESS_ABSTAIN; } - + /** * @see org.alfresco.module.org_alfresco_module_rm.capability.AbstractCapability#evaluate(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.repository.NodeRef) */ @@ -49,25 +49,21 @@ public class ChangeOrDeleteReferencesCapability extends DeclarativeCapability { if (target != null) { - if (getFilePlanService().isFilePlanComponent(target) == true) + if (getFilePlanService().isFilePlanComponent(target) && + checkConditions(source) && + checkConditions(target) && + checkPermissions(source) && + checkPermissions(target)) { - if (checkConditions(source) == true && checkConditions(target) == true) - { - if (checkPermissions(source) == true && checkPermissions(target) == true) - { - return AccessDecisionVoter.ACCESS_GRANTED; - } - } + return AccessDecisionVoter.ACCESS_GRANTED; } } else { - if (checkConditions(source) == true) + if (checkConditions(source) && + checkPermissions(source)) { - if (checkPermissions(source) == true) - { - return AccessDecisionVoter.ACCESS_GRANTED; - } + return AccessDecisionVoter.ACCESS_GRANTED; } } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/CreateCapability.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/CreateCapability.java index 9dd60df9fd..dced6c4e88 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/CreateCapability.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/CreateCapability.java @@ -41,10 +41,10 @@ public class CreateCapability extends DeclarativeCapability { /** record service */ private RecordService recordService; - + /** record folder service */ private RecordFolderService recordFolderService; - + /** * @param recordService record service */ @@ -60,7 +60,7 @@ public class CreateCapability extends DeclarativeCapability { this.recordFolderService = recordFolderService; } - + /** * @see org.alfresco.module.org_alfresco_module_rm.capability.Capability#evaluate(org.alfresco.service.cmr.repository.NodeRef) */ @@ -93,24 +93,21 @@ public class CreateCapability extends DeclarativeCapability { if ((assocType == null) || assocType.equals(ContentModel.ASSOC_CONTAINS) == false) { - if(linkee == null) + if(linkee == null && + recordService.isRecord(destination) && + recordService.isDeclared(destination) == false && + permissionService.hasPermission(destination, RMPermissionModel.FILE_RECORDS) == AccessStatus.ALLOWED) { - if(recordService.isRecord(destination) && recordService.isDeclared(destination) == false) - { - if (permissionService.hasPermission(destination, RMPermissionModel.FILE_RECORDS) == AccessStatus.ALLOWED) - { - return AccessDecisionVoter.ACCESS_GRANTED; - } - } + return AccessDecisionVoter.ACCESS_GRANTED; } else { - if(recordService.isRecord(linkee) && recordService.isRecord(destination) && recordService.isDeclared(destination) == false) + if (recordService.isRecord(linkee) && + recordService.isRecord(destination) && + recordService.isDeclared(destination) == false && + permissionService.hasPermission(destination, RMPermissionModel.FILE_RECORDS) == AccessStatus.ALLOWED) { - if (permissionService.hasPermission(destination, RMPermissionModel.FILE_RECORDS) == AccessStatus.ALLOWED) - { - return AccessDecisionVoter.ACCESS_GRANTED; - } + return AccessDecisionVoter.ACCESS_GRANTED; } } @@ -123,40 +120,28 @@ public class CreateCapability extends DeclarativeCapability conditions.put("capabilityCondition.closed", Boolean.FALSE); conditions.put("capabilityCondition.cutoff", Boolean.FALSE); - if (checkConditions(destination, conditions) == true) + if (checkConditions(destination, conditions) && + recordFolderService.isRecordFolder(destination) && + permissionService.hasPermission(destination, RMPermissionModel.FILE_RECORDS) == AccessStatus.ALLOWED) { - if (recordFolderService.isRecordFolder(destination)) - { - if (permissionService.hasPermission(destination, RMPermissionModel.FILE_RECORDS) == AccessStatus.ALLOWED) - { - return AccessDecisionVoter.ACCESS_GRANTED; - } - } + return AccessDecisionVoter.ACCESS_GRANTED; } conditions.put("capabilityCondition.closed", Boolean.TRUE); - if (checkConditions(destination, conditions) == true) + if (checkConditions(destination, conditions) && + recordFolderService.isRecordFolder(destination) && + permissionService.hasPermission(getFilePlanService().getFilePlan(destination), RMPermissionModel.DECLARE_RECORDS_IN_CLOSED_FOLDERS) == AccessStatus.ALLOWED) { - if (recordFolderService.isRecordFolder(destination)) - { - if (permissionService.hasPermission(getFilePlanService().getFilePlan(destination), RMPermissionModel.DECLARE_RECORDS_IN_CLOSED_FOLDERS) == AccessStatus.ALLOWED) - { - return AccessDecisionVoter.ACCESS_GRANTED; - } - } + return AccessDecisionVoter.ACCESS_GRANTED; } conditions.remove("capabilityCondition.closed"); conditions.put("capabilityCondition.cutoff", Boolean.TRUE); - if (checkConditions(destination, conditions) == true) + if (checkConditions(destination, conditions) && + recordFolderService.isRecordFolder(destination) && + permissionService.hasPermission(getFilePlanService().getFilePlan(destination), RMPermissionModel.CREATE_MODIFY_RECORDS_IN_CUTOFF_FOLDERS) == AccessStatus.ALLOWED) { - if (recordFolderService.isRecordFolder(destination)) - { - if (permissionService.hasPermission(getFilePlanService().getFilePlan(destination), RMPermissionModel.CREATE_MODIFY_RECORDS_IN_CUTOFF_FOLDERS) == AccessStatus.ALLOWED) - { - return AccessDecisionVoter.ACCESS_GRANTED; - } - } + return AccessDecisionVoter.ACCESS_GRANTED; } } if (capabilityService.getCapability(RMPermissionModel.CREATE_MODIFY_DESTROY_FOLDERS).evaluate(destination) == AccessDecisionVoter.ACCESS_GRANTED) diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/DeleteLinksCapability.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/DeleteLinksCapability.java index d6d6316d69..36a41e1a31 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/DeleteLinksCapability.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/impl/DeleteLinksCapability.java @@ -25,7 +25,7 @@ import org.alfresco.service.cmr.repository.NodeRef; /** * Delete links capability. - * + * * @author Roy Wetherall */ public class DeleteLinksCapability extends DeclarativeCapability @@ -45,15 +45,15 @@ public class DeleteLinksCapability extends DeclarativeCapability */ public int evaluate(NodeRef source, NodeRef target) { - if (getFilePlanService().isFilePlanComponent(source) == true && - getFilePlanService().isFilePlanComponent(target) == true) - { - if (checkConditions(source) == true && checkConditions(target) == true) + if (getFilePlanService().isFilePlanComponent(source) && + getFilePlanService().isFilePlanComponent(target)) + { + if (checkConditions(source) && + checkConditions(target) && + checkPermissions(source) && + checkPermissions(target)) { - if (checkPermissions(source) == true && checkPermissions(target) == true) - { - return AccessDecisionVoter.ACCESS_GRANTED; - } + return AccessDecisionVoter.ACCESS_GRANTED; } return AccessDecisionVoter.ACCESS_DENIED; } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/policy/AbstractBasePolicy.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/policy/AbstractBasePolicy.java index 88de87e0d1..aa704f438e 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/policy/AbstractBasePolicy.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/policy/AbstractBasePolicy.java @@ -32,26 +32,26 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** - * Abstract base policy implementation - * + * Abstract base policy implementation + * * @author Roy Wetherall * @since 2.1 */ -public abstract class AbstractBasePolicy extends RMSecurityCommon +public abstract class AbstractBasePolicy extends RMSecurityCommon implements Policy { /** Logger */ protected static Log logger = LogFactory.getLog(AbstractBasePolicy.class); - + /** Capability service */ protected CapabilityService capabilityService; - + /** Policy register */ protected PolicyRegister policyRegister; - + /** Policy name */ protected String name; - + /** * @param name policy name */ @@ -59,7 +59,7 @@ public abstract class AbstractBasePolicy extends RMSecurityCommon { this.name = name; } - + /** * @see org.alfresco.module.org_alfresco_module_rm.capability.policy.Policy#getName() */ @@ -68,7 +68,7 @@ public abstract class AbstractBasePolicy extends RMSecurityCommon { return name; } - + /** * @param capabilityService capability service */ @@ -76,15 +76,15 @@ public abstract class AbstractBasePolicy extends RMSecurityCommon { this.capabilityService = capabilityService; } - + /** * @param policyRegister policy register */ - public void setPolicyRegister(PolicyRegister policyRegister) + public void setPolicyRegister(PolicyRegister policyRegister) { this.policyRegister = policyRegister; } - + /** * Init method */ @@ -92,9 +92,9 @@ public abstract class AbstractBasePolicy extends RMSecurityCommon { policyRegister.registerPolicy(this); } - + /** - * + * * @param invocation * @param params * @param position @@ -112,20 +112,17 @@ public abstract class AbstractBasePolicy extends RMSecurityCommon return qname; } } - else if (NodeRef.class.isAssignableFrom(params[position])) + else if (NodeRef.class.isAssignableFrom(params[position]) && invocation.getArguments()[position] != null) { - if (invocation.getArguments()[position] != null) - { - NodeRef nodeRef = (NodeRef) invocation.getArguments()[position]; - return nodeService.getType(nodeRef); - } + NodeRef nodeRef = (NodeRef) invocation.getArguments()[position]; + return nodeService.getType(nodeRef); } return null; } - + /** - * + * * @param invocation * @param params * @param position @@ -134,19 +131,16 @@ public abstract class AbstractBasePolicy extends RMSecurityCommon @SuppressWarnings("rawtypes") protected QName getQName(MethodInvocation invocation, Class[] params, int position) { - if (QName.class.isAssignableFrom(params[position])) + if (QName.class.isAssignableFrom(params[position]) && invocation.getArguments()[position] != null) { - if (invocation.getArguments()[position] != null) - { - QName qname = (QName) invocation.getArguments()[position]; - return qname; - } + QName qname = (QName) invocation.getArguments()[position]; + return qname; } throw new ACLEntryVoterException("Unknown type"); } /** - * + * * @param invocation * @param params * @param position @@ -159,19 +153,16 @@ public abstract class AbstractBasePolicy extends RMSecurityCommon { return null; } - if (Serializable.class.isAssignableFrom(params[position])) + if (Serializable.class.isAssignableFrom(params[position]) && invocation.getArguments()[position] != null) { - if (invocation.getArguments()[position] != null) - { - Serializable property = (Serializable) invocation.getArguments()[position]; - return property; - } + Serializable property = (Serializable) invocation.getArguments()[position]; + return property; } throw new ACLEntryVoterException("Unknown type"); } /** - * + * * @param invocation * @param params * @param position @@ -184,13 +175,10 @@ public abstract class AbstractBasePolicy extends RMSecurityCommon { return null; } - if (Map.class.isAssignableFrom(params[position])) + if (Map.class.isAssignableFrom(params[position]) && invocation.getArguments()[position] != null) { - if (invocation.getArguments()[position] != null) - { - Map properties = (Map) invocation.getArguments()[position]; - return properties; - } + Map properties = (Map) invocation.getArguments()[position]; + return properties; } throw new ACLEntryVoterException("Unknown type"); } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/policy/UpdatePolicy.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/policy/UpdatePolicy.java index fd9abe6780..21132fa3fe 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/policy/UpdatePolicy.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/policy/UpdatePolicy.java @@ -30,29 +30,23 @@ public class UpdatePolicy extends AbstractBasePolicy { @SuppressWarnings("rawtypes") - public int evaluate( - MethodInvocation invocation, - Class[] params, + public int evaluate( + MethodInvocation invocation, + Class[] params, ConfigAttributeDefinition cad) { NodeRef updatee = getTestNode(invocation, params, cad.getParameters().get(0), cad.isParent()); QName aspectQName = null; - if (cad.getParameters().size() > 1) + if (cad.getParameters().size() > 1 && cad.getParameters().get(1) > -1) { - if (cad.getParameters().get(1) > -1) - { - aspectQName = getQName(invocation, params, cad.getParameters().get(1)); - } + aspectQName = getQName(invocation, params, cad.getParameters().get(1)); } Map properties = null; - if (cad.getParameters().size() > 2) + if (cad.getParameters().size() > 2 && cad.getParameters().get(2) > -1) { - if (cad.getParameters().get(2) > -1) - { - properties = getProperties(invocation, params, cad.getParameters().get(2)); - } + properties = getProperties(invocation, params, cad.getParameters().get(2)); } - + UpdateCapability updateCapability = (UpdateCapability)capabilityService.getCapability("Update"); return updateCapability.evaluate(updatee, aspectQName, properties); } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/caveat/RMCaveatConfigComponentImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/caveat/RMCaveatConfigComponentImpl.java index 903946ef6c..d09c3297ae 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/caveat/RMCaveatConfigComponentImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/caveat/RMCaveatConfigComponentImpl.java @@ -543,16 +543,13 @@ public class RMCaveatConfigComponentImpl implements ContentServicePolicies.OnCon List allowedValues = new ArrayList(0); String userName = AuthenticationUtil.getRunAsUser(); - if (userName != null) + if (userName != null && !(AuthenticationUtil.isMtEnabled() && AuthenticationUtil.isRunAsUserTheSystemUser())) { - if (! (AuthenticationUtil.isMtEnabled() && AuthenticationUtil.isRunAsUserTheSystemUser())) - { - // note: userName and userGroupNames must not be null - caveatConfig.get(constraintName); + // note: userName and userGroupNames must not be null + caveatConfig.get(constraintName); - Set userGroupFullNames = authorityService.getAuthoritiesForUser(userName); - allowedValues = getRMAllowedValues(userName, userGroupFullNames, constraintName); - } + Set userGroupFullNames = authorityService.getAuthoritiesForUser(userName); + allowedValues = getRMAllowedValues(userName, userGroupFullNames, constraintName); } return allowedValues; diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/caveat/RMCaveatConfigServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/caveat/RMCaveatConfigServiceImpl.java index 3166049929..a8b364bdce 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/caveat/RMCaveatConfigServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/caveat/RMCaveatConfigServiceImpl.java @@ -43,35 +43,35 @@ import org.apache.commons.logging.LogFactory; /** * RM Caveat Config Service impl - * + * * @author janv */ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService { private static Log logger = LogFactory.getLog(RMCaveatConfigServiceImpl.class); - + private NamespaceService namespaceService; private DictionaryService dictionaryService; - + private RMCaveatConfigComponent rmCaveatConfigComponent; private RecordsManagementAdminService recordsManagementAdminService; - - + + public void setNamespaceService(NamespaceService namespaceService) { this.namespaceService = namespaceService; } - + public void setDictionaryService(DictionaryService dictionaryService) { this.dictionaryService = dictionaryService; } - + public void setCaveatConfigComponent(RMCaveatConfigComponent rmCaveatConfigComponent) { this.rmCaveatConfigComponent = rmCaveatConfigComponent; } - + public void setRecordsManagementAdminService(RecordsManagementAdminService recordsManagementAdminService) { this.recordsManagementAdminService = recordsManagementAdminService; @@ -81,36 +81,36 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService { return recordsManagementAdminService; } - + public void init() { rmCaveatConfigComponent.init(); } - + public NodeRef updateOrCreateCaveatConfig(InputStream is) { return rmCaveatConfigComponent.updateOrCreateCaveatConfig(is); } - + public NodeRef updateOrCreateCaveatConfig(File jsonFile) { return rmCaveatConfigComponent.updateOrCreateCaveatConfig(jsonFile); } - + public NodeRef updateOrCreateCaveatConfig(String jsonString) { return rmCaveatConfigComponent.updateOrCreateCaveatConfig(jsonString); } - + // Get allowed values for given caveat (for current user) public List getRMAllowedValues(String constraintName) { return rmCaveatConfigComponent.getRMAllowedValues(constraintName); } - + /** * Check whether access to 'record component' node is vetoed for current user due to caveat(s) - * + * * @param nodeRef * @return false, if caveat(s) veto access otherwise return true */ @@ -118,7 +118,7 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService { return rmCaveatConfigComponent.hasAccess(nodeRef); } - + /** * add RM constraint list * @param listName the name of the RMConstraintList @@ -127,7 +127,7 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService { return addRMConstraint(listName, title, values, MatchLogic.AND); } - + public RMConstraintInfo addRMConstraint(String listName, String title, String[] values, MatchLogic matchLogic) { if(listName == null) @@ -136,15 +136,15 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService // FIXME: hardcoded namespace listName = "rmc:" + UUID.randomUUID().toString(); } - + ListallowedValues = new ArrayList(); for(String value : values) { allowedValues.add(value); } - + QName listQName = QName.createQName(listName, namespaceService); - + // TEMP review - if it already exists then change it for now try { @@ -158,9 +158,9 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService recordsManagementAdminService.changeCustomConstraintTitle(listQName, title); } } - + rmCaveatConfigComponent.addRMConstraint(listName); - + RMConstraintInfo info = new RMConstraintInfo(); info.setName(listQName.toPrefixString()); info.setTitle(title); @@ -168,24 +168,24 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService info.setCaseSensitive(true); return info; } - + /** * delete RM Constraint List - * + * * @param listName the name of the RMConstraintList */ public void deleteRMConstraint(String listName) { rmCaveatConfigComponent.deleteRMConstraint(listName); - + QName listQName = QName.createQName(listName, namespaceService); - + recordsManagementAdminService.removeCustomConstraintDefinition(listQName); } - + /** * Add a single value to an authority in a list. The existing values of the list remain. - * + * * @param listName the name of the RMConstraintList * @param authorityName * @param values @@ -195,7 +195,7 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService { rmCaveatConfigComponent.addRMConstraintListValue(listName, authorityName, value); } - + /** * Get the details of the specified list * @param listName @@ -205,13 +205,13 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService { return rmCaveatConfigComponent.getListDetails(listName); } - + /** - * Replace the values for an authority in a list. + * Replace the values for an authority in a list. * The existing values are removed. - * + * * If the authority does not already exist in the list, it will be added - * + * * @param listName the name of the RMConstraintList * @param authorityName * @param values @@ -220,10 +220,10 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService { rmCaveatConfigComponent.updateRMConstraintListAuthority(listName, authorityName, values); } - + /** * Replace the authorities for a value in a list - * + * * @param listName * @param valueName * @param authorities @@ -232,10 +232,10 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService { rmCaveatConfigComponent.updateRMConstraintListValue(listName, valueName, authorities); } - + /** * Remove an authority from a list - * + * * @param listName the name of the RMConstraintList * @param authorityName * @param values @@ -244,20 +244,20 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService { rmCaveatConfigComponent.removeRMConstraintListAuthority(listName, authorityName); } - + /** * Get all Constraint Lists */ public Set getAllRMConstraints() { Set info = new HashSet(); - + List defs = new ArrayList(10); for (QName caveatModelQName : rmCaveatConfigComponent.getRMCaveatModels()) { defs.addAll(recordsManagementAdminService.getCustomConstraintDefinitions(caveatModelQName)); } - + for(ConstraintDefinition dictionaryDef : defs) { Constraint con = dictionaryDef.getConstraint(); @@ -267,7 +267,7 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService RMConstraintInfo i = new RMConstraintInfo(); i.setName(def.getShortName()); i.setTitle(def.getTitle()); - + // note: assumes only one caveat/LOV against a given property List allowedValues = AuthenticationUtil.runAs(new RunAsWork>() { @@ -276,17 +276,17 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService return def.getAllowedValues(); } }, AuthenticationUtil.getSystemUserName()); - + i.setAllowedValues(allowedValues.toArray(new String[allowedValues.size()])); i.setCaseSensitive(def.isCaseSensitive()); info.add(i); } - + } - + return info; } - + /** * Get an RMConstraintInfo * @param listQName @@ -301,7 +301,7 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService if (con instanceof RMListOfValuesConstraint) { final RMListOfValuesConstraint def = (RMListOfValuesConstraint)con; - + RMConstraintInfo info = new RMConstraintInfo(); info.setName(listQName.toPrefixString()); info.setTitle(con.getTitle()); @@ -312,7 +312,7 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService return def.getAllowedValues(); } }, AuthenticationUtil.getSystemUserName()); - + info.setAllowedValues(allowedValues.toArray(new String[allowedValues.size()])); info.setCaseSensitive(def.isCaseSensitive()); return info; @@ -320,30 +320,30 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService } return null; } - + /** * Get RM Constraint detail. - * + * * @return the constraintInfo or null */ public RMConstraintInfo getRMConstraint(String listName) { QName listQName = QName.createQName(listName, namespaceService); return getRMConstraint(listQName); - + } - + /** * Update The allowed values for an RM Constraint. - * + * * @param listName The name of the list. * @param allowedValues the new alowed values - * + * */ public RMConstraintInfo updateRMConstraintAllowedValues(String listName, String[] allowedValues) { QName listQName = QName.createQName(listName, namespaceService); - + if(allowedValues != null) { ListallowedValueList = new ArrayList(); @@ -351,12 +351,12 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService { allowedValueList.add(value); } - + ConstraintDefinition dictionaryDef = dictionaryService.getConstraint(listQName); Constraint con = dictionaryDef.getConstraint(); if (con instanceof RMListOfValuesConstraint) { - final RMListOfValuesConstraint def = (RMListOfValuesConstraint)con; + final RMListOfValuesConstraint def = (RMListOfValuesConstraint)con; List oldAllowedValues = AuthenticationUtil.runAs(new RunAsWork>() { public List doWork() @@ -364,22 +364,19 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService return def.getAllowedValues(); } }, AuthenticationUtil.getSystemUserName()); - + /** * Deal with any additions */ for(String newValue : allowedValueList) { - if(!oldAllowedValues.contains(newValue)) + if(!oldAllowedValues.contains(newValue) && logger.isDebugEnabled()) { // This is an addition - if(logger.isDebugEnabled()) - { - logger.debug("value added to list:" + listQName + ":" + newValue); - } + logger.debug("value added to list:" + listQName + ":" + newValue); } } - + /** * Deal with any deletions */ @@ -396,13 +393,13 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService } } } - + recordsManagementAdminService.changeCustomConstraintValues(listQName, allowedValueList); } - + return getRMConstraint(listName); } - + /** * Remove a value from a list and cascade delete. */ @@ -410,17 +407,17 @@ public class RMCaveatConfigServiceImpl implements RMCaveatConfigService { //TODO need to update the rm constraint definition // recordsManagementAdminService. - + rmCaveatConfigComponent.removeRMConstraintListValue(listName, valueName); } - + /** * Update the title of this RM Constraint. */ public RMConstraintInfo updateRMConstraintTitle(String listName, String newTitle) { QName listQName = QName.createQName(listName, namespaceService); - + recordsManagementAdminService.changeCustomConstraintTitle(listQName, newTitle); return getRMConstraint(listName); } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/OnReferencedRecordActionedUpon.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/OnReferencedRecordActionedUpon.java index 54a8d3204c..e48dc0fe68 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/OnReferencedRecordActionedUpon.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/event/OnReferencedRecordActionedUpon.java @@ -170,24 +170,21 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent { public Object doWork() throws Exception { - if (nodeService.exists(nodeRef) == true) + if (nodeService.exists(nodeRef) && name.equals(actionName)) { - if (name.equals(actionName) == true) + QName type = nodeService.getType(nodeRef); + if (TYPE_TRANSFER.equals(type)) { - QName type = nodeService.getType(nodeRef); - if (TYPE_TRANSFER.equals(type) == true) + List assocs = nodeService.getChildAssocs(nodeRef, ASSOC_TRANSFERRED, RegexQNamePattern.MATCH_ALL); + for (ChildAssociationRef assoc : assocs) { - List assocs = nodeService.getChildAssocs(nodeRef, ASSOC_TRANSFERRED, RegexQNamePattern.MATCH_ALL); - for (ChildAssociationRef assoc : assocs) - { - processRecordFolder(assoc.getChildRef()); - } - } - else - { - processRecordFolder(nodeRef); + processRecordFolder(assoc.getChildRef()); } } + else + { + processRecordFolder(nodeRef); + } } return null; @@ -200,11 +197,11 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent private void processRecordFolder(NodeRef recordFolder) { - if (recordService.isRecord(recordFolder) == true) + if (recordService.isRecord(recordFolder)) { processRecord(recordFolder); } - else if (recordFolderService.isRecordFolder(recordFolder) == true) + else if (recordFolderService.isRecordFolder(recordFolder)) { for (NodeRef record : recordService.getRecords(recordFolder)) { @@ -218,7 +215,7 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent List fromAssocs = recordsManagementAdminService.getCustomReferencesFrom(record); for (AssociationRef fromAssoc : fromAssocs) { - if (reference.equals(fromAssoc.getTypeQName()) == true) + if (reference.equals(fromAssoc.getTypeQName())) { NodeRef nodeRef = fromAssoc.getTargetRef(); doEventComplete(nodeRef); @@ -228,7 +225,7 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent List toAssocs = recordsManagementAdminService.getCustomReferencesTo(record); for (AssociationRef toAssoc : toAssocs) { - if (reference.equals(toAssoc.getTypeQName()) == true) + if (reference.equals(toAssoc.getTypeQName())) { NodeRef nodeRef = toAssoc.getSourceRef(); doEventComplete(nodeRef); @@ -246,7 +243,7 @@ public class OnReferencedRecordActionedUpon extends SimpleRecordsManagementEvent { RecordsManagementEvent rmEvent = recordsManagementEventService.getEvent(event.getEventName()); if (event.isEventComplete() == false && - rmEvent.getType().equals(getName()) == true) + rmEvent.getType().equals(getName())) { // Complete the event Map params = new HashMap(3); diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuter.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuter.java index 141be63303..d4302cefa8 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuter.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuter.java @@ -41,11 +41,11 @@ import org.apache.commons.logging.LogFactory; /** * The Disposition Lifecycle Job Finds all disposition action nodes which are * for "retain" or "cutOff" actions Where asOf > now OR - * dispositionEventsEligible = true; - * + * dispositionEventsEligible = true; + * * Runs the cut off or retain action for - * elligible records. - * + * elligible records. + * * @author mrogers */ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecuter @@ -53,26 +53,26 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute private static Log logger = LogFactory.getLog(DispositionLifecycleJobExecuter.class); private RecordsManagementActionService recordsManagementActionService; - + private NodeService nodeService; - + private SearchService searchService; - + public void setRecordsManagementActionService(RecordsManagementActionService recordsManagementActionService) { this.recordsManagementActionService = recordsManagementActionService; } - + public void setNodeService(NodeService nodeService) { this.nodeService = nodeService; } - + public void setSearchService(SearchService searchService) { this.searchService = searchService; } - + /** * @see org.alfresco.module.org_alfresco_module_rm.job.RecordsManagementJobExecuter#execute() */ @@ -81,75 +81,72 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute try { logger.debug("Job Starting"); - + StringBuilder sb = new StringBuilder(); sb.append("+TYPE:\"rma:dispositionAction\" "); sb.append("+(@rma\\:dispositionAction:(\"cutoff\" OR \"retain\"))"); sb.append("+ISNULL:\"rma:dispositionActionCompletedAt\" "); sb.append("+( "); - sb.append("@rma\\:dispositionEventsEligible:true "); + sb.append("@rma\\:dispositionEventsEligible:true "); sb.append("OR @rma\\:dispositionAsOf:[MIN TO NOW] "); sb.append(") "); - + String query = sb.toString(); - + ResultSet results = searchService.query(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, SearchService.LANGUAGE_LUCENE, query); List resultNodes = results.getNodeRefs(); results.close(); - - + + for (NodeRef node : resultNodes) { final NodeRef currentNode = node; - + RetryingTransactionCallback processTranCB = new RetryingTransactionCallback() { public Boolean execute() throws Throwable { final String dispAction = (String) nodeService.getProperty(currentNode, RecordsManagementModel.PROP_DISPOSITION_ACTION); - + // Run "retain" and "cutoff" actions. - - if (dispAction != null) + + if (dispAction != null && (dispAction.equalsIgnoreCase("cutoff") || + dispAction.equalsIgnoreCase("retain"))) { - if (dispAction.equalsIgnoreCase("cutoff") || - dispAction.equalsIgnoreCase("retain")) + ChildAssociationRef parent = nodeService.getPrimaryParent(currentNode); + if (parent.getTypeQName().equals(RecordsManagementModel.ASSOC_NEXT_DISPOSITION_ACTION)) { - ChildAssociationRef parent = nodeService.getPrimaryParent(currentNode); - if (parent.getTypeQName().equals(RecordsManagementModel.ASSOC_NEXT_DISPOSITION_ACTION)) + Map props = new HashMap(1); + props.put(RMDispositionActionExecuterAbstractBase.PARAM_NO_ERROR_CHECK, Boolean.FALSE); + recordsManagementActionService.executeRecordsManagementAction(parent.getParentRef(), dispAction, props); + if (logger.isDebugEnabled()) { - Map props = new HashMap(1); - props.put(RMDispositionActionExecuterAbstractBase.PARAM_NO_ERROR_CHECK, Boolean.FALSE); - recordsManagementActionService.executeRecordsManagementAction(parent.getParentRef(), dispAction, props); - if (logger.isDebugEnabled()) - { - logger.debug("Processed action: " + dispAction + "on" + parent); - } + logger.debug("Processed action: " + dispAction + "on" + parent); } - return null; } + return null; } return Boolean.TRUE; } }; - + /** * Now do the work, one action in each transaction */ if (nodeService.exists(currentNode) == false) { - retryingTransactionHelper.doInTransaction(processTranCB); + retryingTransactionHelper.doInTransaction(processTranCB); } } - + logger.debug("Job Finished"); } catch (AlfrescoRuntimeException exception) { - if (logger.isDebugEnabled() == true) + if (logger.isDebugEnabled()) { logger.debug(exception); } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/BaseEvaluator.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/BaseEvaluator.java index affc7a709d..7845cb9447 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/BaseEvaluator.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/BaseEvaluator.java @@ -223,13 +223,11 @@ public abstract class BaseEvaluator implements RecordsManagementModel boolean result = false; // Check that we are dealing with the correct kind of RM object - if (kinds == null || checkKinds(nodeRef) == true) + if ((kinds == null || checkKinds(nodeRef) == true) && + // Check we have the required capabilities + (capabilities == null || checkCapabilities(nodeRef) == true)) { - // Check we have the required capabilities - if (capabilities == null || checkCapabilities(nodeRef) == true) - { - result = evaluateImpl(nodeRef); - } + result = evaluateImpl(nodeRef); } return result; diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/security/ModelSecurityServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/security/ModelSecurityServiceImpl.java index 019470ead5..e1299b3679 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/security/ModelSecurityServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/security/ModelSecurityServiceImpl.java @@ -59,7 +59,7 @@ public class ModelSecurityServiceImpl extends BaseBehaviourBean /** Namespace service */ private NamespaceService namespaceService; - + /** File plan service */ private FilePlanService filePlanService; @@ -100,27 +100,27 @@ public class ModelSecurityServiceImpl extends BaseBehaviourBean { this.filePlanService = filePlanService; } - + /** * @see org.alfresco.module.org_alfresco_module_rm.model.security.ModelSecurityService#disable() */ @Override - public void disable() + public void disable() { getBehaviour("beforeAddAspect").disable(); getBehaviour("beforeRemoveAspect").disable(); getBehaviour("onUpdateProperties").disable(); } - + /** * @see org.alfresco.module.org_alfresco_module_rm.model.security.ModelSecurityService#enable() */ @Override - public void enable() + public void enable() { getBehaviour("beforeAddAspect").enable(); getBehaviour("beforeRemoveAspect").enable(); - getBehaviour("onUpdateProperties").enable(); + getBehaviour("onUpdateProperties").enable(); } /** @@ -203,15 +203,15 @@ public class ModelSecurityServiceImpl extends BaseBehaviourBean NodeRef filePlan = filePlanService.getFilePlan(nodeRef); if (filePlan != null) - { + { for (Capability capability : artifact.getCapabilities()) { - if (capability.hasPermission(nodeRef).equals(AccessStatus.ALLOWED) == true) + if (capability.hasPermission(nodeRef).equals(AccessStatus.ALLOWED)) { result = true; break; } - } + } } return result; @@ -277,20 +277,18 @@ public class ModelSecurityServiceImpl extends BaseBehaviourBean ) public void beforeAddAspect(NodeRef nodeRef, QName aspect) { - if (enabled == true) - { - if (AuthenticationUtil.getFullyAuthenticatedUser() != null && + if (enabled && + AuthenticationUtil.getFullyAuthenticatedUser() != null && AuthenticationUtil.isRunAsUserTheSystemUser() == false && - isProtectedAspect(aspect) == true && - nodeService.exists(nodeRef) == true && + isProtectedAspect(aspect) && + nodeService.exists(nodeRef) && canEditProtectedAspect(nodeRef, aspect) == false) - { - // the user can't edit the protected aspect - throw new ModelAccessDeniedException( - "The user " + AuthenticationUtil.getFullyAuthenticatedUser() + - " does not have the permission to add the protected aspect " + aspect.toPrefixString(namespaceService) + - " from the node " + nodeRef.toString()); - } + { + // the user can't edit the protected aspect + throw new ModelAccessDeniedException( + "The user " + AuthenticationUtil.getFullyAuthenticatedUser() + + " does not have the permission to add the protected aspect " + aspect.toPrefixString(namespaceService) + + " from the node " + nodeRef.toString()); } } @@ -306,20 +304,18 @@ public class ModelSecurityServiceImpl extends BaseBehaviourBean ) public void beforeRemoveAspect(NodeRef nodeRef, QName aspect) { - if (enabled == true) - { - if (AuthenticationUtil.getFullyAuthenticatedUser() != null && + if (enabled && + AuthenticationUtil.getFullyAuthenticatedUser() != null && AuthenticationUtil.isRunAsUserTheSystemUser() == false && - isProtectedAspect(aspect) == true && - nodeService.exists(nodeRef) == true && + isProtectedAspect(aspect) && + nodeService.exists(nodeRef) && canEditProtectedAspect(nodeRef, aspect) == false) - { - // the user can't edit the protected aspect - throw new ModelAccessDeniedException( - "The user " + AuthenticationUtil.getFullyAuthenticatedUser() + - " does not have the permission to remove the protected aspect " + aspect.toPrefixString(namespaceService) + - " from the node " + nodeRef.toString()); - } + { + // the user can't edit the protected aspect + throw new ModelAccessDeniedException( + "The user " + AuthenticationUtil.getFullyAuthenticatedUser() + + " does not have the permission to remove the protected aspect " + aspect.toPrefixString(namespaceService) + + " from the node " + nodeRef.toString()); } } @@ -335,31 +331,29 @@ public class ModelSecurityServiceImpl extends BaseBehaviourBean ) public void onUpdateProperties(NodeRef nodeRef, Map before, Map after) { - if (enabled == true) - { - if (AuthenticationUtil.getFullyAuthenticatedUser() != null && + if (enabled && + AuthenticationUtil.getFullyAuthenticatedUser() != null && AuthenticationUtil.isRunAsUserTheSystemUser() == false && - nodeService.exists(nodeRef) == true) + nodeService.exists(nodeRef)) + { + for (QName property : after.keySet()) { - for (QName property : after.keySet()) + if (isProtectedProperty(property)) { - if (isProtectedProperty(property) == true) + // always allow if this is the first time we are setting the protected property + if (before == null || before.isEmpty() || before.get(property) == null) { - // always allow if this is the first time we are setting the protected property - if (before == null || before.isEmpty() || before.get(property) == null) - { - return; - } + return; + } - if (EqualsHelper.nullSafeEquals(before.get(property), after.get(property)) == false && - canEditProtectedProperty(nodeRef, property) == false) - { - // the user can't edit the protected property - throw new ModelAccessDeniedException( + if (EqualsHelper.nullSafeEquals(before.get(property), after.get(property)) == false && + canEditProtectedProperty(nodeRef, property) == false) + { + // the user can't edit the protected property + throw new ModelAccessDeniedException( "The user " + AuthenticationUtil.getFullyAuthenticatedUser() + " does not have the permission to edit the protected property " + property.toPrefixString(namespaceService) + " on the node " + nodeRef.toString()); - } } } } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java index 2370634896..e3ca8a4ab7 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java @@ -98,7 +98,7 @@ import org.springframework.extensions.surf.util.I18NUtil; * @since 2.1 */ @BehaviourBean -public class RecordServiceImpl extends BaseBehaviourBean +public class RecordServiceImpl extends BaseBehaviourBean implements RecordService, RecordsManagementModel, RecordsManagementCustomModel, @@ -194,7 +194,7 @@ public class RecordServiceImpl extends BaseBehaviourBean /** list of available record meta-data aspects and the file plan types the are applicable to */ private Map> recordMetaDataAspects; - + /** policies */ private ClassPolicyDelegate beforeFileRecord; private ClassPolicyDelegate onFileRecord; @@ -320,9 +320,9 @@ public class RecordServiceImpl extends BaseBehaviourBean { // bind policies beforeFileRecord = policyComponent.registerClassPolicy(BeforeFileRecord.class); - onFileRecord = policyComponent.registerClassPolicy(OnFileRecord.class); - - // bind behaviours + onFileRecord = policyComponent.registerClassPolicy(OnFileRecord.class); + + // bind behaviours policyComponent.bindAssociationBehaviour( NodeServicePolicies.OnCreateChildAssociationPolicy.QNAME, TYPE_RECORD_FOLDER, @@ -332,11 +332,11 @@ public class RecordServiceImpl extends BaseBehaviourBean NodeServicePolicies.BeforeDeleteChildAssociationPolicy.QNAME, ContentModel.TYPE_FOLDER, ContentModel.ASSOC_CONTAINS, - onDeleteDeclaredRecordLink); + onDeleteDeclaredRecordLink); } - - - + + + /** * @see org.alfresco.repo.node.NodeServicePolicies.OnRemoveAspectPolicy#onRemoveAspect(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName) */ @@ -519,7 +519,7 @@ public class RecordServiceImpl extends BaseBehaviourBean { getBehaviour("onUpdateProperties").enable(); } - + /** * Ensure that the user only updates record properties that they have permission to. * @@ -536,56 +536,54 @@ public class RecordServiceImpl extends BaseBehaviourBean { if (AuthenticationUtil.getFullyAuthenticatedUser() != null && AuthenticationUtil.isRunAsUserTheSystemUser() == false && - nodeService.exists(nodeRef) ) + nodeService.exists(nodeRef) && + isRecord(nodeRef)) { - if (isRecord(nodeRef) ) + for (QName property : after.keySet()) { - for (QName property : after.keySet()) + Serializable beforeValue = null; + if (before != null) { - Serializable beforeValue = null; - if (before != null) - { - beforeValue = before.get(property); - } + beforeValue = before.get(property); + } - Serializable afterValue = null; - if (after != null) - { - afterValue = after.get(property); - } + Serializable afterValue = null; + if (after != null) + { + afterValue = after.get(property); + } - boolean propertyUnchanged = false; - if (beforeValue != null && afterValue != null && + boolean propertyUnchanged = false; + if (beforeValue != null && afterValue != null && beforeValue instanceof Date && afterValue instanceof Date) - { - // deal with date values - propertyUnchanged = (((Date)beforeValue).compareTo((Date)afterValue) == 0); - } - else - { - // otherwise - propertyUnchanged = EqualsHelper.nullSafeEquals(beforeValue, afterValue); - } + { + // deal with date values + propertyUnchanged = (((Date)beforeValue).compareTo((Date)afterValue) == 0); + } + else + { + // otherwise + propertyUnchanged = EqualsHelper.nullSafeEquals(beforeValue, afterValue); + } - if (propertyUnchanged == false && + if (propertyUnchanged == false && isPropertyEditable(nodeRef, property) == false) - { - // the user can't edit the record property - throw new ModelAccessDeniedException( + { + // the user can't edit the record property + throw new ModelAccessDeniedException( "The user " + AuthenticationUtil.getFullyAuthenticatedUser() + " does not have the permission to edit the record property " + property.toString() + " on the node " + nodeRef.toString()); - } } } } } - + /** * Get map containing record metadata aspects. - * + * * @return {@link Map}<{@link QName}, {@link Set}<{@link QName}>> map containing record metadata aspects - * + * * @since 2.2 */ protected Map> getRecordMetadataAspectsMap() @@ -594,20 +592,20 @@ public class RecordServiceImpl extends BaseBehaviourBean { // create map recordMetaDataAspects = new HashMap>(); - + // init with legacy aspects initRecordMetaDataMap(); } - + return recordMetaDataAspects; } - + /** * Initialises the record meta-data map. *

- * This is here to support backwards compatibility in case an existing + * This is here to support backwards compatibility in case an existing * customization (pre 2.2) is still using the record meta-data aspect. - * + * * @since 2.2 */ private void initRecordMetaDataMap() @@ -636,9 +634,9 @@ public class RecordServiceImpl extends BaseBehaviourBean { ParameterCheck.mandatory("recordMetadataAspect", recordMetadataAspect); ParameterCheck.mandatory("filePlanType", filePlanType); - + Set filePlanTypes = null; - + if (getRecordMetadataAspectsMap().containsKey(recordMetadataAspect)) { // get the current set of file plan types for this aspect @@ -650,9 +648,9 @@ public class RecordServiceImpl extends BaseBehaviourBean filePlanTypes = new HashSet(1); getRecordMetadataAspectsMap().put(recordMetadataAspect, filePlanTypes); } - + // add the file plan type - filePlanTypes.add(filePlanType); + filePlanTypes.add(filePlanType); } /** @@ -664,7 +662,7 @@ public class RecordServiceImpl extends BaseBehaviourBean { return getRecordMetadataAspects(TYPE_FILE_PLAN); } - + /** * @see org.alfresco.module.org_alfresco_module_rm.record.RecordService#getRecordMetaDataAspects(org.alfresco.service.cmr.repository.NodeRef) */ @@ -672,16 +670,16 @@ public class RecordServiceImpl extends BaseBehaviourBean public Set getRecordMetadataAspects(NodeRef nodeRef) { QName filePlanType = TYPE_FILE_PLAN; - + if (nodeRef != null) { NodeRef filePlan = getFilePlan(nodeRef); filePlanType = nodeService.getType(filePlan); } - + return getRecordMetadataAspects(filePlanType); } - + /** * @see org.alfresco.module.org_alfresco_module_rm.record.RecordService#getRecordMetadataAspects(org.alfresco.service.namespace.QName) */ @@ -689,7 +687,7 @@ public class RecordServiceImpl extends BaseBehaviourBean public Set getRecordMetadataAspects(QName filePlanType) { Set result = new HashSet(getRecordMetadataAspectsMap().size()); - + for (Entry> entry : getRecordMetadataAspectsMap().entrySet()) { if (entry.getValue().contains(filePlanType)) @@ -697,8 +695,8 @@ public class RecordServiceImpl extends BaseBehaviourBean result.add(entry.getKey()); } } - - return result; + + return result; } /** @@ -980,7 +978,7 @@ public class RecordServiceImpl extends BaseBehaviourBean { // fire before file record policy beforeFileRecord.get(getTypeAndApsects(record)).beforeFileRecord(record); - + // check whether this item is already an item or not if (isRecord(record) == false) { @@ -994,12 +992,12 @@ public class RecordServiceImpl extends BaseBehaviourBean Calendar fileCalendar = Calendar.getInstance(); nodeService.setProperty(record, PROP_DATE_FILED, fileCalendar.getTime()); } - + // file on file record policy onFileRecord.get(getTypeAndApsects(record)).onFileRecord(record); } } - + /** * @see org.alfresco.module.org_alfresco_module_rm.record.RecordService#hideRecord(org.alfresco.service.cmr.repository.NodeRef) */ @@ -1189,12 +1187,10 @@ public class RecordServiceImpl extends BaseBehaviourBean } } - if (permissionService.hasPermission(filePlan, RMPermissionModel.EDIT_NON_RECORD_METADATA).equals(AccessStatus.ALLOWED)) + if (permissionService.hasPermission(filePlan, RMPermissionModel.EDIT_NON_RECORD_METADATA).equals(AccessStatus.ALLOWED) && + logger.isDebugEnabled()) { - if (logger.isDebugEnabled() ) - { - logger.debug(" ... user has the edit non record metadata permission on the file plan"); - } + logger.debug(" ... user has the edit non record metadata permission on the file plan"); } // END DEBUG ... diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/ExtendedSecurityServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/ExtendedSecurityServiceImpl.java index bc0655274d..dd93dfed40 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/ExtendedSecurityServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/ExtendedSecurityServiceImpl.java @@ -142,7 +142,7 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl /** * Add extended security implementation method - * + * * @param nodeRef * @param readers * @param writers @@ -181,7 +181,7 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl } // apply the readers to any renditions of the content - if (isRecord(nodeRef) == true) + if (isRecord(nodeRef)) { List assocs = nodeService.getChildAssocs(nodeRef, RenditionModel.ASSOC_RENDITION, RegexQNamePattern.MATCH_ALL); for (ChildAssociationRef assoc : assocs) @@ -194,12 +194,12 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl // add to the extended security roles addExtendedSecurityRoles(nodeRef, readers, writers); - if (applyToParents == true) + if (applyToParents) { // apply the extended readers up the file plan primary hierarchy NodeRef parent = nodeService.getPrimaryParent(nodeRef).getParentRef(); if (parent != null && - filePlanService.isFilePlanComponent(parent) == true) + filePlanService.isFilePlanComponent(parent)) { addExtendedSecurityImpl(parent, readers, null, applyToParents); addExtendedSecurityImpl(parent, writers, null, applyToParents); @@ -238,15 +238,11 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl for (String authority : authorities) { - if (authority.equals(PermissionService.ALL_AUTHORITIES) == false && - authority.equals(PermissionService.OWNER_AUTHORITY) == false) + if ((authority.equals(PermissionService.ALL_AUTHORITIES) == false && authority.equals(PermissionService.OWNER_AUTHORITY) == false) && + (referenceCountMap == null || referenceCountMap.containsKey(authority) == false)) { - if (referenceCountMap == null || - referenceCountMap.containsKey(authority) == false) - { - // add the authority to the role - filePlanRoleService.assignRoleToAuthority(filePlan, roleName, authority); - } + // add the authority to the role + filePlanRoleService.assignRoleToAuthority(filePlan, roleName, authority); } } @@ -273,7 +269,7 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl { if (key.equals(PermissionService.ALL_AUTHORITIES) == false) { - if (map.containsKey(key) == true) + if (map.containsKey(key)) { // increment reference count Integer count = map.get(key); @@ -305,12 +301,12 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl @Override public void removeExtendedSecurity(NodeRef nodeRef, Set readers, Setwriters, boolean applyToParents) { - if (hasExtendedSecurity(nodeRef) == true) + if (hasExtendedSecurity(nodeRef)) { removeExtendedSecurityImpl(nodeRef, readers, writers); // remove the readers from any renditions of the content - if (isRecord(nodeRef) == true) + if (isRecord(nodeRef)) { List assocs = nodeService.getChildAssocs(nodeRef, RenditionModel.ASSOC_RENDITION, RegexQNamePattern.MATCH_ALL); for (ChildAssociationRef assoc : assocs) @@ -320,12 +316,12 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl } } - if (applyToParents == true) + if (applyToParents) { // apply the extended readers up the file plan primary hierarchy NodeRef parent = nodeService.getPrimaryParent(nodeRef).getParentRef(); if (parent != null && - filePlanService.isFilePlanComponent(parent) == true) + filePlanService.isFilePlanComponent(parent)) { removeExtendedSecurity(parent, readers, null, applyToParents); removeExtendedSecurity(parent, writers, null, applyToParents); @@ -361,7 +357,7 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl /** * Helper method to remove items from map or reduce reference count - * + * * @param map ref count map * @param keys keys * @return Map ref count map @@ -394,7 +390,7 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl } // reset the map to null if now empty - if (map != null && map.isEmpty() == true) + if (map != null && map.isEmpty()) { map = null; } @@ -417,7 +413,7 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl @Override public void removeAllExtendedSecurity(NodeRef nodeRef, boolean applyToParents) { - if (hasExtendedSecurity(nodeRef) == true) + if (hasExtendedSecurity(nodeRef)) { removeExtendedSecurity(nodeRef, getExtendedReaders(nodeRef), getExtendedWriters(nodeRef)); } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/FilePlanPermissionServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/FilePlanPermissionServiceImpl.java index 4b4b9a40cc..9394bdefcc 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/FilePlanPermissionServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/security/FilePlanPermissionServiceImpl.java @@ -149,7 +149,7 @@ public class FilePlanPermissionServiceImpl extends ServiceBaseImpl { this.recordFolderService = recordFolderService; } - + /** * @see org.alfresco.module.org_alfresco_module_rm.security.FilePlanPermissionService#setupRecordCategoryPermissions(org.alfresco.service.cmr.repository.NodeRef) */ @@ -157,13 +157,13 @@ public class FilePlanPermissionServiceImpl extends ServiceBaseImpl public void setupRecordCategoryPermissions(final NodeRef recordCategory) { ParameterCheck.mandatory("recordCategory", recordCategory); - + // assert that we have a record category in our hands if (instanceOf(recordCategory, TYPE_RECORD_CATEGORY) == false) { throw new AlfrescoRuntimeException("Unable to setup record category permissions, because node is not a record category."); } - + // init permissions initPermissions(recordCategory); @@ -405,7 +405,7 @@ public class FilePlanPermissionServiceImpl extends ServiceBaseImpl /** * Initiliase the permissions for the given node. - * + * * @param nodeRef node reference */ private void initPermissions(final NodeRef nodeRef) diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/transfer/TransferServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/transfer/TransferServiceImpl.java index ef26921f1a..6b87c90a27 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/transfer/TransferServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/transfer/TransferServiceImpl.java @@ -236,12 +236,9 @@ public class TransferServiceImpl extends ServiceBaseImpl implements TransferServ nodeService.deleteNode(nodeRef); NodeRef transferNodeRef = (NodeRef) AlfrescoTransactionSupport.getResource(KEY_TRANSFER_NODEREF); - if (transferNodeRef != null) + if (transferNodeRef != null && transferNodeRef.equals(nodeRef)) { - if (transferNodeRef.equals(nodeRef)) - { - AlfrescoTransactionSupport.bindResource(KEY_TRANSFER_NODEREF, null); - } + AlfrescoTransactionSupport.bindResource(KEY_TRANSFER_NODEREF, null); } }