diff --git a/source/java/org/alfresco/repo/web/scripts/links/AbstractLinksWebScript.java b/source/java/org/alfresco/repo/web/scripts/links/AbstractLinksWebScript.java index 39e18b8149..7b20a1e0e4 100644 --- a/source/java/org/alfresco/repo/web/scripts/links/AbstractLinksWebScript.java +++ b/source/java/org/alfresco/repo/web/scripts/links/AbstractLinksWebScript.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2011 Alfresco Software Limited. + * Copyright (C) 2005-2012 Alfresco Software Limited. * * This file is part of Alfresco * @@ -212,18 +212,15 @@ public abstract class AbstractLinksWebScript extends DeclarativeWebScript // FTL needs a script node of the person, if available String creator = link.getCreator(); - Object creatorO = ""; - if (creator != null) + Object creatorO; + if ((null == creator) || !personService.personExists(creator)) { - try - { - NodeRef person = personService.getPerson(creator); - creatorO = person; - } - catch (NoSuchPersonException ignored) - { - // Intentionally empty - treat deleted users as no user. - } + creatorO = ""; + } + else + { + NodeRef person = personService.getPerson(creator); + creatorO = person; } res.put("creator", creatorO); diff --git a/source/java/org/alfresco/repo/web/scripts/rule/AbstractRuleWebScript.java b/source/java/org/alfresco/repo/web/scripts/rule/AbstractRuleWebScript.java index 9e7a5192ee..92a838c8f7 100644 --- a/source/java/org/alfresco/repo/web/scripts/rule/AbstractRuleWebScript.java +++ b/source/java/org/alfresco/repo/web/scripts/rule/AbstractRuleWebScript.java @@ -66,6 +66,11 @@ public abstract class AbstractRuleWebScript extends DeclarativeWebScript public static final SimpleDateFormat dateFormate = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy"); + private static final String RULE_OUTBOUND = "outbound"; + private static final String ACTION_CHECK_OUT = "check-out"; + + private static final String CANNOT_CREATE_RULE = "cannot.create.rule.checkout.outbound"; + protected NodeService nodeService; protected RuleService ruleService; protected DictionaryService dictionaryService; @@ -408,4 +413,20 @@ public abstract class AbstractRuleWebScript extends DeclarativeWebScript return value; } + + protected void checkRule(Rule rule) + { + List ruleTypes = rule.getRuleTypes(); + if (ruleTypes.contains(RULE_OUTBOUND)) + { + List actions = ((CompositeActionImpl) rule.getAction()).getActions(); + for (Action action : actions) + { + if (action.getActionDefinitionName().equalsIgnoreCase(ACTION_CHECK_OUT)) + { + throw new WebScriptException(CANNOT_CREATE_RULE); + } + } + } + } } diff --git a/source/java/org/alfresco/repo/web/scripts/rule/RulePost.java b/source/java/org/alfresco/repo/web/scripts/rule/RulePost.java index 9ff85ebb59..66d61225d7 100644 --- a/source/java/org/alfresco/repo/web/scripts/rule/RulePost.java +++ b/source/java/org/alfresco/repo/web/scripts/rule/RulePost.java @@ -63,6 +63,9 @@ public class RulePost extends AbstractRuleWebScript // parse request json rule = parseJsonRule(json); + // check the rule + checkRule(rule); + // create rule ruleService.saveRule(nodeRef, rule); diff --git a/source/java/org/alfresco/repo/web/scripts/rule/RulePut.java b/source/java/org/alfresco/repo/web/scripts/rule/RulePut.java index d554558a42..f689f5363a 100644 --- a/source/java/org/alfresco/repo/web/scripts/rule/RulePut.java +++ b/source/java/org/alfresco/repo/web/scripts/rule/RulePut.java @@ -95,6 +95,9 @@ public class RulePut extends RulePost // parse request json updateRuleFromJSON(json, ruleToUpdate); + // check the rule + checkRule(ruleToUpdate); + // save changes ruleService.saveRule(nodeRef, ruleToUpdate);