X-Git-Url: https://gerrit.onap.org/r/gitweb?p=policy%2Fengine.git;a=blobdiff_plain;f=POLICY-SDK-APP%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fadmin%2FPolicyRestController.java;h=76bb0494546d70a7bc477e48e650cd812eec45e3;hp=1c613ef5ece38c83b30e2bb39b9f1a1a5a7eb25f;hb=c2ca6ea5cb44103903e1409e8dd6db80167e61e8;hpb=45dc4e1e09a3d6720ec181de7ebbec693eec2eb7 diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyRestController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyRestController.java index 1c613ef5e..76bb04945 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyRestController.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyRestController.java @@ -2,15 +2,16 @@ * ============LICENSE_START======================================================= * ONAP Policy Engine * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved. * Modified Copyright (C) 2018 Samsung Electronics Co., Ltd. + * Modifications Copyright (C) 2019 Bell Canada * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -18,8 +19,15 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.policy.admin; +import com.att.research.xacml.util.XACMLProperties; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; + import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; @@ -33,7 +41,6 @@ import java.util.ArrayList; import java.util.Base64; import java.util.List; -import javax.mail.MessagingException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -49,10 +56,11 @@ import org.onap.policy.controller.CreateDcaeMicroServiceController; import org.onap.policy.controller.CreateFirewallController; import org.onap.policy.controller.CreateOptimizationController; import org.onap.policy.controller.PolicyController; -import org.onap.policy.rest.XACMLRestProperties; +import org.onap.policy.rest.XacmlRestProperties; import org.onap.policy.rest.adapter.PolicyRestAdapter; import org.onap.policy.rest.dao.CommonClassDao; import org.onap.policy.rest.jpa.PolicyVersion; +import org.onap.policy.utils.PeCryptoUtils; import org.onap.policy.utils.PolicyUtils; import org.onap.policy.xacml.api.XACMLErrorConstants; import org.onap.portalsdk.core.controller.RestrictedBaseController; @@ -69,21 +77,15 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.RestTemplate; import org.springframework.web.servlet.ModelAndView; -import org.onap.policy.utils.CryptoUtils; -import com.att.research.xacml.util.XACMLProperties; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; @RestController @RequestMapping("/") -public class PolicyRestController extends RestrictedBaseController{ +public class PolicyRestController extends RestrictedBaseController { private static final Logger policyLogger = FlexLogger.getLogger(PolicyRestController.class); - private static final String model = "model"; - private static final String importDictionary = "import_dictionary"; + private static final String MODEL = "model"; + private static final String IMPORT_DICTIONARY = "import_dictionary"; private static final String FILE = "file"; private static final String TYPE = "type"; private static final String PATH = "path"; @@ -97,15 +99,20 @@ public class PolicyRestController extends RestrictedBaseController{ private static final String XML = ".xml"; private static final String UTF_8 = "UTF-8"; private static final String DATA = "data"; + private static final String USER_ID = "UserId: "; + private static final String BASIC = "Basic "; + private static final String AUTHORIZATION = "Authorization"; + private static final String CONTENT_TYPE = "Content-Type"; + private static final String ONAP = "/onap"; private static CommonClassDao commonClassDao; - public PolicyRestController(){ - //default constructor + public PolicyRestController() { + // default constructor } @Autowired - private PolicyRestController(CommonClassDao commonClassDao){ + private PolicyRestController(CommonClassDao commonClassDao) { PolicyRestController.commonClassDao = commonClassDao; } @@ -117,39 +124,45 @@ public class PolicyRestController extends RestrictedBaseController{ PolicyRestController.commonClassDao = commonClassDao; } - - - @RequestMapping(value={"/policycreation/save_policy"}, method={RequestMethod.POST}) + /** + * policyCreationController. + * + * @param request Request + * @param response Response + */ + @RequestMapping(value = {"/policycreation/save_policy"}, method = {RequestMethod.POST}) public void policyCreationController(HttpServletRequest request, HttpServletResponse response) { - String userId = UserUtils.getUserSession(request).getOrgUserId(); ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - try{ - updateAndSendToPAP(request, response, userId, mapper); - }catch(Exception e){ - policyLogger.error("Exception Occured while saving policy" , e); + try { + updateAndSendToPap(request, response, UserUtils.getUserSession(request).getOrgUserId(), mapper); + } catch (Exception e) { + policyLogger.error("Exception Occured while saving policy", e); } } - private void updateAndSendToPAP(HttpServletRequest request, HttpServletResponse response, String userId, ObjectMapper mapper) throws IOException, MessagingException { + private void updateAndSendToPap(HttpServletRequest request, HttpServletResponse response, String userId, + ObjectMapper mapper) throws IOException { JsonNode root = mapper.readTree(request.getReader()); - - policyLogger.info("****************************************Logging UserID while Create/Update Policy**************************************************"); - policyLogger.info("UserId: " + userId + "Policy Data Object: "+ root.get(PolicyController.getPolicydata()).get("policy").toString()); - policyLogger.info("***********************************************************************************************************************************"); - - PolicyRestAdapter policyData = mapper.readValue(root.get(PolicyController.getPolicydata()).get("policy").toString(), PolicyRestAdapter.class); - + policyLogger.info( + "********************Logging UserID while Create/Update Policy***********************************"); + policyLogger.info(USER_ID + userId + "Policy Data Object: " + + root.get(PolicyController.getPolicydata()).get("policy").toString()); + policyLogger.info( + "************************************************************************************************"); + + PolicyRestAdapter policyData = mapper.readValue( + root.get(PolicyController.getPolicydata()).get("policy").toString(), PolicyRestAdapter.class); modifyPolicyData(root, policyData); - if(policyData.getConfigPolicyType() != null){ - if(CLOSED_LOOP_FAULT.equalsIgnoreCase(policyData.getConfigPolicyType())){ + if (policyData.getConfigPolicyType() != null) { + if (CLOSED_LOOP_FAULT.equalsIgnoreCase(policyData.getConfigPolicyType())) { policyData = new CreateClosedLoopFaultController().setDataToPolicyRestAdapter(policyData, root); - }else if(FIREWALL_CONFIG.equalsIgnoreCase(policyData.getConfigPolicyType())){ + } else if (FIREWALL_CONFIG.equalsIgnoreCase(policyData.getConfigPolicyType())) { policyData = new CreateFirewallController().setDataToPolicyRestAdapter(policyData); - }else if(MICRO_SERVICE.equalsIgnoreCase(policyData.getConfigPolicyType())){ + } else if (MICRO_SERVICE.equalsIgnoreCase(policyData.getConfigPolicyType())) { policyData = new CreateDcaeMicroServiceController().setDataToPolicyRestAdapter(policyData, root); - }else if(OPTIMIZATION.equalsIgnoreCase(policyData.getConfigPolicyType())){ + } else if (OPTIMIZATION.equalsIgnoreCase(policyData.getConfigPolicyType())) { policyData = new CreateOptimizationController().setDataToPolicyRestAdapter(policyData, root); } } @@ -157,20 +170,20 @@ public class PolicyRestController extends RestrictedBaseController{ policyData.setUserId(userId); String result; - String body = PolicyUtils.objectToJsonString(policyData); - String uri = request.getRequestURI(); - ResponseEntity responseEntity = sendToPAP(body, uri, HttpMethod.POST); - if(responseEntity != null && responseEntity.getBody().equals(HttpServletResponse.SC_CONFLICT)){ + ResponseEntity responseEntity = sendToPap(PolicyUtils.objectToJsonString(policyData), + request.getRequestURI(), HttpMethod.POST); + if (responseEntity != null && responseEntity.getBody().equals(HttpServletResponse.SC_CONFLICT)) { result = "PolicyExists"; - }else if(responseEntity != null){ - result = responseEntity.getBody().toString(); + } else if (responseEntity != null) { + result = responseEntity.getBody().toString(); String policyName = responseEntity.getHeaders().get(POLICY_NAME).get(0); - if(policyData.isEditPolicy() && SUCCESS.equalsIgnoreCase(result)){ - PolicyNotificationMail email = new PolicyNotificationMail(); - String mode = "EditPolicy"; + if (policyData.isEditPolicy() && SUCCESS.equalsIgnoreCase(result)) { + final PolicyNotificationMail email = new PolicyNotificationMail(); + final String mode = "EditPolicy"; String watchPolicyName = policyName.replace(XML, ""); - String version = watchPolicyName.substring(watchPolicyName.lastIndexOf('.')+1); - watchPolicyName = watchPolicyName.substring(0, watchPolicyName.lastIndexOf('.')).replace(".", File.separator); + String version = watchPolicyName.substring(watchPolicyName.lastIndexOf('.') + 1); + watchPolicyName = + watchPolicyName.substring(0, watchPolicyName.lastIndexOf('.')).replace(".", File.separator); String policyVersionName = watchPolicyName.replace(".", File.separator); watchPolicyName = watchPolicyName + "." + version + XML; PolicyVersion entityItem = new PolicyVersion(); @@ -179,8 +192,8 @@ public class PolicyRestController extends RestrictedBaseController{ entityItem.setModifiedBy(userId); email.sendMail(entityItem, watchPolicyName, mode, commonClassDao); } - }else{ - result = "Response is null from PAP"; + } else { + result = "Response is null from PAP"; } response.setCharacterEncoding(PolicyController.getCharacterencoding()); @@ -189,27 +202,29 @@ public class PolicyRestController extends RestrictedBaseController{ PrintWriter out = response.getWriter(); String responseString = mapper.writeValueAsString(result); - JSONObject j = new JSONObject("{policyData: " + responseString + "}"); - out.write(j.toString()); + JSONObject json = new JSONObject("{policyData: " + responseString + "}"); + out.write(json.toString()); } private void modifyPolicyData(JsonNode root, PolicyRestAdapter policyData) { - if(FILE.equals(root.get(PolicyController.getPolicydata()).get(model).get(TYPE).toString().replace("\"", ""))){ + if (FILE.equals(root.get(PolicyController.getPolicydata()).get(MODEL).get(TYPE).toString().replace("\"", ""))) { policyData.setEditPolicy(true); } - if(root.get(PolicyController.getPolicydata()).get(model).get(PATH).size() != 0){ + if (root.get(PolicyController.getPolicydata()).get(MODEL).get(PATH).size() != 0) { String dirName = ""; - for(int i = 0; i < root.get(PolicyController.getPolicydata()).get(model).get(PATH).size(); i++){ - dirName = dirName.replace("\"", "") + root.get(PolicyController.getPolicydata()).get(model).get(PATH).get(i).toString().replace("\"", "") + File.separator; + for (int i = 0; i < root.get(PolicyController.getPolicydata()).get(MODEL).get(PATH).size(); i++) { + dirName = dirName.replace("\"", "") + root.get(PolicyController.getPolicydata()).get(MODEL).get(PATH) + .get(i).toString().replace("\"", "") + File.separator; } - if(policyData.isEditPolicy()){ + if (policyData.isEditPolicy()) { policyData.setDomainDir(dirName.substring(0, dirName.lastIndexOf(File.separator))); - }else{ - policyData.setDomainDir(dirName + root.get(PolicyController.getPolicydata()).get(model).get(NAME).toString().replace("\"", "")); + } else { + policyData.setDomainDir(dirName + + root.get(PolicyController.getPolicydata()).get(MODEL).get(NAME).toString().replace("\"", "")); } - }else{ - String domain = root.get(PolicyController.getPolicydata()).get(model).get(NAME).toString(); - if(domain.contains("/")){ + } else { + String domain = root.get(PolicyController.getPolicydata()).get(MODEL).get(NAME).toString(); + if (domain.contains("/")) { domain = domain.substring(0, domain.lastIndexOf('/')).replace("/", File.separator); } domain = domain.replace("\"", ""); @@ -217,107 +232,106 @@ public class PolicyRestController extends RestrictedBaseController{ } } - - private ResponseEntity sendToPAP(String body, String requestURI, HttpMethod method){ + private ResponseEntity sendToPap(String body, String requestUri, HttpMethod method) { String papUrl = PolicyController.getPapUrl(); - String papID = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_USERID); - String papPass = CryptoUtils.decryptTxtNoExStr(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_PASS)); - - Base64.Encoder encoder = Base64.getEncoder(); - String encoding = encoder.encodeToString((papID+":"+papPass).getBytes(StandardCharsets.UTF_8)); + String papPass = PeCryptoUtils.decrypt(XACMLProperties.getProperty(XacmlRestProperties.PROP_PAP_PASS)); + String encoding = Base64.getEncoder().encodeToString( + (XACMLProperties.getProperty(XacmlRestProperties.PROP_PAP_USERID) + + ":" + papPass).getBytes(StandardCharsets.UTF_8)); HttpHeaders headers = new HttpHeaders(); - headers.set("Authorization", "Basic " + encoding); - headers.set("Content-Type", PolicyController.getContenttype()); + headers.set(AUTHORIZATION, BASIC + encoding); + headers.set(CONTENT_TYPE, PolicyController.getContenttype()); RestTemplate restTemplate = new RestTemplate(); HttpEntity requestEntity = new HttpEntity<>(body, headers); ResponseEntity result = null; HttpClientErrorException exception = null; - String uri = requestURI; - if(uri.startsWith("/")){ - uri = uri.substring(uri.indexOf('/')+1); + String uri = requestUri; + if (uri.startsWith("/")) { + uri = uri.substring(uri.indexOf('/') + 1); } uri = "onap" + uri.substring(uri.indexOf('/')); - try{ + try { result = restTemplate.exchange(papUrl + uri, method, requestEntity, String.class); - }catch(Exception e){ + } catch (Exception e) { policyLogger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while connecting to " + papUrl, e); exception = new HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR, e.getMessage()); - if("409 Conflict".equals(e.getMessage())){ + if ("409 Conflict".equals(e.getMessage())) { return ResponseEntity.ok(HttpServletResponse.SC_CONFLICT); } } - if(exception != null && exception.getStatusCode()!=null){ - if(exception.getStatusCode().equals(HttpStatus.UNAUTHORIZED)){ - String message = XACMLErrorConstants.ERROR_PERMISSIONS +":"+exception.getStatusCode()+":" + "ERROR_AUTH_GET_PERM" ; + if (exception != null && exception.getStatusCode() != null) { + if (exception.getStatusCode().equals(HttpStatus.UNAUTHORIZED)) { + String message = XACMLErrorConstants.ERROR_PERMISSIONS + ":" + exception.getStatusCode() + ":" + + "ERROR_AUTH_GET_PERM"; policyLogger.error(message); } - if(exception.getStatusCode().equals(HttpStatus.BAD_REQUEST)){ - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + ":"+exception.getStatusCode()+":" + exception.getResponseBodyAsString(); + if (exception.getStatusCode().equals(HttpStatus.BAD_REQUEST)) { + String message = XACMLErrorConstants.ERROR_DATA_ISSUE + ":" + exception.getStatusCode() + ":" + + exception.getResponseBodyAsString(); policyLogger.error(message); } - if(exception.getStatusCode().equals(HttpStatus.NOT_FOUND)){ - String message = XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while connecting to " + papUrl + exception; + if (exception.getStatusCode().equals(HttpStatus.NOT_FOUND)) { + String message = + XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while connecting to " + papUrl + exception; policyLogger.error(message); } - String message = XACMLErrorConstants.ERROR_PROCESS_FLOW + ":"+exception.getStatusCode()+":" + exception.getResponseBodyAsString(); + String message = XACMLErrorConstants.ERROR_PROCESS_FLOW + ":" + exception.getStatusCode() + ":" + + exception.getResponseBodyAsString(); policyLogger.error(message); } return result; } - private String callPAP(HttpServletRequest request , String method, String uriValue){ - String uri = uriValue; - String boundary = null; - String papUrl = PolicyController.getPapUrl(); - String papID = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_USERID); - String papPass = CryptoUtils.decryptTxtNoExStr(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_PASS)); + private String callPap(HttpServletRequest request, String method, String uriValue) { + PeCryptoUtils.initAesKey(XACMLProperties.getProperty(XacmlRestProperties.PROP_AES_KEY)); + String papPass = PeCryptoUtils.decrypt((XACMLProperties.getProperty(XacmlRestProperties.PROP_PAP_PASS))); Base64.Encoder encoder = Base64.getEncoder(); - String encoding = encoder.encodeToString((papID+":"+papPass).getBytes(StandardCharsets.UTF_8)); + String encoding = encoder.encodeToString((XACMLProperties.getProperty(XacmlRestProperties.PROP_PAP_USERID) + + ":" + papPass).getBytes(StandardCharsets.UTF_8)); HttpHeaders headers = new HttpHeaders(); - headers.set("Authorization", "Basic " + encoding); - headers.set("Content-Type", PolicyController.getContenttype()); - + headers.set(AUTHORIZATION, BASIC + encoding); + headers.set(CONTENT_TYPE, PolicyController.getContenttype()); HttpURLConnection connection = null; - List items; FileItem item = null; File file = null; - if(uri.contains(importDictionary)){ + String uri = uriValue; + if (uri.contains(IMPORT_DICTIONARY)) { try { - items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); + List items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); item = items.get(0); file = new File(item.getName()); String newFile = file.toString(); - uri = uri +"&dictionaryName="+newFile; + uri = uri + "&dictionaryName=" + newFile; } catch (Exception e2) { - policyLogger.error("Exception Occured while calling PAP with import dictionary request"+e2); + policyLogger.error("Exception Occured while calling PAP with import dictionary request" + e2); } } try { - URL url = new URL(papUrl + uri); - connection = (HttpURLConnection)url.openConnection(); + URL url = new URL(PolicyController.getPapUrl() + uri); + connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod(method); connection.setUseCaches(false); connection.setInstanceFollowRedirects(false); - connection.setRequestProperty("Authorization", "Basic " + encoding); + connection.setRequestProperty(AUTHORIZATION, BASIC + encoding); connection.setDoOutput(true); connection.setDoInput(true); - if(uri.contains("searchPolicy?action=delete&")){ - //do something + if (uri.contains("searchPolicy?action=delete&")) { + // do something return doConnect(connection); } - checkURI(request, uri, connection, item); + checkUri(request, uri, connection, item); return doConnect(connection); } catch (Exception e) { - policyLogger.error("Exception Occured"+e); - }finally{ - if(file != null && file.exists() && file.delete()){ + policyLogger.error("Exception Occured" + e); + } finally { + if (file != null && file.exists() && file.delete()) { policyLogger.info("File Deleted Successfully"); } if (connection != null) { @@ -329,7 +343,8 @@ public class PolicyRestController extends RestrictedBaseController{ is.close(); } } catch (IOException ex) { - policyLogger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Failed to close connection: " + ex, ex); + policyLogger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Failed to close connection: " + ex, + ex); } connection.disconnect(); } @@ -337,10 +352,10 @@ public class PolicyRestController extends RestrictedBaseController{ return null; } - private void checkURI(HttpServletRequest request, String uri, HttpURLConnection connection, FileItem item) throws IOException { - String boundary; - if(!(uri.endsWith("set_BRMSParamData") || uri.contains(importDictionary))){ - connection.setRequestProperty("Content-Type",PolicyController.getContenttype()); + private void checkUri(HttpServletRequest request, String uri, HttpURLConnection connection, FileItem item) + throws IOException { + if (!(uri.endsWith("set_BRMSParamData") || uri.contains(IMPORT_DICTIONARY))) { + connection.setRequestProperty(CONTENT_TYPE, PolicyController.getContenttype()); ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); JsonNode root = getJsonNode(request, mapper); @@ -352,26 +367,24 @@ public class PolicyRestController extends RestrictedBaseController{ String json = mapper1.writeValueAsString(obj); // send current configuration - try(InputStream content = new ByteArrayInputStream(json.getBytes()); - OutputStream os = connection.getOutputStream()) { + try (InputStream content = new ByteArrayInputStream(json.getBytes()); + OutputStream os = connection.getOutputStream()) { int count = IOUtils.copy(content, os); if (policyLogger.isDebugEnabled()) { policyLogger.debug("copied to output, bytes=" + count); } } - }else{ - if(uri.endsWith("set_BRMSParamData")){ - connection.setRequestProperty("Content-Type",PolicyController.getContenttype()); - try (OutputStream os = connection.getOutputStream()) { - IOUtils.copy((InputStream) request.getInputStream(), os); - } - }else{ - boundary = "===" + System.currentTimeMillis() + "==="; - connection.setRequestProperty("Content-Type","multipart/form-data; boundary=" + boundary); - try (OutputStream os = connection.getOutputStream()) { - if(item != null){ - IOUtils.copy((InputStream) item.getInputStream(), os); - } + } else if (uri.endsWith("set_BRMSParamData")) { + connection.setRequestProperty(CONTENT_TYPE, PolicyController.getContenttype()); + try (OutputStream os = connection.getOutputStream()) { + IOUtils.copy(request.getInputStream(), os); + } + } else { + String boundary = "===" + System.currentTimeMillis() + "==="; + connection.setRequestProperty(CONTENT_TYPE, "multipart/form-data; boundary=" + boundary); + try (OutputStream os = connection.getOutputStream()) { + if (item != null) { + IOUtils.copy(item.getInputStream(), os); } } } @@ -381,28 +394,27 @@ public class PolicyRestController extends RestrictedBaseController{ JsonNode root = null; try { root = mapper.readTree(request.getReader()); - }catch (Exception e1) { - policyLogger.error("Exception Occured while calling PAP"+e1); + } catch (Exception e1) { + policyLogger.error("Exception Occured while calling PAP" + e1); } return root; } - private String doConnect(final HttpURLConnection connection) throws IOException{ + private String doConnect(final HttpURLConnection connection) throws IOException { connection.connect(); - int responseCode = connection.getResponseCode(); - if(responseCode == 200){ + if (connection.getResponseCode() == 200) { // get the response content into a String String responseJson = null; // read the inputStream into a buffer (trick found online scans entire input looking for end-of-file) - try(java.util.Scanner scanner = new java.util.Scanner(connection.getInputStream())) { + try (java.util.Scanner scanner = new java.util.Scanner(connection.getInputStream())) { scanner.useDelimiter("\\A"); responseJson = scanner.hasNext() ? scanner.next() : ""; - } catch (Exception e){ - //Reason for rethrowing the exception is if any exception occurs during reading of inputsteam - //then the exception handling is done by the outer block without returning the response immediately - //Also finally block is existing only in outer block and not here so all exception handling is - //done in only one place - policyLogger.error("Exception Occured"+e); + } catch (Exception e) { + // Reason for rethrowing the exception is if any exception occurs during reading of inputsteam + // then the exception handling is done by the outer block without returning the response immediately + // Also finally block is existing only in outer block and not here so all exception handling is + // done in only one place + policyLogger.error("Exception Occured" + e); throw e; } @@ -412,14 +424,20 @@ public class PolicyRestController extends RestrictedBaseController{ return null; } - @RequestMapping(value={"/getDictionary/*"}, method={RequestMethod.GET}) - public void getDictionaryController(HttpServletRequest request, HttpServletResponse response){ - String uri = request.getRequestURI().replace("/getDictionary", ""); + /** + * getDictionaryController. + * + * @param request Request + * @param response Response + */ + @RequestMapping(value = {"/getDictionary/*"}, method = {RequestMethod.GET}) + public void getDictionaryController(HttpServletRequest request, HttpServletResponse response) { String body; - ResponseEntity responseEntity = sendToPAP(null, uri, HttpMethod.GET); - if(responseEntity != null){ + ResponseEntity responseEntity = sendToPap(null, request.getRequestURI().replace("/getDictionary", ""), + HttpMethod.GET); + if (responseEntity != null) { body = responseEntity.getBody().toString(); - }else{ + } else { body = ""; } try { @@ -429,72 +447,100 @@ public class PolicyRestController extends RestrictedBaseController{ } } - @RequestMapping(value={"/saveDictionary/*/*"}, method={RequestMethod.POST}) - public void saveDictionaryController(HttpServletRequest request, HttpServletResponse response) throws IOException{ + /** + * saveDictionaryController. + * + * @param request Request + * @param response Response + * @throws IOException IO Exception + */ + @RequestMapping(value = {"/saveDictionary/*/*"}, method = {RequestMethod.POST}) + public void saveDictionaryController(HttpServletRequest request, HttpServletResponse response) throws IOException { String userId = ""; String uri = request.getRequestURI().replace("/saveDictionary", ""); - if(uri.startsWith("/")){ - uri = uri.substring(uri.indexOf('/')+1); + if (uri.startsWith("/")) { + uri = uri.substring(uri.indexOf('/') + 1); } - uri = "/onap" + uri.substring(uri.indexOf('/')); - if(uri.contains(importDictionary)){ + uri = ONAP + uri.substring(uri.indexOf('/')); + if (uri.contains(IMPORT_DICTIONARY)) { userId = UserUtils.getUserSession(request).getOrgUserId(); - uri = uri+ "?userId=" +userId; + uri = uri + "?userId=" + userId; } - policyLogger.info("****************************************Logging UserID while Saving Dictionary*****************************************************"); - policyLogger.info("UserId: " + userId); - policyLogger.info("***********************************************************************************************************************************"); + policyLogger.info( + "********************Logging UserID while Saving Dictionary**************************************"); + policyLogger.info(USER_ID + userId); + policyLogger.info( + "************************************************************************************************"); - String body = callPAP(request, "POST", uri.replaceFirst("/", "").trim()); - if(body != null && !body.isEmpty()){ + String body = callPap(request, "POST", uri.replaceFirst("/", "").trim()); + if (body != null && !body.isEmpty()) { response.getWriter().write(body); - }else{ + } else { response.getWriter().write("Failed"); } } - @RequestMapping(value={"/deleteDictionary/*/*"}, method={RequestMethod.POST}) - public void deletetDictionaryController(HttpServletRequest request, HttpServletResponse response) throws IOException { + /** + * deletetDictionaryController. + * + * @param request Request + * @param response Response + * @throws IOException IO Exception + */ + @RequestMapping(value = {"/deleteDictionary/*/*"}, method = {RequestMethod.POST}) + public void deletetDictionaryController(HttpServletRequest request, HttpServletResponse response) + throws IOException { String uri = request.getRequestURI().replace("/deleteDictionary", ""); - if(uri.startsWith("/")){ - uri = uri.substring(uri.indexOf('/')+1); + if (uri.startsWith("/")) { + uri = uri.substring(uri.indexOf('/') + 1); } - uri = "/onap" + uri.substring(uri.indexOf('/')); + uri = ONAP + uri.substring(uri.indexOf('/')); String userId = UserUtils.getUserSession(request).getOrgUserId(); - policyLogger.info("****************************************Logging UserID while Deleting Dictionary*****************************************************"); - policyLogger.info("UserId: " + userId); - policyLogger.info("*************************************************************************************************************************************"); - - String body = callPAP(request, "POST", uri.replaceFirst("/", "").trim()); - if(body != null && !body.isEmpty()){ + policyLogger.info( + "**********************Logging UserID while Deleting Dictionary*************************************"); + policyLogger.info(USER_ID + userId); + policyLogger.info( + "***************************************************************************************************"); + + String body = callPap(request, "POST", uri.replaceFirst("/", "").trim()); + if (body != null && !body.isEmpty()) { response.getWriter().write(body); - }else{ + } else { response.getWriter().write("Failed"); } } - @RequestMapping(value={"/searchDictionary"}, method={RequestMethod.POST}) - public ModelAndView searchDictionaryController(HttpServletRequest request, HttpServletResponse response) throws IOException { + /** + * searchDictionaryController. + * + * @param request Request + * @param response Response + * @return ModelAndView object + * @throws IOException IO Exception + */ + @RequestMapping(value = {"/searchDictionary"}, method = {RequestMethod.POST}) + public ModelAndView searchDictionaryController(HttpServletRequest request, HttpServletResponse response) + throws IOException { Object resultList; String uri = request.getRequestURI(); - if(uri.startsWith("/")){ - uri = uri.substring(uri.indexOf('/')+1); + if (uri.startsWith("/")) { + uri = uri.substring(uri.indexOf('/') + 1); } - uri = "/onap" + uri.substring(uri.indexOf('/')); - try{ - String body = callPAP(request, "POST", uri.replaceFirst("/", "").trim()); - if(body.contains("CouldNotConnectException")){ + uri = ONAP + uri.substring(uri.indexOf('/')); + try { + String body = callPap(request, "POST", uri.replaceFirst("/", "").trim()); + if (body.contains("CouldNotConnectException")) { List data = new ArrayList<>(); data.add("Elastic Search Server is down"); resultList = data; - }else{ - JSONObject json = new JSONObject(body); - resultList = json.get("policyresult"); + } else { + resultList = new JSONObject(body).get("policyresult"); } - }catch(Exception e){ - policyLogger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Exception Occured while querying Elastic Search: " + e); + } catch (Exception e) { + policyLogger.error( + XACMLErrorConstants.ERROR_PROCESS_FLOW + "Exception Occured while querying Elastic Search: " + e); List data = new ArrayList<>(); data.add("Elastic Search Server is down"); resultList = data; @@ -502,52 +548,65 @@ public class PolicyRestController extends RestrictedBaseController{ response.setCharacterEncoding(PolicyController.getCharacterencoding()); response.setContentType(PolicyController.getContenttype()); - PrintWriter out = response.getWriter(); - JSONObject j = new JSONObject("{result: " + resultList + "}"); - out.write(j.toString()); + response.getWriter().write(new JSONObject("{result: " + resultList + "}").toString()); return null; } - @RequestMapping(value={"/searchPolicy"}, method={RequestMethod.POST}) - public ModelAndView searchPolicy(HttpServletRequest request, HttpServletResponse response) throws IOException{ + /** + * searchPolicy. + * + * @param request request + * @param response response + * @return ModelAndView object + * @throws IOException IO exception + */ + @RequestMapping(value = {"/searchPolicy"}, method = {RequestMethod.POST}) + public ModelAndView searchPolicy(HttpServletRequest request, HttpServletResponse response) throws IOException { Object resultList; - String uri = request.getRequestURI()+"?action=search"; - if(uri.startsWith("/")){ - uri = uri.substring(uri.indexOf('/')+1); + String uri = request.getRequestURI() + "?action=search"; + if (uri.startsWith("/")) { + uri = uri.substring(uri.indexOf('/') + 1); } - uri = "/onap" + uri.substring(uri.indexOf('/')); - String body = callPAP(request, "POST", uri.replaceFirst("/", "").trim()); + uri = ONAP + uri.substring(uri.indexOf('/')); + String body = callPap(request, "POST", uri.replaceFirst("/", "").trim()); JSONObject json = new JSONObject(body); - try{ + try { resultList = json.get("policyresult"); - }catch(Exception e){ + } catch (Exception e) { List data = new ArrayList<>(); resultList = json.get(DATA); data.add("Exception"); data.add(resultList.toString()); resultList = data; - policyLogger.error("Exception Occured while searching for Policy in Elastic Database" +e); + policyLogger.error("Exception Occured while searching for Policy in Elastic Database" + e); } response.setCharacterEncoding(UTF_8); response.setContentType("application / json"); request.setCharacterEncoding(UTF_8); - PrintWriter out = response.getWriter(); - JSONObject j = new JSONObject("{result: " + resultList + "}"); - out.write(j.toString()); + response.getWriter().write(new JSONObject("{result: " + resultList + "}").toString()); return null; } - public void deleteElasticData(String fileName){ - String uri = "searchPolicy?action=delete&policyName='"+fileName+"'"; - callPAP(null, "POST", uri.trim()); + public void deleteElasticData(String fileName) { + String uri = "searchPolicy?action=delete&policyName='" + fileName + "'"; + callPap(null, "POST", uri.trim()); } - public String notifyOtherPAPSToUpdateConfigurations(String mode, String newName, String oldName){ - String uri = "onap/notifyOtherPAPs?action="+mode+"&newPolicyName="+newName+"&oldPolicyName="+oldName+""; - return callPAP(null, "POST", uri.trim()); + /** + * notifyOtherPAPSToUpdateConfigurations. + * + * @param mode Mode + * @param newName New Name + * @param oldName Old Name + * @return String + */ + public String notifyOtherPapsToUpdateConfigurations(String mode, String newName, String oldName) { + String uri = + "onap/notifyOtherPAPs?action=" + mode + "&newPolicyName=" + newName + "&oldPolicyName=" + oldName + ""; + return callPap(null, "POST", uri.trim()); } }