,
/**
* Create one or more rules inside a given folder and rule set.
+ *
+ * POST /nodes/{folderNodeId}/rule-sets/{ruleSetId}/rules
*
* @param folderNodeId The folder in which to create the rule.
* @param ruleList The list of rules to create.
@@ -126,9 +132,28 @@ public class NodeRulesRelation implements RelationshipResourceAction.Read,
return rules.createRules(folderNodeId, ruleSetId, ruleList);
}
- public void setRules(Rules rules)
+ /**
+ * Update the specified folder rule.
+ *
+ * PUT /nodes/{folderNodeId}/rule-sets/{ruleSetId}/rules/{ruleId}
+ *
+ * @param folderNodeId The id of the folder containing the rule.
+ * @param rule The updated rule.
+ * @param parameters List of parameters including the rule set id and rule id.
+ * @return The updated rule.
+ * @throws RelationshipResourceNotFoundException in case resource was not found
+ */
+ @WebApiDescription (
+ title = "Update folder node rule",
+ description = "Update a single rule definition for given node's, rule set's and rule's IDs",
+ successStatus = HttpServletResponse.SC_OK
+ )
+ @Override
+ public Rule update(String folderNodeId, Rule rule, Parameters parameters)
{
- this.rules = rules;
+ String ruleSetId = parameters.getRelationshipId();
+ String ruleId = parameters.getRelationship2Id();
+ return rules.updateRuleById(folderNodeId, ruleSetId, ruleId, rule);
}
/**
@@ -152,4 +177,9 @@ public class NodeRulesRelation implements RelationshipResourceAction.Read,
final String ruleId = parameters.getRelationship2Id();
rules.deleteRuleById(folderNodeId, ruleSetId, ruleId);
}
+
+ public void setRules(Rules rules)
+ {
+ this.rules = rules;
+ }
}
diff --git a/remote-api/src/main/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptPut.java b/remote-api/src/main/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptPut.java
index 24e6e385c4..9a63cef648 100644
--- a/remote-api/src/main/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptPut.java
+++ b/remote-api/src/main/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptPut.java
@@ -79,6 +79,7 @@ public class ResourceWebScriptPut extends AbstractResourceWebScript implements P
final Map resourceVars = locator.parseTemplateVars(req.getServiceMatch().getTemplateVars());
final String entityId = resourceVars.get(ResourceLocator.ENTITY_ID);
final String relationshipId = resourceVars.get(ResourceLocator.RELATIONSHIP_ID);
+ final String relationship2Id = resourceVars.get(ResourceLocator.RELATIONSHIP2_ID);
final RecognizedParams params = getRecognizedParams(req);
final ResourceOperation operation = resourceMeta.getOperation(HttpMethod.PUT);
@@ -99,9 +100,16 @@ public class ResourceWebScriptPut extends AbstractResourceWebScript implements P
if (StringUtils.isBlank(relationshipId))
{
throw new UnsupportedResourceOperationException("PUT is executed against the instance URL");
- } else
+ }
+ Object putRel = extractJsonContent(req, assistant.getJsonHelper(), resourceMeta.getObjectType(operation));
+ if (StringUtils.isNotBlank(relationship2Id))
+ {
+ ResourceWebScriptHelper.setUniqueId(putRel, relationship2Id);
+ return Params.valueOf(false, entityId, relationshipId, relationship2Id,
+ putRel, null, null, params, null, req);
+ }
+ else
{
- Object putRel = extractJsonContent(req, assistant.getJsonHelper(), resourceMeta.getObjectType(operation));
ResourceWebScriptHelper.setUniqueId(putRel,relationshipId);
return Params.valueOf(entityId, params, putRel, req);
}