Restconf 8040 should return 204 for delete and put 89/68989/1
authorTom Pantelis <tompantelis@gmail.com>
Wed, 28 Feb 2018 19:13:38 +0000 (14:13 -0500)
committerJakub Toth <jakub.toth@pantheon.tech>
Fri, 2 Mar 2018 06:56:35 +0000 (07:56 +0100)
restconf was returning 200 Ok but according to RCF8040, for put,
"If an existing resource is modified, a "204 No Content"
status-line is returned."" and for delete, "If the DELETE request
succeeds, a "204 No Content" status-line is returned.".

Change-Id: I7133cdd747c1869d6b640c873bbcdccd437e8900
Signed-off-by: Tom Pantelis <tompantelis@gmail.com>
restconf/sal-rest-connector/src/main/java/org/opendaylight/restconf/restful/utils/DeleteDataTransactionUtil.java
restconf/sal-rest-connector/src/main/java/org/opendaylight/restconf/restful/utils/PutDataTransactionUtil.java
restconf/sal-rest-connector/src/test/java/org/opendaylight/restconf/restful/services/impl/RestconfDataServiceImplTest.java
restconf/sal-rest-connector/src/test/java/org/opendaylight/restconf/restful/utils/DeleteDataTransactionUtilTest.java

index 51bb39f6e4786c3287ca074647c23af8d8c38c06..d5eaf4764a2d940ee9ec8b232378e50c84718483 100644 (file)
@@ -38,7 +38,7 @@ public final class DeleteDataTransactionUtil {
         final CheckedFuture<Void, TransactionCommitFailedException> future = submitData(
                 transactionNode.getTransactionChain(), transactionNode.getTransactionChain().newReadWriteTransaction(),
                 transactionNode.getInstanceIdentifier().getInstanceIdentifier());
-        final ResponseFactory response = new ResponseFactory(Status.OK);
+        final ResponseFactory response = new ResponseFactory(Status.NO_CONTENT);
         FutureCallbackTx.addCallback(future, RestconfDataServiceConstant.DeleteData.DELETE_TX_TYPE, response);
         return response.build();
     }
index 77d7873b7b1bce036f4ad1734da292f7eb73c19b..537b9036798c1e5625919f102f5af1a5e6466199 100644 (file)
@@ -165,7 +165,8 @@ public final class PutDataTransactionUtil {
         final FutureDataFactory<Boolean> existsResponse = new FutureDataFactory<>();
         FutureCallbackTx.addCallback(existsFuture, RestconfDataServiceConstant.PutData.PUT_TX_TYPE, existsResponse);
 
-        final ResponseFactory responseFactory = new ResponseFactory(existsResponse.result ? Status.OK : Status.CREATED);
+        final ResponseFactory responseFactory =
+                new ResponseFactory(existsResponse.result ? Status.NO_CONTENT : Status.CREATED);
         final CheckedFuture<Void, TransactionCommitFailedException> submitData = submitData(path, schemaContext,
                 transactionNode.getTransactionChain(), readWriteTransaction, payload.getData(), insert, point);
         FutureCallbackTx.addCallback(submitData, RestconfDataServiceConstant.PutData.PUT_TX_TYPE, responseFactory);
index 734683c7c99c91fbd9ba52b49e2f5bc4e83881ec..770ccbc1713047a2c5a11308fa92563d57327dc1 100644 (file)
@@ -328,7 +328,7 @@ public class RestconfDataServiceImplTest {
         doReturn(Futures.immediateCheckedFuture(null)).when(this.readWrite).submit();
         final Response response = this.dataService.putData(null, payload, this.uriInfo);
         assertNotNull(response);
-        assertEquals(200, response.getStatus());
+        assertEquals(Response.Status.NO_CONTENT.getStatusCode(), response.getStatus());
     }
 
     @Test
@@ -348,7 +348,7 @@ public class RestconfDataServiceImplTest {
         doReturn(Futures.immediateCheckedFuture(null)).when(this.readWrite).submit();
         final Response response = this.dataService.putData(null, payload, this.uriInfo);
         assertNotNull(response);
-        assertEquals(200, response.getStatus());
+        assertEquals(Response.Status.NO_CONTENT.getStatusCode(), response.getStatus());
     }
 
     @Test
@@ -404,7 +404,7 @@ public class RestconfDataServiceImplTest {
                 .when(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, this.iidBase);
         final Response response = this.dataService.deleteData("example-jukebox:jukebox");
         assertNotNull(response);
-        assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
+        assertEquals(Response.Status.NO_CONTENT.getStatusCode(), response.getStatus());
     }
 
     /**
@@ -419,7 +419,7 @@ public class RestconfDataServiceImplTest {
         final Response response =
                 this.dataService.deleteData("example-jukebox:jukebox/yang-ext:mount/example-jukebox:jukebox");
         assertNotNull(response);
-        assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
+        assertEquals(Response.Status.NO_CONTENT.getStatusCode(), response.getStatus());
     }
 
     @Test
index 38db430eab408064dfeaa85318aeebb7fa218c1a..23752444979cdb9370e8fb2bfce19b2fe64bd766 100644 (file)
@@ -92,7 +92,7 @@ public class DeleteDataTransactionUtilTest {
                 new TransactionVarsWrapper(this.context, null, this.transactionChain));
 
         // assert success
-        assertEquals("Not expected response received", Status.OK.getStatusCode(), response.getStatus());
+        assertEquals("Not expected response received", Status.NO_CONTENT.getStatusCode(), response.getStatus());
     }
 
     /**
@@ -115,4 +115,4 @@ public class DeleteDataTransactionUtilTest {
             assertEquals(404, e.getErrors().get(0).getErrorTag().getStatusCode());
         }
     }
-}
\ No newline at end of file
+}