From 63c033af195f6b0dd4f12b92fa70965ee06bb60d Mon Sep 17 00:00:00 2001 From: RehanRaza Date: Wed, 15 Jan 2020 15:54:48 +0100 Subject: [PATCH] Return response codes from policy controller Change-Id: Ieda5760d43b98265d436343a3e98e46e27f0108e Issue-ID: NONRTRIC-84 Signed-off-by: RehanRaza --- .../dashboard/controller/PolicyController.java | 35 +++------ .../dashboard/policyagentapi/PolicyAgentApi.java | 19 ++--- .../policyagentapi/PolicyAgentApiImpl.java | 87 +++++++++++++--------- .../config/PolicyControllerMockConfiguration.java | 27 ++++--- .../controller/PortalRestCentralServiceTest.java | 50 +++++++------ 5 files changed, 111 insertions(+), 107 deletions(-) diff --git a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/PolicyController.java b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/PolicyController.java index e870db01..c01c7c65 100644 --- a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/PolicyController.java +++ b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/PolicyController.java @@ -19,15 +19,13 @@ */ package org.oransc.ric.portal.dashboard.controller; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; import io.swagger.annotations.ApiOperation; + import java.lang.invoke.MethodHandles; -import java.util.Collection; + import javax.servlet.http.HttpServletResponse; + import org.oransc.ric.portal.dashboard.DashboardConstants; -import org.oransc.ric.portal.dashboard.model.PolicyInstances; -import org.oransc.ric.portal.dashboard.model.PolicyTypes; import org.oransc.ric.portal.dashboard.policyagentapi.PolicyAgentApi; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -58,9 +56,6 @@ import org.springframework.web.bind.annotation.RestController; public class PolicyController { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - private static Gson gson = new GsonBuilder() // - .serializeNulls() // - .create(); // // Publish paths in constants so tests are easy to write public static final String CONTROLLER_PATH = DashboardConstants.ENDPOINT_PREFIX + "/policy"; @@ -87,7 +82,7 @@ public class PolicyController { @ApiOperation(value = "Gets the policy types from Near Realtime-RIC") @GetMapping(POLICY_TYPES_METHOD) @Secured({DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD}) - public ResponseEntity getAllPolicyTypes(HttpServletResponse response) { + public ResponseEntity getAllPolicyTypes(HttpServletResponse response) { logger.debug("getAllPolicyTypes"); return this.policyAgentApi.getAllPolicyTypes(); } @@ -97,13 +92,7 @@ public class PolicyController { @Secured({DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD}) public ResponseEntity getPolicyInstances(@PathVariable(POLICY_TYPE_ID_NAME) String policyTypeIdString) { logger.debug("getPolicyInstances {}", policyTypeIdString); - - ResponseEntity response = this.policyAgentApi.getPolicyInstancesForType(policyTypeIdString); - if (!response.getStatusCode().is2xxSuccessful()) { - return new ResponseEntity<>(response.getStatusCode()); - } - String json = gson.toJson(response.getBody()); - return new ResponseEntity<>(json, response.getStatusCode()); + return this.policyAgentApi.getPolicyInstancesForType(policyTypeIdString); } @ApiOperation(value = "Returns a policy instance of a type") @@ -132,10 +121,10 @@ public class PolicyController { @DeleteMapping(POLICY_TYPES_METHOD + "/{" + POLICY_TYPE_ID_NAME + "}/" + POLICIES_NAME + "/{" + POLICY_INSTANCE_ID_NAME + "}") @Secured({DashboardConstants.ROLE_ADMIN}) - public void deletePolicyInstance(@PathVariable(POLICY_TYPE_ID_NAME) String policyTypeIdString, + public ResponseEntity deletePolicyInstance(@PathVariable(POLICY_TYPE_ID_NAME) String policyTypeIdString, @PathVariable(POLICY_INSTANCE_ID_NAME) String policyInstanceId) { logger.debug("deletePolicyInstance typeId: {}, instanceId: {}", policyTypeIdString, policyInstanceId); - this.policyAgentApi.deletePolicy(policyInstanceId); + return this.policyAgentApi.deletePolicy(policyInstanceId); } @ApiOperation(value = "Returns the rics supporting the given policy type.") @@ -145,12 +134,6 @@ public class PolicyController { @RequestParam(name = "policyType", required = true) String supportingPolicyType) { logger.debug("getRicsSupportingType {}", supportingPolicyType); - ResponseEntity> result = this.policyAgentApi.getRicsSupportingType(supportingPolicyType); - if (!result.getStatusCode().is2xxSuccessful()) { - return new ResponseEntity<>(result.getStatusCode()); - } - String json = gson.toJson(result.getBody()); - return new ResponseEntity<>(json, result.getStatusCode()); + return this.policyAgentApi.getRicsSupportingType(supportingPolicyType); } - -}; +} diff --git a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/policyagentapi/PolicyAgentApi.java b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/policyagentapi/PolicyAgentApi.java index 4a26563a..ff254d22 100644 --- a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/policyagentapi/PolicyAgentApi.java +++ b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/policyagentapi/PolicyAgentApi.java @@ -19,26 +19,21 @@ */ package org.oransc.ric.portal.dashboard.policyagentapi; -import java.util.Collection; - -import org.oransc.ric.portal.dashboard.model.PolicyInstances; -import org.oransc.ric.portal.dashboard.model.PolicyTypes; import org.springframework.http.ResponseEntity; -import org.springframework.web.client.RestClientException; public interface PolicyAgentApi { - public ResponseEntity getAllPolicyTypes() throws RestClientException; + public ResponseEntity getAllPolicyTypes(); - public ResponseEntity getPolicyInstancesForType(String type); + public ResponseEntity getPolicyInstancesForType(String type); - public ResponseEntity getPolicyInstance(String id) throws RestClientException; + public ResponseEntity getPolicyInstance(String id); - public ResponseEntity putPolicy(String policyTypeIdString, String policyInstanceId, String json, String ric) - throws RestClientException; + public ResponseEntity putPolicy(String policyTypeIdString, String policyInstanceId, String json, + String ric); - public void deletePolicy(String policyInstanceId) throws RestClientException; + public ResponseEntity deletePolicy(String policyInstanceId); - public ResponseEntity> getRicsSupportingType(String typeName); + public ResponseEntity getRicsSupportingType(String typeName); } diff --git a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/policyagentapi/PolicyAgentApiImpl.java b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/policyagentapi/PolicyAgentApiImpl.java index b80389cf..c661e661 100644 --- a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/policyagentapi/PolicyAgentApiImpl.java +++ b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/policyagentapi/PolicyAgentApiImpl.java @@ -25,12 +25,14 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; + import java.lang.invoke.MethodHandles; import java.lang.reflect.Type; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Vector; + import org.immutables.gson.Gson; import org.immutables.value.Value; import org.oransc.ric.portal.dashboard.model.ImmutablePolicyInfo; @@ -44,7 +46,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; -import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; @Component("PolicyAgentApi") @@ -80,47 +81,54 @@ public class PolicyAgentApiImpl implements PolicyAgentApi { } @Override - public ResponseEntity getAllPolicyTypes() throws RestClientException { + public ResponseEntity getAllPolicyTypes() { String url = baseUrl() + "/policy_schemas"; ResponseEntity rsp = this.restTemplate.getForEntity(url, String.class); if (!rsp.getStatusCode().is2xxSuccessful()) { - return new ResponseEntity<>(rsp.getStatusCode()); + return rsp; } PolicyTypes result = new PolicyTypes(); JsonParser jsonParser = new JsonParser(); - JsonArray schemas = jsonParser.parse(rsp.getBody()).getAsJsonArray(); - for (JsonElement schema : schemas) { - JsonObject schemaObj = schema.getAsJsonObject(); - String title = schemaObj.get("title").getAsString(); - String schemaAsStr = schemaObj.toString(); - PolicyType pt = new PolicyType(title, schemaAsStr); - result.add(pt); + try { + JsonArray schemas = jsonParser.parse(rsp.getBody()).getAsJsonArray(); + for (JsonElement schema : schemas) { + JsonObject schemaObj = schema.getAsJsonObject(); + String title = schemaObj.get("title").getAsString(); + String schemaAsStr = schemaObj.toString(); + PolicyType pt = new PolicyType(title, schemaAsStr); + result.add(pt); + } + return new ResponseEntity<>(gson.toJson(result), rsp.getStatusCode()); + } catch (Exception e) { + return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); } - return new ResponseEntity<>(result, rsp.getStatusCode()); } @Override - public ResponseEntity getPolicyInstancesForType(String type) { + public ResponseEntity getPolicyInstancesForType(String type) { String url = baseUrl() + "/policies?type={type}"; Map uriVariables = Map.of("type", type); ResponseEntity rsp = this.restTemplate.getForEntity(url, String.class, uriVariables); if (!rsp.getStatusCode().is2xxSuccessful()) { - return new ResponseEntity<>(rsp.getStatusCode()); + return rsp; } - Type listType = new TypeToken>() {}.getType(); - List rspParsed = gson.fromJson(rsp.getBody(), listType); - - PolicyInstances result = new PolicyInstances(); - for (PolicyInfo p : rspParsed) { - result.add(p); + try { + Type listType = new TypeToken>() {}.getType(); + List rspParsed = gson.fromJson(rsp.getBody(), listType); + PolicyInstances result = new PolicyInstances(); + for (PolicyInfo p : rspParsed) { + result.add(p); + } + return new ResponseEntity<>(gson.toJson(result), rsp.getStatusCode()); + } catch (Exception e) { + return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); } - return new ResponseEntity<>(result, rsp.getStatusCode()); } @Override - public ResponseEntity getPolicyInstance(String id) throws RestClientException { + public ResponseEntity getPolicyInstance(String id) { String url = baseUrl() + "/policy?instance={id}"; Map uriVariables = Map.of("id", id); @@ -128,8 +136,8 @@ public class PolicyAgentApiImpl implements PolicyAgentApi { } @Override - public ResponseEntity putPolicy(String policyTypeIdString, String policyInstanceId, String json, String ric) - throws RestClientException { + public ResponseEntity putPolicy(String policyTypeIdString, String policyInstanceId, String json, + String ric) { String url = baseUrl() + "/policy?type={type}&instance={instance}&ric={ric}&service={service}"; Map uriVariables = Map.of( // "type", policyTypeIdString, // @@ -139,17 +147,23 @@ public class PolicyAgentApiImpl implements PolicyAgentApi { try { this.restTemplate.put(url, json, uriVariables); - return new ResponseEntity<>(HttpStatus.OK); + return new ResponseEntity<>("Policy was put successfully", HttpStatus.OK); } catch (Exception e) { - return new ResponseEntity<>(e.getMessage(), HttpStatus.NOT_FOUND); + return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); } } @Override - public void deletePolicy(String policyInstanceId) throws RestClientException { + public ResponseEntity deletePolicy(String policyInstanceId) { String url = baseUrl() + "/policy?instance={instance}"; Map uriVariables = Map.of("instance", policyInstanceId); - this.restTemplate.delete(url, uriVariables); + try { + this.restTemplate.delete(url, uriVariables); + return new ResponseEntity<>("Policy was deleted successfully", HttpStatus.NO_CONTENT); + } catch (Exception e) { + return new ResponseEntity<>(e.getMessage(), HttpStatus.NOT_FOUND); + } + } @Value.Immutable @@ -163,19 +177,22 @@ public class PolicyAgentApiImpl implements PolicyAgentApi { } @Override - public ResponseEntity> getRicsSupportingType(String typeName) { + public ResponseEntity getRicsSupportingType(String typeName) { String url = baseUrl() + "/rics?policyType={typeName}"; Map uriVariables = Map.of("typeName", typeName); String rsp = this.restTemplate.getForObject(url, String.class, uriVariables); - Type listType = new TypeToken>() {}.getType(); - List rspParsed = gson.fromJson(rsp, listType); - - Collection result = new Vector<>(rspParsed.size()); - for (RicInfo ric : rspParsed) { - result.add(ric.name()); + try { + Type listType = new TypeToken>() {}.getType(); + List rspParsed = gson.fromJson(rsp, listType); + Collection result = new Vector<>(rspParsed.size()); + for (RicInfo ric : rspParsed) { + result.add(ric.name()); + } + return new ResponseEntity<>(gson.toJson(result), HttpStatus.OK); + } catch (Exception e) { + return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); } - return new ResponseEntity<>(result, HttpStatus.OK); } } diff --git a/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/PolicyControllerMockConfiguration.java b/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/PolicyControllerMockConfiguration.java index 41b9ee03..e695b688 100644 --- a/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/PolicyControllerMockConfiguration.java +++ b/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/PolicyControllerMockConfiguration.java @@ -19,6 +19,8 @@ */ package org.oransc.ric.portal.dashboard.config; +import com.google.gson.GsonBuilder; + import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; @@ -54,6 +56,10 @@ public class PolicyControllerMockConfiguration { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + private static com.google.gson.Gson gson = new GsonBuilder() // + .serializeNulls() // + .create(); // + @Bean public PolicyAgentApi policyAgentApi() { MockPolicyAgentApi apiClient = new MockPolicyAgentApi(); @@ -64,44 +70,45 @@ public class PolicyControllerMockConfiguration { private final Database database = new Database(); @Override - public ResponseEntity getPolicyInstance(String id) throws RestClientException { + public ResponseEntity getPolicyInstance(String id) { return new ResponseEntity<>(database.getInstance(id), HttpStatus.OK); } @Override public ResponseEntity putPolicy(String policyTypeIdString, String policyInstanceId, String json, - String ric) throws RestClientException { + String ric) { database.putInstance(policyTypeIdString, policyInstanceId, json, ric); - return new ResponseEntity<>(HttpStatus.OK); + return new ResponseEntity<>("Policy was put successfully", HttpStatus.OK); } @Override - public void deletePolicy(String policyInstanceId) throws RestClientException { + public ResponseEntity deletePolicy(String policyInstanceId) { database.deleteInstance(policyInstanceId); + return new ResponseEntity<>("Policy was deleted successfully", HttpStatus.NO_CONTENT); } @Override - public ResponseEntity getAllPolicyTypes() throws RestClientException { + public ResponseEntity getAllPolicyTypes() { PolicyTypes result = new PolicyTypes(); result.addAll(database.getTypes()); - return new ResponseEntity<>(result, HttpStatus.OK); + return new ResponseEntity<>(gson.toJson(result), HttpStatus.OK); } @Override - public ResponseEntity getPolicyInstancesForType(String type) { + public ResponseEntity getPolicyInstancesForType(String type) { PolicyInstances result = new PolicyInstances(); List inst = database.getInstances(Optional.of(type)); result.addAll(inst); - return new ResponseEntity<>(result, HttpStatus.OK); + return new ResponseEntity<>(gson.toJson(result), HttpStatus.OK); } @Override - public ResponseEntity> getRicsSupportingType(String typeName) { + public ResponseEntity getRicsSupportingType(String typeName) { Vector res = new Vector<>(); res.add("ric_1"); res.add("ric_2"); res.add("ric_3"); - return new ResponseEntity<>(res, HttpStatus.OK); + return new ResponseEntity<>(gson.toJson(res), HttpStatus.OK); } } diff --git a/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/controller/PortalRestCentralServiceTest.java b/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/controller/PortalRestCentralServiceTest.java index eef17261..b9f16358 100644 --- a/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/controller/PortalRestCentralServiceTest.java +++ b/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/controller/PortalRestCentralServiceTest.java @@ -53,30 +53,32 @@ public class PortalRestCentralServiceTest extends AbstractControllerTest { Assertions.assertTrue(response.getBody().contains("Static error page")); } -/* private HttpEntity getEntityWithHeaders(Object body) { - HttpHeaders headers = new HttpHeaders(); - headers.set(PortalApIMockConfiguration.PORTAL_USERNAME_HEADER_KEY, - PortalApIMockConfiguration.PORTAL_USERNAME_HEADER_KEY); - headers.set(PortalApIMockConfiguration.PORTAL_PASSWORD_HEADER_KEY, - PortalApIMockConfiguration.PORTAL_PASSWORD_HEADER_KEY); - HttpEntity entity = new HttpEntity<>(body, headers); - return entity; - } - - private EcompUser createEcompUser(String loginId) { - EcompUser user = new EcompUser(); - user.setLoginId(loginId); - EcompRole role = new EcompRole(); - role.setRoleFunctions(Collections.EMPTY_SET); - role.setId(1L); - role.setName(DashboardConstants.ROLE_NAME_ADMIN); - Set roles = new HashSet<>(); - roles.add(role); - user.setRoles(roles); - return user; - } - - @Test + /* + * private HttpEntity getEntityWithHeaders(Object body) { + * HttpHeaders headers = new HttpHeaders(); + * headers.set(PortalApIMockConfiguration.PORTAL_USERNAME_HEADER_KEY, + * PortalApIMockConfiguration.PORTAL_USERNAME_HEADER_KEY); + * headers.set(PortalApIMockConfiguration.PORTAL_PASSWORD_HEADER_KEY, + * PortalApIMockConfiguration.PORTAL_PASSWORD_HEADER_KEY); + * HttpEntity entity = new HttpEntity<>(body, headers); + * return entity; + * } + * + * private EcompUser createEcompUser(String loginId) { + * EcompUser user = new EcompUser(); + * user.setLoginId(loginId); + * EcompRole role = new EcompRole(); + * role.setRoleFunctions(Collections.EMPTY_SET); + * role.setId(1L); + * role.setName(DashboardConstants.ROLE_NAME_ADMIN); + * Set roles = new HashSet<>(); + * roles.add(role); + * user.setRoles(roles); + * return user; + * } + * + * @Test + * * @Test * public void createUserTest() { * final String loginId = "login1"; -- 2.16.6