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 fa5c3c7ef2..e9f88bab11 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 @@ -116,13 +116,14 @@ public class FlowsWebResource extends AbstractWebResource { @Produces(MediaType.APPLICATION_JSON) public Response createFlows(@QueryParam("appId") String appId, InputStream stream) { try { + final ApplicationService appService = get(ApplicationService.class); + final ApplicationId idInstant = nullIsNotFound(appService.getId(appId), APP_ID_NOT_FOUND); ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); ArrayNode flowsArray = nullIsIllegal((ArrayNode) jsonTree.get(FLOWS), FLOW_ARRAY_REQUIRED); - if (appId != null) { - flowsArray.forEach(flowJson -> ((ObjectNode) flowJson).put("appId", appId)); - } + flowsArray.forEach(flowJson -> ((ObjectNode) flowJson).put("appId", idInstant.name())); + List rules = codec(FlowRule.class).decode(flowsArray, this); @@ -253,6 +254,8 @@ public class FlowsWebResource extends AbstractWebResource { @QueryParam("appId") String appId, InputStream stream) { try { + final ApplicationService appService = get(ApplicationService.class); + final ApplicationId idInstant = nullIsNotFound(appService.getId(appId), APP_ID_NOT_FOUND); ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); JsonNode specifiedDeviceId = jsonTree.get("deviceId"); if (specifiedDeviceId != null && @@ -262,9 +265,7 @@ public class FlowsWebResource extends AbstractWebResource { } jsonTree.put("deviceId", deviceId); - if (appId != null) { - jsonTree.put("appId", appId); - } + jsonTree.put("appId", idInstant.name()); FlowRule rule = codec(FlowRule.class).decode(jsonTree, this); service.applyFlowRules(rule); diff --git a/web/api/src/test/java/org/onosproject/rest/resources/FlowsResourceTest.java b/web/api/src/test/java/org/onosproject/rest/resources/FlowsResourceTest.java index 2ecd373cee..74defed198 100644 --- a/web/api/src/test/java/org/onosproject/rest/resources/FlowsResourceTest.java +++ b/web/api/src/test/java/org/onosproject/rest/resources/FlowsResourceTest.java @@ -33,7 +33,6 @@ import org.onlab.rest.BaseResource; import org.onosproject.app.ApplicationService; import org.onosproject.codec.CodecService; import org.onosproject.codec.impl.CodecManager; -import org.onosproject.codec.impl.FlowRuleCodec; import org.onosproject.core.CoreService; import org.onosproject.core.DefaultGroupId; import org.onosproject.core.GroupId; @@ -46,7 +45,6 @@ import org.onosproject.net.flow.DefaultTrafficSelector; import org.onosproject.net.flow.DefaultTrafficTreatment; import org.onosproject.net.flow.FlowEntry; import org.onosproject.net.flow.FlowId; -import org.onosproject.net.flow.FlowRule.FlowRemoveReason; import org.onosproject.net.flow.FlowRule; import org.onosproject.net.flow.FlowRuleExtPayLoad; import org.onosproject.net.flow.FlowRuleService; @@ -404,7 +402,7 @@ public class FlowsResourceTest extends ResourceTest { .andReturn(NetTestTools.APP_ID).anyTimes(); expect(mockCoreService.getAppId(anyString())) .andReturn(NetTestTools.APP_ID).anyTimes(); - expect(mockCoreService.registerApplication(FlowRuleCodec.REST_APP_ID)) + expect(mockCoreService.registerApplication(anyString())) .andReturn(APP_ID).anyTimes(); replay(mockCoreService); @@ -880,8 +878,6 @@ public class FlowsResourceTest extends ResourceTest { */ @Test public void testPostWithoutAppId() { - mockFlowService.applyFlowRules(anyObject()); - expectLastCall(); replay(mockFlowService); WebTarget wt = target(); @@ -891,9 +887,7 @@ public class FlowsResourceTest extends ResourceTest { Response response = wt.path("flows/of:0000000000000001") .request(MediaType.APPLICATION_JSON_TYPE) .post(Entity.json(jsonStream)); - assertThat(response.getStatus(), is(HttpURLConnection.HTTP_CREATED)); - String location = response.getLocation().getPath(); - assertThat(location, Matchers.startsWith("/flows/of:0000000000000001/")); + assertThat(response.getStatus(), is(HttpURLConnection.HTTP_NOT_FOUND)); } /** @@ -905,6 +899,9 @@ public class FlowsResourceTest extends ResourceTest { expectLastCall(); replay(mockFlowService); + expect(mockApplicationService.getId(anyObject())).andReturn(APP_ID).anyTimes(); + replay(mockApplicationService); + WebTarget wt = target(); InputStream jsonStream = FlowsResourceTest.class .getResourceAsStream("post-flow.json");