Fix Fortify Scan Issue:
[policy/engine.git] / ONAP-PAP-REST / src / main / java / org / onap / policy / pap / xacml / rest / service / ImportService.java
index 0a5da0e..c804f2b 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP-PAP-REST
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -34,20 +34,40 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.onap.policy.common.logging.eelf.PolicyLogger;
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.pap.xacml.rest.components.CreateBRMSRuleTemplate;
 import org.onap.policy.pap.xacml.rest.components.CreateNewMicroServiceModel;
 
 public class ImportService {
-
+       private static final Logger logger = FlexLogger.getLogger(ImportService.class);
+       private static String errorMessage = "Error in reading in file from API call";
+       private static String errorMsg  = "error";
+       private static String operation = "operation";
+       private static String importHeader = "import";
+       private static String service = "service";
+       private static String extractDir = "ExtractDir";
+       private static String successMessage = "success";
+       private static String invalidServiceName = "Invalid ServiceName";
+       private static final String REGEX = "[0-9a-zA-Z._ ]*";
+       
        public void doImportMicroServicePut(HttpServletRequest request, HttpServletResponse response) {
-               String importServiceCreation = request.getParameter("importService");;
+               String importServiceCreation = request.getParameter("importService");
                String fileName = request.getParameter("fileName");
                String version = request.getParameter("version");
                String serviceName = request.getParameter("serviceName");
+               
+               if(serviceName == null || serviceName.isEmpty() || !serviceName.matches(REGEX)){
+                       response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+                       response.addHeader(errorMsg, "missing");        
+                       response.addHeader(operation, importHeader);
+                       response.addHeader(service, invalidServiceName);
+                       return;
+               }
+
                String description = request.getParameter("description");
                Map<String, String> successMap = new HashMap<>();
-               switch(importServiceCreation){
-               case "BRMSPARAM":
+               if(("BRMSPARAM").equals(importServiceCreation)){
                        StringBuilder builder = new StringBuilder();
                        int ch;
                        try {
@@ -55,20 +75,21 @@ public class ImportService {
                                    builder.append((char)ch);
                                }
                        } catch (IOException e) {
-                               PolicyLogger.error("Error in reading in file from API call");
+                               logger.error(e);
+                               PolicyLogger.error(errorMessage);
                                response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-                               response.addHeader("error", "missing"); 
-                               response.addHeader("operation", "import");
-                               response.addHeader("service", serviceName);
+                               response.addHeader(errorMsg, "missing");        
+                               response.addHeader(operation, importHeader);
+                               response.addHeader(service, serviceName);
                        }
                        CreateBRMSRuleTemplate brmsRuleTemplate = new CreateBRMSRuleTemplate();
                        successMap = brmsRuleTemplate.addRule(builder.toString(), serviceName, description, "API");
-                       break;
-               case "MICROSERVICE":
+               }
+               else if(("MICROSERVICE").equals(importServiceCreation)){
                        CreateNewMicroServiceModel newMS = null;
                        String randomID = UUID.randomUUID().toString();
                        if ( fileName != null) {
-                               File extracDir = new File("ExtractDir");
+                               File extracDir = new File(extractDir);
                                if (!extracDir.exists()){
                                        extracDir.mkdirs();
                                }
@@ -82,20 +103,22 @@ public class ImportService {
                                                xmi =  scanner.hasNext() ? scanner.next() : "";
                                                scanner.close();
                                        } catch (IOException e1) {
-                                               PolicyLogger.error("Error in reading in file from API call");
+                                               logger.error(e1);
+                                               PolicyLogger.error(errorMessage);
                                                return;
                                        }
                                        PolicyLogger.info("XML request from API for import new Service"); 
                                        try (Writer writer = new BufferedWriter(new OutputStreamWriter(
-                                                       new FileOutputStream("ExtractDir" + File.separator + randomID+".xmi"), "utf-8"))) {
+                                                       new FileOutputStream(extractDir + File.separator + randomID+".xmi"), "utf-8"))) {
                                                writer.write(xmi);
                                        } catch (IOException e) {
-                                               PolicyLogger.error("Error in reading in file from API call");
+                                               logger.error(e);
+                                               PolicyLogger.error(errorMessage);
                                                return;
                                        }
                                }else{ 
                                        InputStream inputStream = null;
-                                       try(FileOutputStream outputStream = new FileOutputStream("ExtractDir" + File.separator + randomID+".zip")) {    
+                                       try(FileOutputStream outputStream = new FileOutputStream(extractDir + File.separator + randomID+".zip")) {      
                                                inputStream = request.getInputStream();
                                                byte[] buffer = new byte[4096];
                                                int bytesRead = -1 ; 
@@ -117,41 +140,41 @@ public class ImportService {
                                }
                                newMS =  new CreateNewMicroServiceModel(fileName, serviceName, "API", version, randomID);
                                successMap = newMS.addValuesToNewModel();
-                               if (successMap.containsKey("success")) {
+                               if (successMap.containsKey(successMessage)) {
                                        successMap.clear();
                                        successMap = newMS.saveImportService();
                                }
                        }
-                       break;
                }
+               
                // return a response to the PAP             
-               if (successMap.containsKey("success")) {                                                        
+               if (successMap.containsKey(successMessage)) {                                                   
                        response.setStatus(HttpServletResponse.SC_OK);                                                          
-                       response.addHeader("successMapKey", "success");                                                         
-                       response.addHeader("operation", "import");
-                       response.addHeader("service", serviceName);
+                       response.addHeader("successMapKey", successMessage);                                                            
+                       response.addHeader(operation, importHeader);
+                       response.addHeader(service, serviceName);
                } else if (successMap.containsKey("DBError")) {
                        if (successMap.get("DBError").contains("EXISTS")){
                                response.setStatus(HttpServletResponse.SC_CONFLICT);
-                               response.addHeader("service", serviceName);
-                               response.addHeader("error", "modelExistsDB");
+                               response.addHeader(service, serviceName);
+                               response.addHeader(errorMsg, "modelExistsDB");
                        }else{
                                response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-                               response.addHeader("error", "importDB");
+                               response.addHeader(errorMsg, "importDB");
                        }
-                       response.addHeader("operation", "import");
-                       response.addHeader("service", serviceName);
-               }else if (successMap.get("error").contains("MISSING")){
+                       response.addHeader(operation, importHeader);
+                       response.addHeader(service, serviceName);
+               }else if (successMap.get(errorMsg).contains("MISSING")){
                        response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-                       response.addHeader("error", "missing"); 
-                       response.addHeader("operation", "import");
-                       response.addHeader("service", serviceName);
-               }else if (successMap.get("error").contains("VALIDATION")){
+                       response.addHeader(errorMsg, "missing");        
+                       response.addHeader(operation, importHeader);
+                       response.addHeader(service, serviceName);
+               }else if (successMap.get(errorMsg).contains("VALIDATION")){
                        response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-                       response.addHeader("error", "validation");      
-                       response.addHeader("operation", "import");
-                       response.addHeader("service", serviceName);
+                       response.addHeader(errorMsg, "validation");     
+                       response.addHeader(operation, importHeader);
+                       response.addHeader(service, serviceName);
                }
        }
 
-}
+}
\ No newline at end of file