import static org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.TOP;
import static org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.buildDelete;
import static org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.buildGet;
+import static org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.buildPatch;
import static org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.buildPost;
import static org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.buildPostOperation;
import static org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.buildPut;
node.getDescription().orElse(""), pathParams, oaversion);
operations.put("put", put);
+ final ObjectNode patch = buildPatch(parentName, nodeName, moduleName, deviceName,
+ node.getDescription().orElse(""), pathParams, oaversion);
+ operations.put("patch", patch);
+
final ObjectNode delete = buildDelete(node, moduleName, deviceName, pathParams, oaversion);
operations.put("delete", delete);
import static org.opendaylight.netconf.sal.rest.doc.impl.DefinitionGenerator.INPUT_SUFFIX;
import static org.opendaylight.netconf.sal.rest.doc.impl.DefinitionGenerator.OUTPUT_SUFFIX;
+import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.fasterxml.jackson.databind.node.ObjectNode;
return value;
}
+ public static ObjectNode buildPatch(final String parentName, final String nodeName, final String moduleName,
+ final Optional<String> deviceName, final String description, final ArrayNode pathParams,
+ final OAversion oaversion) {
+ final ObjectNode value = JsonNodeFactory.instance.objectNode();
+ value.put(DESCRIPTION_KEY, description);
+ value.put(SUMMARY_KEY, buildSummaryValue(HttpMethod.PATCH, moduleName, deviceName, nodeName));
+ value.set(TAGS_KEY, buildTagsValue(deviceName, moduleName));
+ final ArrayNode parameters = JsonUtil.copy(pathParams);
+ final String defName = parentName + CONFIG + "_" + nodeName + TOP;
+ final String xmlDefName = parentName + CONFIG + "_" + nodeName;
+ insertRequestBodyParameter(parameters, value, defName, xmlDefName, nodeName + CONFIG, oaversion);
+ value.set(PARAMETERS_KEY, parameters);
+
+ final ObjectNode responses = JsonNodeFactory.instance.objectNode();
+ responses.set(String.valueOf(Response.Status.OK.getStatusCode()),
+ buildResponse(Response.Status.OK.getReasonPhrase(), Optional.empty(), oaversion));
+ responses.set(String.valueOf(Response.Status.NO_CONTENT.getStatusCode()),
+ buildResponse("Updated", Optional.empty(), oaversion));
+
+ value.set(RESPONSES_KEY, responses);
+ setConsumesIfNeeded(value, oaversion);
+ return value;
+ }
+
public static ObjectNode buildDelete(final DataSchemaNode node, final String moduleName,
final Optional<String> deviceName, final ArrayNode pathParams, final OAversion oaversion) {
final ObjectNode value = JsonNodeFactory.instance.objectNode();
final ObjectNode payload = JsonNodeFactory.instance.objectNode();
if (oaversion.equals(OAversion.V3_0)) {
final ObjectNode content = JsonNodeFactory.instance.objectNode();
- content.set(MediaType.APPLICATION_JSON, buildMimeTypeValue(defName));
- content.set(MediaType.APPLICATION_XML, buildMimeTypeValue(xmlDefName));
+ final JsonNode node = operation.get(SUMMARY_KEY);
+ if (node != null && node.asText().contains(HttpMethod.PATCH)) {
+ content.set("application/yang-data+json", buildMimeTypeValue(defName));
+ content.set("application/yang-data+xml", buildMimeTypeValue(xmlDefName));
+ } else {
+ content.set(MediaType.APPLICATION_JSON, buildMimeTypeValue(defName));
+ content.set(MediaType.APPLICATION_XML, buildMimeTypeValue(xmlDefName));
+ }
payload.set(CONTENT_KEY, content);
payload.put(DESCRIPTION_KEY, name);
operation.set(REQUEST_BODY_KEY, payload);