Explicitly return NO CONTENT type response for http DELETE request
Change-Id: I920084b92197bb1687e7d978ad350b2e1290ecbc
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java
index 8d0bc3e..5c63035 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java
@@ -104,16 +104,15 @@
* Uninstalls the specified application deactivating it first if necessary.
*
* @param name application name
- * @return 200 OK; 404; 401
+ * @return 204 NO CONTENT
*/
@DELETE
- @Produces(MediaType.APPLICATION_JSON)
@Path("{name}")
public Response uninstallApp(@PathParam("name") String name) {
ApplicationAdminService service = get(ApplicationAdminService.class);
ApplicationId appId = service.getId(name);
service.uninstall(appId);
- return Response.ok().build();
+ return Response.noContent().build();
}
/**
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/ComponentConfigWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/ComponentConfigWebResource.java
index 0002c3a..cc57581 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/ComponentConfigWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/ComponentConfigWebResource.java
@@ -20,11 +20,13 @@
import org.onosproject.cfg.ConfigProperty;
import org.onosproject.rest.AbstractWebResource;
+import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
+import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.io.IOException;
import java.io.InputStream;
@@ -87,6 +89,7 @@
* @throws IOException to signify bad request
*/
@POST
+ @Consumes(MediaType.APPLICATION_JSON)
@Path("{component}")
public Response setConfigs(@PathParam("component") String component,
InputStream request) throws IOException {
@@ -103,10 +106,11 @@
*
* @param component component name
* @param request JSON configuration
- * @return 200 OK
+ * @return 204 NO CONTENT
* @throws IOException to signify bad request
*/
@DELETE
+ @Consumes(MediaType.APPLICATION_JSON)
@Path("{component}")
public Response unsetConfigs(@PathParam("component") String component,
InputStream request) throws IOException {
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java
index 1fdb060..ec32b20 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java
@@ -224,11 +224,12 @@
*
* @param deviceId device identifier
* @param flowId flow rule identifier
+ * @return 204 NO CONTENT
*/
@DELETE
@Produces(MediaType.APPLICATION_JSON)
@Path("{deviceId}/{flowId}")
- public void deleteFlowByDeviceIdAndFlowId(@PathParam("deviceId") String deviceId,
+ public Response deleteFlowByDeviceIdAndFlowId(@PathParam("deviceId") String deviceId,
@PathParam("flowId") long flowId) {
final Iterable<FlowEntry> flowEntries =
service.getFlowEntries(DeviceId.deviceId(deviceId));
@@ -240,16 +241,18 @@
StreamSupport.stream(flowEntries.spliterator(), false)
.filter(entry -> entry.id().value() == flowId)
.forEach(service::removeFlowRules);
+ return Response.noContent().build();
}
/**
* Removes a batch of flow rules.
*
* @param stream stream for posted JSON
+ * @return NO CONTENT
*/
@DELETE
@Produces(MediaType.APPLICATION_JSON)
- public void deleteFlows(InputStream stream) {
+ public Response deleteFlows(InputStream stream) {
ListMultimap<DeviceId, Long> deviceMap = ArrayListMultimap.create();
List<FlowEntry> rulesToRemove = new ArrayList<>();
@@ -283,6 +286,7 @@
});
service.removeFlowRules(rulesToRemove.toArray(new FlowEntry[0]));
+ return Response.noContent().build();
}
}
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/GroupsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/GroupsWebResource.java
index ad9c64e..65a1a2f 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/GroupsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/GroupsWebResource.java
@@ -172,15 +172,17 @@
*
* @param deviceId device identifier
* @param appCookie application cookie to be used for lookup
+ * @return 204 NO CONTENT
*/
@DELETE
@Produces(MediaType.APPLICATION_JSON)
@Path("{deviceId}/{appCookie}")
- public void deleteGroupByDeviceIdAndAppCookie(@PathParam("deviceId") String deviceId,
- @PathParam("appCookie") String appCookie) {
+ public Response deleteGroupByDeviceIdAndAppCookie(@PathParam("deviceId") String deviceId,
+ @PathParam("appCookie") String appCookie) {
DeviceId deviceIdInstance = DeviceId.deviceId(deviceId);
GroupKey appCookieInstance = new DefaultGroupKey(appCookie.getBytes());
groupService.removeGroup(deviceIdInstance, appCookieInstance, null);
+ return Response.noContent().build();
}
}
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/IntentsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/IntentsWebResource.java
index d275599..3199bcc 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/IntentsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/IntentsWebResource.java
@@ -15,25 +15,7 @@
*/
package org.onosproject.rest.resources;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Objects;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriBuilder;
-import javax.ws.rs.core.UriInfo;
-
+import com.fasterxml.jackson.databind.node.ObjectNode;
import org.onosproject.core.ApplicationId;
import org.onosproject.core.CoreService;
import org.onosproject.net.intent.HostToHostIntent;
@@ -47,7 +29,23 @@
import org.onosproject.rest.AbstractWebResource;
import org.slf4j.Logger;
-import com.fasterxml.jackson.databind.node.ObjectNode;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriBuilder;
+import javax.ws.rs.core.UriInfo;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Objects;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
import static org.onlab.util.Tools.nullIsNotFound;
import static org.onosproject.net.intent.IntentState.FAILED;
@@ -168,10 +166,11 @@
*
* @param appId application identifier
* @param key intent key
+ * @return 204 NO CONTENT
*/
@DELETE
@Path("{appId}/{key}")
- public void deleteIntentById(@PathParam("appId") String appId,
+ public Response deleteIntentById(@PathParam("appId") String appId,
@PathParam("key") String key) {
final ApplicationId app = get(CoreService.class).getAppId(appId);
@@ -185,10 +184,9 @@
if (intent == null) {
// No such intent. REST standards recommend a positive status code
// in this case.
- return;
+ return Response.noContent().build();
}
-
Key k = intent.key();
// set up latch and listener to track uninstall progress
@@ -216,6 +214,7 @@
// clean up the listener
service.removeListener(listener);
}
+ return Response.noContent().build();
}
}
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/MetersWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/MetersWebResource.java
index 4e675f6..34a014f 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/MetersWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/MetersWebResource.java
@@ -165,11 +165,11 @@
*
* @param deviceId device identifier
* @param meterId meter identifier
+ * @return 204 NO CONTENT
*/
@DELETE
- @Produces(MediaType.APPLICATION_JSON)
@Path("{deviceId}/{meterId}")
- public void deleteMeterByDeviceIdAndMeterId(@PathParam("deviceId") String deviceId,
+ public Response deleteMeterByDeviceIdAndMeterId(@PathParam("deviceId") String deviceId,
@PathParam("meterId") String meterId) {
DeviceId did = DeviceId.deviceId(deviceId);
MeterId mid = MeterId.meterId(Long.valueOf(meterId));
@@ -178,6 +178,7 @@
final MeterRequest meterRequest = meterToMeterRequest(tmpMeter, "REMOVE");
meterService.withdraw(meterRequest, tmpMeter.id());
}
+ return Response.noContent().build();
}
/**
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/MulticastRouteWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/MulticastRouteWebResource.java
index f87351e..2a3cd8d 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/MulticastRouteWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/MulticastRouteWebResource.java
@@ -87,12 +87,12 @@
* Removes a route from the multicast RIB.
*
* @param stream multicast route JSON
+ * @return 204 NO CONTENT
* @onos.rsModel McastRoutePost
*/
@DELETE
@Consumes(MediaType.APPLICATION_JSON)
- @Produces(MediaType.APPLICATION_JSON)
- public void deleteRoute(InputStream stream) {
+ public Response deleteRoute(InputStream stream) {
MulticastRouteService service = get(MulticastRouteService.class);
try {
ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream);
@@ -101,5 +101,6 @@
} catch (IOException ex) {
throw new IllegalArgumentException(ex);
}
+ return Response.noContent().build();
}
}
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/NetworkConfigWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/NetworkConfigWebResource.java
index 81e77a9..a39d81c 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/NetworkConfigWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/NetworkConfigWebResource.java
@@ -289,7 +289,7 @@
/**
* Clear entire network configuration base.
*
- * @return empty response
+ * @return 204 NO CONTENT
*/
@DELETE
@SuppressWarnings("unchecked")
@@ -299,22 +299,24 @@
.forEach(subjectClass -> service.getSubjects(subjectClass)
.forEach(subject -> service.getConfigs(subject)
.forEach(config -> service.removeConfig(subject, config.getClass()))));
- return Response.ok().build();
+ return Response.noContent().build();
}
/**
* Clear all network configurations for a subject class.
*
* @param subjectClassKey subject class key
+ * @return 204 NO CONTENT
*/
@DELETE
@Path("{subjectClassKey}")
@SuppressWarnings("unchecked")
- public void delete(@PathParam("subjectClassKey") String subjectClassKey) {
+ public Response delete(@PathParam("subjectClassKey") String subjectClassKey) {
NetworkConfigService service = get(NetworkConfigService.class);
service.getSubjects(service.getSubjectFactory(subjectClassKey).subjectClass())
.forEach(subject -> service.getConfigs(subject)
.forEach(config -> service.removeConfig(subject, config.getClass())));
+ return Response.noContent().build();
}
/**
@@ -322,15 +324,17 @@
*
* @param subjectClassKey subjectKey class key
* @param subjectKey subjectKey key
+ * @return 204 NO CONTENT
*/
@DELETE
@Path("{subjectClassKey}/{subjectKey}")
@SuppressWarnings("unchecked")
- public void delete(@PathParam("subjectClassKey") String subjectClassKey,
+ public Response delete(@PathParam("subjectClassKey") String subjectClassKey,
@PathParam("subjectKey") String subjectKey) {
NetworkConfigService service = get(NetworkConfigService.class);
Object s = service.getSubjectFactory(subjectClassKey).createSubject(subjectKey);
service.getConfigs(s).forEach(c -> service.removeConfig(s, c.getClass()));
+ return Response.noContent().build();
}
/**
@@ -339,16 +343,18 @@
* @param subjectClassKey subjectKey class key
* @param subjectKey subjectKey key
* @param configKey configuration class key
+ * @return 204 NO CONTENT
*/
@DELETE
@Path("{subjectClassKey}/{subjectKey}/{configKey}")
@SuppressWarnings("unchecked")
- public void delete(@PathParam("subjectClassKey") String subjectClassKey,
+ public Response delete(@PathParam("subjectClassKey") String subjectClassKey,
@PathParam("subjectKey") String subjectKey,
@PathParam("configKey") String configKey) {
NetworkConfigService service = get(NetworkConfigService.class);
service.removeConfig(service.getSubjectFactory(subjectClassKey).createSubject(subjectKey),
service.getConfigClass(subjectClassKey, configKey));
+ return Response.noContent().build();
}
}
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/RegionsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/RegionsWebResource.java
index 3a54eb4..20c080a 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/RegionsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/RegionsWebResource.java
@@ -173,11 +173,10 @@
*/
@DELETE
@Path("{regionId}")
- @Produces(MediaType.APPLICATION_JSON)
public Response removeRegion(@PathParam("regionId") String regionId) {
final RegionId rid = RegionId.regionId(regionId);
regionAdminService.removeRegion(rid);
- return Response.ok().build();
+ return Response.noContent().build();
}
/**
@@ -213,13 +212,12 @@
*
* @param regionId region identifier
* @param stream deviceIds JSON stream
- * @return 200 OK, 404 not found
+ * @return 204 NO CONTENT
* @onos.rsModel RegionDeviceIds
*/
@DELETE
@Path("{regionId}/devices")
@Consumes(MediaType.APPLICATION_JSON)
- @Produces(MediaType.APPLICATION_JSON)
public Response removeDevices(@PathParam("regionId") String regionId,
InputStream stream) {
final RegionId rid = RegionId.regionId(regionId);
@@ -230,7 +228,7 @@
throw new IllegalArgumentException(e);
}
- return Response.ok().build();
+ return Response.noContent().build();
}
/**
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/TenantWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/TenantWebResource.java
index afef7a7..83c6c4d 100755
--- a/web/api/src/main/java/org/onosproject/rest/resources/TenantWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/TenantWebResource.java
@@ -97,7 +97,7 @@
* Removes the specified tenant with the specified tenant identifier.
*
* @param tenantId tenant identifier
- * @return 200 OK, 404 not found
+ * @return 204 NO CONTENT
*/
@DELETE
@Path("{tenantId}")
@@ -105,7 +105,7 @@
final TenantId tid = TenantId.tenantId(tenantId);
final TenantId existingTid = getExistingTenantId(vnetAdminService, tid);
vnetAdminService.unregisterTenantId(existingTid);
- return Response.ok().build();
+ return Response.noContent().build();
}
/**
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/VirtualNetworkWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/VirtualNetworkWebResource.java
index 22078c2..252ca53 100755
--- a/web/api/src/main/java/org/onosproject/rest/resources/VirtualNetworkWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/VirtualNetworkWebResource.java
@@ -135,14 +135,14 @@
* Removes the virtual network with the specified network identifier.
*
* @param networkId network identifier
- * @return 200 OK, 404 not found
+ * @return 204 NO CONTENT
*/
@DELETE
@Path("{networkId}")
public Response removeVirtualNetwork(@PathParam("networkId") long networkId) {
NetworkId nid = NetworkId.networkId(networkId);
vnetAdminService.removeVirtualNetwork(nid);
- return Response.ok().build();
+ return Response.noContent().build();
}
// VirtualDevice
@@ -203,7 +203,7 @@
*
* @param networkId network identifier
* @param deviceId device identifier
- * @return 200 OK, 404 not found
+ * @return 204 NO CONTENT
*/
@DELETE
@Path("{networkId}/devices/{deviceId}")
@@ -212,7 +212,7 @@
NetworkId nid = NetworkId.networkId(networkId);
DeviceId did = DeviceId.deviceId(deviceId);
vnetAdminService.removeVirtualDevice(nid, did);
- return Response.ok().build();
+ return Response.noContent().build();
}
// VirtualPort
@@ -293,7 +293,7 @@
* @param networkId network identifier
* @param deviceId virtual device identifier
* @param portNum virtual port number
- * @return 200 OK, 404 not found
+ * @return 204 NO CONTENT
*/
@DELETE
@Path("{networkId}/devices/{deviceId}/ports/{portNum}")
@@ -303,7 +303,7 @@
NetworkId nid = NetworkId.networkId(networkId);
vnetAdminService.removeVirtualPort(nid, DeviceId.deviceId(deviceId),
PortNumber.portNumber(portNum));
- return Response.ok().build();
+ return Response.noContent().build();
}
// VirtualLink
@@ -364,7 +364,7 @@
*
* @param networkId network identifier
* @param stream virtual link JSON stream
- * @return 200 OK, 404 not found
+ * @return 204 NO CONTENT
* @onos.rsModel VirtualLink
*/
@DELETE
@@ -386,7 +386,7 @@
throw new IllegalArgumentException(e);
}
- return Response.ok().build();
+ return Response.noContent().build();
}
/**