diff --git a/remote-api/src/main/java/org/alfresco/rest/api/impl/RulesImpl.java b/remote-api/src/main/java/org/alfresco/rest/api/impl/RulesImpl.java index ebc84d4d91..11ccde66b4 100644 --- a/remote-api/src/main/java/org/alfresco/rest/api/impl/RulesImpl.java +++ b/remote-api/src/main/java/org/alfresco/rest/api/impl/RulesImpl.java @@ -86,7 +86,11 @@ public class RulesImpl implements Rules public List createRules(final String folderNodeId, final String ruleSetId, final List rules) { final NodeRef folderNodeRef = validateFolderNode(folderNodeId); - validateRuleSetNode(ruleSetId, folderNodeRef); + // Don't validate the ruleset node if -default- is passed since we may need to create it. + if (RuleSet.isNotDefaultId(ruleSetId)) + { + validateRuleSetNode(ruleSetId, folderNodeRef); + } return rules.stream() .map(rule -> rule.toServiceModel(nodes)) diff --git a/remote-api/src/main/java/org/alfresco/rest/api/model/rules/Rule.java b/remote-api/src/main/java/org/alfresco/rest/api/model/rules/Rule.java index 377aa61f51..5eeae3a7c8 100644 --- a/remote-api/src/main/java/org/alfresco/rest/api/model/rules/Rule.java +++ b/remote-api/src/main/java/org/alfresco/rest/api/model/rules/Rule.java @@ -26,12 +26,19 @@ package org.alfresco.rest.api.model.rules; +import java.io.Serializable; +import java.util.Map; import java.util.Objects; +import org.alfresco.model.ContentModel; +import org.alfresco.repo.action.ActionImpl; +import org.alfresco.repo.action.executer.SetPropertyValueActionExecuter; import org.alfresco.rest.api.Nodes; import org.alfresco.rest.framework.resource.UniqueId; import org.alfresco.service.Experimental; +import org.alfresco.service.cmr.action.Action; import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.util.GUID; @Experimental public class Rule @@ -59,9 +66,20 @@ public class Rule public org.alfresco.service.cmr.rule.Rule toServiceModel(Nodes nodes) { org.alfresco.service.cmr.rule.Rule ruleModel = new org.alfresco.service.cmr.rule.Rule(); - NodeRef nodeRef = nodes.validateOrLookupNode(id, null); - ruleModel.setNodeRef(nodeRef); + if (id != null) + { + NodeRef nodeRef = nodes.validateOrLookupNode(id, null); + ruleModel.setNodeRef(nodeRef); + } ruleModel.setTitle(name); + + // TODO: Once we have actions working properly then this needs to be replaced. + Map parameters = Map.of( + SetPropertyValueActionExecuter.PARAM_PROPERTY, ContentModel.PROP_TITLE, + SetPropertyValueActionExecuter.PARAM_VALUE, "UPDATED:" + GUID.generate()); + Action action = new ActionImpl(null, GUID.generate(), SetPropertyValueActionExecuter.NAME, parameters); + ruleModel.setAction(action); + return ruleModel; } diff --git a/remote-api/src/test/java/org/alfresco/rest/api/impl/RulesImplTest.java b/remote-api/src/test/java/org/alfresco/rest/api/impl/RulesImplTest.java index a031e207c2..90b3ae0efb 100644 --- a/remote-api/src/test/java/org/alfresco/rest/api/impl/RulesImplTest.java +++ b/remote-api/src/test/java/org/alfresco/rest/api/impl/RulesImplTest.java @@ -313,8 +313,6 @@ public class RulesImplTest extends TestCase @Test public void testSaveRules_defaultRuleSet() { - NodeRef defaultRuleSetNodeRef = new NodeRef("default://rule/set"); - given(ruleServiceMock.getRuleSetNode(folderNodeRef)).willReturn(defaultRuleSetNodeRef); Rule ruleBody = mock(Rule.class); List ruleList = List.of(ruleBody); org.alfresco.service.cmr.rule.Rule serviceRuleBody = mock(org.alfresco.service.cmr.rule.Rule.class); @@ -326,7 +324,6 @@ public class RulesImplTest extends TestCase // when List actual = rules.createRules(folderNodeRef.getId(), DEFAULT_ID, ruleList); - then(ruleServiceMock).should().getRuleSetNode(folderNodeRef); then(ruleServiceMock).should().saveRule(folderNodeRef, ruleBody.toServiceModel(nodesMock)); then(ruleServiceMock).shouldHaveNoMoreInteractions(); List expected = List.of(Rule.from(serviceRule));