X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=POLICY-SDK-APP%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fadmin%2FPolicyManagerServlet.java;h=a23a0e821461172805ec2406b7993411dcdf844d;hb=HEAD;hp=224ee079380e86b61ea95d747ba76158877dcca4;hpb=87b642029080fbbacfb06daba15104f988ab6be0;p=policy%2Fengine.git diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyManagerServlet.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyManagerServlet.java index 224ee0793..a23a0e821 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyManagerServlet.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyManagerServlet.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP Policy Engine * ================================================================================ - * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2020 AT&T Intellectual Property. All rights reserved. * Modified Copyright (C) 2018 Samsung Electronics Co., Ltd. * Modifications Copyright (C) 2019 Bell Canada * ================================================================================ @@ -25,7 +25,6 @@ package org.onap.policy.admin; import com.att.research.xacml.util.XACMLProperties; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; - import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.ByteArrayInputStream; @@ -49,7 +48,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; - import javax.json.Json; import javax.json.JsonArray; import javax.json.JsonReader; @@ -61,11 +59,11 @@ import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; +import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpStatus; import org.elasticsearch.common.Strings; import org.json.JSONArray; @@ -90,6 +88,7 @@ import org.onap.policy.utils.PolicyUtils; import org.onap.policy.utils.UserUtils.Pair; import org.onap.policy.xacml.api.XACMLErrorConstants; import org.onap.policy.xacml.util.XACMLPolicyScanner; +import org.onap.portalsdk.core.domain.User; import org.onap.portalsdk.core.web.support.UserUtils; @WebServlet( @@ -227,7 +226,7 @@ public class PolicyManagerServlet extends HttpServlet { LOGGER.debug("doPost"); try { // if request contains multipart-form-data - if (ServletFileUpload.isMultipartContent(request)) { + if (isMultipartContent(request)) { uploadFile(request, response); } // all other post request has json params in body @@ -243,6 +242,10 @@ public class PolicyManagerServlet extends HttpServlet { } } + protected boolean isMultipartContent(HttpServletRequest request) { + return ServletFileUpload.isMultipartContent(request); + } + // Set Error Message for Exception private void setError(Exception exception, HttpServletResponse response) throws IOException { try { @@ -261,20 +264,24 @@ public class PolicyManagerServlet extends HttpServlet { private void uploadFile(HttpServletRequest request, HttpServletResponse response) throws ServletException { try { Map files = new HashMap<>(); - + String resp = null; List items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); for (FileItem item : items) { if (!item.isFormField()) { // Process form file field (input type="file"). files.put(item.getName(), item.getInputStream()); - processFormFile(request, item); + resp = processFormFile(request, item, response); } } - JSONObject responseJsonObject; - responseJsonObject = this.success(); response.setContentType(CONTENTTYPE); PrintWriter out = response.getWriter(); + JSONObject responseJsonObject; + if (!StringUtils.isBlank(resp)) { + responseJsonObject = this.error("Import Issue " + resp); + } else { + responseJsonObject = this.success(); + } out.print(responseJsonObject); out.flush(); } catch (Exception e) { @@ -283,23 +290,35 @@ public class PolicyManagerServlet extends HttpServlet { } } - private void processFormFile(HttpServletRequest request, FileItem item) { + private String processFormFile(HttpServletRequest request, FileItem item, HttpServletResponse response) { String newFile; - if (item.getName().endsWith(".xls") && item.getSize() <= PolicyController.getFileSizeLimit()) { + String outPutResp = null; + if (item.getName().endsWith(".xls") && item.getSize() <= getFileSizeLimit()) { File file = new File(item.getName()); try (OutputStream outputStream = new FileOutputStream(file)) { IOUtils.copy(item.getInputStream(), outputStream); newFile = file.toString(); PolicyExportAndImportController importController = new PolicyExportAndImportController(); - importController.importRepositoryFile(newFile, request); + return importController.importRepositoryFile(newFile, request); } catch (Exception e) { LOGGER.error("Upload error : " + e); } } else if (!item.getName().endsWith(".xls")) { - LOGGER.error("Non .xls filetype uploaded: " + item.getName()); + outPutResp = "Non .xls filetype uploaded: " + item.getName(); + LOGGER.error(outPutResp); } else { // uploaded file size is greater than allowed - LOGGER.error("Upload file size limit exceeded! File size (Bytes) is: " + item.getSize()); + outPutResp = "Upload file size limit exceeded! File size (Bytes) is: " + item.getSize(); + LOGGER.error(outPutResp); } + return outPutResp; + } + + protected long copyStream(InputStream inputStream, OutputStream outputStream) throws IOException { + return IOUtils.copy(inputStream, outputStream); + } + + protected long getFileSizeLimit() { + return PolicyController.getFileSizeLimit(); } // File Operation Functionality @@ -322,7 +341,7 @@ public class PolicyManagerServlet extends HttpServlet { JSONObject params = jsonObject.getJSONObject("params"); Mode mode = Mode.valueOf(params.getString("mode")); - String userId = UserUtils.getUserSession(request).getOrgUserId(); + String userId = getUserSession(request).getOrgUserId(); LOGGER.info( "********************Logging UserID while doing actions on Editor tab****************************"); LOGGER.info( @@ -337,6 +356,10 @@ public class PolicyManagerServlet extends HttpServlet { setResponse(response, responseJsonObject); } + protected User getUserSession(HttpServletRequest request) { + return UserUtils.getUserSession(request); + } + private void setResponse(HttpServletResponse response, JSONObject responseJsonObject) { response.setContentType(CONTENTTYPE); try (PrintWriter out = response.getWriter()) { @@ -410,9 +433,9 @@ public class PolicyManagerServlet extends HttpServlet { private boolean lookupPolicyData(HttpServletRequest request, List policyData, JSONArray policyList, PolicyController controller, List resultList) { - String userId = UserUtils.getUserSession(request).getOrgUserId(); + String userId = getUserSession(request).getOrgUserId(); List userRoles = controller.getRoles(userId); - Pair, List> pair = org.onap.policy.utils.UserUtils.checkRoleAndScope(userRoles); + Pair, List> pair = checkRoleAndScope(userRoles); List roles = pair.second; Set scopes = pair.first; if (roles.contains(ADMIN) || roles.contains(EDITOR) || roles.contains(GUEST)) { @@ -436,6 +459,10 @@ public class PolicyManagerServlet extends HttpServlet { return true; } + protected Pair, List> checkRoleAndScope(List userRoles) { + return org.onap.policy.utils.UserUtils.checkRoleAndScope(userRoles); + } + private void getPolicyDataForSuperRoles(List policyData, PolicyController controller, List resultList, List roles, Set scopes) { if (roles.contains(SUPERADMIN) || roles.contains(SUPEREDITOR) || roles.contains(SUPERGUEST)) { @@ -518,7 +545,7 @@ public class PolicyManagerServlet extends HttpServlet { String path = params.getString("path"); String userId = null; try { - userId = UserUtils.getUserSession(request).getOrgUserId(); + userId = getUserSession(request).getOrgUserId(); } catch (Exception e) { LOGGER.error("Exception Occured while reading userid from cookie" + e); } @@ -643,9 +670,9 @@ public class PolicyManagerServlet extends HttpServlet { private JSONObject processPolicyList(JSONObject params, HttpServletRequest request) throws ServletException { // Get the Login Id of the User from Request String testUserID = getTestUserId(); - String userId = testUserID != null ? testUserID : UserUtils.getUserSession(request).getOrgUserId(); + String userId = testUserID != null ? testUserID : getUserSession(request).getOrgUserId(); List userRoles = getPolicyControllerInstance().getRoles(userId); - Pair, List> pair = org.onap.policy.utils.UserUtils.checkRoleAndScope(userRoles); + Pair, List> pair = checkRoleAndScope(userRoles); List roles = pair.second; Set scopes = pair.first; Map roleByScope = org.onap.policy.utils.UserUtils.getRoleByScope(userRoles); @@ -861,7 +888,7 @@ public class PolicyManagerServlet extends HttpServlet { boolean isActive = false; List policyActiveInPdp = new ArrayList<>(); Set scopeOfPolicyActiveInPdp = new HashSet<>(); - String userId = UserUtils.getUserSession(request).getOrgUserId(); + String userId = getUserSession(request).getOrgUserId(); String oldPath = params.getString("path"); String newPath = params.getString("newPath"); oldPath = oldPath.substring(oldPath.indexOf('/') + 1); @@ -1194,7 +1221,7 @@ public class PolicyManagerServlet extends HttpServlet { // Clone the Policy private JSONObject copy(JSONObject params, HttpServletRequest request) throws ServletException { try { - String userId = UserUtils.getUserSession(request).getOrgUserId(); + String userId = getUserSession(request).getOrgUserId(); String oldPath = params.getString("path"); String newPath = params.getString("newPath"); oldPath = oldPath.substring(oldPath.indexOf('/') + 1); @@ -1286,7 +1313,7 @@ public class PolicyManagerServlet extends HttpServlet { PolicyEntity policyEntity = null; String policyNamewithoutExtension; try { - String userId = UserUtils.getUserSession(request).getOrgUserId(); + String userId = getUserSession(request).getOrgUserId(); String deleteVersion = ""; String path = params.getString("path"); LOGGER.debug("delete {}" + path); @@ -1611,7 +1638,7 @@ public class PolicyManagerServlet extends HttpServlet { if (entity != null) { return error("Scope Already Exists"); } - String userId = UserUtils.getUserSession(request).getOrgUserId(); + String userId = getUserSession(request).getOrgUserId(); UserInfo userInfo = new UserInfo(); userInfo.setUserLoginId(userId); PolicyEditorScopes newScope = new PolicyEditorScopes();