Report bad document on empty body 04/97204/1
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 13 Aug 2021 14:00:38 +0000 (16:00 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 13 Aug 2021 15:20:16 +0000 (17:20 +0200)
If we do not get a PatchContext report a 400 bad request instead
of 500 server failure.

JIRA: NETCONF-803
Change-Id: Ic314273cfa6074da16cf0b9182c94641358ccf38
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 3467bab21a5a061fe00e4f5cb9826da4e60d8e53)

restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfDataServiceImpl.java

index 46d54f8e8a8408316a5cf18789545332e2d61149..63b30ed30388d91c8b8040a6fc6f95b5701561ee 100644 (file)
@@ -357,7 +357,9 @@ public class RestconfDataServiceImpl implements RestconfDataService {
 
     @Override
     public PatchStatusContext patchData(final PatchContext context, final UriInfo uriInfo) {
-        final DOMMountPoint mountPoint = requireNonNull(context).getInstanceIdentifierContext().getMountPoint();
+        final DOMMountPoint mountPoint = RestconfDocumentedException.throwIfNull(context,
+            ErrorType.PROTOCOL, ErrorTag.MALFORMED_MESSAGE, "No patch documented provided")
+            .getInstanceIdentifierContext().getMountPoint();
         final RestconfStrategy strategy = getRestconfStrategy(mountPoint);
         return PatchDataTransactionUtil.patchData(context, strategy, getSchemaContext(mountPoint));
     }
@@ -366,9 +368,7 @@ public class RestconfDataServiceImpl implements RestconfDataService {
     public Response patchData(final String identifier, final NormalizedNodeContext payload, final UriInfo uriInfo) {
         requireNonNull(payload);
 
-        final InstanceIdentifierContext<? extends SchemaNode> iid = payload
-                .getInstanceIdentifierContext();
-
+        final InstanceIdentifierContext<? extends SchemaNode> iid = payload.getInstanceIdentifierContext();
         PutDataTransactionUtil.validInputData(iid.getSchemaNode(), payload);
         PutDataTransactionUtil.validTopLevelNodeName(iid.getInstanceIdentifier(), payload);
         PutDataTransactionUtil.validateListKeysEqualityInPayloadAndUri(payload);