diff options
Diffstat (limited to 'ONAP-PAP-REST/src')
71 files changed, 13730 insertions, 13730 deletions
diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/DictionaryNames.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/DictionaryNames.java index 38e2c96f5..ce9cad408 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/DictionaryNames.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/DictionaryNames.java @@ -27,31 +27,31 @@ package org.onap.policy.pap.xacml.rest; * */ public enum DictionaryNames { - - Attribute, - ActionPolicyDictionary, - OnapName, - MSPolicyDictionary, - OptimizationPolicyDictionary, - VNFType, - VSCLAction, - ClosedLoopService, - ClosedLoopSite, - PEPOptions, - VarbindDictionary, - BRMSParamDictionary, - BRMSControllerDictionary, - BRMSDependencyDictionary, - Settings, - PrefixList, - SecurityZone, - Zone, - ServiceList, - ServiceGroup, - AddressGroup, - ProtocolList, - ActionList, - TermList, - SearchCriteria + + Attribute, + ActionPolicyDictionary, + OnapName, + MSPolicyDictionary, + OptimizationPolicyDictionary, + VNFType, + VSCLAction, + ClosedLoopService, + ClosedLoopSite, + PEPOptions, + VarbindDictionary, + BRMSParamDictionary, + BRMSControllerDictionary, + BRMSDependencyDictionary, + Settings, + PrefixList, + SecurityZone, + Zone, + ServiceList, + ServiceGroup, + AddressGroup, + ProtocolList, + ActionList, + TermList, + SearchCriteria } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/UpdateOthersPAPS.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/UpdateOthersPAPS.java index c1891b352..bd000381b 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/UpdateOthersPAPS.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/UpdateOthersPAPS.java @@ -64,177 +64,177 @@ import com.fasterxml.jackson.databind.ObjectMapper; @Controller public class UpdateOthersPAPS { - - private static final Logger policyLogger = FlexLogger.getLogger(UpdateOthersPAPS.class); - - private static CommonClassDao commonClassDao; - - private static final String contentType = "application/json"; - private static String configType =".Config_"; - private static String actionType =".Action_"; - private static String error ="error"; - public static CommonClassDao getCommonClassDao() { - return commonClassDao; - } - - public static void setCommonClassDao(CommonClassDao commonClassDao) { - UpdateOthersPAPS.commonClassDao = commonClassDao; - } - - @Autowired - private UpdateOthersPAPS(CommonClassDao commonClassDao){ - UpdateOthersPAPS.commonClassDao = commonClassDao; - } - - public UpdateOthersPAPS() { - //Empty Constructor - } - - @RequestMapping(value="/notifyOtherPAPs", method= RequestMethod.POST) - public void notifyOthersPAPsToUpdateConfigurations(HttpServletRequest request, HttpServletResponse response){ - Map<String, Object> model = new HashMap<>(); - ObjectMapper mapper = new ObjectMapper(); - UpdateObjectData body = new UpdateObjectData(); - body.setAction(request.getParameter("action")); - body.setNewPolicyName(request.getParameter("newPolicyName")); - body.setOldPolicyName(request.getParameter("oldPolicyName")); - - String currentPap = XACMLRestProperties.getProperty("xacml.rest.pap.url"); - List<Object> getPAPUrls = commonClassDao.getData(PolicyDBDaoEntity.class); - if(getPAPUrls != null && !getPAPUrls.isEmpty()){ - for(int i = 0; i < getPAPUrls.size(); i++){ - PolicyDBDaoEntity papId = (PolicyDBDaoEntity) getPAPUrls.get(i); - String papUrl = papId.getPolicyDBDaoUrl(); - if(!papUrl.equals(currentPap)){ - String userName = papId.getUsername(); - String password = papId.getPassword(); - Base64.Encoder encoder = Base64.getEncoder(); - String txt; - try{ - txt = new String(CryptoUtils.decryptTxt(password), StandardCharsets.UTF_8); - } catch(Exception e){ - policyLogger.debug(e); - //if we can't decrypt, might as well try it anyway - txt = password; - } - String encoding = encoder.encodeToString((userName+":"+txt).getBytes(StandardCharsets.UTF_8)); - HttpHeaders headers = new HttpHeaders(); - headers.set("Authorization", "Basic " + encoding); - headers.set("Content-Type", contentType); - - RestTemplate restTemplate = new RestTemplate(); - HttpEntity<?> requestEntity = new HttpEntity<>(body, headers); - HttpClientErrorException exception = null; - - try{ - restTemplate.exchange(papUrl + "onap/updateConfiguration", HttpMethod.POST, requestEntity, String.class); - }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())){ - policyLogger.error(e.getMessage()); - response.addHeader(error, e.getMessage()); - } - } - if(exception != null && exception.getStatusCode()!=null){ - String message; - if(exception.getStatusCode().equals(HttpStatus.UNAUTHORIZED)){ - message = XACMLErrorConstants.ERROR_PERMISSIONS +":"+exception.getStatusCode()+":" + "ERROR_AUTH_GET_PERM" ; - policyLogger.error(message); - }else if(exception.getStatusCode().equals(HttpStatus.BAD_REQUEST)){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + ":"+exception.getStatusCode()+":" + exception.getResponseBodyAsString(); - policyLogger.error(message); - }else if(exception.getStatusCode().equals(HttpStatus.NOT_FOUND)){ - message = XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while connecting to " + papUrl + exception; - policyLogger.error(message); - }else{ - message = XACMLErrorConstants.ERROR_PROCESS_FLOW + ":"+exception.getStatusCode()+":" + exception.getResponseBodyAsString(); - policyLogger.error(message); - } - model.put(papUrl, message); - }else{ - model.put(papUrl, "Success"); - } - } - } - JsonMessage msg; - try { - msg = new JsonMessage(mapper.writeValueAsString(model)); - JSONObject j = new JSONObject(msg); - response.getWriter().write(j.toString()); - } catch (Exception e) { - policyLogger.error("Exception Occured"+e); - } - } - } - - @RequestMapping(value="/updateConfiguration", method= RequestMethod.POST) - @ResponseBody - public void updateConfiguration(@RequestBody UpdateObjectData data, HttpServletResponse response){ - String action = data.getAction(); - String newPolicyName = data.getNewPolicyName(); - String oldPolicyName = data.getOldPolicyName(); - try{ - if("rename".equals(action)){ - if(oldPolicyName.contains(configType) || oldPolicyName.contains(actionType)){ - File file; - if(oldPolicyName.contains(configType)){ - file = new File(Policy.getConfigHome() + File.separator + oldPolicyName); - }else{ - file = new File(Policy.getActionHome() + File.separator + oldPolicyName); - } - if(file.exists()){ - File renamefile; - if(oldPolicyName.contains(configType)){ - renamefile = new File(Policy.getConfigHome() + File.separator + newPolicyName); - }else{ - renamefile = new File(Policy.getActionHome() + File.separator + newPolicyName); - } - if(file.renameTo(renamefile)){ - policyLogger.info("Policy has been renamed Successfully"+newPolicyName); - response.addHeader("rename", "Success"); - }else{ - response.addHeader("rename", "Failure"); - } - } - } - }else if("delete".equals(action)){ - if(oldPolicyName.contains(configType)){ - Files.deleteIfExists(Paths.get(Policy.getConfigHome() + File.separator + oldPolicyName)); - }else if(oldPolicyName.contains("Action_")){ - Files.deleteIfExists(Paths.get(Policy.getActionHome() + File.separator + oldPolicyName)); - } - }else if("clonePolicy".equals(action) || "exportPolicy".equals(action)){ - if(newPolicyName.contains(configType)){ - ConfigurationDataEntity configEntiy = (ConfigurationDataEntity) commonClassDao.getEntityItem(ConfigurationDataEntity.class, "configurationName", newPolicyName); - saveConfigurationData(configEntiy, newPolicyName); - }else if(newPolicyName.contains(actionType)){ - ActionBodyEntity actionEntiy = (ActionBodyEntity) commonClassDao.getEntityItem(ActionBodyEntity.class, "actionBodyName", newPolicyName); - saveActionBodyData(actionEntiy, newPolicyName); - } - } - } catch (IOException e) { - policyLogger.error("Exception Occured While updating Configuration"+e); - } - } - - private void saveConfigurationData(ConfigurationDataEntity configEntiy, String newPolicyName){ - try(FileWriter fw = new FileWriter(Policy.getConfigHome() + File.separator + newPolicyName)){ - BufferedWriter bw = new BufferedWriter(fw); - bw.write(configEntiy.getConfigBody()); - bw.close(); - }catch (IOException e) { - policyLogger.error("Exception Occured While closing the File input stream"+e); - } - } - - private void saveActionBodyData(ActionBodyEntity actionEntiy , String newPolicyName){ - try(FileWriter fw = new FileWriter(Policy.getActionHome() + File.separator + newPolicyName)){ - BufferedWriter bw = new BufferedWriter(fw); - bw.write(actionEntiy.getActionBody()); - bw.close(); - }catch (IOException e) { - policyLogger.error("Exception Occured While closing the File input stream"+e); - } - } + + private static final Logger policyLogger = FlexLogger.getLogger(UpdateOthersPAPS.class); + + private static CommonClassDao commonClassDao; + + private static final String contentType = "application/json"; + private static String configType =".Config_"; + private static String actionType =".Action_"; + private static String error ="error"; + public static CommonClassDao getCommonClassDao() { + return commonClassDao; + } + + public static void setCommonClassDao(CommonClassDao commonClassDao) { + UpdateOthersPAPS.commonClassDao = commonClassDao; + } + + @Autowired + private UpdateOthersPAPS(CommonClassDao commonClassDao){ + UpdateOthersPAPS.commonClassDao = commonClassDao; + } + + public UpdateOthersPAPS() { + //Empty Constructor + } + + @RequestMapping(value="/notifyOtherPAPs", method= RequestMethod.POST) + public void notifyOthersPAPsToUpdateConfigurations(HttpServletRequest request, HttpServletResponse response){ + Map<String, Object> model = new HashMap<>(); + ObjectMapper mapper = new ObjectMapper(); + UpdateObjectData body = new UpdateObjectData(); + body.setAction(request.getParameter("action")); + body.setNewPolicyName(request.getParameter("newPolicyName")); + body.setOldPolicyName(request.getParameter("oldPolicyName")); + + String currentPap = XACMLRestProperties.getProperty("xacml.rest.pap.url"); + List<Object> getPAPUrls = commonClassDao.getData(PolicyDBDaoEntity.class); + if(getPAPUrls != null && !getPAPUrls.isEmpty()){ + for(int i = 0; i < getPAPUrls.size(); i++){ + PolicyDBDaoEntity papId = (PolicyDBDaoEntity) getPAPUrls.get(i); + String papUrl = papId.getPolicyDBDaoUrl(); + if(!papUrl.equals(currentPap)){ + String userName = papId.getUsername(); + String password = papId.getPassword(); + Base64.Encoder encoder = Base64.getEncoder(); + String txt; + try{ + txt = new String(CryptoUtils.decryptTxt(password), StandardCharsets.UTF_8); + } catch(Exception e){ + policyLogger.debug(e); + //if we can't decrypt, might as well try it anyway + txt = password; + } + String encoding = encoder.encodeToString((userName+":"+txt).getBytes(StandardCharsets.UTF_8)); + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", "Basic " + encoding); + headers.set("Content-Type", contentType); + + RestTemplate restTemplate = new RestTemplate(); + HttpEntity<?> requestEntity = new HttpEntity<>(body, headers); + HttpClientErrorException exception = null; + + try{ + restTemplate.exchange(papUrl + "onap/updateConfiguration", HttpMethod.POST, requestEntity, String.class); + }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())){ + policyLogger.error(e.getMessage()); + response.addHeader(error, e.getMessage()); + } + } + if(exception != null && exception.getStatusCode()!=null){ + String message; + if(exception.getStatusCode().equals(HttpStatus.UNAUTHORIZED)){ + message = XACMLErrorConstants.ERROR_PERMISSIONS +":"+exception.getStatusCode()+":" + "ERROR_AUTH_GET_PERM" ; + policyLogger.error(message); + }else if(exception.getStatusCode().equals(HttpStatus.BAD_REQUEST)){ + message = XACMLErrorConstants.ERROR_DATA_ISSUE + ":"+exception.getStatusCode()+":" + exception.getResponseBodyAsString(); + policyLogger.error(message); + }else if(exception.getStatusCode().equals(HttpStatus.NOT_FOUND)){ + message = XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while connecting to " + papUrl + exception; + policyLogger.error(message); + }else{ + message = XACMLErrorConstants.ERROR_PROCESS_FLOW + ":"+exception.getStatusCode()+":" + exception.getResponseBodyAsString(); + policyLogger.error(message); + } + model.put(papUrl, message); + }else{ + model.put(papUrl, "Success"); + } + } + } + JsonMessage msg; + try { + msg = new JsonMessage(mapper.writeValueAsString(model)); + JSONObject j = new JSONObject(msg); + response.getWriter().write(j.toString()); + } catch (Exception e) { + policyLogger.error("Exception Occured"+e); + } + } + } + + @RequestMapping(value="/updateConfiguration", method= RequestMethod.POST) + @ResponseBody + public void updateConfiguration(@RequestBody UpdateObjectData data, HttpServletResponse response){ + String action = data.getAction(); + String newPolicyName = data.getNewPolicyName(); + String oldPolicyName = data.getOldPolicyName(); + try{ + if("rename".equals(action)){ + if(oldPolicyName.contains(configType) || oldPolicyName.contains(actionType)){ + File file; + if(oldPolicyName.contains(configType)){ + file = new File(Policy.getConfigHome() + File.separator + oldPolicyName); + }else{ + file = new File(Policy.getActionHome() + File.separator + oldPolicyName); + } + if(file.exists()){ + File renamefile; + if(oldPolicyName.contains(configType)){ + renamefile = new File(Policy.getConfigHome() + File.separator + newPolicyName); + }else{ + renamefile = new File(Policy.getActionHome() + File.separator + newPolicyName); + } + if(file.renameTo(renamefile)){ + policyLogger.info("Policy has been renamed Successfully"+newPolicyName); + response.addHeader("rename", "Success"); + }else{ + response.addHeader("rename", "Failure"); + } + } + } + }else if("delete".equals(action)){ + if(oldPolicyName.contains(configType)){ + Files.deleteIfExists(Paths.get(Policy.getConfigHome() + File.separator + oldPolicyName)); + }else if(oldPolicyName.contains("Action_")){ + Files.deleteIfExists(Paths.get(Policy.getActionHome() + File.separator + oldPolicyName)); + } + }else if("clonePolicy".equals(action) || "exportPolicy".equals(action)){ + if(newPolicyName.contains(configType)){ + ConfigurationDataEntity configEntiy = (ConfigurationDataEntity) commonClassDao.getEntityItem(ConfigurationDataEntity.class, "configurationName", newPolicyName); + saveConfigurationData(configEntiy, newPolicyName); + }else if(newPolicyName.contains(actionType)){ + ActionBodyEntity actionEntiy = (ActionBodyEntity) commonClassDao.getEntityItem(ActionBodyEntity.class, "actionBodyName", newPolicyName); + saveActionBodyData(actionEntiy, newPolicyName); + } + } + } catch (IOException e) { + policyLogger.error("Exception Occured While updating Configuration"+e); + } + } + + private void saveConfigurationData(ConfigurationDataEntity configEntiy, String newPolicyName){ + try(FileWriter fw = new FileWriter(Policy.getConfigHome() + File.separator + newPolicyName)){ + BufferedWriter bw = new BufferedWriter(fw); + bw.write(configEntiy.getConfigBody()); + bw.close(); + }catch (IOException e) { + policyLogger.error("Exception Occured While closing the File input stream"+e); + } + } + + private void saveActionBodyData(ActionBodyEntity actionEntiy , String newPolicyName){ + try(FileWriter fw = new FileWriter(Policy.getActionHome() + File.separator + newPolicyName)){ + BufferedWriter bw = new BufferedWriter(fw); + bw.write(actionEntiy.getActionBody()); + bw.close(); + }catch (IOException e) { + policyLogger.error("Exception Occured While closing the File input stream"+e); + } + } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/WebConfig.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/WebConfig.java index 89ab8bc8a..88ad91b5f 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/WebConfig.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/WebConfig.java @@ -28,16 +28,16 @@ import org.springframework.web.context.support.AnnotationConfigWebApplicationCon import org.springframework.web.servlet.DispatcherServlet; public class WebConfig implements WebApplicationInitializer { - - @Override - public void onStartup(ServletContext container) { - AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); - ctx.register(PAPRestConfig.class); - ctx.setServletContext(container); - ctx.refresh(); - ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(ctx)); - dispatcher.setLoadOnStartup(1); - dispatcher.addMapping("/onap/*"); - } + + @Override + public void onStartup(ServletContext container) { + AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); + ctx.register(PAPRestConfig.class); + ctx.setServletContext(container); + ctx.refresh(); + ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(ctx)); + dispatcher.setLoadOnStartup(1); + dispatcher.addMapping("/onap/*"); + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/XACMLPapServlet.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/XACMLPapServlet.java index 1acec1bd9..4406ad3da 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/XACMLPapServlet.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/XACMLPapServlet.java @@ -107,191 +107,191 @@ import com.google.common.base.Splitter; * Servlet implementation class XacmlPapServlet */ @WebServlet( - description = "Implements the XACML PAP RESTful API.", - urlPatterns = { "/" }, - loadOnStartup=1, - initParams = { - @WebInitParam(name = "XACML_PROPERTIES_NAME", value = "xacml.pap.properties", description = "The location of the properties file holding configuration information.") - }) + description = "Implements the XACML PAP RESTful API.", + urlPatterns = { "/" }, + loadOnStartup=1, + initParams = { + @WebInitParam(name = "XACML_PROPERTIES_NAME", value = "xacml.pap.properties", description = "The location of the properties file holding configuration information.") + }) public class XACMLPapServlet extends HttpServlet implements StdItemSetChangeListener, Runnable { - private static final long serialVersionUID = 1L; - private static final Logger LOGGER = FlexLogger.getLogger(XACMLPapServlet.class); - // audit (transaction) LOGGER - private static final Logger auditLogger = FlexLogger.getLogger("auditLogger"); - //Persistence Unit for JPA - private static final String PERSISTENCE_UNIT = "XACML-PAP-REST"; - private static final String AUDIT_PAP_PERSISTENCE_UNIT = "auditPapPU"; - // Client Headers. - private static final String ENVIRONMENT_HEADER = "Environment"; - private static final String ADD_GROUP_ERROR = "addGroupError"; - private static final String PERSISTENCE_JDBC_PWD = "javax.persistence.jdbc.password"; - - private static final String REGEX = "[0-9a-zA-Z._ ]*"; - - /* - * List of Admin Console URLs. - * Used to send notifications when configuration changes. - * - * The CopyOnWriteArrayList *should* protect from concurrency errors. - * This list is seldom changed but often read, so the costs of this approach make sense. - */ - private static final CopyOnWriteArrayList<String> adminConsoleURLStringList = new CopyOnWriteArrayList<>(); - - private static String configHome; - private static String actionHome; - /* - * This PAP instance's own URL. - * Need this when creating URLs to send to the PDPs so they can GET the Policy files from this process. - */ - private static String papURL = null; - // The heartbeat thread. - private static Heartbeat heartbeat = null; - private static Thread heartbeatThread = null; - //The entity manager factory for JPA access - private static EntityManagerFactory emf; - private static PolicyDBDao policyDBDao; - /* - * papEngine - This is our engine workhorse that manages the PDP Groups and Nodes. - */ - private static PAPPolicyEngine papEngine = null; - /* - * These are the parameters needed for DB access from the PAP - */ - private static int papIntegrityAuditPeriodSeconds = -1; - private static String papDbDriver = null; - private static String papDbUrl = null; - private static String papDbUser = null; - private static String papDbPassword = null; - private static String papResourceName = null; - private static String[] papDependencyGroupsFlatArray = null; - private static String environment = null; - private static String pdpFile = null; - - private transient IntegrityMonitor im; - private transient IntegrityAudit ia; - - //MicroService Model Properties - private static String msOnapName; - private static String msPolicyName; - /* - * This thread may be invoked upon startup to initiate sending PDP policy/pip configuration when - * this servlet starts. Its configurable by the admin. - */ - private static transient Thread initiateThread = null; - private transient ONAPLoggingContext baseLoggingContext = null; - - /** - * @see HttpServlet#HttpServlet() - */ - public XACMLPapServlet() { - super(); - } - - /** - * @see Servlet#init(ServletConfig) - */ - public void init(ServletConfig config) throws ServletException { - try { - // Logging - baseLoggingContext = new ONAPLoggingContext(); - // fixed data that will be the same in all logging output goes here - try { - String hostname = InetAddress.getLocalHost().getCanonicalHostName(); - baseLoggingContext.setServer(hostname); - } catch (UnknownHostException e) { - LOGGER.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Unable to get hostname for logging", e); - } - // Initialize - XACMLRest.xacmlInit(config); - // Load the properties - XACMLRest.loadXacmlProperties(null, null); - /* - * Retrieve the property values - */ - setCommonProperties(); - String papSiteName = XACMLProperties.getProperty(XACMLRestProperties.PAP_SITE_NAME); - if(papSiteName == null){ - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE,"XACMLPapServlet", " ERROR: Bad papSiteName property entry"); - throw new PAPException("papSiteName is null"); - } - String papNodeType = XACMLProperties.getProperty(XACMLRestProperties.PAP_NODE_TYPE); - if(papNodeType == null){ - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE,"XACMLPapServlet", " ERROR: Bad papNodeType property entry"); - throw new PAPException("papNodeType is null"); - } - //Integer will throw an exception of anything is missing or unrecognized - int papTransWait = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_TRANS_WAIT)); - int papTransTimeout = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_TRANS_TIMEOUT)); - int papAuditTimeout = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_AUDIT_TIMEOUT)); - //Boolean will default to false if anything is missing or unrecognized - boolean papAuditFlag = Boolean.parseBoolean(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_RUN_AUDIT_FLAG)); - boolean papFileSystemAudit = Boolean.parseBoolean(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_AUDIT_FLAG)); - String papDependencyGroups = XACMLProperties.getProperty(XACMLRestProperties.PAP_DEPENDENCY_GROUPS); - if(papDependencyGroups == null){ - throw new PAPException("papDependencyGroups is null"); - } - setPAPDependencyGroups(papDependencyGroups); - //Integer will throw an exception of anything is missing or unrecognized - int fpMonitorInterval = Integer.parseInt(XACMLProperties.getProperty(IntegrityMonitorProperties.FP_MONITOR_INTERVAL)); - int failedCounterThreshold = Integer.parseInt(XACMLProperties.getProperty(IntegrityMonitorProperties.FAILED_COUNTER_THRESHOLD)); - int testTransInterval = Integer.parseInt(XACMLProperties.getProperty(IntegrityMonitorProperties.TEST_TRANS_INTERVAL)); - int writeFpcInterval = Integer.parseInt(XACMLProperties.getProperty(IntegrityMonitorProperties.WRITE_FPC_INTERVAL)); - LOGGER.debug("\n\n\n**************************************" - + "\n*************************************" - + "\n" - + "\n papDbDriver = " + papDbDriver - + "\n papDbUrl = " + papDbUrl - + "\n papDbUser = " + papDbUser - + "\n papTransWait = " + papTransWait - + "\n papTransTimeout = " + papTransTimeout - + "\n papAuditTimeout = " + papAuditTimeout - + "\n papAuditFlag = " + papAuditFlag - + "\n papFileSystemAudit = " + papFileSystemAudit - + "\n papResourceName = " + papResourceName - + "\n fpMonitorInterval = " + fpMonitorInterval - + "\n failedCounterThreshold = " + failedCounterThreshold - + "\n testTransInterval = " + testTransInterval - + "\n writeFpcInterval = " + writeFpcInterval - + "\n papSiteName = " + papSiteName - + "\n papNodeType = " + papNodeType - + "\n papDependencyGroupsList = " + papDependencyGroups - + "\n papIntegrityAuditPeriodSeconds = " + papIntegrityAuditPeriodSeconds - + "\n\n*************************************" - + "\n**************************************"); - // Pull custom persistence settings - Properties properties; - try { - properties = XACMLProperties.getProperties(); - LOGGER.debug("\n\n\n**************************************" - + "\n**************************************" - + "\n\n" - + "properties = " + properties - + "\n\n**************************************"); - } catch (IOException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "XACMLPapServlet", " Error loading properties with: " - + "XACMLProperties.getProperties()"); - throw new ServletException(e.getMessage(), e.getCause()); - } - // Create an IntegrityMonitor - if(properties.getProperty(PERSISTENCE_JDBC_PWD) != null ){ - properties.setProperty(PERSISTENCE_JDBC_PWD, CryptoUtils.decryptTxtNoExStr(properties.getProperty(PERSISTENCE_JDBC_PWD, ""))); - } - im = IntegrityMonitor.getInstance(papResourceName,properties); - // Create an IntegrityAudit - ia = new IntegrityAudit(papResourceName, AUDIT_PAP_PERSISTENCE_UNIT, properties); - ia.startAuditThread(); - // Create the entity manager factory - setEMF(properties); - // we are about to call the PDPs and give them their configuration. - // To do that we need to have the URL of this PAP so we can construct the Policy file URLs - setPAPURL(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL)); - //Create the policyDBDao - setPolicyDBDao(); - // Load our PAP engine, first create a factory - ONAPPapEngineFactory factory = ONAPPapEngineFactory.newInstance(XACMLProperties.getProperty(XACMLProperties.PROP_PAP_PAPENGINEFACTORY)); - // The factory knows how to go about creating a PAP Engine - setPAPEngine((PAPPolicyEngine) factory.newEngine()); - PolicyDBDaoTransaction addNewGroup = null; + private static final long serialVersionUID = 1L; + private static final Logger LOGGER = FlexLogger.getLogger(XACMLPapServlet.class); + // audit (transaction) LOGGER + private static final Logger auditLogger = FlexLogger.getLogger("auditLogger"); + //Persistence Unit for JPA + private static final String PERSISTENCE_UNIT = "XACML-PAP-REST"; + private static final String AUDIT_PAP_PERSISTENCE_UNIT = "auditPapPU"; + // Client Headers. + private static final String ENVIRONMENT_HEADER = "Environment"; + private static final String ADD_GROUP_ERROR = "addGroupError"; + private static final String PERSISTENCE_JDBC_PWD = "javax.persistence.jdbc.password"; + + private static final String REGEX = "[0-9a-zA-Z._ ]*"; + + /* + * List of Admin Console URLs. + * Used to send notifications when configuration changes. + * + * The CopyOnWriteArrayList *should* protect from concurrency errors. + * This list is seldom changed but often read, so the costs of this approach make sense. + */ + private static final CopyOnWriteArrayList<String> adminConsoleURLStringList = new CopyOnWriteArrayList<>(); + + private static String configHome; + private static String actionHome; + /* + * This PAP instance's own URL. + * Need this when creating URLs to send to the PDPs so they can GET the Policy files from this process. + */ + private static String papURL = null; + // The heartbeat thread. + private static Heartbeat heartbeat = null; + private static Thread heartbeatThread = null; + //The entity manager factory for JPA access + private static EntityManagerFactory emf; + private static PolicyDBDao policyDBDao; + /* + * papEngine - This is our engine workhorse that manages the PDP Groups and Nodes. + */ + private static PAPPolicyEngine papEngine = null; + /* + * These are the parameters needed for DB access from the PAP + */ + private static int papIntegrityAuditPeriodSeconds = -1; + private static String papDbDriver = null; + private static String papDbUrl = null; + private static String papDbUser = null; + private static String papDbPassword = null; + private static String papResourceName = null; + private static String[] papDependencyGroupsFlatArray = null; + private static String environment = null; + private static String pdpFile = null; + + private transient IntegrityMonitor im; + private transient IntegrityAudit ia; + + //MicroService Model Properties + private static String msOnapName; + private static String msPolicyName; + /* + * This thread may be invoked upon startup to initiate sending PDP policy/pip configuration when + * this servlet starts. Its configurable by the admin. + */ + private static transient Thread initiateThread = null; + private transient ONAPLoggingContext baseLoggingContext = null; + + /** + * @see HttpServlet#HttpServlet() + */ + public XACMLPapServlet() { + super(); + } + + /** + * @see Servlet#init(ServletConfig) + */ + public void init(ServletConfig config) throws ServletException { + try { + // Logging + baseLoggingContext = new ONAPLoggingContext(); + // fixed data that will be the same in all logging output goes here + try { + String hostname = InetAddress.getLocalHost().getCanonicalHostName(); + baseLoggingContext.setServer(hostname); + } catch (UnknownHostException e) { + LOGGER.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Unable to get hostname for logging", e); + } + // Initialize + XACMLRest.xacmlInit(config); + // Load the properties + XACMLRest.loadXacmlProperties(null, null); + /* + * Retrieve the property values + */ + setCommonProperties(); + String papSiteName = XACMLProperties.getProperty(XACMLRestProperties.PAP_SITE_NAME); + if(papSiteName == null){ + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE,"XACMLPapServlet", " ERROR: Bad papSiteName property entry"); + throw new PAPException("papSiteName is null"); + } + String papNodeType = XACMLProperties.getProperty(XACMLRestProperties.PAP_NODE_TYPE); + if(papNodeType == null){ + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE,"XACMLPapServlet", " ERROR: Bad papNodeType property entry"); + throw new PAPException("papNodeType is null"); + } + //Integer will throw an exception of anything is missing or unrecognized + int papTransWait = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_TRANS_WAIT)); + int papTransTimeout = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_TRANS_TIMEOUT)); + int papAuditTimeout = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_AUDIT_TIMEOUT)); + //Boolean will default to false if anything is missing or unrecognized + boolean papAuditFlag = Boolean.parseBoolean(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_RUN_AUDIT_FLAG)); + boolean papFileSystemAudit = Boolean.parseBoolean(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_AUDIT_FLAG)); + String papDependencyGroups = XACMLProperties.getProperty(XACMLRestProperties.PAP_DEPENDENCY_GROUPS); + if(papDependencyGroups == null){ + throw new PAPException("papDependencyGroups is null"); + } + setPAPDependencyGroups(papDependencyGroups); + //Integer will throw an exception of anything is missing or unrecognized + int fpMonitorInterval = Integer.parseInt(XACMLProperties.getProperty(IntegrityMonitorProperties.FP_MONITOR_INTERVAL)); + int failedCounterThreshold = Integer.parseInt(XACMLProperties.getProperty(IntegrityMonitorProperties.FAILED_COUNTER_THRESHOLD)); + int testTransInterval = Integer.parseInt(XACMLProperties.getProperty(IntegrityMonitorProperties.TEST_TRANS_INTERVAL)); + int writeFpcInterval = Integer.parseInt(XACMLProperties.getProperty(IntegrityMonitorProperties.WRITE_FPC_INTERVAL)); + LOGGER.debug("\n\n\n**************************************" + + "\n*************************************" + + "\n" + + "\n papDbDriver = " + papDbDriver + + "\n papDbUrl = " + papDbUrl + + "\n papDbUser = " + papDbUser + + "\n papTransWait = " + papTransWait + + "\n papTransTimeout = " + papTransTimeout + + "\n papAuditTimeout = " + papAuditTimeout + + "\n papAuditFlag = " + papAuditFlag + + "\n papFileSystemAudit = " + papFileSystemAudit + + "\n papResourceName = " + papResourceName + + "\n fpMonitorInterval = " + fpMonitorInterval + + "\n failedCounterThreshold = " + failedCounterThreshold + + "\n testTransInterval = " + testTransInterval + + "\n writeFpcInterval = " + writeFpcInterval + + "\n papSiteName = " + papSiteName + + "\n papNodeType = " + papNodeType + + "\n papDependencyGroupsList = " + papDependencyGroups + + "\n papIntegrityAuditPeriodSeconds = " + papIntegrityAuditPeriodSeconds + + "\n\n*************************************" + + "\n**************************************"); + // Pull custom persistence settings + Properties properties; + try { + properties = XACMLProperties.getProperties(); + LOGGER.debug("\n\n\n**************************************" + + "\n**************************************" + + "\n\n" + + "properties = " + properties + + "\n\n**************************************"); + } catch (IOException e) { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "XACMLPapServlet", " Error loading properties with: " + + "XACMLProperties.getProperties()"); + throw new ServletException(e.getMessage(), e.getCause()); + } + // Create an IntegrityMonitor + if(properties.getProperty(PERSISTENCE_JDBC_PWD) != null ){ + properties.setProperty(PERSISTENCE_JDBC_PWD, CryptoUtils.decryptTxtNoExStr(properties.getProperty(PERSISTENCE_JDBC_PWD, ""))); + } + im = IntegrityMonitor.getInstance(papResourceName,properties); + // Create an IntegrityAudit + ia = new IntegrityAudit(papResourceName, AUDIT_PAP_PERSISTENCE_UNIT, properties); + ia.startAuditThread(); + // Create the entity manager factory + setEMF(properties); + // we are about to call the PDPs and give them their configuration. + // To do that we need to have the URL of this PAP so we can construct the Policy file URLs + setPAPURL(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL)); + //Create the policyDBDao + setPolicyDBDao(); + // Load our PAP engine, first create a factory + ONAPPapEngineFactory factory = ONAPPapEngineFactory.newInstance(XACMLProperties.getProperty(XACMLProperties.PROP_PAP_PAPENGINEFACTORY)); + // The factory knows how to go about creating a PAP Engine + setPAPEngine((PAPPolicyEngine) factory.newEngine()); + PolicyDBDaoTransaction addNewGroup = null; if (((org.onap.policy.xacml.std.pap.StdEngine) papEngine).wasDefaultGroupJustAdded) { try { addNewGroup = policyDBDao.getNewTransaction(); @@ -310,52 +310,52 @@ public class XACMLPapServlet extends HttpServlet implements StdItemSetChangeList } } } - policyDBDao.setPapEngine((PAPPolicyEngine) XACMLPapServlet.papEngine); - if (Boolean.parseBoolean(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_RUN_AUDIT_FLAG))){ - /* - * Auditing the local File System groups to be in sync with the Database - */ - - //get an AuditTransaction to lock out all other transactions - PolicyDBDaoTransaction auditTrans = policyDBDao.getNewAuditTransaction(); - - LOGGER.info("PapServlet: calling auditLocalFileSystem for PDP group audit"); + policyDBDao.setPapEngine((PAPPolicyEngine) XACMLPapServlet.papEngine); + if (Boolean.parseBoolean(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_RUN_AUDIT_FLAG))){ + /* + * Auditing the local File System groups to be in sync with the Database + */ + + //get an AuditTransaction to lock out all other transactions + PolicyDBDaoTransaction auditTrans = policyDBDao.getNewAuditTransaction(); + + LOGGER.info("PapServlet: calling auditLocalFileSystem for PDP group audit"); LOGGER.info("PapServlet: old group is " + papEngine.getDefaultGroup().toString()); - //get the current filesystem group and update from the database if needed + //get the current filesystem group and update from the database if needed StdPDPGroup group = (StdPDPGroup) papEngine.getDefaultGroup(); StdPDPGroup updatedGroup = policyDBDao.auditLocalFileSystem(group); if(updatedGroup!=null) { - papEngine.updateGroup(updatedGroup); + papEngine.updateGroup(updatedGroup); } LOGGER.info("PapServlet: updated group is " + papEngine.getDefaultGroup().toString()); - //release the transaction lock - auditTrans.close(); - } - - // Sanity check for URL. - if (XACMLPapServlet.papURL == null) { - throw new PAPException("The property " + XACMLRestProperties.PROP_PAP_URL + " is not valid: " + XACMLPapServlet.papURL); - } - // Configurable - have the PAP servlet initiate sending the latest PDP policy/pip configuration - // to all its known PDP nodes. - if (Boolean.parseBoolean(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_INITIATE_PDP_CONFIG))) { - startInitiateThreadService(new Thread(this)); - } - // After startup, the PAP does Heartbeat's to each of the PDPs periodically - startHeartBeatService(new Heartbeat((PAPPolicyEngine) XACMLPapServlet.papEngine)); - - } catch (FactoryException | PAPException e) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Failed to create engine"); - throw new ServletException (XACMLErrorConstants.ERROR_SYSTEM_ERROR + "PAP not initialized; error: "+e); - } catch (Exception e) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Failed to create engine - unexpected error"); - throw new ServletException (XACMLErrorConstants.ERROR_SYSTEM_ERROR + "PAP not initialized; unexpected error: "+e); - } - } - - private static void startInitiateThreadService(Thread thread) { - initiateThread = thread; + //release the transaction lock + auditTrans.close(); + } + + // Sanity check for URL. + if (XACMLPapServlet.papURL == null) { + throw new PAPException("The property " + XACMLRestProperties.PROP_PAP_URL + " is not valid: " + XACMLPapServlet.papURL); + } + // Configurable - have the PAP servlet initiate sending the latest PDP policy/pip configuration + // to all its known PDP nodes. + if (Boolean.parseBoolean(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_INITIATE_PDP_CONFIG))) { + startInitiateThreadService(new Thread(this)); + } + // After startup, the PAP does Heartbeat's to each of the PDPs periodically + startHeartBeatService(new Heartbeat((PAPPolicyEngine) XACMLPapServlet.papEngine)); + + } catch (FactoryException | PAPException e) { + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Failed to create engine"); + throw new ServletException (XACMLErrorConstants.ERROR_SYSTEM_ERROR + "PAP not initialized; error: "+e); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Failed to create engine - unexpected error"); + throw new ServletException (XACMLErrorConstants.ERROR_SYSTEM_ERROR + "PAP not initialized; unexpected error: "+e); + } + } + + private static void startInitiateThreadService(Thread thread) { + initiateThread = thread; initiateThread.start(); } @@ -368,13 +368,13 @@ public class XACMLPapServlet extends HttpServlet implements StdItemSetChangeList } private static void startHeartBeatService(Heartbeat heartbeat) { - XACMLPapServlet.heartbeat = heartbeat; + XACMLPapServlet.heartbeat = heartbeat; XACMLPapServlet.heartbeatThread = new Thread(XACMLPapServlet.heartbeat); XACMLPapServlet.heartbeatThread.start(); } private static void setPolicyDBDao() throws ServletException { - try { + try { policyDBDao = PolicyDBDao.getPolicyDBDaoInstance(getEmf()); } catch (Exception e) { throw new ServletException("Unable to Create Policy DBDao Instance",e); @@ -382,7 +382,7 @@ public class XACMLPapServlet extends HttpServlet implements StdItemSetChangeList } private static void setEMF(Properties properties) throws ServletException { - emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT, properties); + emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT, properties); if (emf == null) { PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Error creating entity manager factory with persistence unit: " + PERSISTENCE_UNIT); @@ -391,15 +391,15 @@ public class XACMLPapServlet extends HttpServlet implements StdItemSetChangeList } private static void setPAPURL(String papURL) { - XACMLPapServlet.papURL = papURL; + XACMLPapServlet.papURL = papURL; } private static void setPAPEngine(PAPPolicyEngine newEngine) { - XACMLPapServlet.papEngine = newEngine; + XACMLPapServlet.papEngine = newEngine; } private static void setPAPDependencyGroups(String papDependencyGroups) throws PAPException { - try{ + try{ //Now we have flattened the array into a simple comma-separated list papDependencyGroupsFlatArray = papDependencyGroups.split("[;,]"); //clean up the entries @@ -423,7 +423,7 @@ public class XACMLPapServlet extends HttpServlet implements StdItemSetChangeList } private static void setCommonProperties() throws PAPException { - setConfigHome(); + setConfigHome(); setActionHome(); papDbDriver = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_DB_DRIVER); if(papDbDriver == null){ @@ -470,1686 +470,1686 @@ public class XACMLPapServlet extends HttpServlet implements StdItemSetChangeList } /** - * Thread used only during PAP startup to initiate change messages to all known PDPs. - * This must be on a separate thread so that any GET requests from the PDPs during this update can be serviced. - */ - @Override - public void run() { - // send the current configuration to all the PDPs that we know about - changed(); - } - - /** - * @see Servlet#destroy() - * - * Depending on how this servlet is run, we may or may not care about cleaning up the resources. - * For now we assume that we do care. - */ - @Override - public void destroy() { - // Make sure our threads are destroyed - if (XACMLPapServlet.heartbeatThread != null) { - // stop the heartbeat - try { - if (XACMLPapServlet.heartbeat != null) { - XACMLPapServlet.heartbeat.terminate(); - } - XACMLPapServlet.heartbeatThread.interrupt(); - XACMLPapServlet.heartbeatThread.join(); - } catch (InterruptedException e) { - XACMLPapServlet.heartbeatThread.interrupt(); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Error stopping heartbeat"); - } - } - if (initiateThread != null) { - try { - initiateThread.interrupt(); - initiateThread.join(); - } catch (InterruptedException e) { - initiateThread.interrupt(); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Error stopping thread"); - } - } - } - - /** - * Called by: - * - PDP nodes to register themselves with the PAP, and - * - Admin Console to make changes in the PDP Groups. - * - * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) - */ - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - ONAPLoggingContext loggingContext = ONAPLoggingUtils.getLoggingContextForRequest(request, baseLoggingContext); - loggingContext.transactionStarted(); - loggingContext.setServiceName("PAP.post"); - if ((loggingContext.getRequestID() == null) || (loggingContext.getRequestID() == "")){ - UUID requestID = UUID.randomUUID(); - loggingContext.setRequestID(requestID.toString()); - PolicyLogger.info("requestID not provided in call to XACMLPapSrvlet (doPost) so we generated one"); - } else { - PolicyLogger.info("requestID was provided in call to XACMLPapSrvlet (doPost)"); - } - PolicyDBDaoTransaction pdpTransaction = null; - loggingContext.metricStarted(); - try { - im.startTransaction(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doPost im startTransaction"); - } catch (AdministrativeStateException ae){ - String message = "POST interface called for PAP " + papResourceName + " but it has an Administrative" - + " state of " + im.getStateManager().getAdminState() - + "\n Exception Message: " + PolicyUtils.CATCH_EXCEPTION; - LOGGER.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message, ae); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doPost im startTransaction"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - return; - }catch (StandbyStatusException se) { - String message = "POST interface called for PAP " + papResourceName + " but it has a Standby Status" - + " of " + im.getStateManager().getStandbyStatus() - + "\n Exception Message: " + se.getMessage(); - LOGGER.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message, se); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doPost im startTransaction"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - return; - } catch (IntegrityMonitorException e) { - String message = "POST interface called for PAP " + papResourceName + " but an exception occurred" - + "\n Exception Message: " + e.getMessage(); - LOGGER.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message, e); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doPost im startTransaction"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - return; - } - try { - loggingContext.metricStarted(); - XACMLRest.dumpRequest(request); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doPost dumpRequest"); - // since getParameter reads the content string, explicitly get the content before doing that. - // Simply getting the inputStream seems to protect it against being consumed by getParameter. - request.getInputStream(); - String groupId = request.getParameter("groupId"); - String apiflag = request.getParameter("apiflag"); - if(groupId != null) { - // Is this from the Admin Console or API? - if(apiflag!=null && apiflag.equalsIgnoreCase("api")) { - // this is from the API so we need to check the client credentials before processing the request - if(!authorizeRequest(request)){ - String message = "PEP not Authorized for making this Request!!"; - PolicyLogger.error(MessageCodes.ERROR_PERMISSIONS + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_FORBIDDEN, message); - im.endTransaction(); - return; - } - } - loggingContext.metricStarted(); - doACPost(request, response, groupId, loggingContext); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doPost doACPost"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Ended Successfully"); - im.endTransaction(); - return; - } - // Request is from a PDP asking for its config. - loggingContext.setServiceName("PDP:PAP.register"); - // Get the PDP's ID - String id = this.getPDPID(request); - String jmxport = this.getPDPJMX(request); - LOGGER.info("Request(doPost) from PDP coming up: " + id); - // Get the PDP Object - OnapPDP pdp = XACMLPapServlet.papEngine.getPDP(id); - // Is it known? - if (pdp == null) { - LOGGER.info("Unknown PDP: " + id); - // Check PDP ID - if(CheckPDP.validateID(id)){ - pdpTransaction = policyDBDao.getNewTransaction(); - try { - pdpTransaction.addPdpToGroup(id, XACMLPapServlet.papEngine.getDefaultGroup().getId(), id, "Registered on first startup", Integer.parseInt(jmxport), "PDP autoregister"); - XACMLPapServlet.papEngine.newPDP(id, XACMLPapServlet.papEngine.getDefaultGroup(), id, "Registered on first startup", Integer.parseInt(jmxport)); - } catch (NullPointerException | PAPException | IllegalArgumentException | IllegalStateException | PersistenceException | PolicyDBException e) { - pdpTransaction.rollbackTransaction(); - String message = "Failed to create new PDP for id: " + id; - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); - im.endTransaction(); - return; - } - // get the PDP we just created - try{ - pdp = XACMLPapServlet.papEngine.getPDP(id); - }catch(PAPException e){ - LOGGER.error(e); - } - if (pdp == null) { - if(pdpTransaction != null){ - pdpTransaction.rollbackTransaction(); - } - String message = "Failed to create new PDP for id: " + id; - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - im.endTransaction(); - return; - } - } else { - String message = "PDP is Unauthorized to Connect to PAP: "+ id; - loggingContext.transactionEnded(); - PolicyLogger.error(MessageCodes.ERROR_PERMISSIONS + " " + message); - setResponseError(response, HttpServletResponse.SC_UNAUTHORIZED, "PDP not Authorized to connect to this PAP. Please contact the PAP Admin for registration."); - PolicyLogger.audit("Transaction Failed - See Error.log"); - im.endTransaction(); - return; - } - try{ - loggingContext.metricStarted(); - pdpTransaction.commitTransaction(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doPost commitTransaction"); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", "Could not commit transaction to put pdp in the database"); - } - } - if (jmxport != null && jmxport != ""){ - try{ - ((StdPDP) pdp).setJmxPort(Integer.valueOf(jmxport)); - }catch(NumberFormatException e){ - LOGGER.error(e); - } - } - // Get the PDP's Group - OnapPDPGroup group =null; - try{ - group= XACMLPapServlet.papEngine.getPDPGroup((OnapPDP) pdp); - }catch(PAPException e){ - LOGGER.error(e); - } - if (group == null) { - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW + " PDP not associated with any group, even the default"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response, HttpServletResponse.SC_UNAUTHORIZED, "PDP not associated with any group, even the default"); - im.endTransaction(); - return; - } - // Determine what group the PDP node is in and get - // its policy/pip properties. - Properties policies = group.getPolicyProperties(); - Properties pipconfig = group.getPipConfigProperties(); - // Get the current policy/pip configuration that the PDP has - Properties pdpProperties = new Properties(); - try{ - pdpProperties.load(request.getInputStream()); - }catch(IOException e){ - LOGGER.error(e); - } - LOGGER.info("PDP Current Properties: " + pdpProperties.toString()); - LOGGER.info("Policies: " + (policies != null ? policies.toString() : "null")); - LOGGER.info("Pip config: " + (pipconfig != null ? pipconfig.toString() : "null")); - // Validate the node's properties - boolean isCurrent = this.isPDPCurrent(policies, pipconfig, pdpProperties); - // Send back current configuration - if (isCurrent == false) { - // Tell the PDP we are sending back the current policies/pip config - LOGGER.info("PDP configuration NOT current."); - if (policies != null) { - // Put URL's into the properties in case the PDP needs to - // retrieve them. - this.populatePolicyURL(request.getRequestURL(), policies); - // Copy the properties to the output stream - try{ - policies.store(response.getOutputStream(), ""); - }catch(IOException e){ - LOGGER.error(e); - } - } - if (pipconfig != null) { - // Copy the properties to the output stream - try{ - pipconfig.store(response.getOutputStream(), ""); - }catch(IOException e){ - LOGGER.error(e); - } - } - // We are good - and we are sending them information - response.setStatus(HttpServletResponse.SC_OK); - try{ - setPDPSummaryStatus(pdp, PDPStatus.Status.OUT_OF_SYNCH); - }catch(PAPException e){ - LOGGER.error(e); - } - } else { - // Tell them they are good - response.setStatus(HttpServletResponse.SC_NO_CONTENT); - try{ - setPDPSummaryStatus(pdp, PDPStatus.Status.UP_TO_DATE); - }catch(PAPException e){ - LOGGER.error(e); - } - } - // tell the AC that something changed - loggingContext.metricStarted(); - notifyAC(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doPost notifyAC"); - loggingContext.transactionEnded(); - auditLogger.info("Success"); - PolicyLogger.audit("Transaction Ended Successfully"); - } catch (PAPException | IOException | NumberFormatException e) { - if(pdpTransaction != null){ - pdpTransaction.rollbackTransaction(); - } - LOGGER.debug(XACMLErrorConstants.ERROR_PROCESS_FLOW + "POST exception: " + e, e); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); - im.endTransaction(); - return; - } - //Catch anything that fell through - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Ended"); - im.endTransaction(); - } - - private void setResponseError(HttpServletResponse response,int responseCode, String message) { - try { - if(message != null && !message.isEmpty()){ - response.sendError(responseCode, message); - } + * Thread used only during PAP startup to initiate change messages to all known PDPs. + * This must be on a separate thread so that any GET requests from the PDPs during this update can be serviced. + */ + @Override + public void run() { + // send the current configuration to all the PDPs that we know about + changed(); + } + + /** + * @see Servlet#destroy() + * + * Depending on how this servlet is run, we may or may not care about cleaning up the resources. + * For now we assume that we do care. + */ + @Override + public void destroy() { + // Make sure our threads are destroyed + if (XACMLPapServlet.heartbeatThread != null) { + // stop the heartbeat + try { + if (XACMLPapServlet.heartbeat != null) { + XACMLPapServlet.heartbeat.terminate(); + } + XACMLPapServlet.heartbeatThread.interrupt(); + XACMLPapServlet.heartbeatThread.join(); + } catch (InterruptedException e) { + XACMLPapServlet.heartbeatThread.interrupt(); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Error stopping heartbeat"); + } + } + if (initiateThread != null) { + try { + initiateThread.interrupt(); + initiateThread.join(); + } catch (InterruptedException e) { + initiateThread.interrupt(); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Error stopping thread"); + } + } + } + + /** + * Called by: + * - PDP nodes to register themselves with the PAP, and + * - Admin Console to make changes in the PDP Groups. + * + * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) + */ + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + ONAPLoggingContext loggingContext = ONAPLoggingUtils.getLoggingContextForRequest(request, baseLoggingContext); + loggingContext.transactionStarted(); + loggingContext.setServiceName("PAP.post"); + if ((loggingContext.getRequestID() == null) || (loggingContext.getRequestID() == "")){ + UUID requestID = UUID.randomUUID(); + loggingContext.setRequestID(requestID.toString()); + PolicyLogger.info("requestID not provided in call to XACMLPapSrvlet (doPost) so we generated one"); + } else { + PolicyLogger.info("requestID was provided in call to XACMLPapSrvlet (doPost)"); + } + PolicyDBDaoTransaction pdpTransaction = null; + loggingContext.metricStarted(); + try { + im.startTransaction(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doPost im startTransaction"); + } catch (AdministrativeStateException ae){ + String message = "POST interface called for PAP " + papResourceName + " but it has an Administrative" + + " state of " + im.getStateManager().getAdminState() + + "\n Exception Message: " + PolicyUtils.CATCH_EXCEPTION; + LOGGER.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message, ae); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doPost im startTransaction"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); + return; + }catch (StandbyStatusException se) { + String message = "POST interface called for PAP " + papResourceName + " but it has a Standby Status" + + " of " + im.getStateManager().getStandbyStatus() + + "\n Exception Message: " + se.getMessage(); + LOGGER.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message, se); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doPost im startTransaction"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); + return; + } catch (IntegrityMonitorException e) { + String message = "POST interface called for PAP " + papResourceName + " but an exception occurred" + + "\n Exception Message: " + e.getMessage(); + LOGGER.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message, e); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doPost im startTransaction"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); + return; + } + try { + loggingContext.metricStarted(); + XACMLRest.dumpRequest(request); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doPost dumpRequest"); + // since getParameter reads the content string, explicitly get the content before doing that. + // Simply getting the inputStream seems to protect it against being consumed by getParameter. + request.getInputStream(); + String groupId = request.getParameter("groupId"); + String apiflag = request.getParameter("apiflag"); + if(groupId != null) { + // Is this from the Admin Console or API? + if(apiflag!=null && apiflag.equalsIgnoreCase("api")) { + // this is from the API so we need to check the client credentials before processing the request + if(!authorizeRequest(request)){ + String message = "PEP not Authorized for making this Request!!"; + PolicyLogger.error(MessageCodes.ERROR_PERMISSIONS + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_FORBIDDEN, message); + im.endTransaction(); + return; + } + } + loggingContext.metricStarted(); + doACPost(request, response, groupId, loggingContext); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doPost doACPost"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Ended Successfully"); + im.endTransaction(); + return; + } + // Request is from a PDP asking for its config. + loggingContext.setServiceName("PDP:PAP.register"); + // Get the PDP's ID + String id = this.getPDPID(request); + String jmxport = this.getPDPJMX(request); + LOGGER.info("Request(doPost) from PDP coming up: " + id); + // Get the PDP Object + OnapPDP pdp = XACMLPapServlet.papEngine.getPDP(id); + // Is it known? + if (pdp == null) { + LOGGER.info("Unknown PDP: " + id); + // Check PDP ID + if(CheckPDP.validateID(id)){ + pdpTransaction = policyDBDao.getNewTransaction(); + try { + pdpTransaction.addPdpToGroup(id, XACMLPapServlet.papEngine.getDefaultGroup().getId(), id, "Registered on first startup", Integer.parseInt(jmxport), "PDP autoregister"); + XACMLPapServlet.papEngine.newPDP(id, XACMLPapServlet.papEngine.getDefaultGroup(), id, "Registered on first startup", Integer.parseInt(jmxport)); + } catch (NullPointerException | PAPException | IllegalArgumentException | IllegalStateException | PersistenceException | PolicyDBException e) { + pdpTransaction.rollbackTransaction(); + String message = "Failed to create new PDP for id: " + id; + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); + im.endTransaction(); + return; + } + // get the PDP we just created + try{ + pdp = XACMLPapServlet.papEngine.getPDP(id); + }catch(PAPException e){ + LOGGER.error(e); + } + if (pdp == null) { + if(pdpTransaction != null){ + pdpTransaction.rollbackTransaction(); + } + String message = "Failed to create new PDP for id: " + id; + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); + im.endTransaction(); + return; + } + } else { + String message = "PDP is Unauthorized to Connect to PAP: "+ id; + loggingContext.transactionEnded(); + PolicyLogger.error(MessageCodes.ERROR_PERMISSIONS + " " + message); + setResponseError(response, HttpServletResponse.SC_UNAUTHORIZED, "PDP not Authorized to connect to this PAP. Please contact the PAP Admin for registration."); + PolicyLogger.audit("Transaction Failed - See Error.log"); + im.endTransaction(); + return; + } + try{ + loggingContext.metricStarted(); + pdpTransaction.commitTransaction(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doPost commitTransaction"); + } catch(Exception e){ + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", "Could not commit transaction to put pdp in the database"); + } + } + if (jmxport != null && jmxport != ""){ + try{ + ((StdPDP) pdp).setJmxPort(Integer.valueOf(jmxport)); + }catch(NumberFormatException e){ + LOGGER.error(e); + } + } + // Get the PDP's Group + OnapPDPGroup group =null; + try{ + group= XACMLPapServlet.papEngine.getPDPGroup((OnapPDP) pdp); + }catch(PAPException e){ + LOGGER.error(e); + } + if (group == null) { + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW + " PDP not associated with any group, even the default"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response, HttpServletResponse.SC_UNAUTHORIZED, "PDP not associated with any group, even the default"); + im.endTransaction(); + return; + } + // Determine what group the PDP node is in and get + // its policy/pip properties. + Properties policies = group.getPolicyProperties(); + Properties pipconfig = group.getPipConfigProperties(); + // Get the current policy/pip configuration that the PDP has + Properties pdpProperties = new Properties(); + try{ + pdpProperties.load(request.getInputStream()); + }catch(IOException e){ + LOGGER.error(e); + } + LOGGER.info("PDP Current Properties: " + pdpProperties.toString()); + LOGGER.info("Policies: " + (policies != null ? policies.toString() : "null")); + LOGGER.info("Pip config: " + (pipconfig != null ? pipconfig.toString() : "null")); + // Validate the node's properties + boolean isCurrent = this.isPDPCurrent(policies, pipconfig, pdpProperties); + // Send back current configuration + if (isCurrent == false) { + // Tell the PDP we are sending back the current policies/pip config + LOGGER.info("PDP configuration NOT current."); + if (policies != null) { + // Put URL's into the properties in case the PDP needs to + // retrieve them. + this.populatePolicyURL(request.getRequestURL(), policies); + // Copy the properties to the output stream + try{ + policies.store(response.getOutputStream(), ""); + }catch(IOException e){ + LOGGER.error(e); + } + } + if (pipconfig != null) { + // Copy the properties to the output stream + try{ + pipconfig.store(response.getOutputStream(), ""); + }catch(IOException e){ + LOGGER.error(e); + } + } + // We are good - and we are sending them information + response.setStatus(HttpServletResponse.SC_OK); + try{ + setPDPSummaryStatus(pdp, PDPStatus.Status.OUT_OF_SYNCH); + }catch(PAPException e){ + LOGGER.error(e); + } + } else { + // Tell them they are good + response.setStatus(HttpServletResponse.SC_NO_CONTENT); + try{ + setPDPSummaryStatus(pdp, PDPStatus.Status.UP_TO_DATE); + }catch(PAPException e){ + LOGGER.error(e); + } + } + // tell the AC that something changed + loggingContext.metricStarted(); + notifyAC(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doPost notifyAC"); + loggingContext.transactionEnded(); + auditLogger.info("Success"); + PolicyLogger.audit("Transaction Ended Successfully"); + } catch (PAPException | IOException | NumberFormatException e) { + if(pdpTransaction != null){ + pdpTransaction.rollbackTransaction(); + } + LOGGER.debug(XACMLErrorConstants.ERROR_PROCESS_FLOW + "POST exception: " + e, e); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); + im.endTransaction(); + return; + } + //Catch anything that fell through + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Ended"); + im.endTransaction(); + } + + private void setResponseError(HttpServletResponse response,int responseCode, String message) { + try { + if(message != null && !message.isEmpty()){ + response.sendError(responseCode, message); + } } catch (IOException e) { LOGGER.error("Error setting Error response Header ", e); } - return; + return; } /** - * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) - */ - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - ONAPLoggingContext loggingContext = ONAPLoggingUtils.getLoggingContextForRequest(request, baseLoggingContext); - loggingContext.transactionStarted(); - loggingContext.setServiceName("PAP.get"); - if ((loggingContext.getRequestID() == null) || (loggingContext.getRequestID() == "")){ - UUID requestID = UUID.randomUUID(); - loggingContext.setRequestID(requestID.toString()); - PolicyLogger.info("requestID not provided in call to XACMLPapSrvlet (doGet) so we generated one"); - } else { - PolicyLogger.info("requestID was provided in call to XACMLPapSrvlet (doGet)"); - } - loggingContext.metricStarted(); - XACMLRest.dumpRequest(request); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doGet dumpRequest"); - String pathInfo = request.getRequestURI(); - LOGGER.info("path info: " + pathInfo); - if (pathInfo != null){ - //DO NOT do a im.startTransaction for the test request - if (pathInfo.equals("/pap/test")) { - try { - testService(loggingContext, response); - } catch (IOException e) { - LOGGER.debug(e); - } - return; - } - } - //This im.startTransaction() covers all other Get transactions - try { - loggingContext.metricStarted(); - im.startTransaction(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doGet im startTransaction"); - } catch (AdministrativeStateException ae){ - String message = "GET interface called for PAP " + papResourceName + " but it has an Administrative" - + " state of " + im.getStateManager().getAdminState() - + "\n Exception Message: " + ae.getMessage(); - LOGGER.info(message, ae); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - return; - }catch (StandbyStatusException se) { - String message = "GET interface called for PAP " + papResourceName + " but it has a Standby Status" - + " of " + im.getStateManager().getStandbyStatus() - + "\n Exception Message: " + se.getMessage(); - LOGGER.info(message, se); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - return; - } catch (IntegrityMonitorException e) { - String message = "GET interface called for PAP " + papResourceName + " but an exception occurred" - + "\n Exception Message: " + e.getMessage(); - LOGGER.info(message, e); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - return; - } - // Request from the API to get the gitPath - String apiflag = request.getParameter("apiflag"); - if (apiflag!=null) { - if(authorizeRequest(request)){ - APIRequestHandler apiRequestHandler = new APIRequestHandler(); - try{ - loggingContext.metricStarted(); - apiRequestHandler.doGet(request,response, apiflag); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doGet apiRequestHandler doGet"); - }catch(IOException e){ - LOGGER.error(e); - } - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Ended Successfully"); - im.endTransaction(); - return; - } else { - String message = "PEP not Authorized for making this Request!! \n Contact Administrator for this Scope. "; - PolicyLogger.error(MessageCodes.ERROR_PERMISSIONS + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response, HttpServletResponse.SC_FORBIDDEN, message); - im.endTransaction(); - return; - } - } - // Is this from the Admin Console? - String groupId = request.getParameter("groupId"); - if (groupId != null) { - // this is from the Admin Console, so handle separately - try{ - loggingContext.metricStarted(); - doACGet(request, response, groupId, loggingContext); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doGet doACGet"); - } catch(IOException e){ + * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) + */ + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + ONAPLoggingContext loggingContext = ONAPLoggingUtils.getLoggingContextForRequest(request, baseLoggingContext); + loggingContext.transactionStarted(); + loggingContext.setServiceName("PAP.get"); + if ((loggingContext.getRequestID() == null) || (loggingContext.getRequestID() == "")){ + UUID requestID = UUID.randomUUID(); + loggingContext.setRequestID(requestID.toString()); + PolicyLogger.info("requestID not provided in call to XACMLPapSrvlet (doGet) so we generated one"); + } else { + PolicyLogger.info("requestID was provided in call to XACMLPapSrvlet (doGet)"); + } + loggingContext.metricStarted(); + XACMLRest.dumpRequest(request); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doGet dumpRequest"); + String pathInfo = request.getRequestURI(); + LOGGER.info("path info: " + pathInfo); + if (pathInfo != null){ + //DO NOT do a im.startTransaction for the test request + if (pathInfo.equals("/pap/test")) { + try { + testService(loggingContext, response); + } catch (IOException e) { + LOGGER.debug(e); + } + return; + } + } + //This im.startTransaction() covers all other Get transactions + try { + loggingContext.metricStarted(); + im.startTransaction(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doGet im startTransaction"); + } catch (AdministrativeStateException ae){ + String message = "GET interface called for PAP " + papResourceName + " but it has an Administrative" + + " state of " + im.getStateManager().getAdminState() + + "\n Exception Message: " + ae.getMessage(); + LOGGER.info(message, ae); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); + return; + }catch (StandbyStatusException se) { + String message = "GET interface called for PAP " + papResourceName + " but it has a Standby Status" + + " of " + im.getStateManager().getStandbyStatus() + + "\n Exception Message: " + se.getMessage(); + LOGGER.info(message, se); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); + return; + } catch (IntegrityMonitorException e) { + String message = "GET interface called for PAP " + papResourceName + " but an exception occurred" + + "\n Exception Message: " + e.getMessage(); + LOGGER.info(message, e); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); + return; + } + // Request from the API to get the gitPath + String apiflag = request.getParameter("apiflag"); + if (apiflag!=null) { + if(authorizeRequest(request)){ + APIRequestHandler apiRequestHandler = new APIRequestHandler(); + try{ + loggingContext.metricStarted(); + apiRequestHandler.doGet(request,response, apiflag); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doGet apiRequestHandler doGet"); + }catch(IOException e){ + LOGGER.error(e); + } + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Ended Successfully"); + im.endTransaction(); + return; + } else { + String message = "PEP not Authorized for making this Request!! \n Contact Administrator for this Scope. "; + PolicyLogger.error(MessageCodes.ERROR_PERMISSIONS + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response, HttpServletResponse.SC_FORBIDDEN, message); + im.endTransaction(); + return; + } + } + // Is this from the Admin Console? + String groupId = request.getParameter("groupId"); + if (groupId != null) { + // this is from the Admin Console, so handle separately + try{ + loggingContext.metricStarted(); + doACGet(request, response, groupId, loggingContext); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doGet doACGet"); + } catch(IOException e){ LOGGER.error(e); } - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Ended Successfully"); - im.endTransaction(); - return; - } - // Get the PDP's ID - String id = this.getPDPID(request); - LOGGER.info("doGet from: " + id); - // Get the PDP Object - OnapPDP pdp = null; - try{ - pdp = XACMLPapServlet.papEngine.getPDP(id); - }catch(PAPException e){ - LOGGER.error(e); - } - // Is it known? - if (pdp == null) { - // Check if request came from localhost - if (request.getRemoteHost().equals("localhost") || - request.getRemoteHost().equals(request.getLocalAddr())) { - // Return status information - basically all the groups - loggingContext.setServiceName("PAP.getGroups"); - Set<OnapPDPGroup> groups = null; - try { - groups = papEngine.getOnapPDPGroups(); - } catch(PAPException e) { - LOGGER.debug(e); - PolicyLogger.error(MessageCodes.ERROR_UNKNOWN, e, "XACMLPapServlet", " GET exception"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); - im.endTransaction(); - return; - } - // convert response object to JSON and include in the response - mapperWriteValue(new ObjectMapper(), response, groups); - response.setHeader("content-type", "application/json"); - response.setStatus(HttpServletResponse.SC_OK); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Ended Successfully"); - im.endTransaction(); - return; - } - String message = "Unknown PDP: " + id + " from " + request.getRemoteHost() + " us: " + request.getLocalAddr(); - PolicyLogger.error(MessageCodes.ERROR_PERMISSIONS + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response, HttpServletResponse.SC_UNAUTHORIZED, message); - im.endTransaction(); - return; - } - loggingContext.setServiceName("PAP.getPolicy"); - // Get the PDP's Group - OnapPDPGroup group = null; - try { - group = XACMLPapServlet.papEngine.getPDPGroup((OnapPDP) pdp); - } catch (PAPException e) { - LOGGER.error(e); - } - if (group == null) { - String message = "No group associated with pdp " + pdp.getId(); - LOGGER.warn(XACMLErrorConstants.ERROR_PERMISSIONS + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response, HttpServletResponse.SC_UNAUTHORIZED, message); - im.endTransaction(); - return; - } - // Which policy do they want? - String policyId = request.getParameter("id"); - if (policyId == null) { - String message = "Did not specify an id for the policy"; - LOGGER.warn(XACMLErrorConstants.ERROR_DATA_ISSUE + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_NOT_FOUND, message); - im.endTransaction(); - return; - } - PDPPolicy policy = group.getPolicy(policyId); - if (policy == null) { - String message = "Unknown policy: " + policyId; - LOGGER.warn(XACMLErrorConstants.ERROR_DATA_ISSUE + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_NOT_FOUND, message); - im.endTransaction(); - return; - } - try{ - LOGGER.warn("PolicyDebugging: Policy Validity: " + policy.isValid() + "\n " - + "Policy Name : " + policy.getName() + "\n Policy URI: " + policy.getLocation().toString()); - } catch (PAPException| IOException e){ - LOGGER.error(e); - } - try (InputStream is = new FileInputStream(((StdPDPGroup)group).getDirectory().toString()+File.separator+policyId); OutputStream os = response.getOutputStream()) { - // Send the policy back - IOUtils.copy(is, os); - response.setStatus(HttpServletResponse.SC_OK); - loggingContext.transactionEnded(); - auditLogger.info("Success"); - PolicyLogger.audit("Transaction Ended Successfully"); - } catch (IOException e) { - String message = "Failed to open policy id " + policyId; - LOGGER.debug(e); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_NOT_FOUND, message); - } - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Ended"); - im.endTransaction(); - } - - /** - * @see HttpServlet#doPut(HttpServletRequest request, HttpServletResponse response) - */ - protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - ONAPLoggingContext loggingContext = ONAPLoggingUtils.getLoggingContextForRequest(request, baseLoggingContext); - loggingContext.transactionStarted(); - loggingContext.setServiceName("PAP.put"); - if ((loggingContext.getRequestID() == null) || (loggingContext.getRequestID() == "")){ - UUID requestID = UUID.randomUUID(); - loggingContext.setRequestID(requestID.toString()); - PolicyLogger.info("requestID not provided in call to XACMLPapSrvlet (doPut) so we generated one"); - } else { - PolicyLogger.info("requestID was provided in call to XACMLPapSrvlet (doPut)"); - } - try { - loggingContext.metricStarted(); - im.startTransaction(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doPut im startTransaction"); - } catch (IntegrityMonitorException e) { - String message = "PUT interface called for PAP " + papResourceName; - if (e instanceof AdministrativeStateException) { - message += " but it has an Administrative state of " - + im.getStateManager().getAdminState(); - } else if (e instanceof StandbyStatusException) { - message += " but it has a Standby Status of " - + im.getStateManager().getStandbyStatus(); - } else { - message += " but an exception occurred"; - - } - message += "\n Exception Message: " + e.getMessage(); - - LOGGER.info(message, e); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - return; - } - - loggingContext.metricStarted(); - XACMLRest.dumpRequest(request); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doPut dumpRequest"); - //need to check if request is from the API or Admin console - String apiflag = request.getParameter("apiflag"); - //This would occur if a PolicyDBDao notification was received - String policyDBDaoRequestUrl = request.getParameter("policydbdaourl"); - if(policyDBDaoRequestUrl != null){ - LOGGER.info("XACMLPapServlet: PolicyDBDao Notification received." ); - String policyDBDaoRequestEntityId = request.getParameter("entityid"); - String policyDBDaoRequestEntityType = request.getParameter("entitytype"); - String policyDBDaoRequestExtraData = request.getParameter("extradata"); - if(policyDBDaoRequestEntityId == null || policyDBDaoRequestEntityType == null){ - setResponseError(response,400, "entityid or entitytype not supplied"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Ended Successfully"); - im.endTransaction(); - return; - } - loggingContext.metricStarted(); - LOGGER.info("XACMLPapServlet: Calling PolicyDBDao to handlIncomingHttpNotification"); - policyDBDao.handleIncomingHttpNotification(policyDBDaoRequestUrl,policyDBDaoRequestEntityId,policyDBDaoRequestEntityType,policyDBDaoRequestExtraData,this); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doPut handle incoming http notification"); - response.setStatus(200); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Ended Successfully"); - im.endTransaction(); - return; - } - /* - * Request for ImportService - */ - String importService = request.getParameter("importService"); - if (importService != null) { - if(authorizeRequest(request)){ - APIRequestHandler apiRequestHandler = new APIRequestHandler(); - try{ - loggingContext.metricStarted(); - apiRequestHandler.doPut(request, response, importService); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doPut apiRequestHandler doPut"); - }catch(IOException e){ - LOGGER.error(e); - } - im.endTransaction(); - return; - } else { - String message = "PEP not Authorized for making this Request!! \n Contact Administrator for this Scope. "; - LOGGER.error(XACMLErrorConstants.ERROR_PERMISSIONS + message ); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_FORBIDDEN, message); - return; - } - } - // - // See if this is Admin Console registering itself with us - // - String acURLString = request.getParameter("adminConsoleURL"); - if (acURLString != null) { - loggingContext.setServiceName("AC:PAP.register"); - // remember this Admin Console for future updates - if ( ! adminConsoleURLStringList.contains(acURLString)) { - adminConsoleURLStringList.add(acURLString); - } - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("Admin Console registering with URL: " + acURLString); - } - response.setStatus(HttpServletResponse.SC_NO_CONTENT); - loggingContext.transactionEnded(); - auditLogger.info("Success"); - PolicyLogger.audit("Transaction Ended Successfully"); - im.endTransaction(); - return; - } - /* - * This is to update the PDP Group with the policy/policies being pushed - * Part of a 2 step process to push policies to the PDP that can now be done - * From both the Admin Console and the PolicyEngine API - */ - String groupId = request.getParameter("groupId"); - if (groupId != null) { - if(apiflag!=null){ - if(!authorizeRequest(request)){ - String message = "PEP not Authorized for making this Request!! \n Contact Administrator for this Scope. "; - PolicyLogger.error(MessageCodes.ERROR_PERMISSIONS + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_FORBIDDEN, message); - return; - } - if(apiflag.equalsIgnoreCase("addPolicyToGroup")){ - try{ - updateGroupsFromAPI(request, response, groupId, loggingContext); - }catch(IOException e){ - LOGGER.error(e); - } - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Ended Successfully"); - im.endTransaction(); - return; - } - } - // this is from the Admin Console, so handle separately - try { - loggingContext.metricEnded(); - doACPut(request, response, groupId, loggingContext); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet goPut doACPut"); - } catch (IOException e) { + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Ended Successfully"); + im.endTransaction(); + return; + } + // Get the PDP's ID + String id = this.getPDPID(request); + LOGGER.info("doGet from: " + id); + // Get the PDP Object + OnapPDP pdp = null; + try{ + pdp = XACMLPapServlet.papEngine.getPDP(id); + }catch(PAPException e){ LOGGER.error(e); } - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Ended Successfully"); - im.endTransaction(); - return; - } - // - // Request is for policy validation and creation - // - if (apiflag != null && apiflag.equalsIgnoreCase("admin")){ - // this request is from the Admin Console - SavePolicyHandler savePolicyHandler = SavePolicyHandler.getInstance(); - try{ - loggingContext.metricStarted(); - savePolicyHandler.doPolicyAPIPut(request, response); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet goPut savePolicyHandler"); - } catch (IOException e) { + // Is it known? + if (pdp == null) { + // Check if request came from localhost + if (request.getRemoteHost().equals("localhost") || + request.getRemoteHost().equals(request.getLocalAddr())) { + // Return status information - basically all the groups + loggingContext.setServiceName("PAP.getGroups"); + Set<OnapPDPGroup> groups = null; + try { + groups = papEngine.getOnapPDPGroups(); + } catch(PAPException e) { + LOGGER.debug(e); + PolicyLogger.error(MessageCodes.ERROR_UNKNOWN, e, "XACMLPapServlet", " GET exception"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); + im.endTransaction(); + return; + } + // convert response object to JSON and include in the response + mapperWriteValue(new ObjectMapper(), response, groups); + response.setHeader("content-type", "application/json"); + response.setStatus(HttpServletResponse.SC_OK); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Ended Successfully"); + im.endTransaction(); + return; + } + String message = "Unknown PDP: " + id + " from " + request.getRemoteHost() + " us: " + request.getLocalAddr(); + PolicyLogger.error(MessageCodes.ERROR_PERMISSIONS + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response, HttpServletResponse.SC_UNAUTHORIZED, message); + im.endTransaction(); + return; + } + loggingContext.setServiceName("PAP.getPolicy"); + // Get the PDP's Group + OnapPDPGroup group = null; + try { + group = XACMLPapServlet.papEngine.getPDPGroup((OnapPDP) pdp); + } catch (PAPException e) { LOGGER.error(e); } - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Ended Successfully"); - im.endTransaction(); - return; - } else if (apiflag != null && "api".equalsIgnoreCase(apiflag)) { - // this request is from the Policy Creation API - if(authorizeRequest(request)){ - APIRequestHandler apiRequestHandler = new APIRequestHandler(); - try{ - loggingContext.metricStarted(); - apiRequestHandler.doPut(request, response, request.getHeader("ClientScope")); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet goPut apiRequestHandler doPut"); - } catch (IOException e) { - LOGGER.error(e); - } - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Ended Successfully"); - im.endTransaction(); - return; - } else { - String message = "PEP not Authorized for making this Request!!"; - PolicyLogger.error(MessageCodes.ERROR_PERMISSIONS + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_FORBIDDEN, message); - im.endTransaction(); - return; - } - } - // We do not expect anything from anywhere else. - // This method is here in case we ever need to support other operations. - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Request does not have groupId or apiflag"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_BAD_REQUEST, "Request does not have groupId or apiflag"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See error.log"); - im.endTransaction(); - } - - /** - * @see HttpServlet#doDelete(HttpServletRequest request, HttpServletResponse response) - */ - protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - ONAPLoggingContext loggingContext = ONAPLoggingUtils.getLoggingContextForRequest(request, baseLoggingContext); - loggingContext.transactionStarted(); - loggingContext.setServiceName("PAP.delete"); - if ((loggingContext.getRequestID() == null) || (loggingContext.getRequestID() == "")){ - UUID requestID = UUID.randomUUID(); - loggingContext.setRequestID(requestID.toString()); - PolicyLogger.info("requestID not provided in call to XACMLPapSrvlet (doDelete) so we generated one"); - } else { - PolicyLogger.info("requestID was provided in call to XACMLPapSrvlet (doDelete)"); - } - try { - loggingContext.metricStarted(); - im.startTransaction(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doDelete im startTransaction"); - } catch (AdministrativeStateException ae){ - String message = "DELETE interface called for PAP " + papResourceName + " but it has an Administrative" - + " state of " + im.getStateManager().getAdminState() - + "\n Exception Message: " + ae.getMessage(); - LOGGER.info(message, ae); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - return; - }catch (StandbyStatusException se) { - String message = "PUT interface called for PAP " + papResourceName + " but it has a Standby Status" - + " of " + im.getStateManager().getStandbyStatus() - + "\n Exception Message: " + se.getMessage(); - LOGGER.info(message, se); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - return; - } catch (IntegrityMonitorException e) { - String message = "PUT interface called for PAP " + papResourceName + " but an exception occurred" - + "\n Exception Message: " + e.getMessage(); - LOGGER.info(message, e); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - return; - } - loggingContext.metricStarted(); - XACMLRest.dumpRequest(request); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doDelete dumpRequest"); - String groupId = request.getParameter("groupId"); - String apiflag = request.getParameter("apiflag"); - if (groupId != null) { - // Is this from the Admin Console or API? - if(apiflag!=null) { - if(!authorizeRequest(request)){ - String message = "PEP not Authorized for making this Request!! \n Contact Administrator for this Scope. "; - PolicyLogger.error(MessageCodes.ERROR_PERMISSIONS + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_FORBIDDEN, message); - return; - } - APIRequestHandler apiRequestHandler = new APIRequestHandler(); - try { - loggingContext.metricStarted(); - apiRequestHandler.doDelete(request, response, loggingContext, apiflag); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doDelete apiRequestHandler doDelete"); - } catch (Exception e) { - LOGGER.error("Exception Occured"+e); - } - if(apiRequestHandler.getNewGroup()!=null){ - groupChanged(apiRequestHandler.getNewGroup(), loggingContext); - } - return; - } - // this is from the Admin Console, so handle separately - try{ - loggingContext.metricStarted(); - doACDelete(request, response, groupId, loggingContext); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doDelete doACDelete"); - } catch (IOException e) { + if (group == null) { + String message = "No group associated with pdp " + pdp.getId(); + LOGGER.warn(XACMLErrorConstants.ERROR_PERMISSIONS + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response, HttpServletResponse.SC_UNAUTHORIZED, message); + im.endTransaction(); + return; + } + // Which policy do they want? + String policyId = request.getParameter("id"); + if (policyId == null) { + String message = "Did not specify an id for the policy"; + LOGGER.warn(XACMLErrorConstants.ERROR_DATA_ISSUE + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_NOT_FOUND, message); + im.endTransaction(); + return; + } + PDPPolicy policy = group.getPolicy(policyId); + if (policy == null) { + String message = "Unknown policy: " + policyId; + LOGGER.warn(XACMLErrorConstants.ERROR_DATA_ISSUE + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_NOT_FOUND, message); + im.endTransaction(); + return; + } + try{ + LOGGER.warn("PolicyDebugging: Policy Validity: " + policy.isValid() + "\n " + + "Policy Name : " + policy.getName() + "\n Policy URI: " + policy.getLocation().toString()); + } catch (PAPException| IOException e){ LOGGER.error(e); } - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Ended Successfully"); - im.endTransaction(); - return; - } - //Catch anything that fell through - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Request does not have groupId"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_BAD_REQUEST, "Request does not have groupId"); - im.endTransaction(); - } - - private boolean isPDPCurrent(Properties policies, Properties pipconfig, Properties pdpProperties) { - String localRootPolicies = policies.getProperty(XACMLProperties.PROP_ROOTPOLICIES); - String localReferencedPolicies = policies.getProperty(XACMLProperties.PROP_REFERENCEDPOLICIES); - if (localRootPolicies == null || localReferencedPolicies == null) { - LOGGER.warn(XACMLErrorConstants.ERROR_DATA_ISSUE + "Missing property on PAP server: RootPolicies="+localRootPolicies+" ReferencedPolicies="+localReferencedPolicies); - return false; - } - // Compare the policies and pipconfig properties to the pdpProperties - try { - // the policy properties includes only xacml.rootPolicies and - // xacml.referencedPolicies without any .url entries - Properties pdpPolicies = XACMLProperties.getPolicyProperties(pdpProperties, false); - Properties pdpPipConfig = XACMLProperties.getPipProperties(pdpProperties); - if (localRootPolicies.equals(pdpPolicies.getProperty(XACMLProperties.PROP_ROOTPOLICIES)) && - localReferencedPolicies.equals(pdpPolicies.getProperty(XACMLProperties.PROP_REFERENCEDPOLICIES)) && - pdpPipConfig.equals(pipconfig)) { - // The PDP is current - return true; - } - } catch (Exception e) { - // we get here if the PDP did not include either xacml.rootPolicies or xacml.pip.engines, - // or if there are policies that do not have a corresponding ".url" property. - // Either of these cases means that the PDP is not up-to-date, so just drop-through to return false. - PolicyLogger.error(MessageCodes.ERROR_SCHEMA_INVALID, e, "XACMLPapServlet", " PDP Error"); - } - return false; - } - - private void populatePolicyURL(StringBuffer urlPath, Properties policies) { - String lists[] = new String[2]; - lists[0] = policies.getProperty(XACMLProperties.PROP_ROOTPOLICIES); - lists[1] = policies.getProperty(XACMLProperties.PROP_REFERENCEDPOLICIES); - for (String list : lists) { - if (list != null && list.isEmpty() == false) { - for (String id : Splitter.on(',').trimResults().omitEmptyStrings().split(list)) { - String url = urlPath + "?id=" + id; - LOGGER.info("Policy URL for " + id + ": " + url); - policies.setProperty(id + ".url", url); - } - } - } - } - - protected String getPDPID(HttpServletRequest request) { - String pdpURL = request.getHeader(XACMLRestProperties.PROP_PDP_HTTP_HEADER_ID); - if (pdpURL == null || pdpURL.isEmpty()) { - // Should send back its port for identification - LOGGER.warn(XACMLErrorConstants.ERROR_DATA_ISSUE + "PDP did not send custom header"); - pdpURL = ""; - } - return pdpURL; - } - - protected String getPDPJMX(HttpServletRequest request) { - String pdpJMMX = request.getHeader(XACMLRestProperties.PROP_PDP_HTTP_HEADER_JMX_PORT); - if (pdpJMMX == null || pdpJMMX.isEmpty()) { - // Should send back its port for identification - LOGGER.warn(XACMLErrorConstants.ERROR_DATA_ISSUE + "PDP did not send custom header for JMX Port so the value of 0 is assigned"); - return null; - } - return pdpJMMX; - } - - /** - * Requests from the PolicyEngine API to update the PDP Group with pushed policy - * - * @param request - * @param response - * @param groupId - * @param loggingContext - * @throws ServletException - * @throws IOException - */ - public void updateGroupsFromAPI(HttpServletRequest request, HttpServletResponse response, String groupId, ONAPLoggingContext loggingContext) throws IOException { - PolicyDBDaoTransaction acPutTransaction = policyDBDao.getNewTransaction(); - PolicyLogger.audit("PolicyDBDaoTransaction started for updateGroupsFromAPI"); - try { - // for PUT operations the group may or may not need to exist before the operation can be done - StdPDPGroup group = (StdPDPGroup) papEngine.getGroup(groupId); - - // get the request input stream content into a String - String json = null; - java.util.Scanner scanner = new java.util.Scanner(request.getInputStream()); - scanner.useDelimiter("\\A"); - json = scanner.hasNext() ? scanner.next() : ""; - scanner.close(); - - PolicyLogger.info("pushPolicy request from API: " + json); - - // convert Object sent as JSON into local object - StdPDPPolicy policy = PolicyUtils.jsonStringToObject(json, StdPDPPolicy.class); - - //Get the current policies from the Group and Add the new one - Set<PDPPolicy> currentPoliciesInGroup = new HashSet<>(); - currentPoliciesInGroup = group.getPolicies(); - //If the selected policy is in the group we must remove the old version of it - LOGGER.info("Removing old version of the policy"); - for(PDPPolicy existingPolicy : currentPoliciesInGroup) { - if (existingPolicy.getName().equals(policy.getName()) && !existingPolicy.getId().equals(policy.getId())){ - group.removePolicy(existingPolicy); - LOGGER.info("Removing policy: " + existingPolicy); - break; - } - } - - // Assume that this is an update of an existing PDP Group - loggingContext.setServiceName("PolicyEngineAPI:PAP.updateGroup"); - try{ - acPutTransaction.updateGroup(group, "XACMLPapServlet.doACPut"); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " Error while updating group in the database: " - +"group="+group.getId()); - throw new PAPException(e.getMessage()); - } - - LOGGER.info("Calling updatGroup() with new group"); - papEngine.updateGroup(group); - String policyId = "empty"; - if(policy !=null && policy.getId() != null){ - policyId = policy.getId(); - } - if(!policyId.matches(REGEX) ){ - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - response.addHeader("error",ADD_GROUP_ERROR); - response.addHeader("message", "Policy Id is not valid"); - return; - } - response.setStatus(HttpServletResponse.SC_NO_CONTENT); - response.addHeader("operation", "push"); - response.addHeader("policyId", policyId); - response.addHeader("groupId", groupId); - - LOGGER.info("Group '" + group.getId() + "' updated"); - - loggingContext.metricStarted(); - acPutTransaction.commitTransaction(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet updateGroupsFromAPI commitTransaction"); - loggingContext.metricStarted(); - notifyAC(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet updateGroupsFromAPI notifyAC"); - - // Group changed, which might include changing the policies - groupChanged(group, loggingContext); - loggingContext.transactionEnded(); - LOGGER.info("Success"); - - if (policy != null && ((policy.getId().contains("Config_MS_")) || (policy.getId().contains("BRMS_Param")))) { - PushPolicyHandler pushPolicyHandler = PushPolicyHandler.getInstance(); - if (pushPolicyHandler.preSafetyCheck(policy, configHome)) { - LOGGER.debug("Precheck Successful."); - } - } - - PolicyLogger.audit("Transaction Ended Successfully"); - return; - } catch (PAPException e) { - acPutTransaction.rollbackTransaction(); - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " API PUT exception"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - String message = XACMLErrorConstants.ERROR_PROCESS_FLOW + "Exception in request to update group from API - See Error.log on on the PAP."; - setResponseError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - response.addHeader("error",ADD_GROUP_ERROR); - response.addHeader("message", message); - return; - } - } - - /** - * Requests from the Admin Console for operations not on single specific objects - * - * @param request - * @param response - * @param groupId - * @param loggingContext - * @throws ServletException - * @throws IOException - */ - private void doACPost(HttpServletRequest request, HttpServletResponse response, String groupId, ONAPLoggingContext loggingContext) throws ServletException, IOException { - PolicyDBDaoTransaction doACPostTransaction = null; - try { - String groupName = request.getParameter("groupName"); - String groupDescription = request.getParameter("groupDescription"); - String apiflag = request.getParameter("apiflag"); - if (groupName != null && groupDescription != null) { - // Args: group=<groupId> groupName=<name> groupDescription=<description> <= create a new group - loggingContext.setServiceName("AC:PAP.createGroup"); - String unescapedName = null; - String unescapedDescription = null; - try{ - unescapedName = URLDecoder.decode(groupName, "UTF-8"); - unescapedDescription = URLDecoder.decode(groupDescription, "UTF-8"); - } catch (UnsupportedEncodingException e) { - LOGGER.error(e); - } - PolicyDBDaoTransaction newGroupTransaction = policyDBDao.getNewTransaction(); - try { - newGroupTransaction.createGroup(PolicyDBDao.createNewPDPGroupId(unescapedName), unescapedName, unescapedDescription,"XACMLPapServlet.doACPost"); - papEngine.newGroup(unescapedName, unescapedDescription); - loggingContext.metricStarted(); - newGroupTransaction.commitTransaction(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doACPost commitTransaction"); - } catch (Exception e) { - newGroupTransaction.rollbackTransaction(); - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " Unable to create new group"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Unable to create new group '" + groupId + "'"); - return; - } - response.setStatus(HttpServletResponse.SC_NO_CONTENT); - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("New Group '" + groupId + "' created"); - } - // tell the Admin Consoles there is a change - loggingContext.metricStarted(); - notifyAC(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doACPost notifyAC"); - // new group by definition has no PDPs, so no need to notify them of changes - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - auditLogger.info("Success"); - PolicyLogger.audit("Transaction Ended Successfully"); - return; - } - // for all remaining POST operations the group must exist before the operation can be done - OnapPDPGroup group = null; - try{ - group = papEngine.getGroup(groupId); - } catch (PAPException e){ - LOGGER.error(e); - } - if (group == null) { - String message = "Unknown groupId '" + groupId + "'"; - //for fixing Header Manipulation of Fortify issue - if(!message.matches(REGEX)){ - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - response.addHeader("error",ADD_GROUP_ERROR); - response.addHeader("message", "GroupId Id is not valid"); - return; - } - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - if (apiflag!=null){ - response.addHeader("error", "unknownGroupId"); - response.addHeader("operation", "push"); - response.addHeader("message", message); - response.setStatus(HttpServletResponse.SC_NOT_FOUND); - } else { - setResponseError(response,HttpServletResponse.SC_NOT_FOUND, message); - } - return; - } - - // If the request contains a policyId then we know we are pushing the policy to PDP - if (request.getParameter("policyId") != null) { - - if(apiflag!=null){ - loggingContext.setServiceName("PolicyEngineAPI:PAP.postPolicy"); - LOGGER.info("PushPolicy Request From The API"); - } else { - loggingContext.setServiceName("AC:PAP.postPolicy"); - LOGGER.info("PushPolicy Request From The AC"); - } - - String policyId = request.getParameter("policyId"); - PolicyDBDaoTransaction addPolicyToGroupTransaction = policyDBDao.getNewTransaction(); - StdPDPGroup updatedGroup = null; - try { - //Copying the policy to the file system and updating groups in database - LOGGER.info("PapServlet: calling PolicyDBDao.addPolicyToGroup()"); - updatedGroup = addPolicyToGroupTransaction.addPolicyToGroup(group.getId(), policyId,"XACMLPapServlet.doACPost"); - loggingContext.metricStarted(); - addPolicyToGroupTransaction.commitTransaction(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doACPost commitTransaction"); - LOGGER.info("PapServlet: addPolicyToGroup() succeeded, transaction was committed"); - - } catch (Exception e) { - addPolicyToGroupTransaction.rollbackTransaction(); - String message = "Policy '" + policyId + "' not copied to group '" + groupId +"': " + e; - //for fixing Header Manipulation of Fortify issue - if(!message.matches(REGEX)){ - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - response.addHeader("error",ADD_GROUP_ERROR); - response.addHeader("message", "Policy Id is not valid"); - return; - } - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - if (apiflag!=null){ - response.addHeader("error", "policyCopyError"); - response.addHeader("message", message); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - } else { - setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - } - return; - } - - if(apiflag != null){ - /* - * If request comes from the API we need to run the PolicyDBDao updateGroup() to notify other paps of the change. - * The GUI does this from the POLICY-SDK-APP code. - */ - - // Get new transaction to perform updateGroup() - PolicyDBDaoTransaction acPutTransaction = policyDBDao.getNewTransaction(); - try { - // get the request content into a String and read the inputStream into a buffer - java.util.Scanner scanner = new java.util.Scanner(request.getInputStream()); - scanner.useDelimiter("\\A"); - String json = scanner.hasNext() ? scanner.next() : ""; - scanner.close(); - - // convert Object sent as JSON into local object - ObjectMapper mapper = new ObjectMapper(); - Object objectFromJSON = mapper.readValue(json, StdPDPPolicy.class); - StdPDPPolicy policy = (StdPDPPolicy) objectFromJSON; - - LOGGER.info("Request JSON Payload: " + json); - - // Assume that this is an update of an existing PDP Group - loggingContext.setServiceName("PolicyEngineAPI:PAP.updateGroup"); - try{ - acPutTransaction.updateGroup(updatedGroup, "XACMLPapServlet.doACPut"); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " Error occurred when notifying PAPs of a group change: " - + e); - throw new PAPException(e.getMessage()); - } - - LOGGER.info("Calling updatGroup() with new group"); - papEngine.updateGroup(updatedGroup); - - LOGGER.info("Group '" + updatedGroup.getId() + "' updated"); - - // Commit transaction to send notification to other PAPs - loggingContext.metricStarted(); - acPutTransaction.commitTransaction(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet updateGroupsFromAPI commitTransaction"); - loggingContext.metricStarted(); - - notifyAC(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet updateGroupsFromAPI notifyAC"); - - // Group changed to send notification to PDPs, which might include changing the policies - groupChanged(updatedGroup,loggingContext); - loggingContext.transactionEnded(); - LOGGER.info("Success"); - - if (policy != null && ((policy.getName().contains("Config_MS_")) || (policy.getId().contains("BRMS_Param")))) { - PushPolicyHandler pushPolicyHandler = PushPolicyHandler.getInstance(); - if (pushPolicyHandler.preSafetyCheck(policy, configHome)) { - LOGGER.debug("Precheck Successful."); - } - } - - //delete temporary policy file from the bin directory - Files.deleteIfExists(Paths.get(policy.getId())); - - } catch (Exception e) { - acPutTransaction.rollbackTransaction(); - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " API PUT exception"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - String message = XACMLErrorConstants.ERROR_PROCESS_FLOW + "Exception occurred when updating the group from API."; - LOGGER.error(message); - setResponseError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - response.addHeader("error",ADD_GROUP_ERROR); - response.addHeader("message", message); - return; - } - } - - // policy file copied ok and the Group was updated on the PDP - response.setStatus(HttpServletResponse.SC_NO_CONTENT); - response.addHeader("operation", "push"); - response.addHeader("policyId", policyId); - response.addHeader("groupId", groupId); - - LOGGER.info("policy '" + policyId + "' copied to directory for group '" + groupId + "'"); - loggingContext.transactionEnded(); - auditLogger.info("Success"); - LOGGER.info("Transaction Ended Successfully"); - - return; - } else if (request.getParameter("default") != null) { - // Args: group=<groupId> default=true <= make default - // change the current default group to be the one identified in the request. - loggingContext.setServiceName("AC:PAP.setDefaultGroup"); - // This is a POST operation rather than a PUT "update group" because of the side-effect that the current default group is also changed. - // It should never be the case that multiple groups are currently marked as the default, but protect against that anyway. - PolicyDBDaoTransaction setDefaultGroupTransaction = policyDBDao.getNewTransaction(); - try { - setDefaultGroupTransaction.changeDefaultGroup(group, "XACMLPapServlet.doACPost"); - papEngine.setDefaultGroup(group); - loggingContext.metricStarted(); - setDefaultGroupTransaction.commitTransaction(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doACPost commitTransaction"); - } catch (Exception e) { - setDefaultGroupTransaction.rollbackTransaction(); - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " Unable to set group"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Unable to set group '" + groupId + "' to default"); - return; - } - response.setStatus(HttpServletResponse.SC_NO_CONTENT); - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("Group '" + groupId + "' set to be default"); - } - // Notify the Admin Consoles that something changed - // For now the AC cannot handle anything more detailed than the whole set of PDPGroups, so just notify on that - //TODO - Future: FIGURE OUT WHAT LEVEL TO NOTIFY: 2 groups or entire set - currently notify AC to update whole configuration of all groups - loggingContext.metricStarted(); - notifyAC(); - // This does not affect any PDPs in the existing groups, so no need to notify them of this change - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doACPost notifyAC"); - loggingContext.transactionEnded(); - auditLogger.info("Success"); - LOGGER.info("Transaction Ended Successfully"); - return; - } else if (request.getParameter("pdpId") != null) { - doACPostTransaction = policyDBDao.getNewTransaction(); - // Args: group=<groupId> pdpId=<pdpId> <= move PDP to group - loggingContext.setServiceName("AC:PAP.movePDP"); - String pdpId = request.getParameter("pdpId"); - OnapPDP pdp = papEngine.getPDP(pdpId); - OnapPDPGroup originalGroup = papEngine.getPDPGroup((OnapPDP) pdp); - try{ - doACPostTransaction.movePdp(pdp, group, "XACMLPapServlet.doACPost"); - }catch(Exception e){ - doACPostTransaction.rollbackTransaction(); - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", - " Error while moving pdp in the database: " - +"pdp="+pdp.getId()+",to group="+group.getId()); - throw new PAPException(e.getMessage()); - } - papEngine.movePDP((OnapPDP) pdp, group); - response.setStatus(HttpServletResponse.SC_NO_CONTENT); - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("PDP '" + pdp.getId() +"' moved to group '" + group.getId() + "' set to be default"); - } - // update the status of both the original group and the new one - ((StdPDPGroup)originalGroup).resetStatus(); - ((StdPDPGroup)group).resetStatus(); - // Notify the Admin Consoles that something changed - // For now the AC cannot handle anything more detailed than the whole set of PDPGroups, so just notify on that - loggingContext.metricStarted(); - notifyAC(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doACPost notifyAC"); - // Need to notify the PDP that it's config may have changed - pdpChanged(pdp, loggingContext); - loggingContext.metricStarted(); - doACPostTransaction.commitTransaction(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doACPost commitTransaction"); - loggingContext.transactionEnded(); - auditLogger.info("Success"); - PolicyLogger.audit("Transaction Ended Successfully"); - return; - } - } catch (PAPException e) { - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " AC POST exception"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); - return; - } - } - - /** - * Requests from the Admin Console to GET info about the Groups and PDPs - * - * @param request - * @param response - * @param groupId - * @param loggingContext - * @throws ServletException - * @throws IOException - */ - private void doACGet(HttpServletRequest request, HttpServletResponse response, String groupId, ONAPLoggingContext loggingContext) throws IOException { - try { - String parameterDefault = request.getParameter("default"); - String pdpId = request.getParameter("pdpId"); - String pdpGroup = request.getParameter("getPDPGroup"); - if ("".equals(groupId)) { - // request IS from AC but does not identify a group by name - if (parameterDefault != null) { - // Request is for the Default group (whatever its id) - loggingContext.setServiceName("AC:PAP.getDefaultGroup"); - OnapPDPGroup group = papEngine.getDefaultGroup(); - // convert response object to JSON and include in the response - mapperWriteValue(new ObjectMapper(), response, group); - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("GET Default group req from '" + request.getRequestURL() + "'"); - } - response.setStatus(HttpServletResponse.SC_OK); - response.setHeader("content-type", "application/json"); - try{ + try (InputStream is = new FileInputStream(((StdPDPGroup)group).getDirectory().toString()+File.separator+policyId); OutputStream os = response.getOutputStream()) { + // Send the policy back + IOUtils.copy(is, os); + response.setStatus(HttpServletResponse.SC_OK); + loggingContext.transactionEnded(); + auditLogger.info("Success"); + PolicyLogger.audit("Transaction Ended Successfully"); + } catch (IOException e) { + String message = "Failed to open policy id " + policyId; + LOGGER.debug(e); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_NOT_FOUND, message); + } + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Ended"); + im.endTransaction(); + } + + /** + * @see HttpServlet#doPut(HttpServletRequest request, HttpServletResponse response) + */ + protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + ONAPLoggingContext loggingContext = ONAPLoggingUtils.getLoggingContextForRequest(request, baseLoggingContext); + loggingContext.transactionStarted(); + loggingContext.setServiceName("PAP.put"); + if ((loggingContext.getRequestID() == null) || (loggingContext.getRequestID() == "")){ + UUID requestID = UUID.randomUUID(); + loggingContext.setRequestID(requestID.toString()); + PolicyLogger.info("requestID not provided in call to XACMLPapSrvlet (doPut) so we generated one"); + } else { + PolicyLogger.info("requestID was provided in call to XACMLPapSrvlet (doPut)"); + } + try { + loggingContext.metricStarted(); + im.startTransaction(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doPut im startTransaction"); + } catch (IntegrityMonitorException e) { + String message = "PUT interface called for PAP " + papResourceName; + if (e instanceof AdministrativeStateException) { + message += " but it has an Administrative state of " + + im.getStateManager().getAdminState(); + } else if (e instanceof StandbyStatusException) { + message += " but it has a Standby Status of " + + im.getStateManager().getStandbyStatus(); + } else { + message += " but an exception occurred"; + + } + message += "\n Exception Message: " + e.getMessage(); + + LOGGER.info(message, e); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); + return; + } + + loggingContext.metricStarted(); + XACMLRest.dumpRequest(request); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doPut dumpRequest"); + //need to check if request is from the API or Admin console + String apiflag = request.getParameter("apiflag"); + //This would occur if a PolicyDBDao notification was received + String policyDBDaoRequestUrl = request.getParameter("policydbdaourl"); + if(policyDBDaoRequestUrl != null){ + LOGGER.info("XACMLPapServlet: PolicyDBDao Notification received." ); + String policyDBDaoRequestEntityId = request.getParameter("entityid"); + String policyDBDaoRequestEntityType = request.getParameter("entitytype"); + String policyDBDaoRequestExtraData = request.getParameter("extradata"); + if(policyDBDaoRequestEntityId == null || policyDBDaoRequestEntityType == null){ + setResponseError(response,400, "entityid or entitytype not supplied"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Ended Successfully"); + im.endTransaction(); + return; + } + loggingContext.metricStarted(); + LOGGER.info("XACMLPapServlet: Calling PolicyDBDao to handlIncomingHttpNotification"); + policyDBDao.handleIncomingHttpNotification(policyDBDaoRequestUrl,policyDBDaoRequestEntityId,policyDBDaoRequestEntityType,policyDBDaoRequestExtraData,this); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doPut handle incoming http notification"); + response.setStatus(200); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Ended Successfully"); + im.endTransaction(); + return; + } + /* + * Request for ImportService + */ + String importService = request.getParameter("importService"); + if (importService != null) { + if(authorizeRequest(request)){ + APIRequestHandler apiRequestHandler = new APIRequestHandler(); + try{ + loggingContext.metricStarted(); + apiRequestHandler.doPut(request, response, importService); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doPut apiRequestHandler doPut"); + }catch(IOException e){ + LOGGER.error(e); + } + im.endTransaction(); + return; + } else { + String message = "PEP not Authorized for making this Request!! \n Contact Administrator for this Scope. "; + LOGGER.error(XACMLErrorConstants.ERROR_PERMISSIONS + message ); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_FORBIDDEN, message); + return; + } + } + // + // See if this is Admin Console registering itself with us + // + String acURLString = request.getParameter("adminConsoleURL"); + if (acURLString != null) { + loggingContext.setServiceName("AC:PAP.register"); + // remember this Admin Console for future updates + if ( ! adminConsoleURLStringList.contains(acURLString)) { + adminConsoleURLStringList.add(acURLString); + } + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("Admin Console registering with URL: " + acURLString); + } + response.setStatus(HttpServletResponse.SC_NO_CONTENT); + loggingContext.transactionEnded(); + auditLogger.info("Success"); + PolicyLogger.audit("Transaction Ended Successfully"); + im.endTransaction(); + return; + } + /* + * This is to update the PDP Group with the policy/policies being pushed + * Part of a 2 step process to push policies to the PDP that can now be done + * From both the Admin Console and the PolicyEngine API + */ + String groupId = request.getParameter("groupId"); + if (groupId != null) { + if(apiflag!=null){ + if(!authorizeRequest(request)){ + String message = "PEP not Authorized for making this Request!! \n Contact Administrator for this Scope. "; + PolicyLogger.error(MessageCodes.ERROR_PERMISSIONS + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_FORBIDDEN, message); + return; + } + if(apiflag.equalsIgnoreCase("addPolicyToGroup")){ + try{ + updateGroupsFromAPI(request, response, groupId, loggingContext); + }catch(IOException e){ + LOGGER.error(e); + } + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Ended Successfully"); + im.endTransaction(); + return; + } + } + // this is from the Admin Console, so handle separately + try { + loggingContext.metricEnded(); + doACPut(request, response, groupId, loggingContext); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet goPut doACPut"); + } catch (IOException e) { + LOGGER.error(e); + } + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Ended Successfully"); + im.endTransaction(); + return; + } + // + // Request is for policy validation and creation + // + if (apiflag != null && apiflag.equalsIgnoreCase("admin")){ + // this request is from the Admin Console + SavePolicyHandler savePolicyHandler = SavePolicyHandler.getInstance(); + try{ + loggingContext.metricStarted(); + savePolicyHandler.doPolicyAPIPut(request, response); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet goPut savePolicyHandler"); + } catch (IOException e) { + LOGGER.error(e); + } + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Ended Successfully"); + im.endTransaction(); + return; + } else if (apiflag != null && "api".equalsIgnoreCase(apiflag)) { + // this request is from the Policy Creation API + if(authorizeRequest(request)){ + APIRequestHandler apiRequestHandler = new APIRequestHandler(); + try{ + loggingContext.metricStarted(); + apiRequestHandler.doPut(request, response, request.getHeader("ClientScope")); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet goPut apiRequestHandler doPut"); + } catch (IOException e) { + LOGGER.error(e); + } + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Ended Successfully"); + im.endTransaction(); + return; + } else { + String message = "PEP not Authorized for making this Request!!"; + PolicyLogger.error(MessageCodes.ERROR_PERMISSIONS + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_FORBIDDEN, message); + im.endTransaction(); + return; + } + } + // We do not expect anything from anywhere else. + // This method is here in case we ever need to support other operations. + LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Request does not have groupId or apiflag"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_BAD_REQUEST, "Request does not have groupId or apiflag"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See error.log"); + im.endTransaction(); + } + + /** + * @see HttpServlet#doDelete(HttpServletRequest request, HttpServletResponse response) + */ + protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + ONAPLoggingContext loggingContext = ONAPLoggingUtils.getLoggingContextForRequest(request, baseLoggingContext); + loggingContext.transactionStarted(); + loggingContext.setServiceName("PAP.delete"); + if ((loggingContext.getRequestID() == null) || (loggingContext.getRequestID() == "")){ + UUID requestID = UUID.randomUUID(); + loggingContext.setRequestID(requestID.toString()); + PolicyLogger.info("requestID not provided in call to XACMLPapSrvlet (doDelete) so we generated one"); + } else { + PolicyLogger.info("requestID was provided in call to XACMLPapSrvlet (doDelete)"); + } + try { + loggingContext.metricStarted(); + im.startTransaction(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doDelete im startTransaction"); + } catch (AdministrativeStateException ae){ + String message = "DELETE interface called for PAP " + papResourceName + " but it has an Administrative" + + " state of " + im.getStateManager().getAdminState() + + "\n Exception Message: " + ae.getMessage(); + LOGGER.info(message, ae); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); + return; + }catch (StandbyStatusException se) { + String message = "PUT interface called for PAP " + papResourceName + " but it has a Standby Status" + + " of " + im.getStateManager().getStandbyStatus() + + "\n Exception Message: " + se.getMessage(); + LOGGER.info(message, se); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); + return; + } catch (IntegrityMonitorException e) { + String message = "PUT interface called for PAP " + papResourceName + " but an exception occurred" + + "\n Exception Message: " + e.getMessage(); + LOGGER.info(message, e); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); + return; + } + loggingContext.metricStarted(); + XACMLRest.dumpRequest(request); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doDelete dumpRequest"); + String groupId = request.getParameter("groupId"); + String apiflag = request.getParameter("apiflag"); + if (groupId != null) { + // Is this from the Admin Console or API? + if(apiflag!=null) { + if(!authorizeRequest(request)){ + String message = "PEP not Authorized for making this Request!! \n Contact Administrator for this Scope. "; + PolicyLogger.error(MessageCodes.ERROR_PERMISSIONS + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_FORBIDDEN, message); + return; + } + APIRequestHandler apiRequestHandler = new APIRequestHandler(); + try { + loggingContext.metricStarted(); + apiRequestHandler.doDelete(request, response, loggingContext, apiflag); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doDelete apiRequestHandler doDelete"); + } catch (Exception e) { + LOGGER.error("Exception Occured"+e); + } + if(apiRequestHandler.getNewGroup()!=null){ + groupChanged(apiRequestHandler.getNewGroup(), loggingContext); + } + return; + } + // this is from the Admin Console, so handle separately + try{ + loggingContext.metricStarted(); + doACDelete(request, response, groupId, loggingContext); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doDelete doACDelete"); + } catch (IOException e) { + LOGGER.error(e); + } + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Ended Successfully"); + im.endTransaction(); + return; + } + //Catch anything that fell through + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Request does not have groupId"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_BAD_REQUEST, "Request does not have groupId"); + im.endTransaction(); + } + + private boolean isPDPCurrent(Properties policies, Properties pipconfig, Properties pdpProperties) { + String localRootPolicies = policies.getProperty(XACMLProperties.PROP_ROOTPOLICIES); + String localReferencedPolicies = policies.getProperty(XACMLProperties.PROP_REFERENCEDPOLICIES); + if (localRootPolicies == null || localReferencedPolicies == null) { + LOGGER.warn(XACMLErrorConstants.ERROR_DATA_ISSUE + "Missing property on PAP server: RootPolicies="+localRootPolicies+" ReferencedPolicies="+localReferencedPolicies); + return false; + } + // Compare the policies and pipconfig properties to the pdpProperties + try { + // the policy properties includes only xacml.rootPolicies and + // xacml.referencedPolicies without any .url entries + Properties pdpPolicies = XACMLProperties.getPolicyProperties(pdpProperties, false); + Properties pdpPipConfig = XACMLProperties.getPipProperties(pdpProperties); + if (localRootPolicies.equals(pdpPolicies.getProperty(XACMLProperties.PROP_ROOTPOLICIES)) && + localReferencedPolicies.equals(pdpPolicies.getProperty(XACMLProperties.PROP_REFERENCEDPOLICIES)) && + pdpPipConfig.equals(pipconfig)) { + // The PDP is current + return true; + } + } catch (Exception e) { + // we get here if the PDP did not include either xacml.rootPolicies or xacml.pip.engines, + // or if there are policies that do not have a corresponding ".url" property. + // Either of these cases means that the PDP is not up-to-date, so just drop-through to return false. + PolicyLogger.error(MessageCodes.ERROR_SCHEMA_INVALID, e, "XACMLPapServlet", " PDP Error"); + } + return false; + } + + private void populatePolicyURL(StringBuffer urlPath, Properties policies) { + String lists[] = new String[2]; + lists[0] = policies.getProperty(XACMLProperties.PROP_ROOTPOLICIES); + lists[1] = policies.getProperty(XACMLProperties.PROP_REFERENCEDPOLICIES); + for (String list : lists) { + if (list != null && list.isEmpty() == false) { + for (String id : Splitter.on(',').trimResults().omitEmptyStrings().split(list)) { + String url = urlPath + "?id=" + id; + LOGGER.info("Policy URL for " + id + ": " + url); + policies.setProperty(id + ".url", url); + } + } + } + } + + protected String getPDPID(HttpServletRequest request) { + String pdpURL = request.getHeader(XACMLRestProperties.PROP_PDP_HTTP_HEADER_ID); + if (pdpURL == null || pdpURL.isEmpty()) { + // Should send back its port for identification + LOGGER.warn(XACMLErrorConstants.ERROR_DATA_ISSUE + "PDP did not send custom header"); + pdpURL = ""; + } + return pdpURL; + } + + protected String getPDPJMX(HttpServletRequest request) { + String pdpJMMX = request.getHeader(XACMLRestProperties.PROP_PDP_HTTP_HEADER_JMX_PORT); + if (pdpJMMX == null || pdpJMMX.isEmpty()) { + // Should send back its port for identification + LOGGER.warn(XACMLErrorConstants.ERROR_DATA_ISSUE + "PDP did not send custom header for JMX Port so the value of 0 is assigned"); + return null; + } + return pdpJMMX; + } + + /** + * Requests from the PolicyEngine API to update the PDP Group with pushed policy + * + * @param request + * @param response + * @param groupId + * @param loggingContext + * @throws ServletException + * @throws IOException + */ + public void updateGroupsFromAPI(HttpServletRequest request, HttpServletResponse response, String groupId, ONAPLoggingContext loggingContext) throws IOException { + PolicyDBDaoTransaction acPutTransaction = policyDBDao.getNewTransaction(); + PolicyLogger.audit("PolicyDBDaoTransaction started for updateGroupsFromAPI"); + try { + // for PUT operations the group may or may not need to exist before the operation can be done + StdPDPGroup group = (StdPDPGroup) papEngine.getGroup(groupId); + + // get the request input stream content into a String + String json = null; + java.util.Scanner scanner = new java.util.Scanner(request.getInputStream()); + scanner.useDelimiter("\\A"); + json = scanner.hasNext() ? scanner.next() : ""; + scanner.close(); + + PolicyLogger.info("pushPolicy request from API: " + json); + + // convert Object sent as JSON into local object + StdPDPPolicy policy = PolicyUtils.jsonStringToObject(json, StdPDPPolicy.class); + + //Get the current policies from the Group and Add the new one + Set<PDPPolicy> currentPoliciesInGroup = new HashSet<>(); + currentPoliciesInGroup = group.getPolicies(); + //If the selected policy is in the group we must remove the old version of it + LOGGER.info("Removing old version of the policy"); + for(PDPPolicy existingPolicy : currentPoliciesInGroup) { + if (existingPolicy.getName().equals(policy.getName()) && !existingPolicy.getId().equals(policy.getId())){ + group.removePolicy(existingPolicy); + LOGGER.info("Removing policy: " + existingPolicy); + break; + } + } + + // Assume that this is an update of an existing PDP Group + loggingContext.setServiceName("PolicyEngineAPI:PAP.updateGroup"); + try{ + acPutTransaction.updateGroup(group, "XACMLPapServlet.doACPut"); + } catch(Exception e){ + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " Error while updating group in the database: " + +"group="+group.getId()); + throw new PAPException(e.getMessage()); + } + + LOGGER.info("Calling updatGroup() with new group"); + papEngine.updateGroup(group); + String policyId = "empty"; + if(policy !=null && policy.getId() != null){ + policyId = policy.getId(); + } + if(!policyId.matches(REGEX) ){ + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + response.addHeader("error",ADD_GROUP_ERROR); + response.addHeader("message", "Policy Id is not valid"); + return; + } + response.setStatus(HttpServletResponse.SC_NO_CONTENT); + response.addHeader("operation", "push"); + response.addHeader("policyId", policyId); + response.addHeader("groupId", groupId); + + LOGGER.info("Group '" + group.getId() + "' updated"); + + loggingContext.metricStarted(); + acPutTransaction.commitTransaction(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet updateGroupsFromAPI commitTransaction"); + loggingContext.metricStarted(); + notifyAC(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet updateGroupsFromAPI notifyAC"); + + // Group changed, which might include changing the policies + groupChanged(group, loggingContext); + loggingContext.transactionEnded(); + LOGGER.info("Success"); + + if (policy != null && ((policy.getId().contains("Config_MS_")) || (policy.getId().contains("BRMS_Param")))) { + PushPolicyHandler pushPolicyHandler = PushPolicyHandler.getInstance(); + if (pushPolicyHandler.preSafetyCheck(policy, configHome)) { + LOGGER.debug("Precheck Successful."); + } + } + + PolicyLogger.audit("Transaction Ended Successfully"); + return; + } catch (PAPException e) { + acPutTransaction.rollbackTransaction(); + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " API PUT exception"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + String message = XACMLErrorConstants.ERROR_PROCESS_FLOW + "Exception in request to update group from API - See Error.log on on the PAP."; + setResponseError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + response.addHeader("error",ADD_GROUP_ERROR); + response.addHeader("message", message); + return; + } + } + + /** + * Requests from the Admin Console for operations not on single specific objects + * + * @param request + * @param response + * @param groupId + * @param loggingContext + * @throws ServletException + * @throws IOException + */ + private void doACPost(HttpServletRequest request, HttpServletResponse response, String groupId, ONAPLoggingContext loggingContext) throws ServletException, IOException { + PolicyDBDaoTransaction doACPostTransaction = null; + try { + String groupName = request.getParameter("groupName"); + String groupDescription = request.getParameter("groupDescription"); + String apiflag = request.getParameter("apiflag"); + if (groupName != null && groupDescription != null) { + // Args: group=<groupId> groupName=<name> groupDescription=<description> <= create a new group + loggingContext.setServiceName("AC:PAP.createGroup"); + String unescapedName = null; + String unescapedDescription = null; + try{ + unescapedName = URLDecoder.decode(groupName, "UTF-8"); + unescapedDescription = URLDecoder.decode(groupDescription, "UTF-8"); + } catch (UnsupportedEncodingException e) { + LOGGER.error(e); + } + PolicyDBDaoTransaction newGroupTransaction = policyDBDao.getNewTransaction(); + try { + newGroupTransaction.createGroup(PolicyDBDao.createNewPDPGroupId(unescapedName), unescapedName, unescapedDescription,"XACMLPapServlet.doACPost"); + papEngine.newGroup(unescapedName, unescapedDescription); + loggingContext.metricStarted(); + newGroupTransaction.commitTransaction(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doACPost commitTransaction"); + } catch (Exception e) { + newGroupTransaction.rollbackTransaction(); + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " Unable to create new group"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Unable to create new group '" + groupId + "'"); + return; + } + response.setStatus(HttpServletResponse.SC_NO_CONTENT); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("New Group '" + groupId + "' created"); + } + // tell the Admin Consoles there is a change + loggingContext.metricStarted(); + notifyAC(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doACPost notifyAC"); + // new group by definition has no PDPs, so no need to notify them of changes + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + auditLogger.info("Success"); + PolicyLogger.audit("Transaction Ended Successfully"); + return; + } + // for all remaining POST operations the group must exist before the operation can be done + OnapPDPGroup group = null; + try{ + group = papEngine.getGroup(groupId); + } catch (PAPException e){ + LOGGER.error(e); + } + if (group == null) { + String message = "Unknown groupId '" + groupId + "'"; + //for fixing Header Manipulation of Fortify issue + if(!message.matches(REGEX)){ + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + response.addHeader("error",ADD_GROUP_ERROR); + response.addHeader("message", "GroupId Id is not valid"); + return; + } + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + if (apiflag!=null){ + response.addHeader("error", "unknownGroupId"); + response.addHeader("operation", "push"); + response.addHeader("message", message); + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + } else { + setResponseError(response,HttpServletResponse.SC_NOT_FOUND, message); + } + return; + } + + // If the request contains a policyId then we know we are pushing the policy to PDP + if (request.getParameter("policyId") != null) { + + if(apiflag!=null){ + loggingContext.setServiceName("PolicyEngineAPI:PAP.postPolicy"); + LOGGER.info("PushPolicy Request From The API"); + } else { + loggingContext.setServiceName("AC:PAP.postPolicy"); + LOGGER.info("PushPolicy Request From The AC"); + } + + String policyId = request.getParameter("policyId"); + PolicyDBDaoTransaction addPolicyToGroupTransaction = policyDBDao.getNewTransaction(); + StdPDPGroup updatedGroup = null; + try { + //Copying the policy to the file system and updating groups in database + LOGGER.info("PapServlet: calling PolicyDBDao.addPolicyToGroup()"); + updatedGroup = addPolicyToGroupTransaction.addPolicyToGroup(group.getId(), policyId,"XACMLPapServlet.doACPost"); + loggingContext.metricStarted(); + addPolicyToGroupTransaction.commitTransaction(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doACPost commitTransaction"); + LOGGER.info("PapServlet: addPolicyToGroup() succeeded, transaction was committed"); + + } catch (Exception e) { + addPolicyToGroupTransaction.rollbackTransaction(); + String message = "Policy '" + policyId + "' not copied to group '" + groupId +"': " + e; + //for fixing Header Manipulation of Fortify issue + if(!message.matches(REGEX)){ + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + response.addHeader("error",ADD_GROUP_ERROR); + response.addHeader("message", "Policy Id is not valid"); + return; + } + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + if (apiflag!=null){ + response.addHeader("error", "policyCopyError"); + response.addHeader("message", message); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + } else { + setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); + } + return; + } + + if(apiflag != null){ + /* + * If request comes from the API we need to run the PolicyDBDao updateGroup() to notify other paps of the change. + * The GUI does this from the POLICY-SDK-APP code. + */ + + // Get new transaction to perform updateGroup() + PolicyDBDaoTransaction acPutTransaction = policyDBDao.getNewTransaction(); + try { + // get the request content into a String and read the inputStream into a buffer + java.util.Scanner scanner = new java.util.Scanner(request.getInputStream()); + scanner.useDelimiter("\\A"); + String json = scanner.hasNext() ? scanner.next() : ""; + scanner.close(); + + // convert Object sent as JSON into local object + ObjectMapper mapper = new ObjectMapper(); + Object objectFromJSON = mapper.readValue(json, StdPDPPolicy.class); + StdPDPPolicy policy = (StdPDPPolicy) objectFromJSON; + + LOGGER.info("Request JSON Payload: " + json); + + // Assume that this is an update of an existing PDP Group + loggingContext.setServiceName("PolicyEngineAPI:PAP.updateGroup"); + try{ + acPutTransaction.updateGroup(updatedGroup, "XACMLPapServlet.doACPut"); + } catch(Exception e){ + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " Error occurred when notifying PAPs of a group change: " + + e); + throw new PAPException(e.getMessage()); + } + + LOGGER.info("Calling updatGroup() with new group"); + papEngine.updateGroup(updatedGroup); + + LOGGER.info("Group '" + updatedGroup.getId() + "' updated"); + + // Commit transaction to send notification to other PAPs + loggingContext.metricStarted(); + acPutTransaction.commitTransaction(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet updateGroupsFromAPI commitTransaction"); + loggingContext.metricStarted(); + + notifyAC(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet updateGroupsFromAPI notifyAC"); + + // Group changed to send notification to PDPs, which might include changing the policies + groupChanged(updatedGroup,loggingContext); + loggingContext.transactionEnded(); + LOGGER.info("Success"); + + if (policy != null && ((policy.getName().contains("Config_MS_")) || (policy.getId().contains("BRMS_Param")))) { + PushPolicyHandler pushPolicyHandler = PushPolicyHandler.getInstance(); + if (pushPolicyHandler.preSafetyCheck(policy, configHome)) { + LOGGER.debug("Precheck Successful."); + } + } + + //delete temporary policy file from the bin directory + Files.deleteIfExists(Paths.get(policy.getId())); + + } catch (Exception e) { + acPutTransaction.rollbackTransaction(); + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " API PUT exception"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + String message = XACMLErrorConstants.ERROR_PROCESS_FLOW + "Exception occurred when updating the group from API."; + LOGGER.error(message); + setResponseError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + response.addHeader("error",ADD_GROUP_ERROR); + response.addHeader("message", message); + return; + } + } + + // policy file copied ok and the Group was updated on the PDP + response.setStatus(HttpServletResponse.SC_NO_CONTENT); + response.addHeader("operation", "push"); + response.addHeader("policyId", policyId); + response.addHeader("groupId", groupId); + + LOGGER.info("policy '" + policyId + "' copied to directory for group '" + groupId + "'"); + loggingContext.transactionEnded(); + auditLogger.info("Success"); + LOGGER.info("Transaction Ended Successfully"); + + return; + } else if (request.getParameter("default") != null) { + // Args: group=<groupId> default=true <= make default + // change the current default group to be the one identified in the request. + loggingContext.setServiceName("AC:PAP.setDefaultGroup"); + // This is a POST operation rather than a PUT "update group" because of the side-effect that the current default group is also changed. + // It should never be the case that multiple groups are currently marked as the default, but protect against that anyway. + PolicyDBDaoTransaction setDefaultGroupTransaction = policyDBDao.getNewTransaction(); + try { + setDefaultGroupTransaction.changeDefaultGroup(group, "XACMLPapServlet.doACPost"); + papEngine.setDefaultGroup(group); + loggingContext.metricStarted(); + setDefaultGroupTransaction.commitTransaction(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doACPost commitTransaction"); + } catch (Exception e) { + setDefaultGroupTransaction.rollbackTransaction(); + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " Unable to set group"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Unable to set group '" + groupId + "' to default"); + return; + } + response.setStatus(HttpServletResponse.SC_NO_CONTENT); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("Group '" + groupId + "' set to be default"); + } + // Notify the Admin Consoles that something changed + // For now the AC cannot handle anything more detailed than the whole set of PDPGroups, so just notify on that + //TODO - Future: FIGURE OUT WHAT LEVEL TO NOTIFY: 2 groups or entire set - currently notify AC to update whole configuration of all groups + loggingContext.metricStarted(); + notifyAC(); + // This does not affect any PDPs in the existing groups, so no need to notify them of this change + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doACPost notifyAC"); + loggingContext.transactionEnded(); + auditLogger.info("Success"); + LOGGER.info("Transaction Ended Successfully"); + return; + } else if (request.getParameter("pdpId") != null) { + doACPostTransaction = policyDBDao.getNewTransaction(); + // Args: group=<groupId> pdpId=<pdpId> <= move PDP to group + loggingContext.setServiceName("AC:PAP.movePDP"); + String pdpId = request.getParameter("pdpId"); + OnapPDP pdp = papEngine.getPDP(pdpId); + OnapPDPGroup originalGroup = papEngine.getPDPGroup((OnapPDP) pdp); + try{ + doACPostTransaction.movePdp(pdp, group, "XACMLPapServlet.doACPost"); + }catch(Exception e){ + doACPostTransaction.rollbackTransaction(); + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", + " Error while moving pdp in the database: " + +"pdp="+pdp.getId()+",to group="+group.getId()); + throw new PAPException(e.getMessage()); + } + papEngine.movePDP((OnapPDP) pdp, group); + response.setStatus(HttpServletResponse.SC_NO_CONTENT); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("PDP '" + pdp.getId() +"' moved to group '" + group.getId() + "' set to be default"); + } + // update the status of both the original group and the new one + ((StdPDPGroup)originalGroup).resetStatus(); + ((StdPDPGroup)group).resetStatus(); + // Notify the Admin Consoles that something changed + // For now the AC cannot handle anything more detailed than the whole set of PDPGroups, so just notify on that + loggingContext.metricStarted(); + notifyAC(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doACPost notifyAC"); + // Need to notify the PDP that it's config may have changed + pdpChanged(pdp, loggingContext); + loggingContext.metricStarted(); + doACPostTransaction.commitTransaction(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doACPost commitTransaction"); + loggingContext.transactionEnded(); + auditLogger.info("Success"); + PolicyLogger.audit("Transaction Ended Successfully"); + return; + } + } catch (PAPException e) { + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " AC POST exception"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); + return; + } + } + + /** + * Requests from the Admin Console to GET info about the Groups and PDPs + * + * @param request + * @param response + * @param groupId + * @param loggingContext + * @throws ServletException + * @throws IOException + */ + private void doACGet(HttpServletRequest request, HttpServletResponse response, String groupId, ONAPLoggingContext loggingContext) throws IOException { + try { + String parameterDefault = request.getParameter("default"); + String pdpId = request.getParameter("pdpId"); + String pdpGroup = request.getParameter("getPDPGroup"); + if ("".equals(groupId)) { + // request IS from AC but does not identify a group by name + if (parameterDefault != null) { + // Request is for the Default group (whatever its id) + loggingContext.setServiceName("AC:PAP.getDefaultGroup"); + OnapPDPGroup group = papEngine.getDefaultGroup(); + // convert response object to JSON and include in the response + mapperWriteValue(new ObjectMapper(), response, group); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("GET Default group req from '" + request.getRequestURL() + "'"); + } + response.setStatus(HttpServletResponse.SC_OK); + response.setHeader("content-type", "application/json"); + try{ response.getOutputStream().close(); } catch (IOException e){ LOGGER.error(e); } - loggingContext.transactionEnded(); - auditLogger.info("Success"); - PolicyLogger.audit("Transaction Ended Successfully"); - return; - } else if (pdpId != null) { - // Request is related to a PDP - if (pdpGroup == null) { - // Request is for the (unspecified) group containing a given PDP - loggingContext.setServiceName("AC:PAP.getPDP"); - OnapPDP pdp = null; - try{ - pdp = papEngine.getPDP(pdpId); - }catch(PAPException e){ - LOGGER.error(e); - } - // convert response object to JSON and include in the response - mapperWriteValue(new ObjectMapper(), response, pdp); - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("GET pdp '" + pdpId + "' req from '" + request.getRequestURL() + "'"); - } - response.setStatus(HttpServletResponse.SC_OK); - response.setHeader("content-type", "application/json"); - try{ + loggingContext.transactionEnded(); + auditLogger.info("Success"); + PolicyLogger.audit("Transaction Ended Successfully"); + return; + } else if (pdpId != null) { + // Request is related to a PDP + if (pdpGroup == null) { + // Request is for the (unspecified) group containing a given PDP + loggingContext.setServiceName("AC:PAP.getPDP"); + OnapPDP pdp = null; + try{ + pdp = papEngine.getPDP(pdpId); + }catch(PAPException e){ + LOGGER.error(e); + } + // convert response object to JSON and include in the response + mapperWriteValue(new ObjectMapper(), response, pdp); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("GET pdp '" + pdpId + "' req from '" + request.getRequestURL() + "'"); + } + response.setStatus(HttpServletResponse.SC_OK); + response.setHeader("content-type", "application/json"); + try{ + response.getOutputStream().close(); + } catch (IOException e){ + LOGGER.error(e); + } + loggingContext.transactionEnded(); + auditLogger.info("Success"); + PolicyLogger.audit("Transaction Ended Successfully"); + return; + } else { + // Request is for the group containing a given PDP + loggingContext.setServiceName("AC:PAP.getGroupForPDP"); + OnapPDPGroup group =null; + try{ + OnapPDP pdp = papEngine.getPDP(pdpId); + group = papEngine.getPDPGroup((OnapPDP) pdp); + }catch(PAPException e){ + LOGGER.error(e); + } + // convert response object to JSON and include in the response + mapperWriteValue(new ObjectMapper(), response, group); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("GET PDP '" + pdpId + "' Group req from '" + request.getRequestURL() + "'"); + } + response.setStatus(HttpServletResponse.SC_OK); + response.setHeader("content-type", "application/json"); + try{ response.getOutputStream().close(); } catch (IOException e){ LOGGER.error(e); } - loggingContext.transactionEnded(); - auditLogger.info("Success"); - PolicyLogger.audit("Transaction Ended Successfully"); - return; - } else { - // Request is for the group containing a given PDP - loggingContext.setServiceName("AC:PAP.getGroupForPDP"); - OnapPDPGroup group =null; - try{ - OnapPDP pdp = papEngine.getPDP(pdpId); - group = papEngine.getPDPGroup((OnapPDP) pdp); - }catch(PAPException e){ - LOGGER.error(e); - } - // convert response object to JSON and include in the response - mapperWriteValue(new ObjectMapper(), response, group); - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("GET PDP '" + pdpId + "' Group req from '" + request.getRequestURL() + "'"); - } - response.setStatus(HttpServletResponse.SC_OK); - response.setHeader("content-type", "application/json"); - try{ - response.getOutputStream().close(); - } catch (IOException e){ - LOGGER.error(e); - } - loggingContext.transactionEnded(); - auditLogger.info("Success"); - PolicyLogger.audit("Transaction Ended Successfully"); - return; - } - } else { - // request is for top-level properties about all groups - loggingContext.setServiceName("AC:PAP.getAllGroups"); - Set<OnapPDPGroup> groups = null; - try { - groups = papEngine.getOnapPDPGroups(); - } catch(PAPException e) { - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " AC Get exception"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); - return; - } - // convert response object to JSON and include in the response - mapperWriteValue(new ObjectMapper(), response, groups); - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("GET All groups req"); - } - response.setStatus(HttpServletResponse.SC_OK); - response.setHeader("content-type", "application/json"); - try{ - response.getOutputStream().close(); - } catch (IOException e){ - LOGGER.error(e); - } - loggingContext.transactionEnded(); - auditLogger.info("Success"); - PolicyLogger.audit("Transaction Ended Successfully"); - return; - } - } - // for all other GET operations the group must exist before the operation can be done - OnapPDPGroup group = null; - try{ - group = papEngine.getGroup(groupId); - } catch(PAPException e){ - LOGGER.error(e); - } - if (group == null) { - String message = "Unknown groupId '" + groupId + "'"; - //for fixing Header Manipulation of Fortify issue - if(!message.matches(REGEX)){ - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - response.addHeader("error",ADD_GROUP_ERROR); - response.addHeader("message", "Group Id is not valid"); - return; - } - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_NOT_FOUND, message); - return; - } - // Figure out which request this is based on the parameters - String policyId = request.getParameter("policyId"); - if (policyId != null) { - // retrieve a policy - loggingContext.setServiceName("AC:PAP.getPolicy"); - // convert response object to JSON and include in the response - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " GET Policy not implemented"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_BAD_REQUEST, "GET Policy not implemented"); - } else { - // No other parameters, so return the identified Group - loggingContext.setServiceName("AC:PAP.getGroup"); - // convert response object to JSON and include in the response - mapperWriteValue(new ObjectMapper(), response, group); - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("GET group '" + group.getId() + "' req from '" + request.getRequestURL() + "'"); - } - response.setStatus(HttpServletResponse.SC_OK); - response.setHeader("content-type", "application/json"); - try{ - response.getOutputStream().close(); - } catch (IOException e){ - LOGGER.error(e); - } - loggingContext.transactionEnded(); - auditLogger.info("Success"); - PolicyLogger.audit("Transaction Ended Successfully"); - return; - } - // Currently there are no other GET calls from the AC. - // The AC uses the "GET All Groups" operation to fill its local cache and uses that cache for all other GETs without calling the PAP. - // Other GETs that could be called: - // Specific Group (groupId=<groupId>) - // A Policy (groupId=<groupId> policyId=<policyId>) - // A PDP (groupId=<groupId> pdpId=<pdpId>) - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " UNIMPLEMENTED "); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_BAD_REQUEST, "UNIMPLEMENTED"); - } catch (PAPException e) { - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " AC Get exception"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); - return; - } - } - - /** - * Requests from the Admin Console to create new items or update existing ones - * - * @param request - * @param response - * @param groupId - * @param loggingContext - * @throws ServletException - * @throws IOException - */ - private void doACPut(HttpServletRequest request, HttpServletResponse response, String groupId, ONAPLoggingContext loggingContext) throws IOException { - PolicyDBDaoTransaction acPutTransaction = policyDBDao.getNewTransaction(); - try { - // for PUT operations the group may or may not need to exist before the operation can be done - OnapPDPGroup group = papEngine.getGroup(groupId); - // determine the operation needed based on the parameters in the request - // for remaining operations the group must exist before the operation can be done - if (group == null) { - String message = "Unknown groupId '" + groupId + "'"; - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_NOT_FOUND, message); - return; - } - if (request.getParameter("policy") != null) { - // group=<groupId> policy=<policyId> contents=policy file <= Create new policy file in group dir, or replace it if it already exists (do not touch properties) - loggingContext.setServiceName("AC:PAP.putPolicy"); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " PARTIALLY IMPLEMENTED!!! ACTUAL CHANGES SHOULD BE MADE BY PAP SERVLET!!! "); - response.setStatus(HttpServletResponse.SC_NO_CONTENT); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - auditLogger.info("Success"); - PolicyLogger.audit("Transaction Ended Successfully"); - return; - } else if (request.getParameter("pdpId") != null) { - // ARGS: group=<groupId> pdpId=<pdpId/URL> <= create a new PDP or Update an Existing one - String pdpId = request.getParameter("pdpId"); - if (papEngine.getPDP(pdpId) == null) { - loggingContext.setServiceName("AC:PAP.createPDP"); - } else { - loggingContext.setServiceName("AC:PAP.updatePDP"); - } - // get the request content into a String - String json = null; - // read the inputStream into a buffer (trick found online scans entire input looking for end-of-file) - try{ - Scanner scanner = new Scanner(request.getInputStream()); - scanner.useDelimiter("\\A"); - json = scanner.hasNext() ? scanner.next() : ""; - scanner.close(); - }catch(IOException e){ - LOGGER.error(e); - } - LOGGER.info("JSON request from AC: " + json); - // convert Object sent as JSON into local object - ObjectMapper mapper = new ObjectMapper(); - Object objectFromJSON = null; - try { - objectFromJSON = mapper.readValue(json, StdPDP.class); - } catch(Exception e) { - LOGGER.error(e); - } - if (pdpId == null || - objectFromJSON == null || - ! (objectFromJSON instanceof StdPDP) || - ((StdPDP)objectFromJSON).getId() == null || - ! ((StdPDP)objectFromJSON).getId().equals(pdpId)) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " PDP new/update had bad input. pdpId=" + pdpId + " objectFromJSON="+objectFromJSON); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Bad input pdpid for object:"+objectFromJSON); - } - StdPDP pdp = (StdPDP) objectFromJSON; - if(pdp != null){ - OnapPDP oPDP = null; - try{ - oPDP = papEngine.getPDP(pdpId); - }catch (PAPException e){ - LOGGER.error(e); - } - if (oPDP == null) { - // this is a request to create a new PDP object - try{ - acPutTransaction.addPdpToGroup(pdp.getId(), group.getId(), pdp.getName(), - pdp.getDescription(), pdp.getJmxPort(),"XACMLPapServlet.doACPut"); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " Error while adding pdp to group in the database: " - +"pdp="+ (pdp.getId()) +",to group="+group.getId()); - throw new PAPException(e.getMessage()); - } - try{ - papEngine.newPDP(pdp.getId(), group, pdp.getName(), pdp.getDescription(), pdp.getJmxPort()); - }catch(PAPException e){ - LOGGER.error(e); - } - } else { - try{ - acPutTransaction.updatePdp(pdp, "XACMLPapServlet.doACPut"); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " Error while updating pdp in the database: " - +"pdp="+ pdp.getId()); - throw new PAPException(e.getMessage()); - } - // this is a request to update the pdp - try{ - papEngine.updatePDP(pdp); - }catch(PAPException e){ + loggingContext.transactionEnded(); + auditLogger.info("Success"); + PolicyLogger.audit("Transaction Ended Successfully"); + return; + } + } else { + // request is for top-level properties about all groups + loggingContext.setServiceName("AC:PAP.getAllGroups"); + Set<OnapPDPGroup> groups = null; + try { + groups = papEngine.getOnapPDPGroups(); + } catch(PAPException e) { + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " AC Get exception"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); + return; + } + // convert response object to JSON and include in the response + mapperWriteValue(new ObjectMapper(), response, groups); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("GET All groups req"); + } + response.setStatus(HttpServletResponse.SC_OK); + response.setHeader("content-type", "application/json"); + try{ + response.getOutputStream().close(); + } catch (IOException e){ + LOGGER.error(e); + } + loggingContext.transactionEnded(); + auditLogger.info("Success"); + PolicyLogger.audit("Transaction Ended Successfully"); + return; + } + } + // for all other GET operations the group must exist before the operation can be done + OnapPDPGroup group = null; + try{ + group = papEngine.getGroup(groupId); + } catch(PAPException e){ + LOGGER.error(e); + } + if (group == null) { + String message = "Unknown groupId '" + groupId + "'"; + //for fixing Header Manipulation of Fortify issue + if(!message.matches(REGEX)){ + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + response.addHeader("error",ADD_GROUP_ERROR); + response.addHeader("message", "Group Id is not valid"); + return; + } + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_NOT_FOUND, message); + return; + } + // Figure out which request this is based on the parameters + String policyId = request.getParameter("policyId"); + if (policyId != null) { + // retrieve a policy + loggingContext.setServiceName("AC:PAP.getPolicy"); + // convert response object to JSON and include in the response + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " GET Policy not implemented"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_BAD_REQUEST, "GET Policy not implemented"); + } else { + // No other parameters, so return the identified Group + loggingContext.setServiceName("AC:PAP.getGroup"); + // convert response object to JSON and include in the response + mapperWriteValue(new ObjectMapper(), response, group); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("GET group '" + group.getId() + "' req from '" + request.getRequestURL() + "'"); + } + response.setStatus(HttpServletResponse.SC_OK); + response.setHeader("content-type", "application/json"); + try{ + response.getOutputStream().close(); + } catch (IOException e){ + LOGGER.error(e); + } + loggingContext.transactionEnded(); + auditLogger.info("Success"); + PolicyLogger.audit("Transaction Ended Successfully"); + return; + } + // Currently there are no other GET calls from the AC. + // The AC uses the "GET All Groups" operation to fill its local cache and uses that cache for all other GETs without calling the PAP. + // Other GETs that could be called: + // Specific Group (groupId=<groupId>) + // A Policy (groupId=<groupId> policyId=<policyId>) + // A PDP (groupId=<groupId> pdpId=<pdpId>) + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " UNIMPLEMENTED "); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_BAD_REQUEST, "UNIMPLEMENTED"); + } catch (PAPException e) { + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " AC Get exception"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); + return; + } + } + + /** + * Requests from the Admin Console to create new items or update existing ones + * + * @param request + * @param response + * @param groupId + * @param loggingContext + * @throws ServletException + * @throws IOException + */ + private void doACPut(HttpServletRequest request, HttpServletResponse response, String groupId, ONAPLoggingContext loggingContext) throws IOException { + PolicyDBDaoTransaction acPutTransaction = policyDBDao.getNewTransaction(); + try { + // for PUT operations the group may or may not need to exist before the operation can be done + OnapPDPGroup group = papEngine.getGroup(groupId); + // determine the operation needed based on the parameters in the request + // for remaining operations the group must exist before the operation can be done + if (group == null) { + String message = "Unknown groupId '" + groupId + "'"; + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_NOT_FOUND, message); + return; + } + if (request.getParameter("policy") != null) { + // group=<groupId> policy=<policyId> contents=policy file <= Create new policy file in group dir, or replace it if it already exists (do not touch properties) + loggingContext.setServiceName("AC:PAP.putPolicy"); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " PARTIALLY IMPLEMENTED!!! ACTUAL CHANGES SHOULD BE MADE BY PAP SERVLET!!! "); + response.setStatus(HttpServletResponse.SC_NO_CONTENT); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + auditLogger.info("Success"); + PolicyLogger.audit("Transaction Ended Successfully"); + return; + } else if (request.getParameter("pdpId") != null) { + // ARGS: group=<groupId> pdpId=<pdpId/URL> <= create a new PDP or Update an Existing one + String pdpId = request.getParameter("pdpId"); + if (papEngine.getPDP(pdpId) == null) { + loggingContext.setServiceName("AC:PAP.createPDP"); + } else { + loggingContext.setServiceName("AC:PAP.updatePDP"); + } + // get the request content into a String + String json = null; + // read the inputStream into a buffer (trick found online scans entire input looking for end-of-file) + try{ + Scanner scanner = new Scanner(request.getInputStream()); + scanner.useDelimiter("\\A"); + json = scanner.hasNext() ? scanner.next() : ""; + scanner.close(); + }catch(IOException e){ + LOGGER.error(e); + } + LOGGER.info("JSON request from AC: " + json); + // convert Object sent as JSON into local object + ObjectMapper mapper = new ObjectMapper(); + Object objectFromJSON = null; + try { + objectFromJSON = mapper.readValue(json, StdPDP.class); + } catch(Exception e) { + LOGGER.error(e); + } + if (pdpId == null || + objectFromJSON == null || + ! (objectFromJSON instanceof StdPDP) || + ((StdPDP)objectFromJSON).getId() == null || + ! ((StdPDP)objectFromJSON).getId().equals(pdpId)) { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " PDP new/update had bad input. pdpId=" + pdpId + " objectFromJSON="+objectFromJSON); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Bad input pdpid for object:"+objectFromJSON); + } + StdPDP pdp = (StdPDP) objectFromJSON; + if(pdp != null){ + OnapPDP oPDP = null; + try{ + oPDP = papEngine.getPDP(pdpId); + }catch (PAPException e){ + LOGGER.error(e); + } + if (oPDP == null) { + // this is a request to create a new PDP object + try{ + acPutTransaction.addPdpToGroup(pdp.getId(), group.getId(), pdp.getName(), + pdp.getDescription(), pdp.getJmxPort(),"XACMLPapServlet.doACPut"); + } catch(Exception e){ + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " Error while adding pdp to group in the database: " + +"pdp="+ (pdp.getId()) +",to group="+group.getId()); + throw new PAPException(e.getMessage()); + } + try{ + papEngine.newPDP(pdp.getId(), group, pdp.getName(), pdp.getDescription(), pdp.getJmxPort()); + }catch(PAPException e){ + LOGGER.error(e); + } + } else { + try{ + acPutTransaction.updatePdp(pdp, "XACMLPapServlet.doACPut"); + } catch(Exception e){ + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " Error while updating pdp in the database: " + +"pdp="+ pdp.getId()); + throw new PAPException(e.getMessage()); + } + // this is a request to update the pdp + try{ + papEngine.updatePDP(pdp); + }catch(PAPException e){ LOGGER.error(e); } - } - response.setStatus(HttpServletResponse.SC_NO_CONTENT); - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("PDP '" + pdpId + "' created/updated"); - } - // adjust the group's state including the new PDP - ((StdPDPGroup)group).resetStatus(); - // tell the Admin Consoles there is a change - loggingContext.metricStarted(); - notifyAC(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doACPut notifyAC"); - // this might affect the PDP, so notify it of the change - pdpChanged(pdp, loggingContext); - loggingContext.metricStarted(); - acPutTransaction.commitTransaction(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doACPut commitTransaction"); - loggingContext.transactionEnded(); - auditLogger.info("Success"); - PolicyLogger.audit("Transaction Ended Successfully"); - return; - }else{ - try{ - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, "XACMLPapServlet", " Error while adding pdp to group in the database: " - +"pdp=null" + ",to group="+group.getId()); - throw new PAPException("PDP is null"); - } catch(Exception e){ - throw new PAPException("PDP is null" + e.getMessage() +e); - } - } - } else if (request.getParameter("pipId") != null) { - // group=<groupId> pipId=<pipEngineId> contents=pip properties <= add a PIP to pip config, or replace it if it already exists (lenient operation) - loggingContext.setServiceName("AC:PAP.putPIP"); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " UNIMPLEMENTED"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_BAD_REQUEST, "UNIMPLEMENTED"); - return; - } else { - // Assume that this is an update of an existing PDP Group - // ARGS: group=<groupId> <= Update an Existing Group - loggingContext.setServiceName("AC:PAP.updateGroup"); - // get the request content into a String - String json = null; - // read the inputStream into a buffer (trick found online scans entire input looking for end-of-file) + } + response.setStatus(HttpServletResponse.SC_NO_CONTENT); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("PDP '" + pdpId + "' created/updated"); + } + // adjust the group's state including the new PDP + ((StdPDPGroup)group).resetStatus(); + // tell the Admin Consoles there is a change + loggingContext.metricStarted(); + notifyAC(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doACPut notifyAC"); + // this might affect the PDP, so notify it of the change + pdpChanged(pdp, loggingContext); + loggingContext.metricStarted(); + acPutTransaction.commitTransaction(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doACPut commitTransaction"); + loggingContext.transactionEnded(); + auditLogger.info("Success"); + PolicyLogger.audit("Transaction Ended Successfully"); + return; + }else{ + try{ + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, "XACMLPapServlet", " Error while adding pdp to group in the database: " + +"pdp=null" + ",to group="+group.getId()); + throw new PAPException("PDP is null"); + } catch(Exception e){ + throw new PAPException("PDP is null" + e.getMessage() +e); + } + } + } else if (request.getParameter("pipId") != null) { + // group=<groupId> pipId=<pipEngineId> contents=pip properties <= add a PIP to pip config, or replace it if it already exists (lenient operation) + loggingContext.setServiceName("AC:PAP.putPIP"); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " UNIMPLEMENTED"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_BAD_REQUEST, "UNIMPLEMENTED"); + return; + } else { + // Assume that this is an update of an existing PDP Group + // ARGS: group=<groupId> <= Update an Existing Group + loggingContext.setServiceName("AC:PAP.updateGroup"); + // get the request content into a String + String json = null; + // read the inputStream into a buffer (trick found online scans entire input looking for end-of-file) try{ Scanner scanner = new Scanner(request.getInputStream()); scanner.useDelimiter("\\A"); @@ -2158,880 +2158,880 @@ public class XACMLPapServlet extends HttpServlet implements StdItemSetChangeList }catch(IOException e){ LOGGER.error(e); } - LOGGER.info("JSON request from AC: " + json); - // convert Object sent as JSON into local object - ObjectMapper mapper = new ObjectMapper(); - Object objectFromJSON = null; - try { - objectFromJSON = mapper.readValue(json, StdPDPGroup.class); - } catch(Exception e) { - LOGGER.error(e); - } - if (objectFromJSON == null || ! (objectFromJSON instanceof StdPDPGroup) || - ! ((StdPDPGroup)objectFromJSON).getId().equals(group.getId())) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Group update had bad input. id=" + group.getId() + " objectFromJSON="+objectFromJSON); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Bad input id for object:"+objectFromJSON); - } - // The Path on the PAP side is not carried on the RESTful interface with the AC - // (because it is local to the PAP) - // so we need to fill that in before submitting the group for update - if(objectFromJSON != null){ - ((StdPDPGroup)objectFromJSON).setDirectory(((StdPDPGroup)group).getDirectory()); - } - try{ - if("delete".equals(((StdPDPGroup)objectFromJSON).getOperation())){ - acPutTransaction.updateGroup((StdPDPGroup)objectFromJSON, "XACMLPapServlet.doDelete"); - } else { - acPutTransaction.updateGroup((StdPDPGroup)objectFromJSON, "XACMLPapServlet.doACPut"); - } - } catch(Exception e){ - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW + " Error while updating group in the database: " - +"group="+group.getId()); - LOGGER.error(e); - throw new PAPException(e.getMessage()); - } - - PushPolicyHandler pushPolicyHandler = PushPolicyHandler.getInstance(); - OnapPDPGroup updatedGroup = (StdPDPGroup)objectFromJSON; - if (pushPolicyHandler.preSafetyCheck(updatedGroup, configHome)) { - LOGGER.debug("Precheck Successful."); - } - try{ - papEngine.updateGroup((StdPDPGroup)objectFromJSON); - }catch(PAPException e){ - LOGGER.error(e); - } - response.setStatus(HttpServletResponse.SC_NO_CONTENT); - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("Group '" + group.getId() + "' updated"); - } - loggingContext.metricStarted(); - acPutTransaction.commitTransaction(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doACPut commitTransaction"); - // tell the Admin Consoles there is a change - loggingContext.metricStarted(); - notifyAC(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doACPut notifyAC"); - // Group changed, which might include changing the policies - groupChanged(group, loggingContext); - loggingContext.transactionEnded(); - auditLogger.info("Success"); - PolicyLogger.audit("Transaction Ended Successfully"); - return; - } - } catch (PAPException e) { - LOGGER.debug(e); - acPutTransaction.rollbackTransaction(); - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " AC PUT exception"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); - return; - } - } - - /** - * Requests from the Admin Console to delete/remove items - * - * @param request - * @param response - * @param groupId - * @param loggingContext - * @throws ServletException - * @throws IOException - */ - private void doACDelete(HttpServletRequest request, HttpServletResponse response, String groupId, ONAPLoggingContext loggingContext) throws IOException { - PolicyDBDaoTransaction removePdpOrGroupTransaction = policyDBDao.getNewTransaction(); - try { - // for all DELETE operations the group must exist before the operation can be done - loggingContext.setServiceName("AC:PAP.delete"); - OnapPDPGroup group = papEngine.getGroup(groupId); - if (group == null) { - String message = "Unknown groupId '" + groupId + "'"; - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_NOT_FOUND, "Unknown groupId '" + groupId +"'"); - return; - } - // determine the operation needed based on the parameters in the request - if (request.getParameter("policy") != null) { - // group=<groupId> policy=<policyId> [delete=<true|false>] <= delete policy file from group - loggingContext.setServiceName("AC:PAP.deletePolicy"); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " UNIMPLEMENTED"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_BAD_REQUEST, "UNIMPLEMENTED"); - return; - } else if (request.getParameter("pdpId") != null) { - // ARGS: group=<groupId> pdpId=<pdpId> <= delete PDP - String pdpId = request.getParameter("pdpId"); - OnapPDP pdp = papEngine.getPDP(pdpId); - try{ - removePdpOrGroupTransaction.removePdpFromGroup(pdp.getId(),"XACMLPapServlet.doACDelete"); - } catch(Exception e){ - throw new PAPException(e); - } - try{ - papEngine.removePDP((OnapPDP) pdp); - }catch(PAPException e){ + LOGGER.info("JSON request from AC: " + json); + // convert Object sent as JSON into local object + ObjectMapper mapper = new ObjectMapper(); + Object objectFromJSON = null; + try { + objectFromJSON = mapper.readValue(json, StdPDPGroup.class); + } catch(Exception e) { + LOGGER.error(e); + } + if (objectFromJSON == null || ! (objectFromJSON instanceof StdPDPGroup) || + ! ((StdPDPGroup)objectFromJSON).getId().equals(group.getId())) { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Group update had bad input. id=" + group.getId() + " objectFromJSON="+objectFromJSON); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Bad input id for object:"+objectFromJSON); + } + // The Path on the PAP side is not carried on the RESTful interface with the AC + // (because it is local to the PAP) + // so we need to fill that in before submitting the group for update + if(objectFromJSON != null){ + ((StdPDPGroup)objectFromJSON).setDirectory(((StdPDPGroup)group).getDirectory()); + } + try{ + if("delete".equals(((StdPDPGroup)objectFromJSON).getOperation())){ + acPutTransaction.updateGroup((StdPDPGroup)objectFromJSON, "XACMLPapServlet.doDelete"); + } else { + acPutTransaction.updateGroup((StdPDPGroup)objectFromJSON, "XACMLPapServlet.doACPut"); + } + } catch(Exception e){ + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW + " Error while updating group in the database: " + +"group="+group.getId()); + LOGGER.error(e); + throw new PAPException(e.getMessage()); + } + + PushPolicyHandler pushPolicyHandler = PushPolicyHandler.getInstance(); + OnapPDPGroup updatedGroup = (StdPDPGroup)objectFromJSON; + if (pushPolicyHandler.preSafetyCheck(updatedGroup, configHome)) { + LOGGER.debug("Precheck Successful."); + } + try{ + papEngine.updateGroup((StdPDPGroup)objectFromJSON); + }catch(PAPException e){ LOGGER.error(e); } - // adjust the status of the group, which may have changed when we removed this PDP - ((StdPDPGroup)group).resetStatus(); - response.setStatus(HttpServletResponse.SC_NO_CONTENT); - loggingContext.metricStarted(); - notifyAC(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doACPut notifyAC"); - // update the PDP and tell it that it has NO Policies (which prevents it from serving PEP Requests) - pdpChanged(pdp, loggingContext); - loggingContext.metricStarted(); - removePdpOrGroupTransaction.commitTransaction(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doACPut commitTransaction"); - loggingContext.transactionEnded(); - auditLogger.info("Success"); - PolicyLogger.audit("Transaction Ended Successfully"); - return; - } else if (request.getParameter("pipId") != null) { - // group=<groupId> pipId=<pipEngineId> <= delete PIP config for given engine - loggingContext.setServiceName("AC:PAP.deletePIPConfig"); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " UNIMPLEMENTED"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_BAD_REQUEST, "UNIMPLEMENTED"); - return; - } else { - // ARGS: group=<groupId> movePDPsToGroupId=<movePDPsToGroupId> <= delete a group and move all its PDPs to the given group - String moveToGroupId = request.getParameter("movePDPsToGroupId"); - OnapPDPGroup moveToGroup = null; - if (moveToGroupId != null) { - try{ - moveToGroup = papEngine.getGroup(moveToGroupId); - }catch(PAPException e){ - LOGGER.error(e); - } - } - // get list of PDPs in the group being deleted so we can notify them that they got changed - Set<OnapPDP> movedPDPs = new HashSet<>(); - movedPDPs.addAll(group.getOnapPdps()); - // do the move/remove - try{ - removePdpOrGroupTransaction.deleteGroup(group, moveToGroup,"XACMLPapServlet.doACDelete"); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.ERROR_UNKNOWN, e, "XACMLPapServlet", " Failed to delete PDP Group. Exception"); - throw new PAPException(e.getMessage()); - } - try{ - papEngine.removeGroup(group, moveToGroup); - }catch(PAPException e){ + response.setStatus(HttpServletResponse.SC_NO_CONTENT); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("Group '" + group.getId() + "' updated"); + } + loggingContext.metricStarted(); + acPutTransaction.commitTransaction(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doACPut commitTransaction"); + // tell the Admin Consoles there is a change + loggingContext.metricStarted(); + notifyAC(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doACPut notifyAC"); + // Group changed, which might include changing the policies + groupChanged(group, loggingContext); + loggingContext.transactionEnded(); + auditLogger.info("Success"); + PolicyLogger.audit("Transaction Ended Successfully"); + return; + } + } catch (PAPException e) { + LOGGER.debug(e); + acPutTransaction.rollbackTransaction(); + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " AC PUT exception"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); + return; + } + } + + /** + * Requests from the Admin Console to delete/remove items + * + * @param request + * @param response + * @param groupId + * @param loggingContext + * @throws ServletException + * @throws IOException + */ + private void doACDelete(HttpServletRequest request, HttpServletResponse response, String groupId, ONAPLoggingContext loggingContext) throws IOException { + PolicyDBDaoTransaction removePdpOrGroupTransaction = policyDBDao.getNewTransaction(); + try { + // for all DELETE operations the group must exist before the operation can be done + loggingContext.setServiceName("AC:PAP.delete"); + OnapPDPGroup group = papEngine.getGroup(groupId); + if (group == null) { + String message = "Unknown groupId '" + groupId + "'"; + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_NOT_FOUND, "Unknown groupId '" + groupId +"'"); + return; + } + // determine the operation needed based on the parameters in the request + if (request.getParameter("policy") != null) { + // group=<groupId> policy=<policyId> [delete=<true|false>] <= delete policy file from group + loggingContext.setServiceName("AC:PAP.deletePolicy"); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " UNIMPLEMENTED"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_BAD_REQUEST, "UNIMPLEMENTED"); + return; + } else if (request.getParameter("pdpId") != null) { + // ARGS: group=<groupId> pdpId=<pdpId> <= delete PDP + String pdpId = request.getParameter("pdpId"); + OnapPDP pdp = papEngine.getPDP(pdpId); + try{ + removePdpOrGroupTransaction.removePdpFromGroup(pdp.getId(),"XACMLPapServlet.doACDelete"); + } catch(Exception e){ + throw new PAPException(e); + } + try{ + papEngine.removePDP((OnapPDP) pdp); + }catch(PAPException e){ LOGGER.error(e); } - response.setStatus(HttpServletResponse.SC_NO_CONTENT); - loggingContext.metricStarted(); - notifyAC(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doACPut notifyAC"); - // notify any PDPs in the removed set that their config may have changed - for (OnapPDP pdp : movedPDPs) { - pdpChanged(pdp, loggingContext); - } - loggingContext.metricStarted(); - removePdpOrGroupTransaction.commitTransaction(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet doACPut commitTransaction"); - loggingContext.transactionEnded(); - auditLogger.info("Success"); - PolicyLogger.audit("Transaction Ended Successfully"); - return; - } - } catch (PAPException e) { - removePdpOrGroupTransaction.rollbackTransaction(); - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " AC DELETE exception"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); - return; - } - } - - /** - * Heartbeat thread - periodically check on PDPs' status - * - * Heartbeat with all known PDPs. - * - * Implementation note: - * - * The PDPs are contacted Sequentially, not in Parallel. - * - * If we did this in parallel using multiple threads we would simultaneously use - * - 1 thread and - * - 1 connection - * for EACH PDP. - * This could become a resource problem since we already use multiple threads and connections for updating the PDPs - * when user changes occur. - * Using separate threads can also make it tricky dealing with timeouts on PDPs that are non-responsive. - * - * The Sequential operation does a heartbeat request to each PDP one at a time. - * This has the flaw that any PDPs that do not respond will hold up the entire heartbeat sequence until they timeout. - * If there are a lot of non-responsive PDPs and the timeout is large-ish (the default is 20 seconds) - * it could take a long time to cycle through all of the PDPs. - * That means that this may not notice a PDP being down in a predictable time. - */ - private class Heartbeat implements Runnable { - private PAPPolicyEngine papEngine; - private Set<OnapPDP> pdps = new HashSet<>(); - private int heartbeatInterval; - private int heartbeatTimeout; - - public volatile boolean isRunning = false; - - public synchronized boolean isRunning() { - return this.isRunning; - } - - public synchronized void terminate() { - this.isRunning = false; - } - - public Heartbeat(PAPPolicyEngine papEngine2) { - papEngine = papEngine2; - this.heartbeatInterval = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_HEARTBEAT_INTERVAL, "10000")); - this.heartbeatTimeout = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_HEARTBEAT_TIMEOUT, "10000")); - } - - @Override - public void run() { - // Set ourselves as running - synchronized(this) { - this.isRunning = true; - } - HashMap<String, URL> idToURLMap = new HashMap<>(); - try { - while (this.isRunning()) { - // Wait the given time - Thread.sleep(heartbeatInterval); - // get the list of PDPs (may have changed since last time) - pdps.clear(); - synchronized(papEngine) { - try { - for (OnapPDPGroup g : papEngine.getOnapPDPGroups()) { - for (OnapPDP p : g.getOnapPdps()) { - pdps.add(p); - } - } - } catch (PAPException e) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", "Heartbeat unable to read PDPs from PAPEngine"); - } - } - // Check for shutdown - if (this.isRunning() == false) { - LOGGER.info("isRunning is false, getting out of loop."); - break; - } - // try to get the summary status from each PDP - boolean changeSeen = false; - for (OnapPDP pdp : pdps) { - // Check for shutdown - if (this.isRunning() == false) { - LOGGER.info("isRunning is false, getting out of loop."); - break; - } - // the id of the PDP is its url (though we add a query parameter) - URL pdpURL = idToURLMap.get(pdp.getId()); - if (pdpURL == null) { - // haven't seen this PDP before - String fullURLString = null; - try { - // Check PDP ID - if(CheckPDP.validateID(pdp.getId())){ - fullURLString = pdp.getId() + "?type=hb"; - pdpURL = new URL(fullURLString); - idToURLMap.put(pdp.getId(), pdpURL); - } - } catch (MalformedURLException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "XACMLPapServlet", " PDP id '" + fullURLString + "' is not a valid URL"); - continue; - } - } - // Do a GET with type HeartBeat - String newStatus = ""; - HttpURLConnection connection = null; - try { - // Open up the connection - if(pdpURL != null){ - connection = (HttpURLConnection)pdpURL.openConnection(); - // Setup our method and headers - connection.setRequestMethod("GET"); - connection.setConnectTimeout(heartbeatTimeout); - // Authentication - String encoding = CheckPDP.getEncoding(pdp.getId()); - if(encoding !=null){ - connection.setRequestProperty("Authorization", "Basic " + encoding); - } - // Do the connect - connection.connect(); - if (connection.getResponseCode() == 204) { - newStatus = connection.getHeaderField(XACMLRestProperties.PROP_PDP_HTTP_HEADER_HB); - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("Heartbeat '" + pdp.getId() + "' status='" + newStatus + "'"); - } - } else { - // anything else is an unexpected result - newStatus = PDPStatus.Status.UNKNOWN.toString(); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " Heartbeat connect response code " + connection.getResponseCode() + ": " + pdp.getId()); - } - } - } catch (UnknownHostException e) { - newStatus = PDPStatus.Status.NO_SUCH_HOST.toString(); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Heartbeat '" + pdp.getId() + "' NO_SUCH_HOST"); - } catch (SocketTimeoutException e) { - newStatus = PDPStatus.Status.CANNOT_CONNECT.toString(); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Heartbeat '" + pdp.getId() + "' connection timeout"); - } catch (ConnectException e) { - newStatus = PDPStatus.Status.CANNOT_CONNECT.toString(); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Heartbeat '" + pdp.getId() + "' cannot connect"); - } catch (Exception e) { - newStatus = PDPStatus.Status.UNKNOWN.toString(); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", "Heartbeat '" + pdp.getId() + "' connect exception"); - } finally { - // cleanup the connection - if(connection != null) - connection.disconnect(); - } - if ( ! pdp.getStatus().getStatus().toString().equals(newStatus)) { - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("previous status='" + pdp.getStatus().getStatus()+"' new Status='" + newStatus + "'"); - } - try { - setPDPSummaryStatus(pdp, newStatus); - } catch (PAPException e) { - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", "Unable to set state for PDP '" + pdp.getId()); - } - changeSeen = true; - } - } - // Check for shutdown - if (this.isRunning() == false) { - LOGGER.info("isRunning is false, getting out of loop."); - break; - } - // if any of the PDPs changed state, tell the ACs to update - if (changeSeen) { - notifyAC(); - } - } - } catch (InterruptedException e) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " Heartbeat interrupted. Shutting down"); - this.terminate(); - Thread.currentThread().interrupt(); - } - } - } - - /* - * HELPER to change Group status when PDP status is changed - * (Must NOT be called from a method that is synchronized on the papEngine or it may deadlock) - */ - private void setPDPSummaryStatus(OnapPDP pdp, PDPStatus.Status newStatus) throws PAPException { - setPDPSummaryStatus(pdp, newStatus.toString()); - } - - private void setPDPSummaryStatus(OnapPDP pdp, String newStatus) throws PAPException { - synchronized(papEngine) { - StdPDPStatus status = new StdPDPStatus(); - status.setStatus(PDPStatus.Status.valueOf(newStatus)); - ((StdPDP)pdp).setStatus(status); - // now adjust the group - StdPDPGroup group = (StdPDPGroup)papEngine.getPDPGroup((OnapPDP) pdp); - // if the PDP was just deleted it may transiently exist but not be in a group - if (group != null) { - group.resetStatus(); - } - } - } - - /* - * Callback methods telling this servlet to notify PDPs of changes made by the PAP StdEngine - * in the PDP group directories - */ - @Override - public void changed() { - // all PDPs in all groups need to be updated/sync'd - Set<OnapPDPGroup> groups; - try { - groups = papEngine.getOnapPDPGroups(); - } catch (PAPException e) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " getPDPGroups failed"); - throw new IllegalAccessError(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Unable to get Groups: " + e); - } - for (OnapPDPGroup group : groups) { - groupChanged(group); - } - } - - public void changed(ONAPLoggingContext loggingContext) { - // all PDPs in all groups need to be updated/sync'd - Set<OnapPDPGroup> groups; - try { - groups = papEngine.getOnapPDPGroups(); - } catch (PAPException e) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " getPDPGroups failed"); - throw new IllegalAccessError(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Unable to get Groups: " + e); - } - for (OnapPDPGroup group : groups) { - groupChanged(group, loggingContext); - } - } - - @Override - public void groupChanged(OnapPDPGroup group) { - // all PDPs within one group need to be updated/sync'd - for (OnapPDP pdp : group.getOnapPdps()) { - pdpChanged(pdp); - } - } - - public void groupChanged(OnapPDPGroup group, ONAPLoggingContext loggingContext) { - // all PDPs within one group need to be updated/sync'd - for (OnapPDP pdp : group.getOnapPdps()) { - pdpChanged(pdp, loggingContext); - } - } - - @Override - public void pdpChanged(OnapPDP pdp) { - // kick off a thread to do an event notification for each PDP. - // This needs to be on a separate thread so that PDPs that do not respond (down, non-existent, etc) - // do not block the PSP response to the AC, which would freeze the GUI until all PDPs sequentially respond or time-out. - Thread t = new Thread(new UpdatePDPThread(pdp)); - if(CheckPDP.validateID(pdp.getId())){ - t.start(); - } - } - - public void pdpChanged(OnapPDP pdp, ONAPLoggingContext loggingContext) { - // kick off a thread to do an event notification for each PDP. - // This needs to be on a separate thread so that PDPs that do not respond (down, non-existent, etc) - // do not block the PSP response to the AC, which would freeze the GUI until all PDPs sequentially respond or time-out. - Thread t = new Thread(new UpdatePDPThread(pdp, loggingContext)); - if(CheckPDP.validateID(pdp.getId())){ - t.start(); - } - } - - private class UpdatePDPThread implements Runnable { - private OnapPDP pdp; - private String requestId; - private ONAPLoggingContext loggingContext; - - public UpdatePDPThread(OnapPDP pdp) { - this.pdp = pdp; - } - - public UpdatePDPThread(OnapPDP pdp, ONAPLoggingContext loggingContext) { - this.pdp = pdp; - if ((loggingContext != null) && (loggingContext.getRequestID() != null || loggingContext.getRequestID() == "")) { - this.requestId = loggingContext.getRequestID(); - } - this.loggingContext = loggingContext; - } - - public void run() { - // send the current configuration to one PDP - HttpURLConnection connection = null; - // get a new logging context for the thread - try { - if (this.loggingContext == null) { - loggingContext = new ONAPLoggingContext(baseLoggingContext); - } - } catch (Exception e) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Failed to send property file to " + pdp.getId()); - // Since this is a server-side error, it probably does not reflect a problem on the client, - // so do not change the PDP status. - return; - } - try { - loggingContext.setServiceName("PAP:PDP.putConfig"); - // If a requestId was provided, use it, otherwise generate one; post to loggingContext to be used later when calling PDP - if ((requestId == null) || (requestId == "")) { - UUID requestID = UUID.randomUUID(); - loggingContext.setRequestID(requestID.toString()); - PolicyLogger.info("requestID not provided in call to XACMLPapSrvlet (UpdatePDPThread) so we generated one: " + loggingContext.getRequestID()); - } else { - loggingContext.setRequestID(requestId); - PolicyLogger.info("requestID was provided in call to XACMLPapSrvlet (UpdatePDPThread): " + loggingContext.getRequestID()); - } - loggingContext.transactionStarted(); - // the Id of the PDP is its URL - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("creating url for id '" + pdp.getId() + "'"); - } - //TODO - currently always send both policies and pips. Do we care enough to add code to allow sending just one or the other? - //TODO (need to change "cache=", implying getting some input saying which to change) - URL url = new URL(pdp.getId() + "?cache=all"); - // Open up the connection - connection = (HttpURLConnection)url.openConnection(); - // Setup our method and headers - connection.setRequestMethod("PUT"); - // Authentication - String encoding = CheckPDP.getEncoding(pdp.getId()); - if(encoding !=null){ - connection.setRequestProperty("Authorization", "Basic " + encoding); - } - connection.setRequestProperty("Content-Type", "text/x-java-properties"); - connection.setRequestProperty("X-ECOMP-RequestID", loggingContext.getRequestID()); - connection.setInstanceFollowRedirects(true); - connection.setDoOutput(true); - try (OutputStream os = connection.getOutputStream()) { - OnapPDPGroup group = papEngine.getPDPGroup((OnapPDP) pdp); - // if the PDP was just deleted, there is no group, but we want to send an update anyway - if (group == null) { - // create blank properties files - Properties policyProperties = new Properties(); - policyProperties.put(XACMLProperties.PROP_ROOTPOLICIES, ""); - policyProperties.put(XACMLProperties.PROP_REFERENCEDPOLICIES, ""); - policyProperties.store(os, ""); - Properties pipProps = new Properties(); - pipProps.setProperty(XACMLProperties.PROP_PIP_ENGINES, ""); - pipProps.store(os, ""); - } else { - // send properties from the current group - group.getPolicyProperties().store(os, ""); - Properties policyLocations = new Properties(); - for (PDPPolicy policy : group.getPolicies()) { - policyLocations.put(policy.getId() + ".url", XACMLPapServlet.papURL + "?id=" + policy.getId()); - } - policyLocations.store(os, ""); - group.getPipConfigProperties().store(os, ""); - } - } catch (Exception e) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Failed to send property file to " + pdp.getId()); - // Since this is a server-side error, it probably does not reflect a problem on the client, - // so do not change the PDP status. - return; - } - // Do the connect - loggingContext.metricStarted(); - connection.connect(); - loggingContext.metricEnded(); - PolicyLogger.metrics("XACMLPapServlet UpdatePDPThread connection connect"); - if (connection.getResponseCode() == 204) { - LOGGER.info("Success. We are configured correctly."); - loggingContext.transactionEnded(); - auditLogger.info("Success. PDP is configured correctly."); - PolicyLogger.audit("Transaction Success. PDP is configured correctly."); - setPDPSummaryStatus(pdp, PDPStatus.Status.UP_TO_DATE); - } else if (connection.getResponseCode() == 200) { - LOGGER.info("Success. PDP needs to update its configuration."); - loggingContext.transactionEnded(); - auditLogger.info("Success. PDP needs to update its configuration."); - PolicyLogger.audit("Transaction Success. PDP is configured correctly."); - setPDPSummaryStatus(pdp, PDPStatus.Status.OUT_OF_SYNCH); - } else { - LOGGER.warn("Failed: " + connection.getResponseCode() + " message: " + connection.getResponseMessage()); - loggingContext.transactionEnded(); - auditLogger.warn("Failed: " + connection.getResponseCode() + " message: " + connection.getResponseMessage()); - PolicyLogger.audit("Transaction Failed: " + connection.getResponseCode() + " message: " + connection.getResponseMessage()); - setPDPSummaryStatus(pdp, PDPStatus.Status.UNKNOWN); - } - } catch (Exception e) { - LOGGER.debug(e); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Unable to sync config with PDP '" + pdp.getId() + "'"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed: Unable to sync config with PDP '" + pdp.getId() + "': " + e); - try { - setPDPSummaryStatus(pdp, PDPStatus.Status.UNKNOWN); - } catch (PAPException e1) { - LOGGER.debug(e1); - PolicyLogger.audit("Transaction Failed: Unable to set status of PDP " + pdp.getId() + " to UNKNOWN: " + e); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Unable to set status of PDP '" + pdp.getId() + "' to UNKNOWN"); - } - } finally { - // cleanup the connection - if(connection != null){ - connection.disconnect(); - } - // tell the AC to update it's status info - notifyAC(); - } - } - } - - /* - * RESTful Interface from PAP to ACs notifying them of changes - */ - private void notifyAC() { - // kick off a thread to do one event notification for all registered ACs - // This needs to be on a separate thread so that ACs can make calls back to PAP to get the updated Group data - // as part of processing this message on their end. - Thread t = new Thread(new NotifyACThread()); - t.start(); - } - - private class NotifyACThread implements Runnable { - public void run() { - List<String> disconnectedACs = new ArrayList<>(); - // There should be no Concurrent exception here because the list is a CopyOnWriteArrayList. - // The "for each" loop uses the collection's iterator under the covers, so it should be correct. - for (String acURL : adminConsoleURLStringList) { - HttpURLConnection connection = null; - try { - acURL += "?PAPNotification=true"; - //TODO - Currently we just tell AC that "Something changed" without being specific. Do we want to tell it which group/pdp changed? - //TODO - If so, put correct parameters into the Query string here - acURL += "&objectType=all" + "&action=update"; - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("creating url for id '" + acURL + "'"); - } - //TODO - currently always send both policies and pips. Do we care enough to add code to allow sending just one or the other? - //TODO (need to change "cache=", implying getting some input saying which to change) - URL url = new URL(acURL ); - // Open up the connection - connection = (HttpURLConnection)url.openConnection(); - // Setup our method and headers - connection.setRequestMethod("PUT"); - connection.setRequestProperty("Content-Type", "text/x-java-properties"); - // Adding this in. It seems the HttpUrlConnection class does NOT - // properly forward our headers for POST re-direction. It does so - // for a GET re-direction. - // So we need to handle this ourselves. - //TODO - is this needed for a PUT? seems better to leave in for now? - connection.setInstanceFollowRedirects(false); - // Do not include any data in the PUT because this is just a - // notification to the AC. - // The AC will use GETs back to the PAP to get what it needs - // to fill in the screens. - // Do the connect - connection.connect(); - if (connection.getResponseCode() == 204) { - LOGGER.info("Success. We updated correctly."); - } else { - LOGGER.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Failed: " + connection.getResponseCode() + " message: " + connection.getResponseMessage()); - } - - } catch (Exception e) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Unable to sync config AC '" + acURL + "'"); - disconnectedACs.add(acURL); - } finally { - // cleanup the connection - if(connection != null) - connection.disconnect(); - } - } - // remove any ACs that are no longer connected - if (!disconnectedACs.isEmpty()) { - adminConsoleURLStringList.removeAll(disconnectedACs); - } - } - } - - private void testService(ONAPLoggingContext loggingContext, HttpServletResponse response) throws IOException{ - LOGGER.info("Test request received"); - try { - im.evaluateSanity(); - //If we make it this far, all is well - String message = "GET:/pap/test called and PAP " + papResourceName + " is OK"; - LOGGER.info(message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - response.setStatus(HttpServletResponse.SC_OK); - return; - }catch (ForwardProgressException | AdministrativeStateException | StandbyStatusException e){ - String submsg; - if (e instanceof ForwardProgressException) { - submsg = " is not making forward progress."; - } else if (e instanceof AdministrativeStateException) { - submsg = " Administrative State is LOCKED."; - } else { - submsg = " Standby Status is NOT PROVIDING SERVICE."; - } - - String message = "GET:/pap/test called and PAP " + papResourceName + submsg - + " Exception Message: " + e.getMessage(); - LOGGER.info(message, e); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - return; - }catch (Exception e) { - //A subsystem is not making progress, is locked, standby or is not responding - String eMsg = e.getMessage(); - if(eMsg == null){ - eMsg = "No Exception Message"; - } - String message = "GET:/pap/test called and PAP " + papResourceName + " has had a subsystem failure." - + " Exception Message: " + eMsg; - LOGGER.info(message, e); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - //Get the specific list of subsystems that failed - String ssFailureList = null; - for(String failedSS : papDependencyGroupsFlatArray){ - if(eMsg.contains(failedSS)){ - if(ssFailureList == null){ - ssFailureList = failedSS; - }else{ - ssFailureList = ssFailureList.concat(","+failedSS); - } - } - } - if(ssFailureList == null){ - ssFailureList = "UnknownSubSystem"; - } - response.addHeader("X-ONAP-SubsystemFailure", ssFailureList); - setResponseError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - return; - } - } - - /* - * Authorizing the PEP Requests. - */ - private boolean authorizeRequest(HttpServletRequest request) { - String clientCredentials = request.getHeader(ENVIRONMENT_HEADER); - // Check if the Client is Authorized. - if(clientCredentials!=null && clientCredentials.equalsIgnoreCase(environment)){ - return true; - }else{ - return false; - } - } - - private static void loadWebapps() throws PAPException{ - if(actionHome == null || configHome == null){ - Path webappsPath = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WEBAPPS)); - //Sanity Check - if (webappsPath == null) { - PolicyLogger.error("Invalid Webapps Path Location property : " + XACMLRestProperties.PROP_PAP_WEBAPPS); - throw new PAPException("Invalid Webapps Path Location property : " + XACMLRestProperties.PROP_PAP_WEBAPPS); - } - Path webappsPathConfig = Paths.get(webappsPath.toString()+File.separator+"Config"); - Path webappsPathAction = Paths.get(webappsPath.toString()+File.separator+"Action"); - if (Files.notExists(webappsPathConfig)) { - try { - Files.createDirectories(webappsPathConfig); - } catch (IOException e) { - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", "Failed to create config directory: " - + webappsPathConfig.toAbsolutePath().toString()); - } - } - if (Files.notExists(webappsPathAction)) { - try { - Files.createDirectories(webappsPathAction); - } catch (IOException e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Failed to create action directory: " - + webappsPathAction.toAbsolutePath().toString(), e); - } - } - actionHome = webappsPathAction.toString(); - configHome = webappsPathConfig.toString(); - } - } - - public static String getConfigHome(){ - try { - loadWebapps(); - } catch (PAPException e) { - LOGGER.debug(e); - return null; - } - return configHome; - } - - private static void setConfigHome(){ - configHome = getConfigHome(); - } - - public static String getActionHome(){ - try { - loadWebapps(); - } catch (PAPException e) { - LOGGER.debug(e); - return null; - } - return actionHome; - } - - private static void setActionHome(){ - actionHome = getActionHome(); - } - - public static EntityManagerFactory getEmf() { - return emf; - } - - public IntegrityAudit getIa() { - return ia; - } - - public static String getPDPFile(){ - return XACMLPapServlet.pdpFile; - } - - public static String getPersistenceUnit(){ - return PERSISTENCE_UNIT; - } - - public static PAPPolicyEngine getPAPEngine(){ - return papEngine; - } - - public static PolicyDBDaoTransaction getDbDaoTransaction(){ - return policyDBDao.getNewTransaction(); - } - public static String getPapDbDriver() { - return papDbDriver; - } - - public static void setPapDbDriver(String papDbDriver) { - XACMLPapServlet.papDbDriver = papDbDriver; - } - - public static String getPapDbUrl() { - return papDbUrl; - } - - public static void setPapDbUrl(String papDbUrl) { - XACMLPapServlet.papDbUrl = papDbUrl; - } - - public static String getPapDbUser() { - return papDbUser; - } - - public static void setPapDbUser(String papDbUser) { - XACMLPapServlet.papDbUser = papDbUser; - } - - public static String getPapDbPassword() { - return papDbPassword; - } - - public static void setPapDbPassword(String papDbPassword) { - XACMLPapServlet.papDbPassword = papDbPassword; - } - - public static String getMsOnapName() { - return msOnapName; - } - - public static void setMsOnapName(String msOnapName) { - XACMLPapServlet.msOnapName = msOnapName; - } - - public static String getMsPolicyName() { - return msPolicyName; - } - - public static void setMsPolicyName(String msPolicyName) { - XACMLPapServlet.msPolicyName = msPolicyName; - } + // adjust the status of the group, which may have changed when we removed this PDP + ((StdPDPGroup)group).resetStatus(); + response.setStatus(HttpServletResponse.SC_NO_CONTENT); + loggingContext.metricStarted(); + notifyAC(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doACPut notifyAC"); + // update the PDP and tell it that it has NO Policies (which prevents it from serving PEP Requests) + pdpChanged(pdp, loggingContext); + loggingContext.metricStarted(); + removePdpOrGroupTransaction.commitTransaction(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doACPut commitTransaction"); + loggingContext.transactionEnded(); + auditLogger.info("Success"); + PolicyLogger.audit("Transaction Ended Successfully"); + return; + } else if (request.getParameter("pipId") != null) { + // group=<groupId> pipId=<pipEngineId> <= delete PIP config for given engine + loggingContext.setServiceName("AC:PAP.deletePIPConfig"); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " UNIMPLEMENTED"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_BAD_REQUEST, "UNIMPLEMENTED"); + return; + } else { + // ARGS: group=<groupId> movePDPsToGroupId=<movePDPsToGroupId> <= delete a group and move all its PDPs to the given group + String moveToGroupId = request.getParameter("movePDPsToGroupId"); + OnapPDPGroup moveToGroup = null; + if (moveToGroupId != null) { + try{ + moveToGroup = papEngine.getGroup(moveToGroupId); + }catch(PAPException e){ + LOGGER.error(e); + } + } + // get list of PDPs in the group being deleted so we can notify them that they got changed + Set<OnapPDP> movedPDPs = new HashSet<>(); + movedPDPs.addAll(group.getOnapPdps()); + // do the move/remove + try{ + removePdpOrGroupTransaction.deleteGroup(group, moveToGroup,"XACMLPapServlet.doACDelete"); + } catch(Exception e){ + PolicyLogger.error(MessageCodes.ERROR_UNKNOWN, e, "XACMLPapServlet", " Failed to delete PDP Group. Exception"); + throw new PAPException(e.getMessage()); + } + try{ + papEngine.removeGroup(group, moveToGroup); + }catch(PAPException e){ + LOGGER.error(e); + } + response.setStatus(HttpServletResponse.SC_NO_CONTENT); + loggingContext.metricStarted(); + notifyAC(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doACPut notifyAC"); + // notify any PDPs in the removed set that their config may have changed + for (OnapPDP pdp : movedPDPs) { + pdpChanged(pdp, loggingContext); + } + loggingContext.metricStarted(); + removePdpOrGroupTransaction.commitTransaction(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet doACPut commitTransaction"); + loggingContext.transactionEnded(); + auditLogger.info("Success"); + PolicyLogger.audit("Transaction Ended Successfully"); + return; + } + } catch (PAPException e) { + removePdpOrGroupTransaction.rollbackTransaction(); + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " AC DELETE exception"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); + return; + } + } + + /** + * Heartbeat thread - periodically check on PDPs' status + * + * Heartbeat with all known PDPs. + * + * Implementation note: + * + * The PDPs are contacted Sequentially, not in Parallel. + * + * If we did this in parallel using multiple threads we would simultaneously use + * - 1 thread and + * - 1 connection + * for EACH PDP. + * This could become a resource problem since we already use multiple threads and connections for updating the PDPs + * when user changes occur. + * Using separate threads can also make it tricky dealing with timeouts on PDPs that are non-responsive. + * + * The Sequential operation does a heartbeat request to each PDP one at a time. + * This has the flaw that any PDPs that do not respond will hold up the entire heartbeat sequence until they timeout. + * If there are a lot of non-responsive PDPs and the timeout is large-ish (the default is 20 seconds) + * it could take a long time to cycle through all of the PDPs. + * That means that this may not notice a PDP being down in a predictable time. + */ + private class Heartbeat implements Runnable { + private PAPPolicyEngine papEngine; + private Set<OnapPDP> pdps = new HashSet<>(); + private int heartbeatInterval; + private int heartbeatTimeout; + + public volatile boolean isRunning = false; + + public synchronized boolean isRunning() { + return this.isRunning; + } + + public synchronized void terminate() { + this.isRunning = false; + } + + public Heartbeat(PAPPolicyEngine papEngine2) { + papEngine = papEngine2; + this.heartbeatInterval = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_HEARTBEAT_INTERVAL, "10000")); + this.heartbeatTimeout = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_HEARTBEAT_TIMEOUT, "10000")); + } + + @Override + public void run() { + // Set ourselves as running + synchronized(this) { + this.isRunning = true; + } + HashMap<String, URL> idToURLMap = new HashMap<>(); + try { + while (this.isRunning()) { + // Wait the given time + Thread.sleep(heartbeatInterval); + // get the list of PDPs (may have changed since last time) + pdps.clear(); + synchronized(papEngine) { + try { + for (OnapPDPGroup g : papEngine.getOnapPDPGroups()) { + for (OnapPDP p : g.getOnapPdps()) { + pdps.add(p); + } + } + } catch (PAPException e) { + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", "Heartbeat unable to read PDPs from PAPEngine"); + } + } + // Check for shutdown + if (this.isRunning() == false) { + LOGGER.info("isRunning is false, getting out of loop."); + break; + } + // try to get the summary status from each PDP + boolean changeSeen = false; + for (OnapPDP pdp : pdps) { + // Check for shutdown + if (this.isRunning() == false) { + LOGGER.info("isRunning is false, getting out of loop."); + break; + } + // the id of the PDP is its url (though we add a query parameter) + URL pdpURL = idToURLMap.get(pdp.getId()); + if (pdpURL == null) { + // haven't seen this PDP before + String fullURLString = null; + try { + // Check PDP ID + if(CheckPDP.validateID(pdp.getId())){ + fullURLString = pdp.getId() + "?type=hb"; + pdpURL = new URL(fullURLString); + idToURLMap.put(pdp.getId(), pdpURL); + } + } catch (MalformedURLException e) { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "XACMLPapServlet", " PDP id '" + fullURLString + "' is not a valid URL"); + continue; + } + } + // Do a GET with type HeartBeat + String newStatus = ""; + HttpURLConnection connection = null; + try { + // Open up the connection + if(pdpURL != null){ + connection = (HttpURLConnection)pdpURL.openConnection(); + // Setup our method and headers + connection.setRequestMethod("GET"); + connection.setConnectTimeout(heartbeatTimeout); + // Authentication + String encoding = CheckPDP.getEncoding(pdp.getId()); + if(encoding !=null){ + connection.setRequestProperty("Authorization", "Basic " + encoding); + } + // Do the connect + connection.connect(); + if (connection.getResponseCode() == 204) { + newStatus = connection.getHeaderField(XACMLRestProperties.PROP_PDP_HTTP_HEADER_HB); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("Heartbeat '" + pdp.getId() + "' status='" + newStatus + "'"); + } + } else { + // anything else is an unexpected result + newStatus = PDPStatus.Status.UNKNOWN.toString(); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " Heartbeat connect response code " + connection.getResponseCode() + ": " + pdp.getId()); + } + } + } catch (UnknownHostException e) { + newStatus = PDPStatus.Status.NO_SUCH_HOST.toString(); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Heartbeat '" + pdp.getId() + "' NO_SUCH_HOST"); + } catch (SocketTimeoutException e) { + newStatus = PDPStatus.Status.CANNOT_CONNECT.toString(); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Heartbeat '" + pdp.getId() + "' connection timeout"); + } catch (ConnectException e) { + newStatus = PDPStatus.Status.CANNOT_CONNECT.toString(); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Heartbeat '" + pdp.getId() + "' cannot connect"); + } catch (Exception e) { + newStatus = PDPStatus.Status.UNKNOWN.toString(); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", "Heartbeat '" + pdp.getId() + "' connect exception"); + } finally { + // cleanup the connection + if(connection != null) + connection.disconnect(); + } + if ( ! pdp.getStatus().getStatus().toString().equals(newStatus)) { + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("previous status='" + pdp.getStatus().getStatus()+"' new Status='" + newStatus + "'"); + } + try { + setPDPSummaryStatus(pdp, newStatus); + } catch (PAPException e) { + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", "Unable to set state for PDP '" + pdp.getId()); + } + changeSeen = true; + } + } + // Check for shutdown + if (this.isRunning() == false) { + LOGGER.info("isRunning is false, getting out of loop."); + break; + } + // if any of the PDPs changed state, tell the ACs to update + if (changeSeen) { + notifyAC(); + } + } + } catch (InterruptedException e) { + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " Heartbeat interrupted. Shutting down"); + this.terminate(); + Thread.currentThread().interrupt(); + } + } + } + + /* + * HELPER to change Group status when PDP status is changed + * (Must NOT be called from a method that is synchronized on the papEngine or it may deadlock) + */ + private void setPDPSummaryStatus(OnapPDP pdp, PDPStatus.Status newStatus) throws PAPException { + setPDPSummaryStatus(pdp, newStatus.toString()); + } + + private void setPDPSummaryStatus(OnapPDP pdp, String newStatus) throws PAPException { + synchronized(papEngine) { + StdPDPStatus status = new StdPDPStatus(); + status.setStatus(PDPStatus.Status.valueOf(newStatus)); + ((StdPDP)pdp).setStatus(status); + // now adjust the group + StdPDPGroup group = (StdPDPGroup)papEngine.getPDPGroup((OnapPDP) pdp); + // if the PDP was just deleted it may transiently exist but not be in a group + if (group != null) { + group.resetStatus(); + } + } + } + + /* + * Callback methods telling this servlet to notify PDPs of changes made by the PAP StdEngine + * in the PDP group directories + */ + @Override + public void changed() { + // all PDPs in all groups need to be updated/sync'd + Set<OnapPDPGroup> groups; + try { + groups = papEngine.getOnapPDPGroups(); + } catch (PAPException e) { + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " getPDPGroups failed"); + throw new IllegalAccessError(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Unable to get Groups: " + e); + } + for (OnapPDPGroup group : groups) { + groupChanged(group); + } + } + + public void changed(ONAPLoggingContext loggingContext) { + // all PDPs in all groups need to be updated/sync'd + Set<OnapPDPGroup> groups; + try { + groups = papEngine.getOnapPDPGroups(); + } catch (PAPException e) { + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " getPDPGroups failed"); + throw new IllegalAccessError(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Unable to get Groups: " + e); + } + for (OnapPDPGroup group : groups) { + groupChanged(group, loggingContext); + } + } + + @Override + public void groupChanged(OnapPDPGroup group) { + // all PDPs within one group need to be updated/sync'd + for (OnapPDP pdp : group.getOnapPdps()) { + pdpChanged(pdp); + } + } + + public void groupChanged(OnapPDPGroup group, ONAPLoggingContext loggingContext) { + // all PDPs within one group need to be updated/sync'd + for (OnapPDP pdp : group.getOnapPdps()) { + pdpChanged(pdp, loggingContext); + } + } + + @Override + public void pdpChanged(OnapPDP pdp) { + // kick off a thread to do an event notification for each PDP. + // This needs to be on a separate thread so that PDPs that do not respond (down, non-existent, etc) + // do not block the PSP response to the AC, which would freeze the GUI until all PDPs sequentially respond or time-out. + Thread t = new Thread(new UpdatePDPThread(pdp)); + if(CheckPDP.validateID(pdp.getId())){ + t.start(); + } + } + + public void pdpChanged(OnapPDP pdp, ONAPLoggingContext loggingContext) { + // kick off a thread to do an event notification for each PDP. + // This needs to be on a separate thread so that PDPs that do not respond (down, non-existent, etc) + // do not block the PSP response to the AC, which would freeze the GUI until all PDPs sequentially respond or time-out. + Thread t = new Thread(new UpdatePDPThread(pdp, loggingContext)); + if(CheckPDP.validateID(pdp.getId())){ + t.start(); + } + } + + private class UpdatePDPThread implements Runnable { + private OnapPDP pdp; + private String requestId; + private ONAPLoggingContext loggingContext; + + public UpdatePDPThread(OnapPDP pdp) { + this.pdp = pdp; + } + + public UpdatePDPThread(OnapPDP pdp, ONAPLoggingContext loggingContext) { + this.pdp = pdp; + if ((loggingContext != null) && (loggingContext.getRequestID() != null || loggingContext.getRequestID() == "")) { + this.requestId = loggingContext.getRequestID(); + } + this.loggingContext = loggingContext; + } + + public void run() { + // send the current configuration to one PDP + HttpURLConnection connection = null; + // get a new logging context for the thread + try { + if (this.loggingContext == null) { + loggingContext = new ONAPLoggingContext(baseLoggingContext); + } + } catch (Exception e) { + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Failed to send property file to " + pdp.getId()); + // Since this is a server-side error, it probably does not reflect a problem on the client, + // so do not change the PDP status. + return; + } + try { + loggingContext.setServiceName("PAP:PDP.putConfig"); + // If a requestId was provided, use it, otherwise generate one; post to loggingContext to be used later when calling PDP + if ((requestId == null) || (requestId == "")) { + UUID requestID = UUID.randomUUID(); + loggingContext.setRequestID(requestID.toString()); + PolicyLogger.info("requestID not provided in call to XACMLPapSrvlet (UpdatePDPThread) so we generated one: " + loggingContext.getRequestID()); + } else { + loggingContext.setRequestID(requestId); + PolicyLogger.info("requestID was provided in call to XACMLPapSrvlet (UpdatePDPThread): " + loggingContext.getRequestID()); + } + loggingContext.transactionStarted(); + // the Id of the PDP is its URL + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("creating url for id '" + pdp.getId() + "'"); + } + //TODO - currently always send both policies and pips. Do we care enough to add code to allow sending just one or the other? + //TODO (need to change "cache=", implying getting some input saying which to change) + URL url = new URL(pdp.getId() + "?cache=all"); + // Open up the connection + connection = (HttpURLConnection)url.openConnection(); + // Setup our method and headers + connection.setRequestMethod("PUT"); + // Authentication + String encoding = CheckPDP.getEncoding(pdp.getId()); + if(encoding !=null){ + connection.setRequestProperty("Authorization", "Basic " + encoding); + } + connection.setRequestProperty("Content-Type", "text/x-java-properties"); + connection.setRequestProperty("X-ECOMP-RequestID", loggingContext.getRequestID()); + connection.setInstanceFollowRedirects(true); + connection.setDoOutput(true); + try (OutputStream os = connection.getOutputStream()) { + OnapPDPGroup group = papEngine.getPDPGroup((OnapPDP) pdp); + // if the PDP was just deleted, there is no group, but we want to send an update anyway + if (group == null) { + // create blank properties files + Properties policyProperties = new Properties(); + policyProperties.put(XACMLProperties.PROP_ROOTPOLICIES, ""); + policyProperties.put(XACMLProperties.PROP_REFERENCEDPOLICIES, ""); + policyProperties.store(os, ""); + Properties pipProps = new Properties(); + pipProps.setProperty(XACMLProperties.PROP_PIP_ENGINES, ""); + pipProps.store(os, ""); + } else { + // send properties from the current group + group.getPolicyProperties().store(os, ""); + Properties policyLocations = new Properties(); + for (PDPPolicy policy : group.getPolicies()) { + policyLocations.put(policy.getId() + ".url", XACMLPapServlet.papURL + "?id=" + policy.getId()); + } + policyLocations.store(os, ""); + group.getPipConfigProperties().store(os, ""); + } + } catch (Exception e) { + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Failed to send property file to " + pdp.getId()); + // Since this is a server-side error, it probably does not reflect a problem on the client, + // so do not change the PDP status. + return; + } + // Do the connect + loggingContext.metricStarted(); + connection.connect(); + loggingContext.metricEnded(); + PolicyLogger.metrics("XACMLPapServlet UpdatePDPThread connection connect"); + if (connection.getResponseCode() == 204) { + LOGGER.info("Success. We are configured correctly."); + loggingContext.transactionEnded(); + auditLogger.info("Success. PDP is configured correctly."); + PolicyLogger.audit("Transaction Success. PDP is configured correctly."); + setPDPSummaryStatus(pdp, PDPStatus.Status.UP_TO_DATE); + } else if (connection.getResponseCode() == 200) { + LOGGER.info("Success. PDP needs to update its configuration."); + loggingContext.transactionEnded(); + auditLogger.info("Success. PDP needs to update its configuration."); + PolicyLogger.audit("Transaction Success. PDP is configured correctly."); + setPDPSummaryStatus(pdp, PDPStatus.Status.OUT_OF_SYNCH); + } else { + LOGGER.warn("Failed: " + connection.getResponseCode() + " message: " + connection.getResponseMessage()); + loggingContext.transactionEnded(); + auditLogger.warn("Failed: " + connection.getResponseCode() + " message: " + connection.getResponseMessage()); + PolicyLogger.audit("Transaction Failed: " + connection.getResponseCode() + " message: " + connection.getResponseMessage()); + setPDPSummaryStatus(pdp, PDPStatus.Status.UNKNOWN); + } + } catch (Exception e) { + LOGGER.debug(e); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Unable to sync config with PDP '" + pdp.getId() + "'"); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed: Unable to sync config with PDP '" + pdp.getId() + "': " + e); + try { + setPDPSummaryStatus(pdp, PDPStatus.Status.UNKNOWN); + } catch (PAPException e1) { + LOGGER.debug(e1); + PolicyLogger.audit("Transaction Failed: Unable to set status of PDP " + pdp.getId() + " to UNKNOWN: " + e); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Unable to set status of PDP '" + pdp.getId() + "' to UNKNOWN"); + } + } finally { + // cleanup the connection + if(connection != null){ + connection.disconnect(); + } + // tell the AC to update it's status info + notifyAC(); + } + } + } + + /* + * RESTful Interface from PAP to ACs notifying them of changes + */ + private void notifyAC() { + // kick off a thread to do one event notification for all registered ACs + // This needs to be on a separate thread so that ACs can make calls back to PAP to get the updated Group data + // as part of processing this message on their end. + Thread t = new Thread(new NotifyACThread()); + t.start(); + } + + private class NotifyACThread implements Runnable { + public void run() { + List<String> disconnectedACs = new ArrayList<>(); + // There should be no Concurrent exception here because the list is a CopyOnWriteArrayList. + // The "for each" loop uses the collection's iterator under the covers, so it should be correct. + for (String acURL : adminConsoleURLStringList) { + HttpURLConnection connection = null; + try { + acURL += "?PAPNotification=true"; + //TODO - Currently we just tell AC that "Something changed" without being specific. Do we want to tell it which group/pdp changed? + //TODO - If so, put correct parameters into the Query string here + acURL += "&objectType=all" + "&action=update"; + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("creating url for id '" + acURL + "'"); + } + //TODO - currently always send both policies and pips. Do we care enough to add code to allow sending just one or the other? + //TODO (need to change "cache=", implying getting some input saying which to change) + URL url = new URL(acURL ); + // Open up the connection + connection = (HttpURLConnection)url.openConnection(); + // Setup our method and headers + connection.setRequestMethod("PUT"); + connection.setRequestProperty("Content-Type", "text/x-java-properties"); + // Adding this in. It seems the HttpUrlConnection class does NOT + // properly forward our headers for POST re-direction. It does so + // for a GET re-direction. + // So we need to handle this ourselves. + //TODO - is this needed for a PUT? seems better to leave in for now? + connection.setInstanceFollowRedirects(false); + // Do not include any data in the PUT because this is just a + // notification to the AC. + // The AC will use GETs back to the PAP to get what it needs + // to fill in the screens. + // Do the connect + connection.connect(); + if (connection.getResponseCode() == 204) { + LOGGER.info("Success. We updated correctly."); + } else { + LOGGER.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Failed: " + connection.getResponseCode() + " message: " + connection.getResponseMessage()); + } + + } catch (Exception e) { + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "XACMLPapServlet", " Unable to sync config AC '" + acURL + "'"); + disconnectedACs.add(acURL); + } finally { + // cleanup the connection + if(connection != null) + connection.disconnect(); + } + } + // remove any ACs that are no longer connected + if (!disconnectedACs.isEmpty()) { + adminConsoleURLStringList.removeAll(disconnectedACs); + } + } + } + + private void testService(ONAPLoggingContext loggingContext, HttpServletResponse response) throws IOException{ + LOGGER.info("Test request received"); + try { + im.evaluateSanity(); + //If we make it this far, all is well + String message = "GET:/pap/test called and PAP " + papResourceName + " is OK"; + LOGGER.info(message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + response.setStatus(HttpServletResponse.SC_OK); + return; + }catch (ForwardProgressException | AdministrativeStateException | StandbyStatusException e){ + String submsg; + if (e instanceof ForwardProgressException) { + submsg = " is not making forward progress."; + } else if (e instanceof AdministrativeStateException) { + submsg = " Administrative State is LOCKED."; + } else { + submsg = " Standby Status is NOT PROVIDING SERVICE."; + } + + String message = "GET:/pap/test called and PAP " + papResourceName + submsg + + " Exception Message: " + e.getMessage(); + LOGGER.info(message, e); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + setResponseError(response,HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); + return; + }catch (Exception e) { + //A subsystem is not making progress, is locked, standby or is not responding + String eMsg = e.getMessage(); + if(eMsg == null){ + eMsg = "No Exception Message"; + } + String message = "GET:/pap/test called and PAP " + papResourceName + " has had a subsystem failure." + + " Exception Message: " + eMsg; + LOGGER.info(message, e); + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + //Get the specific list of subsystems that failed + String ssFailureList = null; + for(String failedSS : papDependencyGroupsFlatArray){ + if(eMsg.contains(failedSS)){ + if(ssFailureList == null){ + ssFailureList = failedSS; + }else{ + ssFailureList = ssFailureList.concat(","+failedSS); + } + } + } + if(ssFailureList == null){ + ssFailureList = "UnknownSubSystem"; + } + response.addHeader("X-ONAP-SubsystemFailure", ssFailureList); + setResponseError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); + return; + } + } + + /* + * Authorizing the PEP Requests. + */ + private boolean authorizeRequest(HttpServletRequest request) { + String clientCredentials = request.getHeader(ENVIRONMENT_HEADER); + // Check if the Client is Authorized. + if(clientCredentials!=null && clientCredentials.equalsIgnoreCase(environment)){ + return true; + }else{ + return false; + } + } + + private static void loadWebapps() throws PAPException{ + if(actionHome == null || configHome == null){ + Path webappsPath = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WEBAPPS)); + //Sanity Check + if (webappsPath == null) { + PolicyLogger.error("Invalid Webapps Path Location property : " + XACMLRestProperties.PROP_PAP_WEBAPPS); + throw new PAPException("Invalid Webapps Path Location property : " + XACMLRestProperties.PROP_PAP_WEBAPPS); + } + Path webappsPathConfig = Paths.get(webappsPath.toString()+File.separator+"Config"); + Path webappsPathAction = Paths.get(webappsPath.toString()+File.separator+"Action"); + if (Files.notExists(webappsPathConfig)) { + try { + Files.createDirectories(webappsPathConfig); + } catch (IOException e) { + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", "Failed to create config directory: " + + webappsPathConfig.toAbsolutePath().toString()); + } + } + if (Files.notExists(webappsPathAction)) { + try { + Files.createDirectories(webappsPathAction); + } catch (IOException e) { + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Failed to create action directory: " + + webappsPathAction.toAbsolutePath().toString(), e); + } + } + actionHome = webappsPathAction.toString(); + configHome = webappsPathConfig.toString(); + } + } + + public static String getConfigHome(){ + try { + loadWebapps(); + } catch (PAPException e) { + LOGGER.debug(e); + return null; + } + return configHome; + } + + private static void setConfigHome(){ + configHome = getConfigHome(); + } + + public static String getActionHome(){ + try { + loadWebapps(); + } catch (PAPException e) { + LOGGER.debug(e); + return null; + } + return actionHome; + } + + private static void setActionHome(){ + actionHome = getActionHome(); + } + + public static EntityManagerFactory getEmf() { + return emf; + } + + public IntegrityAudit getIa() { + return ia; + } + + public static String getPDPFile(){ + return XACMLPapServlet.pdpFile; + } + + public static String getPersistenceUnit(){ + return PERSISTENCE_UNIT; + } + + public static PAPPolicyEngine getPAPEngine(){ + return papEngine; + } + + public static PolicyDBDaoTransaction getDbDaoTransaction(){ + return policyDBDao.getNewTransaction(); + } + public static String getPapDbDriver() { + return papDbDriver; + } + + public static void setPapDbDriver(String papDbDriver) { + XACMLPapServlet.papDbDriver = papDbDriver; + } + + public static String getPapDbUrl() { + return papDbUrl; + } + + public static void setPapDbUrl(String papDbUrl) { + XACMLPapServlet.papDbUrl = papDbUrl; + } + + public static String getPapDbUser() { + return papDbUser; + } + + public static void setPapDbUser(String papDbUser) { + XACMLPapServlet.papDbUser = papDbUser; + } + + public static String getPapDbPassword() { + return papDbPassword; + } + + public static void setPapDbPassword(String papDbPassword) { + XACMLPapServlet.papDbPassword = papDbPassword; + } + + public static String getMsOnapName() { + return msOnapName; + } + + public static void setMsOnapName(String msOnapName) { + XACMLPapServlet.msOnapName = msOnapName; + } + + public static String getMsPolicyName() { + return msPolicyName; + } + + public static void setMsPolicyName(String msPolicyName) { + XACMLPapServlet.msPolicyName = msPolicyName; + } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/daoimpl/CommonClassDaoImpl.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/daoimpl/CommonClassDaoImpl.java index c8b8c6a05..e5b6915bd 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/daoimpl/CommonClassDaoImpl.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/daoimpl/CommonClassDaoImpl.java @@ -51,410 +51,410 @@ import org.springframework.stereotype.Service; @Primary public class CommonClassDaoImpl implements CommonClassDao{ - private static final Log LOGGER = LogFactory.getLog(CommonClassDaoImpl.class); - - - private static SessionFactory sessionFactory; - - - @Autowired - private CommonClassDaoImpl(SessionFactory sessionFactory){ - CommonClassDaoImpl.sessionFactory = sessionFactory; - } - - public CommonClassDaoImpl(){ - //Default Constructor - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - @Override - public List<Object> getData(Class className) { - Session session = sessionFactory.openSession(); - List<Object> data = null; - try{ - Criteria cr = session.createCriteria(className); - data = cr.list(); - }catch(Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Table"+e); - }finally{ - try{ - session.close(); - }catch(Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e); - } - } - return data; - } - - - @SuppressWarnings({ "rawtypes", "unchecked" }) - @Override - public List<Object> getDataById(Class className, String columnName, String key) { - Session session = sessionFactory.openSession(); - List<Object> data = null; - try { - Criteria cr = session.createCriteria(className); - if(columnName.contains(":") && key.contains(":")){ - String[] columns = columnName.split(":"); - String[] keys = key.split(":"); - for(int i=0; i < columns.length; i++){ - cr.add(Restrictions.eq(columns[i], keys[i])); - } - }else{ - cr.add(Restrictions.eq(columnName, key)); - } - data = cr.list(); - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Table"+e); - }finally{ - try{ - session.close(); - }catch(Exception e1){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1); - } - } - return data; - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - @Override - public List<String> getDataByColumn(Class className, String columnName) { - Session session = sessionFactory.openSession(); - List<String> data = null; - try{ - Criteria cr = session.createCriteria(className); - cr.setProjection(Projections.property(columnName)); - data = cr.list(); - }catch(Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Table"+e); - }finally{ - try{ - session.close(); - }catch(Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e); - } - } - return data; - } - - @Override - public void save(Object entity) { - Session session = sessionFactory.openSession(); - Transaction tx = session.beginTransaction(); - try { - session.persist(entity); - tx.commit(); - }catch(Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Saving data to Table"+e); - }finally{ - try{ - session.close(); - }catch(Exception e1){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1); - } - } - - } - - @Override - public void delete(Object entity) { - Session session = sessionFactory.openSession(); - Transaction tx = session.beginTransaction(); - try { - session.delete(entity); - tx.commit(); - }catch(Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Deleting data from Table"+e); - }finally{ - try{ - session.close(); - }catch(Exception e1){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1); - } - } - - } - - - @Override - public void update(Object entity) { - Session session = sessionFactory.openSession(); - Transaction tx = session.beginTransaction(); - try { - session.update(entity); - tx.commit(); - }catch(Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Updating data to Table"+e); - }finally{ - try{ - session.close(); - }catch(Exception e1){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1); - } - } - - } - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - @Override - public List<Object> checkDuplicateEntry(String value, String columnName, Class className) { - Session session = sessionFactory.openSession(); - Transaction tx = session.beginTransaction(); - List<Object> data = null; - - String[] columnNames = null; - if(columnName != null && columnName.contains(":")){ - columnNames = columnName.split(":"); - } - String[] values = null; - if(value != null && value.contains(":")){ - values = value.split(":"); - } - try { - Criteria cr = session.createCriteria(className); - if(columnNames != null && values != null && columnNames.length == values.length){ - for (int i = 0; i < columnNames.length; i++){ - cr.add(Restrictions.eq(columnNames[i],values[i])); - } - }else{ - cr.add(Restrictions.eq(columnName,value)); - } - - data = cr.list(); - tx.commit(); - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying for Duplicate Entries for Table"+e + className); - }finally{ - try{ - session.close(); - }catch(Exception e1){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1); - } - } - return data; - } - - - @SuppressWarnings("unchecked") - @Override - public List<Object> getDataByQuery(String query, SimpleBindings params) { - Session session = sessionFactory.openSession(); - Transaction tx = session.beginTransaction(); - List<Object> data = null; - try { - Query hbquery = session.createQuery(query); - for (Map.Entry<String, Object> paramPair : params.entrySet()) { - if(paramPair.getValue() instanceof java.lang.Long){ - hbquery.setLong(paramPair.getKey(), (long) paramPair.getValue()); - } - else{ - hbquery.setParameter(paramPair.getKey(), paramPair.getValue()); - } - } - data = hbquery.list(); - tx.commit(); - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Database Table"+e); - throw e; - }finally{ - try{ - session.close(); - }catch(HibernateException e1){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement",e1); - } - } - return data; - } - - - @Override - public void updateQuery(String query) { - Session session = sessionFactory.openSession(); - Transaction tx = session.beginTransaction(); - try { - Query hbquery = session.createQuery(query); - hbquery.executeUpdate(); - tx.commit(); - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Updating Database Table"+e); - }finally{ - try{ - session.close(); - }catch(Exception e1){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1); - } - } - } - - - @SuppressWarnings("rawtypes") - @Override - public Object getEntityItem(Class className, String columnName, String key) { - Session session = sessionFactory.openSession(); - Transaction tx = session.beginTransaction(); - Object data = null; - try { - Criteria cr = session.createCriteria(className); - if(columnName.contains(":") && key.contains(":")){ - String[] columns = columnName.split(":"); - String[] keys = key.split(":"); - for(int i=0; i < columns.length; i++){ - cr.add(Restrictions.eq(columns[i], keys[i])); - } - }else{ - cr.add(Restrictions.eq(columnName, key)); - } - data = cr.list().get(0); - tx.commit(); - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Database Table"+e); - }finally{ - try{ - session.close(); - }catch(Exception e1){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1); - } - } - return data; - } - - - @SuppressWarnings("unchecked") - @Override - public List<PolicyRoles> getUserRoles() { - Session session = sessionFactory.openSession(); - Transaction tx = session.beginTransaction(); - List<PolicyRoles> rolesData = null; - try { - Criteria cr = session.createCriteria(PolicyRoles.class); - Disjunction disjunction = Restrictions.disjunction(); - Conjunction conjunction1 = Restrictions.conjunction(); - conjunction1.add(Restrictions.eq("role", "admin")); - Conjunction conjunction2 = Restrictions.conjunction(); - conjunction2.add(Restrictions.eq("role", "editor")); - Conjunction conjunction3 = Restrictions.conjunction(); - conjunction3.add(Restrictions.eq("role", "guest")); - disjunction.add(conjunction1); - disjunction.add(conjunction2); - disjunction.add(conjunction3); - rolesData = cr.add(disjunction).list(); - tx.commit(); - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying PolicyRoles Table"+e); - }finally{ - try{ - session.close(); - }catch(Exception e1){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1); - } - } - return rolesData; - } - - - @SuppressWarnings("unchecked") - @Override - public void updateClAlarms(String clName, String alarms) { - Session session = sessionFactory.openSession(); - List<ClosedLoops> closedloopsdata = null; - Transaction tx = session.beginTransaction(); - try { - Criteria cr = session.createCriteria(ClosedLoops.class); - cr.add(Restrictions.eq("closedLoopControlName",clName)); + private static final Log LOGGER = LogFactory.getLog(CommonClassDaoImpl.class); + + + private static SessionFactory sessionFactory; + + + @Autowired + private CommonClassDaoImpl(SessionFactory sessionFactory){ + CommonClassDaoImpl.sessionFactory = sessionFactory; + } + + public CommonClassDaoImpl(){ + //Default Constructor + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public List<Object> getData(Class className) { + Session session = sessionFactory.openSession(); + List<Object> data = null; + try{ + Criteria cr = session.createCriteria(className); + data = cr.list(); + }catch(Exception e){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Table"+e); + }finally{ + try{ + session.close(); + }catch(Exception e){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e); + } + } + return data; + } + + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public List<Object> getDataById(Class className, String columnName, String key) { + Session session = sessionFactory.openSession(); + List<Object> data = null; + try { + Criteria cr = session.createCriteria(className); + if(columnName.contains(":") && key.contains(":")){ + String[] columns = columnName.split(":"); + String[] keys = key.split(":"); + for(int i=0; i < columns.length; i++){ + cr.add(Restrictions.eq(columns[i], keys[i])); + } + }else{ + cr.add(Restrictions.eq(columnName, key)); + } + data = cr.list(); + } catch (Exception e) { + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Table"+e); + }finally{ + try{ + session.close(); + }catch(Exception e1){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1); + } + } + return data; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public List<String> getDataByColumn(Class className, String columnName) { + Session session = sessionFactory.openSession(); + List<String> data = null; + try{ + Criteria cr = session.createCriteria(className); + cr.setProjection(Projections.property(columnName)); + data = cr.list(); + }catch(Exception e){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Table"+e); + }finally{ + try{ + session.close(); + }catch(Exception e){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e); + } + } + return data; + } + + @Override + public void save(Object entity) { + Session session = sessionFactory.openSession(); + Transaction tx = session.beginTransaction(); + try { + session.persist(entity); + tx.commit(); + }catch(Exception e){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Saving data to Table"+e); + }finally{ + try{ + session.close(); + }catch(Exception e1){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1); + } + } + + } + + @Override + public void delete(Object entity) { + Session session = sessionFactory.openSession(); + Transaction tx = session.beginTransaction(); + try { + session.delete(entity); + tx.commit(); + }catch(Exception e){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Deleting data from Table"+e); + }finally{ + try{ + session.close(); + }catch(Exception e1){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1); + } + } + + } + + + @Override + public void update(Object entity) { + Session session = sessionFactory.openSession(); + Transaction tx = session.beginTransaction(); + try { + session.update(entity); + tx.commit(); + }catch(Exception e){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Updating data to Table"+e); + }finally{ + try{ + session.close(); + }catch(Exception e1){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1); + } + } + + } + + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public List<Object> checkDuplicateEntry(String value, String columnName, Class className) { + Session session = sessionFactory.openSession(); + Transaction tx = session.beginTransaction(); + List<Object> data = null; + + String[] columnNames = null; + if(columnName != null && columnName.contains(":")){ + columnNames = columnName.split(":"); + } + String[] values = null; + if(value != null && value.contains(":")){ + values = value.split(":"); + } + try { + Criteria cr = session.createCriteria(className); + if(columnNames != null && values != null && columnNames.length == values.length){ + for (int i = 0; i < columnNames.length; i++){ + cr.add(Restrictions.eq(columnNames[i],values[i])); + } + }else{ + cr.add(Restrictions.eq(columnName,value)); + } + + data = cr.list(); + tx.commit(); + } catch (Exception e) { + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying for Duplicate Entries for Table"+e + className); + }finally{ + try{ + session.close(); + }catch(Exception e1){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1); + } + } + return data; + } + + + @SuppressWarnings("unchecked") + @Override + public List<Object> getDataByQuery(String query, SimpleBindings params) { + Session session = sessionFactory.openSession(); + Transaction tx = session.beginTransaction(); + List<Object> data = null; + try { + Query hbquery = session.createQuery(query); + for (Map.Entry<String, Object> paramPair : params.entrySet()) { + if(paramPair.getValue() instanceof java.lang.Long){ + hbquery.setLong(paramPair.getKey(), (long) paramPair.getValue()); + } + else{ + hbquery.setParameter(paramPair.getKey(), paramPair.getValue()); + } + } + data = hbquery.list(); + tx.commit(); + } catch (Exception e) { + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Database Table"+e); + throw e; + }finally{ + try{ + session.close(); + }catch(HibernateException e1){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement",e1); + } + } + return data; + } + + + @Override + public void updateQuery(String query) { + Session session = sessionFactory.openSession(); + Transaction tx = session.beginTransaction(); + try { + Query hbquery = session.createQuery(query); + hbquery.executeUpdate(); + tx.commit(); + } catch (Exception e) { + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Updating Database Table"+e); + }finally{ + try{ + session.close(); + }catch(Exception e1){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1); + } + } + } + + + @SuppressWarnings("rawtypes") + @Override + public Object getEntityItem(Class className, String columnName, String key) { + Session session = sessionFactory.openSession(); + Transaction tx = session.beginTransaction(); + Object data = null; + try { + Criteria cr = session.createCriteria(className); + if(columnName.contains(":") && key.contains(":")){ + String[] columns = columnName.split(":"); + String[] keys = key.split(":"); + for(int i=0; i < columns.length; i++){ + cr.add(Restrictions.eq(columns[i], keys[i])); + } + }else{ + cr.add(Restrictions.eq(columnName, key)); + } + data = cr.list().get(0); + tx.commit(); + } catch (Exception e) { + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying Database Table"+e); + }finally{ + try{ + session.close(); + }catch(Exception e1){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1); + } + } + return data; + } + + + @SuppressWarnings("unchecked") + @Override + public List<PolicyRoles> getUserRoles() { + Session session = sessionFactory.openSession(); + Transaction tx = session.beginTransaction(); + List<PolicyRoles> rolesData = null; + try { + Criteria cr = session.createCriteria(PolicyRoles.class); + Disjunction disjunction = Restrictions.disjunction(); + Conjunction conjunction1 = Restrictions.conjunction(); + conjunction1.add(Restrictions.eq("role", "admin")); + Conjunction conjunction2 = Restrictions.conjunction(); + conjunction2.add(Restrictions.eq("role", "editor")); + Conjunction conjunction3 = Restrictions.conjunction(); + conjunction3.add(Restrictions.eq("role", "guest")); + disjunction.add(conjunction1); + disjunction.add(conjunction2); + disjunction.add(conjunction3); + rolesData = cr.add(disjunction).list(); + tx.commit(); + } catch (Exception e) { + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying PolicyRoles Table"+e); + }finally{ + try{ + session.close(); + }catch(Exception e1){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1); + } + } + return rolesData; + } + + + @SuppressWarnings("unchecked") + @Override + public void updateClAlarms(String clName, String alarms) { + Session session = sessionFactory.openSession(); + List<ClosedLoops> closedloopsdata = null; + Transaction tx = session.beginTransaction(); + try { + Criteria cr = session.createCriteria(ClosedLoops.class); + cr.add(Restrictions.eq("closedLoopControlName",clName)); + closedloopsdata = cr.list(); + ClosedLoops closedloop = closedloopsdata.get(0); + closedloop.setAlarmConditions(alarms); + session.update(closedloop); + tx.commit(); + }catch(Exception e){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Updating ClosedLoops Table"+e); + }finally{ + session.close(); + } + } + + + @SuppressWarnings("unchecked") + @Override + public void updateClYaml(String clName, String yaml) { + Session session = sessionFactory.openSession(); + List<ClosedLoops> closedloopsdata = null; + Transaction tx = session.beginTransaction(); + try { + Criteria cr = session.createCriteria(ClosedLoops.class); + cr.add(Restrictions.eq("closedLoopControlName",clName)); closedloopsdata = cr.list(); - ClosedLoops closedloop = closedloopsdata.get(0); - closedloop.setAlarmConditions(alarms); - session.update(closedloop); - tx.commit(); - }catch(Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Updating ClosedLoops Table"+e); - }finally{ - session.close(); - } - } - - - @SuppressWarnings("unchecked") - @Override - public void updateClYaml(String clName, String yaml) { - Session session = sessionFactory.openSession(); + ClosedLoops closedloop = closedloopsdata.get(0); + closedloop.setYaml(yaml); + session.update(closedloop); + tx.commit(); + }catch(Exception e){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Updating ClosedLoops Table"+e); + }finally{ + session.close(); + } + } + + + @SuppressWarnings("unchecked") + @Override + public void deleteAll() { + Session session = sessionFactory.openSession(); + Transaction tx = session.beginTransaction(); List<ClosedLoops> closedloopsdata = null; - Transaction tx = session.beginTransaction(); - try { - Criteria cr = session.createCriteria(ClosedLoops.class); - cr.add(Restrictions.eq("closedLoopControlName",clName)); + try { + Criteria cr = session.createCriteria(ClosedLoops.class); closedloopsdata = cr.list(); - ClosedLoops closedloop = closedloopsdata.get(0); - closedloop.setYaml(yaml); - session.update(closedloop); - tx.commit(); - }catch(Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Updating ClosedLoops Table"+e); - }finally{ - session.close(); - } - } - - - @SuppressWarnings("unchecked") - @Override - public void deleteAll() { - Session session = sessionFactory.openSession(); - Transaction tx = session.beginTransaction(); - List<ClosedLoops> closedloopsdata = null; - try { - Criteria cr = session.createCriteria(ClosedLoops.class); - closedloopsdata = cr.list(); - - if(closedloopsdata!=null && !closedloopsdata.isEmpty()) { - LOGGER.info("ClosedLoops exist in the database, we need to delete them in our first step to buildCache()."); - for(int i=0; i < closedloopsdata.size(); i++) { - ClosedLoops cl = closedloopsdata.get(i); - session.delete(cl); - } - } else { - LOGGER.info("No ClosedLoops exist in the database, no need to delete."); - } - - tx.commit(); - }catch(Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while deleting ClosedLoops from the table"+e); - }finally{ - session.close(); - } - } - - @SuppressWarnings({ "unchecked"}) - @Override - public List<Object> checkExistingGroupListforUpdate(String groupListValue, String groupNameValue) { - Session session = sessionFactory.openSession(); - Transaction tx = session.beginTransaction(); - List<Object> data = null; - try { - Criteria cr = session.createCriteria(GroupPolicyScopeList.class); - cr.add(Restrictions.eq("groupList",groupListValue)); - Criterion expression = Restrictions.eq("name", groupNameValue); - cr.add(Restrictions.not(expression)); - data = cr.list(); - tx.commit(); - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying for Duplicate Entries for GroupPolicyScopeList Table"+e); - }finally{ - try{ - session.close(); - }catch(Exception e1){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1); - } - } - return data; - } - - - @Override - public List<Object> getMultipleDataOnAddingConjunction(@SuppressWarnings("rawtypes") Class className, String columnName, List<String> data) { - return null; - } + + if(closedloopsdata!=null && !closedloopsdata.isEmpty()) { + LOGGER.info("ClosedLoops exist in the database, we need to delete them in our first step to buildCache()."); + for(int i=0; i < closedloopsdata.size(); i++) { + ClosedLoops cl = closedloopsdata.get(i); + session.delete(cl); + } + } else { + LOGGER.info("No ClosedLoops exist in the database, no need to delete."); + } + + tx.commit(); + }catch(Exception e) { + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while deleting ClosedLoops from the table"+e); + }finally{ + session.close(); + } + } + + @SuppressWarnings({ "unchecked"}) + @Override + public List<Object> checkExistingGroupListforUpdate(String groupListValue, String groupNameValue) { + Session session = sessionFactory.openSession(); + Transaction tx = session.beginTransaction(); + List<Object> data = null; + try { + Criteria cr = session.createCriteria(GroupPolicyScopeList.class); + cr.add(Restrictions.eq("groupList",groupListValue)); + Criterion expression = Restrictions.eq("name", groupNameValue); + cr.add(Restrictions.not(expression)); + data = cr.list(); + tx.commit(); + } catch (Exception e) { + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Querying for Duplicate Entries for GroupPolicyScopeList Table"+e); + }finally{ + try{ + session.close(); + }catch(Exception e1){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error While Closing Connection/Statement"+e1); + } + } + return data; + } + + + @Override + public List<Object> getMultipleDataOnAddingConjunction(@SuppressWarnings("rawtypes") Class className, String columnName, List<String> data) { + return null; + } public static void setSessionfactory(SessionFactory sessionfactory) { sessionFactory = sessionfactory; diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/ElasticSearchPolicyUpdate.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/ElasticSearchPolicyUpdate.java index dcabefcc8..79b07e2b9 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/ElasticSearchPolicyUpdate.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/ElasticSearchPolicyUpdate.java @@ -71,280 +71,280 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; * */ public class ElasticSearchPolicyUpdate { - - private static final Logger LOGGER = FlexLogger.getLogger(ElasticSearchPolicyUpdate.class); - protected final static JestClientFactory jestFactory = new JestClientFactory(); - - public static void main(String[] args) { - - String elkURL = null; - String databseUrl = null; - String userName = null; - String txt = null; - String databaseDriver = null; - - String propertyFile = System.getProperty("PROPERTY_FILE"); - Properties config = new Properties(); - Path file = Paths.get(propertyFile); - if(!file.toFile().exists()){ - LOGGER.error("Config File doesn't Exist in the specified Path " + file.toString()); - }else{ - if(file.toString().endsWith(".properties")){ - try { - InputStream in = new FileInputStream(file.toFile()); - config.load(in); - elkURL = config.getProperty("policy.elk.url"); - databseUrl = config.getProperty("policy.database.url"); - userName = config.getProperty("policy.database.username"); - txt = CryptoUtils.decryptTxtNoExStr(config.getProperty("policy.database.password")); - databaseDriver = config.getProperty("policy.database.driver"); - if(elkURL == null || databseUrl == null || userName == null || txt == null || databaseDriver == null){ - LOGGER.error("please check the elk configuration"); - } - } catch (Exception e) { - LOGGER.error("Config File doesn't Exist in the specified Path " + file.toString(),e); - } - } - } - - Builder bulk = null; - - HttpClientConfig httpClientConfig = new HttpClientConfig.Builder(elkURL).multiThreaded(true).build(); - jestFactory.setHttpClientConfig(httpClientConfig); - JestHttpClient client = (JestHttpClient) jestFactory.getObject(); - - Connection conn = null; - Statement stmt = null; - ResultSet result = null; - - List<Index> listIndex = new ArrayList<>(); - - try { - Class.forName(databaseDriver); - conn = DriverManager.getConnection(databseUrl, userName, txt); - stmt = conn.createStatement(); - - String policyEntityQuery = "Select * from PolicyEntity"; - result = stmt.executeQuery(policyEntityQuery); - - while(result.next()){ - StringBuilder policyDataString = new StringBuilder("{"); - String scope = result.getString("scope"); - String policyName = result.getString("policyName"); - if(policyName != null){ - policyDataString.append("\"policyName\":\""+scope+"."+policyName+"\","); - } - String description = result.getString("description"); - if(description != null){ - policyDataString.append("\"policyDescription\":\""+description+"\","); - } - Object policyData = result.getString("policydata"); - - if(scope != null){ - policyDataString.append("\"scope\":\""+scope+"\","); - } - String actionbodyid = result.getString("actionbodyid"); - String configurationdataid = result.getString("configurationdataid"); - - - String policyWithScopeName = scope + "." + policyName; - String _type = null; - - if(policyWithScopeName.contains(".Config_")){ - policyDataString.append("\"policyType\":\"Config\","); - if(policyWithScopeName.contains(".Config_Fault_")){ - _type = "closedloop"; - policyDataString.append("\"configPolicyType\":\"ClosedLoop_Fault\","); - }else if(policyWithScopeName.contains(".Config_PM_")){ - _type = "closedloop"; - policyDataString.append("\"configPolicyType\":\"ClosedLoop_PM\","); - }else{ - _type = "config"; - policyDataString.append("\"configPolicyType\":\"Base\","); - } - }else if(policyWithScopeName.contains(".Action_")){ - _type = "action"; - policyDataString.append("\"policyType\":\"Action\","); - }else if(policyWithScopeName.contains(".Decision_")){ - _type = "decision"; - policyDataString.append("\"policyType\":\"Decision\","); - } - - if(!"decision".equals(_type)){ - if(configurationdataid != null){ - updateConfigData(conn, configurationdataid, policyDataString); - } - if(actionbodyid != null){ - updateActionData(conn, actionbodyid, policyDataString); - } - } - - String _id = policyWithScopeName; - - String dataString = constructPolicyData(policyData, policyDataString); - dataString = dataString.substring(0, dataString.length()-1); - dataString = dataString.trim().replace(System.getProperty("line.separator"), "") + "}"; - dataString = dataString.replace("null", "\"\""); - dataString = dataString.replaceAll("\n", ""); - - try{ - Gson gson = new Gson(); - gson.fromJson(dataString, Object.class); - }catch(Exception e){ - LOGGER.error(e); - continue; - } - - if("config".equals(_type)){ - listIndex.add(new Index.Builder(dataString).index("policy").type("config").id(_id).build()); - }else if("closedloop".equals(_type)){ - listIndex.add(new Index.Builder(dataString).index("policy").type("closedloop").id(_id).build()); - }else if("action".equals(_type)){ - listIndex.add(new Index.Builder(dataString).index("policy").type("action").id(_id).build()); - }else if("decision".equals(_type)){ - listIndex.add(new Index.Builder(dataString).index("policy").type("decision").id(_id).build()); - } - } - - result.close(); - bulk = new Bulk.Builder(); - for(int i =0; i < listIndex.size(); i++){ - bulk.addAction(listIndex.get(i)); - } - BulkResult searchResult = client.execute(bulk.build()); - if(searchResult.isSucceeded()){ - LOGGER.debug("Success"); - }else{ - LOGGER.error("Failure"); - } - } catch (Exception e) { - LOGGER.error("Exception Occured while performing database Operation for Elastic Search Policy Upgrade"+e); - }finally{ - if(result != null){ - try { - result.close(); - } catch (Exception e) { - LOGGER.error("Exception Occured while closing the resultset"+e); - } - } - if(stmt != null){ - try { - stmt.close(); - } catch (Exception e) { - LOGGER.error("Exception Occured while closing the statement"+e); - } - } - if(conn != null){ - try { - conn.close(); - } catch (Exception e) { - LOGGER.error("Exception Occured while closing the connection"+e); - } - } - } - } - - public static String constructPolicyData(Object policyContent, StringBuilder policyDataString){ - InputStream stream = new ByteArrayInputStream(policyContent.toString().getBytes(StandardCharsets.UTF_8)); - Object policyData = XACMLPolicyScanner.readPolicy(stream); - if(policyData instanceof PolicyType){ - PolicyType policy = (PolicyType) policyData; - TargetType target = policy.getTarget(); - if (target != null) { - // Under target we have AnyOFType - List<AnyOfType> anyOfList = target.getAnyOf(); - if (anyOfList != null) { - Iterator<AnyOfType> iterAnyOf = anyOfList.iterator(); - while (iterAnyOf.hasNext()) { - AnyOfType anyOf = iterAnyOf.next(); - // Under AnyOFType we have AllOFType - List<AllOfType> allOfList = anyOf.getAllOf(); - if (allOfList != null) { - Iterator<AllOfType> iterAllOf = allOfList.iterator(); - while (iterAllOf.hasNext()) { - AllOfType allOf = iterAllOf.next(); - // Under AllOFType we have Match - List<MatchType> matchList = allOf.getMatch(); - if (matchList != null) { - Iterator<MatchType> iterMatch = matchList.iterator(); - while (iterMatch.hasNext()) { - MatchType match = iterMatch.next(); - // - // Under the match we have attribute value and - // attributeDesignator. So,finally down to the actual attribute. - // - AttributeValueType attributeValue = match.getAttributeValue(); - String value = (String) attributeValue.getContent().get(0); - AttributeDesignatorType designator = match.getAttributeDesignator(); - String attributeId = designator.getAttributeId(); - // First match in the target is OnapName, so set that value. - if ("ONAPName".equals(attributeId)) { - policyDataString.append("\"onapName\":\""+value+"\","); - } - if ("RiskType".equals(attributeId)){ - policyDataString.append("\"riskType\":\""+value+"\","); - } - if ("RiskLevel".equals(attributeId)){ - policyDataString.append("\"riskLevel\":\""+value+"\","); - } - if ("guard".equals(attributeId)){ - policyDataString.append("\"guard\":\""+value+"\","); - } - if ("ConfigName".equals(attributeId)){ - policyDataString.append("\"configName\":\""+value+"\","); - } - } - } - } - } - } - } - } - } - return policyDataString.toString(); - } - - private static void updateConfigData(Connection conn, String configurationdataid, StringBuilder policyDataString) throws Exception { - - PreparedStatement pstmt = null; - ResultSet configResult = null; - try { - String configEntityQuery = "Select * from ConfigurationDataEntity where configurationDataId = ?"; - pstmt = null; - pstmt = conn.prepareStatement(configEntityQuery); - pstmt.setString(1, configurationdataid); - configResult = pstmt.executeQuery(); - while(configResult.next()){ - String configBody = configResult.getString("configbody"); - String configType = configResult.getString("configtype"); - if(configBody!=null){ - configBody = configBody.replace("null", "\"\""); - configBody= configBody.replace("\"", "\\\""); - policyDataString.append("\"jsonBodyData\":\""+configBody+"\",\"configType\":\""+configType+"\","); - } - } - } catch(Exception e) { - LOGGER.error("Exception Occured while updating configData"+e); - throw(e); - } finally { - if(configResult != null){ - try { - configResult.close(); - } catch (Exception e) { - LOGGER.error("Exception Occured while closing the ResultSet"+e); - } - } - if(pstmt != null){ - try { - pstmt.close(); - } catch (Exception e) { - LOGGER.error("Exception Occured while closing the PreparedStatement"+e); - } - } - } - } - - private static void updateActionData(Connection conn, String actionbodyid, StringBuilder policyDataString) throws Exception { + + private static final Logger LOGGER = FlexLogger.getLogger(ElasticSearchPolicyUpdate.class); + protected final static JestClientFactory jestFactory = new JestClientFactory(); + + public static void main(String[] args) { + + String elkURL = null; + String databseUrl = null; + String userName = null; + String txt = null; + String databaseDriver = null; + + String propertyFile = System.getProperty("PROPERTY_FILE"); + Properties config = new Properties(); + Path file = Paths.get(propertyFile); + if(!file.toFile().exists()){ + LOGGER.error("Config File doesn't Exist in the specified Path " + file.toString()); + }else{ + if(file.toString().endsWith(".properties")){ + try { + InputStream in = new FileInputStream(file.toFile()); + config.load(in); + elkURL = config.getProperty("policy.elk.url"); + databseUrl = config.getProperty("policy.database.url"); + userName = config.getProperty("policy.database.username"); + txt = CryptoUtils.decryptTxtNoExStr(config.getProperty("policy.database.password")); + databaseDriver = config.getProperty("policy.database.driver"); + if(elkURL == null || databseUrl == null || userName == null || txt == null || databaseDriver == null){ + LOGGER.error("please check the elk configuration"); + } + } catch (Exception e) { + LOGGER.error("Config File doesn't Exist in the specified Path " + file.toString(),e); + } + } + } + + Builder bulk = null; + + HttpClientConfig httpClientConfig = new HttpClientConfig.Builder(elkURL).multiThreaded(true).build(); + jestFactory.setHttpClientConfig(httpClientConfig); + JestHttpClient client = (JestHttpClient) jestFactory.getObject(); + + Connection conn = null; + Statement stmt = null; + ResultSet result = null; + + List<Index> listIndex = new ArrayList<>(); + + try { + Class.forName(databaseDriver); + conn = DriverManager.getConnection(databseUrl, userName, txt); + stmt = conn.createStatement(); + + String policyEntityQuery = "Select * from PolicyEntity"; + result = stmt.executeQuery(policyEntityQuery); + + while(result.next()){ + StringBuilder policyDataString = new StringBuilder("{"); + String scope = result.getString("scope"); + String policyName = result.getString("policyName"); + if(policyName != null){ + policyDataString.append("\"policyName\":\""+scope+"."+policyName+"\","); + } + String description = result.getString("description"); + if(description != null){ + policyDataString.append("\"policyDescription\":\""+description+"\","); + } + Object policyData = result.getString("policydata"); + + if(scope != null){ + policyDataString.append("\"scope\":\""+scope+"\","); + } + String actionbodyid = result.getString("actionbodyid"); + String configurationdataid = result.getString("configurationdataid"); + + + String policyWithScopeName = scope + "." + policyName; + String _type = null; + + if(policyWithScopeName.contains(".Config_")){ + policyDataString.append("\"policyType\":\"Config\","); + if(policyWithScopeName.contains(".Config_Fault_")){ + _type = "closedloop"; + policyDataString.append("\"configPolicyType\":\"ClosedLoop_Fault\","); + }else if(policyWithScopeName.contains(".Config_PM_")){ + _type = "closedloop"; + policyDataString.append("\"configPolicyType\":\"ClosedLoop_PM\","); + }else{ + _type = "config"; + policyDataString.append("\"configPolicyType\":\"Base\","); + } + }else if(policyWithScopeName.contains(".Action_")){ + _type = "action"; + policyDataString.append("\"policyType\":\"Action\","); + }else if(policyWithScopeName.contains(".Decision_")){ + _type = "decision"; + policyDataString.append("\"policyType\":\"Decision\","); + } + + if(!"decision".equals(_type)){ + if(configurationdataid != null){ + updateConfigData(conn, configurationdataid, policyDataString); + } + if(actionbodyid != null){ + updateActionData(conn, actionbodyid, policyDataString); + } + } + + String _id = policyWithScopeName; + + String dataString = constructPolicyData(policyData, policyDataString); + dataString = dataString.substring(0, dataString.length()-1); + dataString = dataString.trim().replace(System.getProperty("line.separator"), "") + "}"; + dataString = dataString.replace("null", "\"\""); + dataString = dataString.replaceAll("\n", ""); + + try{ + Gson gson = new Gson(); + gson.fromJson(dataString, Object.class); + }catch(Exception e){ + LOGGER.error(e); + continue; + } + + if("config".equals(_type)){ + listIndex.add(new Index.Builder(dataString).index("policy").type("config").id(_id).build()); + }else if("closedloop".equals(_type)){ + listIndex.add(new Index.Builder(dataString).index("policy").type("closedloop").id(_id).build()); + }else if("action".equals(_type)){ + listIndex.add(new Index.Builder(dataString).index("policy").type("action").id(_id).build()); + }else if("decision".equals(_type)){ + listIndex.add(new Index.Builder(dataString).index("policy").type("decision").id(_id).build()); + } + } + + result.close(); + bulk = new Bulk.Builder(); + for(int i =0; i < listIndex.size(); i++){ + bulk.addAction(listIndex.get(i)); + } + BulkResult searchResult = client.execute(bulk.build()); + if(searchResult.isSucceeded()){ + LOGGER.debug("Success"); + }else{ + LOGGER.error("Failure"); + } + } catch (Exception e) { + LOGGER.error("Exception Occured while performing database Operation for Elastic Search Policy Upgrade"+e); + }finally{ + if(result != null){ + try { + result.close(); + } catch (Exception e) { + LOGGER.error("Exception Occured while closing the resultset"+e); + } + } + if(stmt != null){ + try { + stmt.close(); + } catch (Exception e) { + LOGGER.error("Exception Occured while closing the statement"+e); + } + } + if(conn != null){ + try { + conn.close(); + } catch (Exception e) { + LOGGER.error("Exception Occured while closing the connection"+e); + } + } + } + } + + public static String constructPolicyData(Object policyContent, StringBuilder policyDataString){ + InputStream stream = new ByteArrayInputStream(policyContent.toString().getBytes(StandardCharsets.UTF_8)); + Object policyData = XACMLPolicyScanner.readPolicy(stream); + if(policyData instanceof PolicyType){ + PolicyType policy = (PolicyType) policyData; + TargetType target = policy.getTarget(); + if (target != null) { + // Under target we have AnyOFType + List<AnyOfType> anyOfList = target.getAnyOf(); + if (anyOfList != null) { + Iterator<AnyOfType> iterAnyOf = anyOfList.iterator(); + while (iterAnyOf.hasNext()) { + AnyOfType anyOf = iterAnyOf.next(); + // Under AnyOFType we have AllOFType + List<AllOfType> allOfList = anyOf.getAllOf(); + if (allOfList != null) { + Iterator<AllOfType> iterAllOf = allOfList.iterator(); + while (iterAllOf.hasNext()) { + AllOfType allOf = iterAllOf.next(); + // Under AllOFType we have Match + List<MatchType> matchList = allOf.getMatch(); + if (matchList != null) { + Iterator<MatchType> iterMatch = matchList.iterator(); + while (iterMatch.hasNext()) { + MatchType match = iterMatch.next(); + // + // Under the match we have attribute value and + // attributeDesignator. So,finally down to the actual attribute. + // + AttributeValueType attributeValue = match.getAttributeValue(); + String value = (String) attributeValue.getContent().get(0); + AttributeDesignatorType designator = match.getAttributeDesignator(); + String attributeId = designator.getAttributeId(); + // First match in the target is OnapName, so set that value. + if ("ONAPName".equals(attributeId)) { + policyDataString.append("\"onapName\":\""+value+"\","); + } + if ("RiskType".equals(attributeId)){ + policyDataString.append("\"riskType\":\""+value+"\","); + } + if ("RiskLevel".equals(attributeId)){ + policyDataString.append("\"riskLevel\":\""+value+"\","); + } + if ("guard".equals(attributeId)){ + policyDataString.append("\"guard\":\""+value+"\","); + } + if ("ConfigName".equals(attributeId)){ + policyDataString.append("\"configName\":\""+value+"\","); + } + } + } + } + } + } + } + } + } + return policyDataString.toString(); + } + + private static void updateConfigData(Connection conn, String configurationdataid, StringBuilder policyDataString) throws Exception { + + PreparedStatement pstmt = null; + ResultSet configResult = null; + try { + String configEntityQuery = "Select * from ConfigurationDataEntity where configurationDataId = ?"; + pstmt = null; + pstmt = conn.prepareStatement(configEntityQuery); + pstmt.setString(1, configurationdataid); + configResult = pstmt.executeQuery(); + while(configResult.next()){ + String configBody = configResult.getString("configbody"); + String configType = configResult.getString("configtype"); + if(configBody!=null){ + configBody = configBody.replace("null", "\"\""); + configBody= configBody.replace("\"", "\\\""); + policyDataString.append("\"jsonBodyData\":\""+configBody+"\",\"configType\":\""+configType+"\","); + } + } + } catch(Exception e) { + LOGGER.error("Exception Occured while updating configData"+e); + throw(e); + } finally { + if(configResult != null){ + try { + configResult.close(); + } catch (Exception e) { + LOGGER.error("Exception Occured while closing the ResultSet"+e); + } + } + if(pstmt != null){ + try { + pstmt.close(); + } catch (Exception e) { + LOGGER.error("Exception Occured while closing the PreparedStatement"+e); + } + } + } + } + + private static void updateActionData(Connection conn, String actionbodyid, StringBuilder policyDataString) throws Exception { PreparedStatement pstmt = null; ResultSet actionResult = null; @@ -378,5 +378,5 @@ public class ElasticSearchPolicyUpdate { } } } - } + } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/ElkConnector.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/ElkConnector.java index 83d5c3ff9..e895b6336 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/ElkConnector.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/ElkConnector.java @@ -27,78 +27,78 @@ import org.onap.policy.rest.adapter.PolicyRestAdapter; import io.searchbox.client.JestResult; public interface ElkConnector { - - public static final String ELK_URL = "http://localhost:9200"; - public static final String ELK_INDEX_POLICY = "policy"; - - public enum PolicyIndexType { - config, - action, - decision, - closedloop, - all, - } - - public enum PolicyType { - Config, - Action, - Decision, - Config_Fault, - Config_PM, - Config_FW, - Config_MS, - Config_OOF, - none, - } - - public enum PolicyBodyType { - json, - xml, - properties, - txt, - none, - } - - public boolean delete(PolicyRestAdapter policyData) - throws IllegalStateException; - - public JestResult search(PolicyIndexType type, String text) - throws IllegalStateException, IllegalArgumentException; - - public JestResult search(PolicyIndexType type, String text, - Map<String, String> searchKeyValue) - throws IllegalStateException, IllegalArgumentException; - - public boolean update(PolicyRestAdapter policyData) throws IllegalStateException; - - public ElkConnector singleton = new ElkConnectorImpl(); - - public static PolicyIndexType toPolicyIndexType(String policyName) - throws IllegalArgumentException { - if (policyName == null) - throw new IllegalArgumentException("Unsupported NULL policy name conversion"); - - if (policyName.startsWith("Config_Fault")) { - return PolicyIndexType.closedloop; - } else if (policyName.startsWith("Config_PM")) { - return PolicyIndexType.closedloop; - } else if (policyName.startsWith("Config_FW")) { - return PolicyIndexType.config; - } else if (policyName.startsWith("Config_MS")) { - return PolicyIndexType.config; - } else if (policyName.startsWith("Config_OOF")) { - return PolicyIndexType.config; - }else if (policyName.startsWith("Action")) { - return PolicyIndexType.action; - } else if (policyName.startsWith("Decision")) { - return PolicyIndexType.decision; - } else if (policyName.startsWith("Config")) { - return PolicyIndexType.config; - } else { - throw new IllegalArgumentException - ("Unsupported policy name conversion to index: " + - policyName); - } - } - + + public static final String ELK_URL = "http://localhost:9200"; + public static final String ELK_INDEX_POLICY = "policy"; + + public enum PolicyIndexType { + config, + action, + decision, + closedloop, + all, + } + + public enum PolicyType { + Config, + Action, + Decision, + Config_Fault, + Config_PM, + Config_FW, + Config_MS, + Config_OOF, + none, + } + + public enum PolicyBodyType { + json, + xml, + properties, + txt, + none, + } + + public boolean delete(PolicyRestAdapter policyData) + throws IllegalStateException; + + public JestResult search(PolicyIndexType type, String text) + throws IllegalStateException, IllegalArgumentException; + + public JestResult search(PolicyIndexType type, String text, + Map<String, String> searchKeyValue) + throws IllegalStateException, IllegalArgumentException; + + public boolean update(PolicyRestAdapter policyData) throws IllegalStateException; + + public ElkConnector singleton = new ElkConnectorImpl(); + + public static PolicyIndexType toPolicyIndexType(String policyName) + throws IllegalArgumentException { + if (policyName == null) + throw new IllegalArgumentException("Unsupported NULL policy name conversion"); + + if (policyName.startsWith("Config_Fault")) { + return PolicyIndexType.closedloop; + } else if (policyName.startsWith("Config_PM")) { + return PolicyIndexType.closedloop; + } else if (policyName.startsWith("Config_FW")) { + return PolicyIndexType.config; + } else if (policyName.startsWith("Config_MS")) { + return PolicyIndexType.config; + } else if (policyName.startsWith("Config_OOF")) { + return PolicyIndexType.config; + }else if (policyName.startsWith("Action")) { + return PolicyIndexType.action; + } else if (policyName.startsWith("Decision")) { + return PolicyIndexType.decision; + } else if (policyName.startsWith("Config")) { + return PolicyIndexType.config; + } else { + throw new IllegalArgumentException + ("Unsupported policy name conversion to index: " + + policyName); + } + } + } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/ElkConnectorImpl.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/ElkConnectorImpl.java index d87e75f71..19a7ed294 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/ElkConnectorImpl.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/ElkConnectorImpl.java @@ -47,384 +47,384 @@ import io.searchbox.params.Parameters; public class ElkConnectorImpl implements ElkConnector{ - private static final Logger LOGGER = FlexLogger.getLogger(ElkConnector.class); - - protected final JestClientFactory jestFactory = new JestClientFactory(); - protected final JestClient jestClient; - protected static int QUERY_MAXRECORDS = 1000; - - public ElkConnectorImpl() { - if (LOGGER.isDebugEnabled()){ - LOGGER.debug("ENTER: -"); - } - HttpClientConfig jestClientConfig = new HttpClientConfig.Builder(ELK_URL).multiThreaded(true).build(); - jestFactory.setHttpClientConfig(jestClientConfig); - jestClient = jestFactory.getObject(); - } - - protected boolean isType(PolicyIndexType type) throws IOException { - if (LOGGER.isDebugEnabled()){ - LOGGER.debug("ENTER: -"); - } - - try { - Action<JestResult> typeQuery = new TypeExist.Builder(ELK_INDEX_POLICY).addType(type.toString()).build(); - JestResult result = jestClient.execute(typeQuery); - - if (LOGGER.isInfoEnabled()) { - LOGGER.info("JSON:" + result.getJsonString()); - LOGGER.info("ERROR:" + result.getErrorMessage()); - LOGGER.info("PATH:" + result.getPathToResult()); - LOGGER.info(result.getJsonObject()); - } - return result.isSucceeded(); - } catch (IOException e) { - LOGGER.warn("Error checking type existance of " + type.toString() + ": " + e.getMessage(), e); - throw e; - } - } - - protected boolean isIndex() throws IOException { - try { - Action<JestResult> indexQuery = new IndicesExists.Builder(ELK_INDEX_POLICY).build(); - - JestResult result = jestClient.execute(indexQuery); - if (LOGGER.isInfoEnabled()) { - LOGGER.info("JSON:" + result.getJsonString()); - LOGGER.info("ERROR:" + result.getErrorMessage()); - LOGGER.info("PATH:" + result.getPathToResult()); - LOGGER.info(result.getJsonObject()); - } - return result.isSucceeded(); - } catch (IOException e) { - LOGGER.warn("Error checking index existance of " + ELK_INDEX_POLICY + ": " + e.getMessage(), e); - throw e; - } - } - private boolean isAlphaNumeric(String query){ - return query.matches("[a-zA-Z_0-9]+"); - } - - @Override - public JestResult search(PolicyIndexType type, String text) throws IllegalStateException, IllegalArgumentException { - if (LOGGER.isTraceEnabled()){ - LOGGER.trace("ENTER: " + text); - } - - if (text == null || text.isEmpty()) { - throw new IllegalArgumentException("No search string provided"); - } - - if(!isAlphaNumeric(text)){ - throw new IllegalArgumentException("Search must be alpha numeric"); - } - - QueryStringQueryBuilder mQ = QueryBuilders.queryStringQuery("*"+text+"*"); - SearchSourceBuilder searchSourceBuilder = - new SearchSourceBuilder().query(mQ); - - Builder searchBuilder = new Search.Builder(searchSourceBuilder.toString()). - addIndex(ELK_INDEX_POLICY). - setParameter(Parameters.SIZE, ElkConnectorImpl.QUERY_MAXRECORDS); - - if (type == null || type == PolicyIndexType.all) { - for (PolicyIndexType pT: PolicyIndexType.values()) { - if (pT != PolicyIndexType.all) { - searchBuilder.addType(pT.toString()); - } - } - } else { - searchBuilder.addType(type.toString()); - } - - Search search = searchBuilder.build(); - JestResult result; - try { - result = jestClient.execute(search); - } catch (IOException ioe) { - LOGGER.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR + ":" + - search + ": " + ioe.getMessage(), ioe); - throw new IllegalStateException(ioe); - } - - if (result.isSucceeded()) { - if (LOGGER.isInfoEnabled()){ - LOGGER.info("OK:" + result.getResponseCode() + ":" + search + ": " + - result.getPathToResult() + ":" + System.lineSeparator() + - result.getJsonString()); - } - } else { - /* Unsuccessful search */ - if (LOGGER.isWarnEnabled()){ - LOGGER.warn(XACMLErrorConstants.ERROR_PROCESS_FLOW + ":" + - result.getResponseCode() + ": " + - search.getURI() + ":" + - result.getPathToResult() + ":" + - result.getJsonString() + ":" + - result.getErrorMessage()); - } - - String errorMessage = result.getErrorMessage(); - if (errorMessage != null && !errorMessage.isEmpty()) { - String xMessage; - if (errorMessage.contains("TokenMgrError")) { - int indexError = errorMessage.lastIndexOf("TokenMgrError"); - xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); - } else if (errorMessage.contains("QueryParsingException")) { - int indexError = errorMessage.lastIndexOf("QueryParsingException"); - xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); - } else if (errorMessage.contains("JsonParseException")) { - int indexError = errorMessage.lastIndexOf("JsonParseException"); - xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); - } else if (errorMessage.contains("Parse Failure")) { - int indexError = errorMessage.lastIndexOf("Parse Failure"); - xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); - } else if (errorMessage.contains("SearchParseException")) { - int indexError = errorMessage.lastIndexOf("SearchParseException"); - xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); - } else { - xMessage = result.getErrorMessage(); - } - throw new IllegalStateException(xMessage); - } - } - - return result; - } - - - @Override - public JestResult search(PolicyIndexType type, String text, - Map<String, String> filter_s) - throws IllegalStateException, IllegalArgumentException { - if (LOGGER.isTraceEnabled()){ - LOGGER.trace("ENTER: " + text); - } - - if (filter_s == null || filter_s.size() == 0) { - return search(type, text); - } - - if(!isAlphaNumeric(text)){ - throw new IllegalArgumentException("Search must be alpha numeric"); - } - - String matches_s = ""; - matches_s = "{\n" + - " \"size\" : "+ ElkConnectorImpl.QUERY_MAXRECORDS + ",\n" + - " \"query\": {\n" + - " \"bool\" : {\n" + - " \"must\" : ["; - - String match_params = ""; - boolean first = true; - for(Entry<String, String> entry : filter_s.entrySet()){ - String key = entry.getKey(); - String value = entry.getValue(); - if(first){ - match_params = "\"match\" : {\""+key+"\" : \""+value+"\" }},"; - first = false; - }else{ - match_params = match_params + "{\"match\" : { \""+key+"\" : \""+value+"\" } },"; - } - } - if(match_params.endsWith(",")){ - match_params = match_params.substring(0, match_params.length()-2); - } - - matches_s = matches_s + "{\n" + match_params + "\n}" ; - - boolean query = false; - String query_String = ""; - if(text != null){ - query = true; - query_String = "{\n \"query_string\" : {\n \"query\" : \"*"+text+"*\"\n} \n}"; - } - - if(query){ - matches_s = matches_s + "," + query_String + "]\n}\n}\n}"; - }else{ - matches_s = matches_s + "]\n}\n}\n}"; - } - - Builder searchBuilder = new Search.Builder(matches_s).addIndex(ELK_INDEX_POLICY); - - if (type == null || type == PolicyIndexType.all) { - for (PolicyIndexType pT: PolicyIndexType.values()) { - if (pT != PolicyIndexType.all) { - searchBuilder.addType(pT.toString()); - } - } - } else { - searchBuilder.addType(type.toString()); - } - - Search search = searchBuilder.build(); - - JestResult result; - try { - result = jestClient.execute(search); - } catch (IOException ioe) { - LOGGER.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR + ":" + - search + ": " + ioe.getMessage(), ioe); - throw new IllegalStateException(ioe); - } - - if (result.isSucceeded()) { - if (LOGGER.isInfoEnabled()){ - LOGGER.info("OK:" + result.getResponseCode() + ":" + search + ": " + - result.getPathToResult() + ":" + System.lineSeparator() + - result.getJsonString()); - } - } else { - /* Unsuccessful search */ - if (LOGGER.isWarnEnabled()){ - LOGGER.warn(XACMLErrorConstants.ERROR_PROCESS_FLOW + ":" + - result.getResponseCode() + ": " + - search.getURI() + ":" + - result.getPathToResult() + ":" + - result.getJsonString() + ":" + - result.getErrorMessage()); - } - - String errorMessage = result.getErrorMessage(); - if (errorMessage != null && !errorMessage.isEmpty()) { - String xMessage = errorMessage; - if (errorMessage.contains("TokenMgrError")) { - int indexError = errorMessage.lastIndexOf("TokenMgrError"); - xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); - } else if (errorMessage.contains("QueryParsingException")) { - int indexError = errorMessage.lastIndexOf("QueryParsingException"); - xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); - } else if (errorMessage.contains("JsonParseException")) { - int indexError = errorMessage.lastIndexOf("JsonParseException"); - xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); - } else if (errorMessage.contains("Parse Failure")) { - int indexError = errorMessage.lastIndexOf("Parse Failure"); - xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); - } else if (errorMessage.contains("SearchParseException")) { - int indexError = errorMessage.lastIndexOf("SearchParseException"); - xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); - } else { - xMessage = result.getErrorMessage(); - } - throw new IllegalStateException(xMessage); - } - } - - return result; - } - - public boolean put(PolicyRestAdapter policyData) - throws IOException, IllegalStateException { - if (LOGGER.isTraceEnabled()) LOGGER.trace("ENTER"); - - PolicyIndexType indexType; - try { - String policyName = policyData.getNewFileName(); - if(policyName.contains("Config_")){ - policyName = policyName.replace(".Config_", ":Config_"); - }else if(policyName.contains("Action_")){ - policyName = policyName.replace(".Action_", ":Action_"); - }else if(policyName.contains("Decision_")){ - policyName = policyName.replace(".Decision_", ":Decision_"); - } - - String[] splitPolicyName = policyName.split(":"); - indexType = ElkConnector.toPolicyIndexType(splitPolicyName[1]); - } catch (IllegalArgumentException e) { - LOGGER.error(e); - throw new IllegalStateException("ELK: Index: " + ELK_INDEX_POLICY + e.getMessage()); - } - PolicyElasticData elasticData = new PolicyElasticData(policyData); - JSONObject jsonObj = new JSONObject(elasticData); - Index elkPut = new Index.Builder(jsonObj.toString()). - index(ELK_INDEX_POLICY). - type(indexType.name()). - id(elasticData.getPolicyName()). - refresh(true). - build(); - - JestResult result = jestClient.execute(elkPut); - - if (result.isSucceeded()) { - if (LOGGER.isInfoEnabled()) - LOGGER.info("ElkConnector: OK: PUT operation of " + "->" + ": " + - "success=" + result.isSucceeded() + "[" + result.getResponseCode() + ":" + - result.getPathToResult() + "]" + System.lineSeparator() + - result.getJsonString()); - } else { - if (LOGGER.isWarnEnabled()) - LOGGER.warn("ElkConnector: FAILURE: PUT operation of "+ "->" + ": " + - "success=" + result.isSucceeded() + "[" + result.getResponseCode() + ":" + - result.getPathToResult() + "]" + System.lineSeparator() + - result.getJsonString()); - - } - - return result.isSucceeded(); - } - - @Override - public boolean delete(PolicyRestAdapter policyData) throws IllegalStateException { - PolicyIndexType indexType = null; - JestResult result; - try { - String policyName = policyData.getNewFileName(); - if(policyName.contains("Config_")){ - policyName = policyName.replace(".Config_", ":Config_"); - }else if(policyName.contains("Action_")){ - policyName = policyName.replace(".Action_", ":Action_"); - }else if(policyName.contains("Decision_")){ - policyName = policyName.replace(".Decision_", ":Decision_"); - } - - String[] splitPolicyName = policyName.split(":"); - indexType = ElkConnector.toPolicyIndexType(splitPolicyName[1]); - if (!isType(indexType)) { - throw new IllegalStateException("ELK: Index: " + ELK_INDEX_POLICY + - " Type: " + indexType + - " is not configured"); - } - PolicyElasticData elasticData = new PolicyElasticData(policyData); - Delete deleteRequest = new Delete.Builder(elasticData.getPolicyName()).index(ELK_INDEX_POLICY). - type(indexType.name()).build(); - result = jestClient.execute(deleteRequest); - } catch (IllegalArgumentException | IOException e) { - LOGGER.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR + ": delete:" + - indexType + ": null" + ":" + policyData.getNewFileName() + ": " + - e.getMessage(), e); - throw new IllegalStateException(e); - } - - if (result.isSucceeded()) { - if (LOGGER.isInfoEnabled()) - LOGGER.info("OK: DELETE operation of " + indexType + ":" + policyData.getNewFileName() + ": " + - "success=" + result.isSucceeded() + "[" + result.getResponseCode() + ":" + - result.getPathToResult() + "]" + System.lineSeparator() + - result.getJsonString()); - } else { - if (LOGGER.isWarnEnabled()) - LOGGER.warn("FAILURE: DELETE operation of " + indexType + ":" + policyData.getNewFileName() + ": " + - "success=" + result.isSucceeded() + "[" + result.getResponseCode() + ":" + - result.getPathToResult() + "]" + System.lineSeparator() + - result.getJsonString()); - } - - return result.isSucceeded(); - } - - @Override - public boolean update(PolicyRestAdapter policyData) throws IllegalStateException { - if (LOGGER.isDebugEnabled()){ - LOGGER.debug("ENTER"); - } - try { - boolean success = put(policyData); - return success; - } catch (Exception e) { - LOGGER.warn(XACMLErrorConstants.ERROR_UNKNOWN + ":" + "cannot test and update", e); - throw new IllegalStateException(e); - } - } + private static final Logger LOGGER = FlexLogger.getLogger(ElkConnector.class); + + protected final JestClientFactory jestFactory = new JestClientFactory(); + protected final JestClient jestClient; + protected static int QUERY_MAXRECORDS = 1000; + + public ElkConnectorImpl() { + if (LOGGER.isDebugEnabled()){ + LOGGER.debug("ENTER: -"); + } + HttpClientConfig jestClientConfig = new HttpClientConfig.Builder(ELK_URL).multiThreaded(true).build(); + jestFactory.setHttpClientConfig(jestClientConfig); + jestClient = jestFactory.getObject(); + } + + protected boolean isType(PolicyIndexType type) throws IOException { + if (LOGGER.isDebugEnabled()){ + LOGGER.debug("ENTER: -"); + } + + try { + Action<JestResult> typeQuery = new TypeExist.Builder(ELK_INDEX_POLICY).addType(type.toString()).build(); + JestResult result = jestClient.execute(typeQuery); + + if (LOGGER.isInfoEnabled()) { + LOGGER.info("JSON:" + result.getJsonString()); + LOGGER.info("ERROR:" + result.getErrorMessage()); + LOGGER.info("PATH:" + result.getPathToResult()); + LOGGER.info(result.getJsonObject()); + } + return result.isSucceeded(); + } catch (IOException e) { + LOGGER.warn("Error checking type existance of " + type.toString() + ": " + e.getMessage(), e); + throw e; + } + } + + protected boolean isIndex() throws IOException { + try { + Action<JestResult> indexQuery = new IndicesExists.Builder(ELK_INDEX_POLICY).build(); + + JestResult result = jestClient.execute(indexQuery); + if (LOGGER.isInfoEnabled()) { + LOGGER.info("JSON:" + result.getJsonString()); + LOGGER.info("ERROR:" + result.getErrorMessage()); + LOGGER.info("PATH:" + result.getPathToResult()); + LOGGER.info(result.getJsonObject()); + } + return result.isSucceeded(); + } catch (IOException e) { + LOGGER.warn("Error checking index existance of " + ELK_INDEX_POLICY + ": " + e.getMessage(), e); + throw e; + } + } + private boolean isAlphaNumeric(String query){ + return query.matches("[a-zA-Z_0-9]+"); + } + + @Override + public JestResult search(PolicyIndexType type, String text) throws IllegalStateException, IllegalArgumentException { + if (LOGGER.isTraceEnabled()){ + LOGGER.trace("ENTER: " + text); + } + + if (text == null || text.isEmpty()) { + throw new IllegalArgumentException("No search string provided"); + } + + if(!isAlphaNumeric(text)){ + throw new IllegalArgumentException("Search must be alpha numeric"); + } + + QueryStringQueryBuilder mQ = QueryBuilders.queryStringQuery("*"+text+"*"); + SearchSourceBuilder searchSourceBuilder = + new SearchSourceBuilder().query(mQ); + + Builder searchBuilder = new Search.Builder(searchSourceBuilder.toString()). + addIndex(ELK_INDEX_POLICY). + setParameter(Parameters.SIZE, ElkConnectorImpl.QUERY_MAXRECORDS); + + if (type == null || type == PolicyIndexType.all) { + for (PolicyIndexType pT: PolicyIndexType.values()) { + if (pT != PolicyIndexType.all) { + searchBuilder.addType(pT.toString()); + } + } + } else { + searchBuilder.addType(type.toString()); + } + + Search search = searchBuilder.build(); + JestResult result; + try { + result = jestClient.execute(search); + } catch (IOException ioe) { + LOGGER.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR + ":" + + search + ": " + ioe.getMessage(), ioe); + throw new IllegalStateException(ioe); + } + + if (result.isSucceeded()) { + if (LOGGER.isInfoEnabled()){ + LOGGER.info("OK:" + result.getResponseCode() + ":" + search + ": " + + result.getPathToResult() + ":" + System.lineSeparator() + + result.getJsonString()); + } + } else { + /* Unsuccessful search */ + if (LOGGER.isWarnEnabled()){ + LOGGER.warn(XACMLErrorConstants.ERROR_PROCESS_FLOW + ":" + + result.getResponseCode() + ": " + + search.getURI() + ":" + + result.getPathToResult() + ":" + + result.getJsonString() + ":" + + result.getErrorMessage()); + } + + String errorMessage = result.getErrorMessage(); + if (errorMessage != null && !errorMessage.isEmpty()) { + String xMessage; + if (errorMessage.contains("TokenMgrError")) { + int indexError = errorMessage.lastIndexOf("TokenMgrError"); + xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); + } else if (errorMessage.contains("QueryParsingException")) { + int indexError = errorMessage.lastIndexOf("QueryParsingException"); + xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); + } else if (errorMessage.contains("JsonParseException")) { + int indexError = errorMessage.lastIndexOf("JsonParseException"); + xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); + } else if (errorMessage.contains("Parse Failure")) { + int indexError = errorMessage.lastIndexOf("Parse Failure"); + xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); + } else if (errorMessage.contains("SearchParseException")) { + int indexError = errorMessage.lastIndexOf("SearchParseException"); + xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); + } else { + xMessage = result.getErrorMessage(); + } + throw new IllegalStateException(xMessage); + } + } + + return result; + } + + + @Override + public JestResult search(PolicyIndexType type, String text, + Map<String, String> filter_s) + throws IllegalStateException, IllegalArgumentException { + if (LOGGER.isTraceEnabled()){ + LOGGER.trace("ENTER: " + text); + } + + if (filter_s == null || filter_s.size() == 0) { + return search(type, text); + } + + if(!isAlphaNumeric(text)){ + throw new IllegalArgumentException("Search must be alpha numeric"); + } + + String matches_s = ""; + matches_s = "{\n" + + " \"size\" : "+ ElkConnectorImpl.QUERY_MAXRECORDS + ",\n" + + " \"query\": {\n" + + " \"bool\" : {\n" + + " \"must\" : ["; + + String match_params = ""; + boolean first = true; + for(Entry<String, String> entry : filter_s.entrySet()){ + String key = entry.getKey(); + String value = entry.getValue(); + if(first){ + match_params = "\"match\" : {\""+key+"\" : \""+value+"\" }},"; + first = false; + }else{ + match_params = match_params + "{\"match\" : { \""+key+"\" : \""+value+"\" } },"; + } + } + if(match_params.endsWith(",")){ + match_params = match_params.substring(0, match_params.length()-2); + } + + matches_s = matches_s + "{\n" + match_params + "\n}" ; + + boolean query = false; + String query_String = ""; + if(text != null){ + query = true; + query_String = "{\n \"query_string\" : {\n \"query\" : \"*"+text+"*\"\n} \n}"; + } + + if(query){ + matches_s = matches_s + "," + query_String + "]\n}\n}\n}"; + }else{ + matches_s = matches_s + "]\n}\n}\n}"; + } + + Builder searchBuilder = new Search.Builder(matches_s).addIndex(ELK_INDEX_POLICY); + + if (type == null || type == PolicyIndexType.all) { + for (PolicyIndexType pT: PolicyIndexType.values()) { + if (pT != PolicyIndexType.all) { + searchBuilder.addType(pT.toString()); + } + } + } else { + searchBuilder.addType(type.toString()); + } + + Search search = searchBuilder.build(); + + JestResult result; + try { + result = jestClient.execute(search); + } catch (IOException ioe) { + LOGGER.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR + ":" + + search + ": " + ioe.getMessage(), ioe); + throw new IllegalStateException(ioe); + } + + if (result.isSucceeded()) { + if (LOGGER.isInfoEnabled()){ + LOGGER.info("OK:" + result.getResponseCode() + ":" + search + ": " + + result.getPathToResult() + ":" + System.lineSeparator() + + result.getJsonString()); + } + } else { + /* Unsuccessful search */ + if (LOGGER.isWarnEnabled()){ + LOGGER.warn(XACMLErrorConstants.ERROR_PROCESS_FLOW + ":" + + result.getResponseCode() + ": " + + search.getURI() + ":" + + result.getPathToResult() + ":" + + result.getJsonString() + ":" + + result.getErrorMessage()); + } + + String errorMessage = result.getErrorMessage(); + if (errorMessage != null && !errorMessage.isEmpty()) { + String xMessage = errorMessage; + if (errorMessage.contains("TokenMgrError")) { + int indexError = errorMessage.lastIndexOf("TokenMgrError"); + xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); + } else if (errorMessage.contains("QueryParsingException")) { + int indexError = errorMessage.lastIndexOf("QueryParsingException"); + xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); + } else if (errorMessage.contains("JsonParseException")) { + int indexError = errorMessage.lastIndexOf("JsonParseException"); + xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); + } else if (errorMessage.contains("Parse Failure")) { + int indexError = errorMessage.lastIndexOf("Parse Failure"); + xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); + } else if (errorMessage.contains("SearchParseException")) { + int indexError = errorMessage.lastIndexOf("SearchParseException"); + xMessage = "Invalid Search Expression. Details: " + errorMessage.substring(indexError); + } else { + xMessage = result.getErrorMessage(); + } + throw new IllegalStateException(xMessage); + } + } + + return result; + } + + public boolean put(PolicyRestAdapter policyData) + throws IOException, IllegalStateException { + if (LOGGER.isTraceEnabled()) LOGGER.trace("ENTER"); + + PolicyIndexType indexType; + try { + String policyName = policyData.getNewFileName(); + if(policyName.contains("Config_")){ + policyName = policyName.replace(".Config_", ":Config_"); + }else if(policyName.contains("Action_")){ + policyName = policyName.replace(".Action_", ":Action_"); + }else if(policyName.contains("Decision_")){ + policyName = policyName.replace(".Decision_", ":Decision_"); + } + + String[] splitPolicyName = policyName.split(":"); + indexType = ElkConnector.toPolicyIndexType(splitPolicyName[1]); + } catch (IllegalArgumentException e) { + LOGGER.error(e); + throw new IllegalStateException("ELK: Index: " + ELK_INDEX_POLICY + e.getMessage()); + } + PolicyElasticData elasticData = new PolicyElasticData(policyData); + JSONObject jsonObj = new JSONObject(elasticData); + Index elkPut = new Index.Builder(jsonObj.toString()). + index(ELK_INDEX_POLICY). + type(indexType.name()). + id(elasticData.getPolicyName()). + refresh(true). + build(); + + JestResult result = jestClient.execute(elkPut); + + if (result.isSucceeded()) { + if (LOGGER.isInfoEnabled()) + LOGGER.info("ElkConnector: OK: PUT operation of " + "->" + ": " + + "success=" + result.isSucceeded() + "[" + result.getResponseCode() + ":" + + result.getPathToResult() + "]" + System.lineSeparator() + + result.getJsonString()); + } else { + if (LOGGER.isWarnEnabled()) + LOGGER.warn("ElkConnector: FAILURE: PUT operation of "+ "->" + ": " + + "success=" + result.isSucceeded() + "[" + result.getResponseCode() + ":" + + result.getPathToResult() + "]" + System.lineSeparator() + + result.getJsonString()); + + } + + return result.isSucceeded(); + } + + @Override + public boolean delete(PolicyRestAdapter policyData) throws IllegalStateException { + PolicyIndexType indexType = null; + JestResult result; + try { + String policyName = policyData.getNewFileName(); + if(policyName.contains("Config_")){ + policyName = policyName.replace(".Config_", ":Config_"); + }else if(policyName.contains("Action_")){ + policyName = policyName.replace(".Action_", ":Action_"); + }else if(policyName.contains("Decision_")){ + policyName = policyName.replace(".Decision_", ":Decision_"); + } + + String[] splitPolicyName = policyName.split(":"); + indexType = ElkConnector.toPolicyIndexType(splitPolicyName[1]); + if (!isType(indexType)) { + throw new IllegalStateException("ELK: Index: " + ELK_INDEX_POLICY + + " Type: " + indexType + + " is not configured"); + } + PolicyElasticData elasticData = new PolicyElasticData(policyData); + Delete deleteRequest = new Delete.Builder(elasticData.getPolicyName()).index(ELK_INDEX_POLICY). + type(indexType.name()).build(); + result = jestClient.execute(deleteRequest); + } catch (IllegalArgumentException | IOException e) { + LOGGER.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR + ": delete:" + + indexType + ": null" + ":" + policyData.getNewFileName() + ": " + + e.getMessage(), e); + throw new IllegalStateException(e); + } + + if (result.isSucceeded()) { + if (LOGGER.isInfoEnabled()) + LOGGER.info("OK: DELETE operation of " + indexType + ":" + policyData.getNewFileName() + ": " + + "success=" + result.isSucceeded() + "[" + result.getResponseCode() + ":" + + result.getPathToResult() + "]" + System.lineSeparator() + + result.getJsonString()); + } else { + if (LOGGER.isWarnEnabled()) + LOGGER.warn("FAILURE: DELETE operation of " + indexType + ":" + policyData.getNewFileName() + ": " + + "success=" + result.isSucceeded() + "[" + result.getResponseCode() + ":" + + result.getPathToResult() + "]" + System.lineSeparator() + + result.getJsonString()); + } + + return result.isSucceeded(); + } + + @Override + public boolean update(PolicyRestAdapter policyData) throws IllegalStateException { + if (LOGGER.isDebugEnabled()){ + LOGGER.debug("ENTER"); + } + try { + boolean success = put(policyData); + return success; + } catch (Exception e) { + LOGGER.warn(XACMLErrorConstants.ERROR_UNKNOWN + ":" + "cannot test and update", e); + throw new IllegalStateException(e); + } + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/PolicyElasticData.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/PolicyElasticData.java index e56e82cbf..988640ca6 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/PolicyElasticData.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/PolicyElasticData.java @@ -28,596 +28,596 @@ import org.onap.policy.rest.adapter.PolicyRestAdapter; import org.onap.policy.rest.adapter.YAMLParams; public class PolicyElasticData { - - private String scope; - private String policyType; - private String configPolicyType; - private String configBodyData; - private String policyName; - private String policyDescription; - private String onapName; - private String configName; - private String configType; - private String jsonBody; - private Object jsonBodyData; - - private Map<?, ?> serviceTypePolicyName; - private Map<?, ?> verticaMetrics; + + private String scope; + private String policyType; + private String configPolicyType; + private String configBodyData; + private String policyName; + private String policyDescription; + private String onapName; + private String configName; + private String configType; + private String jsonBody; + private Object jsonBodyData; + + private Map<?, ?> serviceTypePolicyName; + private Map<?, ?> verticaMetrics; private Map<?, ?> description; private Map<?, ?> attributeFields; - //Safe Policy - private String policyScope; - private String providerComboBox; - private String riskType; - private String riskLevel; - private String guard; - private String ttlDate; - private Map<String,String> matching; - - private List<Object> triggerSignatures; - private List<Object> symptomSignatures; - private String logicalConnector; - private String policyStatus; - public String gocServerScope; - private String supressionType; - - //MicroSerice - private String serviceType; - private String uuid; - private String location; - private String priority; - private String msLocation; - - //BRMS Policies - private String ruleName; - private Map<String,String> brmsParamBody; - private String brmsController; - private List<String> brmsDependency; - private LinkedHashMap<?, ?> ruleData; - private LinkedHashMap<?,?> ruleListData; - private Map<String,String> drlRuleAndUIParams; - - //ClosedLoop - private String clearTimeOut; - private String trapMaxAge; - private String verificationclearTimeOut; - public Map<String , String> dynamicLayoutMap; - - //FireWall - private String fwPolicyType; - private List<Object> fwattributes; - private String parentForChild; - private String securityZone; - - //Action & Decision - private String ruleCombiningAlgId; - private Map<String,String> dynamicFieldConfigAttributes; - private Map<String,String> dynamicSettingsMap; - private Map<String,String> dropDownMap; - private String actionPerformer; - private String actionAttribute; - private List<String> dynamicRuleAlgorithmLabels; - private List<String> dynamicRuleAlgorithmCombo; - private List<String> dynamicRuleAlgorithmField1; - private List<String> dynamicRuleAlgorithmField2; - private List<Object> dynamicVariableList; - private List<String> dataTypeList; - private String actionAttributeValue; - private String ruleProvider; - private String actionBody; - private String actionDictHeader; - private String actionDictType; - private String actionDictUrl; - private String actionDictMethod; - private YAMLParams yamlparams; - - public PolicyElasticData(PolicyRestAdapter policyData) { - this.scope = policyData.getDomainDir(); - this.policyType = policyData.getPolicyType(); - this.configPolicyType = policyData.getConfigPolicyType(); - this.configBodyData = policyData.getConfigBodyData(); - this.policyName = policyData.getNewFileName(); - this.policyDescription = policyData.getPolicyDescription(); - this.onapName = policyData.getOnapName(); - this.configName = policyData.getConfigName(); - this.configType = policyData.getConfigType(); - this.jsonBody = policyData.getJsonBody(); - if(configPolicyType.startsWith("ClosedLoop")){ - this.jsonBodyData = jsonBody; - }else{ - this.jsonBodyData = policyData.getJsonBodyData(); - } - - this.serviceTypePolicyName = policyData.getServiceTypePolicyName(); - this.verticaMetrics = policyData.getVerticaMetrics(); - this.description = policyData.getDescription(); - this.attributeFields = policyData.getAttributeFields(); - - //Safe Policy - this.policyScope = policyData.getPolicyScope(); - this.providerComboBox = policyData.getProviderComboBox(); - this.riskType = policyData.getRiskType(); - this.riskLevel = policyData.getRiskLevel(); - this.guard = policyData.getGuard(); - this.ttlDate = policyData.getTtlDate(); - this.matching = policyData.getMatching(); - - this.triggerSignatures = policyData.getTriggerSignatures(); - this.symptomSignatures = policyData.getSymptomSignatures(); - this.logicalConnector = policyData.getLogicalConnector(); - this.policyStatus = policyData.getPolicyStatus(); - this.gocServerScope = policyData.getGocServerScope(); - this.supressionType = policyData.getSupressionType(); - - //MicroSerice - this.serviceType = policyData.getServiceType(); - this.uuid = policyData.getUuid(); - this.location = policyData.getLocation(); - this.priority = policyData.getPriority(); - this.msLocation = policyData.getMsLocation(); - - //BRMS Policies - this.ruleName = policyData.getRuleName(); - this.brmsParamBody = policyData.getBrmsParamBody(); - this.brmsController = policyData.getBrmsController(); - this.brmsDependency = policyData.getBrmsDependency(); - this.ruleData = policyData.getRuleData(); - this.ruleListData = policyData.getRuleListData(); - this.drlRuleAndUIParams = policyData.getDrlRuleAndUIParams(); - - //ClosedLoop - this.clearTimeOut = policyData.getClearTimeOut(); - this.trapMaxAge = policyData.getTrapMaxAge(); - this.verificationclearTimeOut = policyData.getVerificationclearTimeOut(); - this.dynamicLayoutMap = policyData.getDynamicLayoutMap(); - - //FireWall - this.fwPolicyType = policyData.getFwPolicyType(); - this.fwattributes = policyData.getFwattributes(); - this.parentForChild = policyData.getParentForChild(); - this.securityZone = policyData.getSecurityZone(); - - //Action & Decision - this.ruleCombiningAlgId = policyData.getRuleCombiningAlgId(); - this.dynamicFieldConfigAttributes = policyData.getDynamicFieldConfigAttributes(); - this.dynamicSettingsMap = policyData.getDynamicSettingsMap(); - this.dropDownMap = policyData.getDropDownMap(); - this.actionPerformer = policyData.getActionPerformer(); - this.actionAttribute = policyData.getActionAttribute(); - this.dynamicRuleAlgorithmLabels = policyData.getDynamicRuleAlgorithmLabels(); - this.dynamicRuleAlgorithmCombo = policyData.getDynamicRuleAlgorithmCombo(); - this.dynamicRuleAlgorithmField1 = policyData.getDynamicRuleAlgorithmField1(); - this.dynamicRuleAlgorithmField2 = policyData.getDynamicRuleAlgorithmField2(); - this.dynamicVariableList = policyData.getDynamicVariableList(); - this.dataTypeList = policyData.getDataTypeList(); - this.actionAttributeValue = policyData.getActionAttributeValue(); - this.ruleProvider = policyData.getRuleProvider(); - this.actionBody = policyData.getActionBody(); - this.actionDictHeader = policyData.getActionDictHeader(); - this.actionDictType = policyData.getActionDictType(); - this.actionDictUrl = policyData.getActionDictUrl(); - this.actionDictMethod = policyData.getActionDictMethod(); - this.yamlparams = policyData.getYamlparams(); - } - - public String getScope() { - return scope; - } - public void setScope(String scope) { - this.scope = scope; - } - public String getPolicyType() { - return policyType; - } - public void setPolicyType(String policyType) { - this.policyType = policyType; - } - public String getConfigPolicyType() { - return configPolicyType; - } - public void setConfigPolicyType(String configPolicyType) { - this.configPolicyType = configPolicyType; - } - public String getConfigBodyData() { - return configBodyData; - } - - public void setConfigBodyData(String configBodyData) { - this.configBodyData = configBodyData; - } - public String getPolicyName() { - return policyName; - } - public void setPolicyName(String policyName) { - this.policyName = policyName; - } - public String getPolicyDescription() { - return policyDescription; - } - public void setPolicyDescription(String policyDescription) { - this.policyDescription = policyDescription; - } - public String getOnapName() { - return onapName; - } - public void setOnapName(String onapName) { - this.onapName = onapName; - } - public String getConfigName() { - return configName; - } - public void setConfigName(String configName) { - this.configName = configName; - } - public String getConfigType() { - return configType; - } - public void setConfigType(String configType) { - this.configType = configType; - } - public String getJsonBody() { - return jsonBody; - } - public void setJsonBody(String jsonBody) { - this.jsonBody = jsonBody; - } - public Map<?, ?> getServiceTypePolicyName() { - return serviceTypePolicyName; - } - - public void setServiceTypePolicyName(LinkedHashMap<?, ?> serviceTypePolicyName) { - this.serviceTypePolicyName = serviceTypePolicyName; - } - - public Map<?, ?> getVerticaMetrics() { - return verticaMetrics; - } - - public void setVerticaMetrics(LinkedHashMap<?, ?> verticaMetrics) { - this.verticaMetrics = verticaMetrics; - } - - public Map<?, ?> getDescription() { - return description; - } - - public void setDescription(Map<?, ?> description) { - this.description = description; - } - - public Map<?, ?> getAttributeFields() { - return attributeFields; - } - - public void setAttributeFields(LinkedHashMap<?, ?> attributeFields) { - this.attributeFields = attributeFields; - } - public String getPolicyScope() { - return policyScope; - } - public void setPolicyScope(String policyScope) { - this.policyScope = policyScope; - } - public String getProviderComboBox() { - return providerComboBox; - } - public void setProviderComboBox(String providerComboBox) { - this.providerComboBox = providerComboBox; - } - public String getRiskType() { - return riskType; - } - public void setRiskType(String riskType) { - this.riskType = riskType; - } - public String getRiskLevel() { - return riskLevel; - } - public void setRiskLevel(String riskLevel) { - this.riskLevel = riskLevel; - } - public String getGuard() { - return guard; - } - public void setGuard(String guard) { - this.guard = guard; - } - public String getTtlDate() { - return ttlDate; - } - public void setTtlDate(String ttlDate) { - this.ttlDate = ttlDate; - } - public Map<String, String> getMatching() { - return matching; - } - public void setMatching(Map<String, String> matching) { - this.matching = matching; - } - public List<Object> getTriggerSignatures() { - return triggerSignatures; - } - public void setTriggerSignatures(ArrayList<Object> triggerSignatures) { - this.triggerSignatures = triggerSignatures; - } - public List<Object> getSymptomSignatures() { - return symptomSignatures; - } - public void setSymptomSignatures(ArrayList<Object> symptomSignatures) { - this.symptomSignatures = symptomSignatures; - } - public String getLogicalConnector() { - return logicalConnector; - } - public void setLogicalConnector(String logicalConnector) { - this.logicalConnector = logicalConnector; - } - public String getPolicyStatus() { - return policyStatus; - } - public void setPolicyStatus(String policyStatus) { - this.policyStatus = policyStatus; - } - public String getGocServerScope() { - return gocServerScope; - } - public void setGocServerScope(String gocServerScope) { - this.gocServerScope = gocServerScope; - } - public String getSupressionType() { - return supressionType; - } - public void setSupressionType(String supressionType) { - this.supressionType = supressionType; - } - public String getServiceType() { - return serviceType; - } - public void setServiceType(String serviceType) { - this.serviceType = serviceType; - } - public String getUuid() { - return uuid; - } - public void setUuid(String uuid) { - this.uuid = uuid; - } - public String getLocation() { - return location; - } - public void setLocation(String location) { - this.location = location; - } - public String getPriority() { - return priority; - } - public void setPriority(String priority) { - this.priority = priority; - } - public String getMsLocation() { - return msLocation; - } - public void setMsLocation(String msLocation) { - this.msLocation = msLocation; - } - public String getRuleName() { - return ruleName; - } - public void setRuleName(String ruleName) { - this.ruleName = ruleName; - } - public Map<String, String> getBrmsParamBody() { - return brmsParamBody; - } - public void setBrmsParamBody(Map<String, String> brmsParamBody) { - this.brmsParamBody = brmsParamBody; - } - public String getBrmsController() { - return brmsController; - } - public void setBrmsController(String brmsController) { - this.brmsController = brmsController; - } - public List<String> getBrmsDependency() { - return brmsDependency; - } - public void setBrmsDependency(List<String> brmsDependency) { - this.brmsDependency = brmsDependency; - } - public Map<?, ?> getRuleData() { - return ruleData; - } - public void setRuleData(LinkedHashMap<?, ?> ruleData) { - this.ruleData = ruleData; - } - public Map<?, ?> getRuleListData() { - return ruleListData; - } - public void setRuleListData(LinkedHashMap<?, ?> ruleListData) { - this.ruleListData = ruleListData; - } - public Map<String, String> getDrlRuleAndUIParams() { - return drlRuleAndUIParams; - } - public void setDrlRuleAndUIParams(Map<String, String> drlRuleAndUIParams) { - this.drlRuleAndUIParams = drlRuleAndUIParams; - } - public String getClearTimeOut() { - return clearTimeOut; - } - public void setClearTimeOut(String clearTimeOut) { - this.clearTimeOut = clearTimeOut; - } - public String getTrapMaxAge() { - return trapMaxAge; - } - public void setTrapMaxAge(String trapMaxAge) { - this.trapMaxAge = trapMaxAge; - } - public String getVerificationclearTimeOut() { - return verificationclearTimeOut; - } - public void setVerificationclearTimeOut(String verificationclearTimeOut) { - this.verificationclearTimeOut = verificationclearTimeOut; - } - public Map<String, String> getDynamicLayoutMap() { - return dynamicLayoutMap; - } - public void setDynamicLayoutMap(Map<String, String> dynamicLayoutMap) { - this.dynamicLayoutMap = dynamicLayoutMap; - } - public String getFwPolicyType() { - return fwPolicyType; - } - public void setFwPolicyType(String fwPolicyType) { - this.fwPolicyType = fwPolicyType; - } - public List<Object> getFwattributes() { - return fwattributes; - } - public void setFwattributes(ArrayList<Object> fwattributes) { - this.fwattributes = fwattributes; - } - public String getParentForChild() { - return parentForChild; - } - public void setParentForChild(String parentForChild) { - this.parentForChild = parentForChild; - } - public String getSecurityZone() { - return securityZone; - } - public void setSecurityZone(String securityZone) { - this.securityZone = securityZone; - } - public String getRuleCombiningAlgId() { - return ruleCombiningAlgId; - } - public void setRuleCombiningAlgId(String ruleCombiningAlgId) { - this.ruleCombiningAlgId = ruleCombiningAlgId; - } - public Map<String, String> getDynamicFieldConfigAttributes() { - return dynamicFieldConfigAttributes; - } - public void setDynamicFieldConfigAttributes(Map<String, String> dynamicFieldConfigAttributes) { - this.dynamicFieldConfigAttributes = dynamicFieldConfigAttributes; - } - public Map<String, String> getDynamicSettingsMap() { - return dynamicSettingsMap; - } - public void setDynamicSettingsMap(Map<String, String> dynamicSettingsMap) { - this.dynamicSettingsMap = dynamicSettingsMap; - } - public Map<String, String> getDropDownMap() { - return dropDownMap; - } - public void setDropDownMap(Map<String, String> dropDownMap) { - this.dropDownMap = dropDownMap; - } - public String getActionPerformer() { - return actionPerformer; - } - public void setActionPerformer(String actionPerformer) { - this.actionPerformer = actionPerformer; - } - public String getActionAttribute() { - return actionAttribute; - } - public void setActionAttribute(String actionAttribute) { - this.actionAttribute = actionAttribute; - } - public List<String> getDynamicRuleAlgorithmLabels() { - return dynamicRuleAlgorithmLabels; - } - public void setDynamicRuleAlgorithmLabels(List<String> dynamicRuleAlgorithmLabels) { - this.dynamicRuleAlgorithmLabels = dynamicRuleAlgorithmLabels; - } - public List<String> getDynamicRuleAlgorithmCombo() { - return dynamicRuleAlgorithmCombo; - } - public void setDynamicRuleAlgorithmCombo(List<String> dynamicRuleAlgorithmCombo) { - this.dynamicRuleAlgorithmCombo = dynamicRuleAlgorithmCombo; - } - public List<String> getDynamicRuleAlgorithmField1() { - return dynamicRuleAlgorithmField1; - } - public void setDynamicRuleAlgorithmField1(List<String> dynamicRuleAlgorithmField1) { - this.dynamicRuleAlgorithmField1 = dynamicRuleAlgorithmField1; - } - public List<String> getDynamicRuleAlgorithmField2() { - return dynamicRuleAlgorithmField2; - } - public void setDynamicRuleAlgorithmField2(List<String> dynamicRuleAlgorithmField2) { - this.dynamicRuleAlgorithmField2 = dynamicRuleAlgorithmField2; - } - public List<Object> getDynamicVariableList() { - return dynamicVariableList; - } - public void setDynamicVariableList(List<Object> dynamicVariableList) { - this.dynamicVariableList = dynamicVariableList; - } - public List<String> getDataTypeList() { - return dataTypeList; - } - public void setDataTypeList(List<String> dataTypeList) { - this.dataTypeList = dataTypeList; - } - public String getActionAttributeValue() { - return actionAttributeValue; - } - public void setActionAttributeValue(String actionAttributeValue) { - this.actionAttributeValue = actionAttributeValue; - } - public String getRuleProvider() { - return ruleProvider; - } - public void setRuleProvider(String ruleProvider) { - this.ruleProvider = ruleProvider; - } - public String getActionBody() { - return actionBody; - } - public void setActionBody(String actionBody) { - this.actionBody = actionBody; - } - public String getActionDictHeader() { - return actionDictHeader; - } - public void setActionDictHeader(String actionDictHeader) { - this.actionDictHeader = actionDictHeader; - } - public String getActionDictType() { - return actionDictType; - } - public void setActionDictType(String actionDictType) { - this.actionDictType = actionDictType; - } - public String getActionDictUrl() { - return actionDictUrl; - } - public void setActionDictUrl(String actionDictUrl) { - this.actionDictUrl = actionDictUrl; - } - public String getActionDictMethod() { - return actionDictMethod; - } - public void setActionDictMethod(String actionDictMethod) { - this.actionDictMethod = actionDictMethod; - } - public YAMLParams getYamlparams() { - return yamlparams; - } - - public void setYamlparams(YAMLParams yamlparams) { - this.yamlparams = yamlparams; - } - - public Object getJsonBodyData() { - return jsonBodyData; - } - - public void setJsonBodyData(Object jsonBodyData) { - this.jsonBodyData = jsonBodyData; - } + //Safe Policy + private String policyScope; + private String providerComboBox; + private String riskType; + private String riskLevel; + private String guard; + private String ttlDate; + private Map<String,String> matching; + + private List<Object> triggerSignatures; + private List<Object> symptomSignatures; + private String logicalConnector; + private String policyStatus; + public String gocServerScope; + private String supressionType; + + //MicroSerice + private String serviceType; + private String uuid; + private String location; + private String priority; + private String msLocation; + + //BRMS Policies + private String ruleName; + private Map<String,String> brmsParamBody; + private String brmsController; + private List<String> brmsDependency; + private LinkedHashMap<?, ?> ruleData; + private LinkedHashMap<?,?> ruleListData; + private Map<String,String> drlRuleAndUIParams; + + //ClosedLoop + private String clearTimeOut; + private String trapMaxAge; + private String verificationclearTimeOut; + public Map<String , String> dynamicLayoutMap; + + //FireWall + private String fwPolicyType; + private List<Object> fwattributes; + private String parentForChild; + private String securityZone; + + //Action & Decision + private String ruleCombiningAlgId; + private Map<String,String> dynamicFieldConfigAttributes; + private Map<String,String> dynamicSettingsMap; + private Map<String,String> dropDownMap; + private String actionPerformer; + private String actionAttribute; + private List<String> dynamicRuleAlgorithmLabels; + private List<String> dynamicRuleAlgorithmCombo; + private List<String> dynamicRuleAlgorithmField1; + private List<String> dynamicRuleAlgorithmField2; + private List<Object> dynamicVariableList; + private List<String> dataTypeList; + private String actionAttributeValue; + private String ruleProvider; + private String actionBody; + private String actionDictHeader; + private String actionDictType; + private String actionDictUrl; + private String actionDictMethod; + private YAMLParams yamlparams; + + public PolicyElasticData(PolicyRestAdapter policyData) { + this.scope = policyData.getDomainDir(); + this.policyType = policyData.getPolicyType(); + this.configPolicyType = policyData.getConfigPolicyType(); + this.configBodyData = policyData.getConfigBodyData(); + this.policyName = policyData.getNewFileName(); + this.policyDescription = policyData.getPolicyDescription(); + this.onapName = policyData.getOnapName(); + this.configName = policyData.getConfigName(); + this.configType = policyData.getConfigType(); + this.jsonBody = policyData.getJsonBody(); + if(configPolicyType.startsWith("ClosedLoop")){ + this.jsonBodyData = jsonBody; + }else{ + this.jsonBodyData = policyData.getJsonBodyData(); + } + + this.serviceTypePolicyName = policyData.getServiceTypePolicyName(); + this.verticaMetrics = policyData.getVerticaMetrics(); + this.description = policyData.getDescription(); + this.attributeFields = policyData.getAttributeFields(); + + //Safe Policy + this.policyScope = policyData.getPolicyScope(); + this.providerComboBox = policyData.getProviderComboBox(); + this.riskType = policyData.getRiskType(); + this.riskLevel = policyData.getRiskLevel(); + this.guard = policyData.getGuard(); + this.ttlDate = policyData.getTtlDate(); + this.matching = policyData.getMatching(); + + this.triggerSignatures = policyData.getTriggerSignatures(); + this.symptomSignatures = policyData.getSymptomSignatures(); + this.logicalConnector = policyData.getLogicalConnector(); + this.policyStatus = policyData.getPolicyStatus(); + this.gocServerScope = policyData.getGocServerScope(); + this.supressionType = policyData.getSupressionType(); + + //MicroSerice + this.serviceType = policyData.getServiceType(); + this.uuid = policyData.getUuid(); + this.location = policyData.getLocation(); + this.priority = policyData.getPriority(); + this.msLocation = policyData.getMsLocation(); + + //BRMS Policies + this.ruleName = policyData.getRuleName(); + this.brmsParamBody = policyData.getBrmsParamBody(); + this.brmsController = policyData.getBrmsController(); + this.brmsDependency = policyData.getBrmsDependency(); + this.ruleData = policyData.getRuleData(); + this.ruleListData = policyData.getRuleListData(); + this.drlRuleAndUIParams = policyData.getDrlRuleAndUIParams(); + + //ClosedLoop + this.clearTimeOut = policyData.getClearTimeOut(); + this.trapMaxAge = policyData.getTrapMaxAge(); + this.verificationclearTimeOut = policyData.getVerificationclearTimeOut(); + this.dynamicLayoutMap = policyData.getDynamicLayoutMap(); + + //FireWall + this.fwPolicyType = policyData.getFwPolicyType(); + this.fwattributes = policyData.getFwattributes(); + this.parentForChild = policyData.getParentForChild(); + this.securityZone = policyData.getSecurityZone(); + + //Action & Decision + this.ruleCombiningAlgId = policyData.getRuleCombiningAlgId(); + this.dynamicFieldConfigAttributes = policyData.getDynamicFieldConfigAttributes(); + this.dynamicSettingsMap = policyData.getDynamicSettingsMap(); + this.dropDownMap = policyData.getDropDownMap(); + this.actionPerformer = policyData.getActionPerformer(); + this.actionAttribute = policyData.getActionAttribute(); + this.dynamicRuleAlgorithmLabels = policyData.getDynamicRuleAlgorithmLabels(); + this.dynamicRuleAlgorithmCombo = policyData.getDynamicRuleAlgorithmCombo(); + this.dynamicRuleAlgorithmField1 = policyData.getDynamicRuleAlgorithmField1(); + this.dynamicRuleAlgorithmField2 = policyData.getDynamicRuleAlgorithmField2(); + this.dynamicVariableList = policyData.getDynamicVariableList(); + this.dataTypeList = policyData.getDataTypeList(); + this.actionAttributeValue = policyData.getActionAttributeValue(); + this.ruleProvider = policyData.getRuleProvider(); + this.actionBody = policyData.getActionBody(); + this.actionDictHeader = policyData.getActionDictHeader(); + this.actionDictType = policyData.getActionDictType(); + this.actionDictUrl = policyData.getActionDictUrl(); + this.actionDictMethod = policyData.getActionDictMethod(); + this.yamlparams = policyData.getYamlparams(); + } + + public String getScope() { + return scope; + } + public void setScope(String scope) { + this.scope = scope; + } + public String getPolicyType() { + return policyType; + } + public void setPolicyType(String policyType) { + this.policyType = policyType; + } + public String getConfigPolicyType() { + return configPolicyType; + } + public void setConfigPolicyType(String configPolicyType) { + this.configPolicyType = configPolicyType; + } + public String getConfigBodyData() { + return configBodyData; + } + + public void setConfigBodyData(String configBodyData) { + this.configBodyData = configBodyData; + } + public String getPolicyName() { + return policyName; + } + public void setPolicyName(String policyName) { + this.policyName = policyName; + } + public String getPolicyDescription() { + return policyDescription; + } + public void setPolicyDescription(String policyDescription) { + this.policyDescription = policyDescription; + } + public String getOnapName() { + return onapName; + } + public void setOnapName(String onapName) { + this.onapName = onapName; + } + public String getConfigName() { + return configName; + } + public void setConfigName(String configName) { + this.configName = configName; + } + public String getConfigType() { + return configType; + } + public void setConfigType(String configType) { + this.configType = configType; + } + public String getJsonBody() { + return jsonBody; + } + public void setJsonBody(String jsonBody) { + this.jsonBody = jsonBody; + } + public Map<?, ?> getServiceTypePolicyName() { + return serviceTypePolicyName; + } + + public void setServiceTypePolicyName(LinkedHashMap<?, ?> serviceTypePolicyName) { + this.serviceTypePolicyName = serviceTypePolicyName; + } + + public Map<?, ?> getVerticaMetrics() { + return verticaMetrics; + } + + public void setVerticaMetrics(LinkedHashMap<?, ?> verticaMetrics) { + this.verticaMetrics = verticaMetrics; + } + + public Map<?, ?> getDescription() { + return description; + } + + public void setDescription(Map<?, ?> description) { + this.description = description; + } + + public Map<?, ?> getAttributeFields() { + return attributeFields; + } + + public void setAttributeFields(LinkedHashMap<?, ?> attributeFields) { + this.attributeFields = attributeFields; + } + public String getPolicyScope() { + return policyScope; + } + public void setPolicyScope(String policyScope) { + this.policyScope = policyScope; + } + public String getProviderComboBox() { + return providerComboBox; + } + public void setProviderComboBox(String providerComboBox) { + this.providerComboBox = providerComboBox; + } + public String getRiskType() { + return riskType; + } + public void setRiskType(String riskType) { + this.riskType = riskType; + } + public String getRiskLevel() { + return riskLevel; + } + public void setRiskLevel(String riskLevel) { + this.riskLevel = riskLevel; + } + public String getGuard() { + return guard; + } + public void setGuard(String guard) { + this.guard = guard; + } + public String getTtlDate() { + return ttlDate; + } + public void setTtlDate(String ttlDate) { + this.ttlDate = ttlDate; + } + public Map<String, String> getMatching() { + return matching; + } + public void setMatching(Map<String, String> matching) { + this.matching = matching; + } + public List<Object> getTriggerSignatures() { + return triggerSignatures; + } + public void setTriggerSignatures(ArrayList<Object> triggerSignatures) { + this.triggerSignatures = triggerSignatures; + } + public List<Object> getSymptomSignatures() { + return symptomSignatures; + } + public void setSymptomSignatures(ArrayList<Object> symptomSignatures) { + this.symptomSignatures = symptomSignatures; + } + public String getLogicalConnector() { + return logicalConnector; + } + public void setLogicalConnector(String logicalConnector) { + this.logicalConnector = logicalConnector; + } + public String getPolicyStatus() { + return policyStatus; + } + public void setPolicyStatus(String policyStatus) { + this.policyStatus = policyStatus; + } + public String getGocServerScope() { + return gocServerScope; + } + public void setGocServerScope(String gocServerScope) { + this.gocServerScope = gocServerScope; + } + public String getSupressionType() { + return supressionType; + } + public void setSupressionType(String supressionType) { + this.supressionType = supressionType; + } + public String getServiceType() { + return serviceType; + } + public void setServiceType(String serviceType) { + this.serviceType = serviceType; + } + public String getUuid() { + return uuid; + } + public void setUuid(String uuid) { + this.uuid = uuid; + } + public String getLocation() { + return location; + } + public void setLocation(String location) { + this.location = location; + } + public String getPriority() { + return priority; + } + public void setPriority(String priority) { + this.priority = priority; + } + public String getMsLocation() { + return msLocation; + } + public void setMsLocation(String msLocation) { + this.msLocation = msLocation; + } + public String getRuleName() { + return ruleName; + } + public void setRuleName(String ruleName) { + this.ruleName = ruleName; + } + public Map<String, String> getBrmsParamBody() { + return brmsParamBody; + } + public void setBrmsParamBody(Map<String, String> brmsParamBody) { + this.brmsParamBody = brmsParamBody; + } + public String getBrmsController() { + return brmsController; + } + public void setBrmsController(String brmsController) { + this.brmsController = brmsController; + } + public List<String> getBrmsDependency() { + return brmsDependency; + } + public void setBrmsDependency(List<String> brmsDependency) { + this.brmsDependency = brmsDependency; + } + public Map<?, ?> getRuleData() { + return ruleData; + } + public void setRuleData(LinkedHashMap<?, ?> ruleData) { + this.ruleData = ruleData; + } + public Map<?, ?> getRuleListData() { + return ruleListData; + } + public void setRuleListData(LinkedHashMap<?, ?> ruleListData) { + this.ruleListData = ruleListData; + } + public Map<String, String> getDrlRuleAndUIParams() { + return drlRuleAndUIParams; + } + public void setDrlRuleAndUIParams(Map<String, String> drlRuleAndUIParams) { + this.drlRuleAndUIParams = drlRuleAndUIParams; + } + public String getClearTimeOut() { + return clearTimeOut; + } + public void setClearTimeOut(String clearTimeOut) { + this.clearTimeOut = clearTimeOut; + } + public String getTrapMaxAge() { + return trapMaxAge; + } + public void setTrapMaxAge(String trapMaxAge) { + this.trapMaxAge = trapMaxAge; + } + public String getVerificationclearTimeOut() { + return verificationclearTimeOut; + } + public void setVerificationclearTimeOut(String verificationclearTimeOut) { + this.verificationclearTimeOut = verificationclearTimeOut; + } + public Map<String, String> getDynamicLayoutMap() { + return dynamicLayoutMap; + } + public void setDynamicLayoutMap(Map<String, String> dynamicLayoutMap) { + this.dynamicLayoutMap = dynamicLayoutMap; + } + public String getFwPolicyType() { + return fwPolicyType; + } + public void setFwPolicyType(String fwPolicyType) { + this.fwPolicyType = fwPolicyType; + } + public List<Object> getFwattributes() { + return fwattributes; + } + public void setFwattributes(ArrayList<Object> fwattributes) { + this.fwattributes = fwattributes; + } + public String getParentForChild() { + return parentForChild; + } + public void setParentForChild(String parentForChild) { + this.parentForChild = parentForChild; + } + public String getSecurityZone() { + return securityZone; + } + public void setSecurityZone(String securityZone) { + this.securityZone = securityZone; + } + public String getRuleCombiningAlgId() { + return ruleCombiningAlgId; + } + public void setRuleCombiningAlgId(String ruleCombiningAlgId) { + this.ruleCombiningAlgId = ruleCombiningAlgId; + } + public Map<String, String> getDynamicFieldConfigAttributes() { + return dynamicFieldConfigAttributes; + } + public void setDynamicFieldConfigAttributes(Map<String, String> dynamicFieldConfigAttributes) { + this.dynamicFieldConfigAttributes = dynamicFieldConfigAttributes; + } + public Map<String, String> getDynamicSettingsMap() { + return dynamicSettingsMap; + } + public void setDynamicSettingsMap(Map<String, String> dynamicSettingsMap) { + this.dynamicSettingsMap = dynamicSettingsMap; + } + public Map<String, String> getDropDownMap() { + return dropDownMap; + } + public void setDropDownMap(Map<String, String> dropDownMap) { + this.dropDownMap = dropDownMap; + } + public String getActionPerformer() { + return actionPerformer; + } + public void setActionPerformer(String actionPerformer) { + this.actionPerformer = actionPerformer; + } + public String getActionAttribute() { + return actionAttribute; + } + public void setActionAttribute(String actionAttribute) { + this.actionAttribute = actionAttribute; + } + public List<String> getDynamicRuleAlgorithmLabels() { + return dynamicRuleAlgorithmLabels; + } + public void setDynamicRuleAlgorithmLabels(List<String> dynamicRuleAlgorithmLabels) { + this.dynamicRuleAlgorithmLabels = dynamicRuleAlgorithmLabels; + } + public List<String> getDynamicRuleAlgorithmCombo() { + return dynamicRuleAlgorithmCombo; + } + public void setDynamicRuleAlgorithmCombo(List<String> dynamicRuleAlgorithmCombo) { + this.dynamicRuleAlgorithmCombo = dynamicRuleAlgorithmCombo; + } + public List<String> getDynamicRuleAlgorithmField1() { + return dynamicRuleAlgorithmField1; + } + public void setDynamicRuleAlgorithmField1(List<String> dynamicRuleAlgorithmField1) { + this.dynamicRuleAlgorithmField1 = dynamicRuleAlgorithmField1; + } + public List<String> getDynamicRuleAlgorithmField2() { + return dynamicRuleAlgorithmField2; + } + public void setDynamicRuleAlgorithmField2(List<String> dynamicRuleAlgorithmField2) { + this.dynamicRuleAlgorithmField2 = dynamicRuleAlgorithmField2; + } + public List<Object> getDynamicVariableList() { + return dynamicVariableList; + } + public void setDynamicVariableList(List<Object> dynamicVariableList) { + this.dynamicVariableList = dynamicVariableList; + } + public List<String> getDataTypeList() { + return dataTypeList; + } + public void setDataTypeList(List<String> dataTypeList) { + this.dataTypeList = dataTypeList; + } + public String getActionAttributeValue() { + return actionAttributeValue; + } + public void setActionAttributeValue(String actionAttributeValue) { + this.actionAttributeValue = actionAttributeValue; + } + public String getRuleProvider() { + return ruleProvider; + } + public void setRuleProvider(String ruleProvider) { + this.ruleProvider = ruleProvider; + } + public String getActionBody() { + return actionBody; + } + public void setActionBody(String actionBody) { + this.actionBody = actionBody; + } + public String getActionDictHeader() { + return actionDictHeader; + } + public void setActionDictHeader(String actionDictHeader) { + this.actionDictHeader = actionDictHeader; + } + public String getActionDictType() { + return actionDictType; + } + public void setActionDictType(String actionDictType) { + this.actionDictType = actionDictType; + } + public String getActionDictUrl() { + return actionDictUrl; + } + public void setActionDictUrl(String actionDictUrl) { + this.actionDictUrl = actionDictUrl; + } + public String getActionDictMethod() { + return actionDictMethod; + } + public void setActionDictMethod(String actionDictMethod) { + this.actionDictMethod = actionDictMethod; + } + public YAMLParams getYamlparams() { + return yamlparams; + } + + public void setYamlparams(YAMLParams yamlparams) { + this.yamlparams = yamlparams; + } + + public Object getJsonBodyData() { + return jsonBodyData; + } + + public void setJsonBodyData(Object jsonBodyData) { + this.jsonBodyData = jsonBodyData; + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/PolicyElasticSearchController.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/PolicyElasticSearchController.java index a8320093e..50965bd2b 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/PolicyElasticSearchController.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/PolicyElasticSearchController.java @@ -77,388 +77,388 @@ import io.searchbox.client.JestResult; @RequestMapping({"/"}) public class PolicyElasticSearchController{ - private static final Logger LOGGER = FlexLogger.getLogger(PolicyElasticSearchController.class); + private static final Logger LOGGER = FlexLogger.getLogger(PolicyElasticSearchController.class); - enum Mode{ - attribute, onapName, actionPolicy, brmsParam, pepOptions, - clSite, clService, clVarbind, clVnf, clVSCL, decision, - fwTerm, msDCAEUUID, msConfigName, msLocation, msModels, - psGroupPolicy, safeRisk, safePolicyWarning - } + enum Mode{ + attribute, onapName, actionPolicy, brmsParam, pepOptions, + clSite, clService, clVarbind, clVnf, clVSCL, decision, + fwTerm, msDCAEUUID, msConfigName, msLocation, msModels, + psGroupPolicy, safeRisk, safePolicyWarning + } - protected static final HashMap<String, String> name2jsonPath = new HashMap<String, String>() { - private static final long serialVersionUID = 1L; - }; - - private static CommonClassDao commonClassDao; - private static final String action = "action"; - private static final String config = "config"; - private static final String decision = "decision"; - private static final String pholder = "pholder"; - private static final String jsonBodyData = "jsonBodyData"; - private static final String success = "success"; + protected static final HashMap<String, String> name2jsonPath = new HashMap<String, String>() { + private static final long serialVersionUID = 1L; + }; - @Autowired - public PolicyElasticSearchController(CommonClassDao commonClassDao) { - PolicyElasticSearchController.commonClassDao = commonClassDao; - } + private static CommonClassDao commonClassDao; + private static final String action = "action"; + private static final String config = "config"; + private static final String decision = "decision"; + private static final String pholder = "pholder"; + private static final String jsonBodyData = "jsonBodyData"; + private static final String success = "success"; - public PolicyElasticSearchController() { - super(); - } + @Autowired + public PolicyElasticSearchController(CommonClassDao commonClassDao) { + PolicyElasticSearchController.commonClassDao = commonClassDao; + } - public ElkConnector.PolicyIndexType toPolicyIndexType(String type) throws IllegalArgumentException { - if (type == null || type.isEmpty()){ - return PolicyIndexType.all; - } - return PolicyIndexType.valueOf(type); - } + public PolicyElasticSearchController() { + super(); + } - public boolean updateElk(PolicyRestAdapter policyData) { - boolean success = true; - try { - success = ElkConnector.singleton.update(policyData); - if (!success) { - if (LOGGER.isWarnEnabled()) { - LOGGER.warn("FAILURE to create ELK record created for " + policyData.getNewFileName()); - } - } else { - if (LOGGER.isInfoEnabled()) { - LOGGER.warn("SUCCESS creating ELK record created for " + policyData.getNewFileName()); - } - } - } catch (Exception e) { - LOGGER.warn(XACMLErrorConstants.ERROR_DATA_ISSUE + ": " + e.getMessage(), e); - success = false; - } - return success; - } + public ElkConnector.PolicyIndexType toPolicyIndexType(String type) throws IllegalArgumentException { + if (type == null || type.isEmpty()){ + return PolicyIndexType.all; + } + return PolicyIndexType.valueOf(type); + } - public boolean deleteElk(PolicyRestAdapter policyData) { - boolean success = true; - try { - success = ElkConnector.singleton.delete(policyData); - if (!success) { - if (LOGGER.isWarnEnabled()) { - LOGGER.warn("FAILURE to delete ELK record created for " + policyData.getNewFileName()); - } - } else { - if (LOGGER.isInfoEnabled()) { - LOGGER.warn("SUCCESS deleting ELK record created for " + policyData.getNewFileName()); - } - } - } catch (Exception e) { - LOGGER.warn(XACMLErrorConstants.ERROR_DATA_ISSUE + ": " + e.getMessage(), e); - success = false; - } - return success; - } + public boolean updateElk(PolicyRestAdapter policyData) { + boolean success = true; + try { + success = ElkConnector.singleton.update(policyData); + if (!success) { + if (LOGGER.isWarnEnabled()) { + LOGGER.warn("FAILURE to create ELK record created for " + policyData.getNewFileName()); + } + } else { + if (LOGGER.isInfoEnabled()) { + LOGGER.warn("SUCCESS creating ELK record created for " + policyData.getNewFileName()); + } + } + } catch (Exception e) { + LOGGER.warn(XACMLErrorConstants.ERROR_DATA_ISSUE + ": " + e.getMessage(), e); + success = false; + } + return success; + } - - @RequestMapping(value="/searchPolicy", method= RequestMethod.POST) - public void searchPolicy(HttpServletRequest request, HttpServletResponse response) { - try{ - String message=""; - boolean result = false; - boolean policyResult = false; - boolean validationCheck = true; - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - PolicyRestAdapter policyData = new PolicyRestAdapter(); - PolicyElasticSearchController controller = new PolicyElasticSearchController(); - Map<String, String> searchKeyValue = new HashMap<>(); - List<String> policyList = new ArrayList<>(); - if(request.getParameter("policyName") != null){ - String policyName = request.getParameter("policyName"); - policyData.setNewFileName(policyName); - if("delete".equalsIgnoreCase(request.getParameter(action))){ - result = controller.deleteElk(policyData); - }else{ - result = controller.updateElk(policyData); - } - } - if("search".equalsIgnoreCase(request.getParameter(action))){ - try { - JsonNode root = mapper.readTree(request.getReader()); - SearchData searchData = mapper.readValue(root.get("searchdata").toString(), SearchData.class); + public boolean deleteElk(PolicyRestAdapter policyData) { + boolean success = true; + try { + success = ElkConnector.singleton.delete(policyData); + if (!success) { + if (LOGGER.isWarnEnabled()) { + LOGGER.warn("FAILURE to delete ELK record created for " + policyData.getNewFileName()); + } + } else { + if (LOGGER.isInfoEnabled()) { + LOGGER.warn("SUCCESS deleting ELK record created for " + policyData.getNewFileName()); + } + } + } catch (Exception e) { + LOGGER.warn(XACMLErrorConstants.ERROR_DATA_ISSUE + ": " + e.getMessage(), e); + success = false; + } + return success; + } - String policyType = searchData.getPolicyType(); - - String searchText = searchData.getQuery(); - String descriptivevalue = searchData.getDescriptiveScope(); - if(descriptivevalue != null){ - DescriptiveScope dsSearch = (DescriptiveScope) commonClassDao.getEntityItem(DescriptiveScope.class, "descriptiveScopeName", descriptivevalue); - if(dsSearch != null){ - String[] descriptiveList = dsSearch.getSearch().split("AND"); - for(String keyValue : descriptiveList){ - String[] entry = keyValue.split(":"); - if(searchData.getPolicyType() != null && "closedLoop".equals(searchData.getPolicyType())){ - if(!PolicyUtils.policySpecialCharValidator(entry[1]).contains(success)){ - message = "The Descriptive Scope Dictionary value contains space and it is invalid for Search : "+entry[1]; - validationCheck = false; - } - searchKeyValue.put(jsonBodyData, "*" +entry[1] +"*"); - }else{ - searchText = entry[1]; - } - } - } - } - - if(!PolicyUtils.policySpecialCharValidator(searchText).contains(success)){ - message = "The Search value contains space and it is invalid for Search : "+searchText; - validationCheck = false; - } - - if(searchData.getClosedLooppolicyType() != null){ - String closedLoopType; - if("Config_Fault".equalsIgnoreCase(searchData.getClosedLooppolicyType())){ - closedLoopType = "ClosedLoop_Fault"; - }else{ - closedLoopType = "ClosedLoop_PM"; - } - searchKeyValue.put("configPolicyType", closedLoopType); - } - if(searchData.getOnapName() != null){ - searchKeyValue.put("onapName", searchData.getOnapName()); - } - if(searchData.getD2Service() != null){ - String d2Service = searchData.getD2Service().trim(); - if("Hosted Voice (Trinity)".equalsIgnoreCase(d2Service)){ - d2Service = "trinity"; - }else if("vUSP".equalsIgnoreCase(d2Service)){ - d2Service = "vUSP"; - }else if("MCR".equalsIgnoreCase(d2Service)){ - d2Service = "mcr"; - }else if("Gamma".equalsIgnoreCase(d2Service)){ - d2Service = "gamma"; - }else if("vDNS".equalsIgnoreCase(d2Service)){ - d2Service = "vDNS"; - } - searchKeyValue.put("jsonBodyData."+d2Service+"", "true"); - } - if(searchData.getVnfType() != null){ - searchKeyValue.put(jsonBodyData, "*"+searchData.getVnfType()+"*"); - } - if(searchData.getPolicyStatus() != null){ - searchKeyValue.put(jsonBodyData, "*"+searchData.getPolicyStatus()+"*"); - } - if(searchData.getVproAction() != null){ - searchKeyValue.put(jsonBodyData, "*"+searchData.getVproAction()+"*"); - } - if(searchData.getServiceType() != null){ - searchKeyValue.put("serviceType", searchData.getServiceType()); - } - if(searchData.getBindTextSearch() != null){ - searchKeyValue.put(searchData.getBindTextSearch(), searchText); - searchText = null; - } - PolicyIndexType type = null; - if(policyType != null){ - if(action.equalsIgnoreCase(policyType)){ - type = ElkConnector.PolicyIndexType.action; - }else if(decision.equalsIgnoreCase(policyType)){ - type = ElkConnector.PolicyIndexType.decision; - }else if(config.equalsIgnoreCase(policyType)){ - type = ElkConnector.PolicyIndexType.config; - }else if("closedloop".equalsIgnoreCase(policyType)){ - type = ElkConnector.PolicyIndexType.closedloop; - }else{ - type = ElkConnector.PolicyIndexType.all; - } - }else{ - type = ElkConnector.PolicyIndexType.all; - } - if(validationCheck){ - JestResult policyResultList = controller.search(type, searchText, searchKeyValue); - if(policyResultList.isSucceeded()){ - result = true; - policyResult = true; - JsonArray resultObject = policyResultList.getJsonObject().get("hits").getAsJsonObject().get("hits").getAsJsonArray(); - for(int i =0; i < resultObject.size(); i++){ - String policyName = resultObject.get(i).getAsJsonObject().get("_id").toString(); - policyList.add(policyName); - } - }else{ - LOGGER.error("Exception Occured While Searching for Data in Elastic Search Server, Check the Logs"); - } - } - }catch(Exception e){ - LOGGER.error("Exception Occured While Searching for Data in Elastic Search Server" + e); - } - } - if(validationCheck){ - if(result){ - message = "Elastic Server Transaction is success"; - }else{ - message = "Elastic Server Transaction is failed, please check the logs"; - } - } - JsonMessage msg = new JsonMessage(mapper.writeValueAsString(message)); - JSONObject j = new JSONObject(msg); - response.setStatus(HttpServletResponse.SC_OK); - response.addHeader(success, success); - if(policyResult){ - JSONObject k = new JSONObject("{policyresult: " + policyList + "}"); - response.getWriter().write(k.toString()); - }else{ - response.getWriter().write(j.toString()); - } - }catch(Exception e){ - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - response.addHeader("error", "Exception Occured While Performing Elastic Transaction"); - LOGGER.error("Exception Occured While Performing Elastic Transaction"+e.getMessage(),e); - } - } - - @RequestMapping(value={"/searchDictionary"}, method={org.springframework.web.bind.annotation.RequestMethod.POST}) - public ModelAndView searchDictionary(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException, IOException { - try{ - PolicyIndexType config = PolicyIndexType.config; - PolicyIndexType closedloop = PolicyIndexType.closedloop; - PolicyIndexType action = PolicyIndexType.action; - PolicyIndexType decision = PolicyIndexType.decision; - PolicyIndexType all = PolicyIndexType.all; - - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - String dictionaryType = root.get("type").textValue(); - Mode mode = Mode.valueOf(dictionaryType); - String value; - List<String> policyList = new ArrayList<>(); - switch (mode){ - case attribute : - Attribute attributedata = mapper.readValue(root.get("data").toString(), Attribute.class); - value = attributedata.getXacmlId(); - policyList = searchElkDatabase(all, pholder,value); - break; - case onapName : - OnapName onapName = mapper.readValue(root.get("data").toString(), OnapName.class); - value = onapName.getOnapName(); - policyList = searchElkDatabase(all, "onapName",value); - break; - case actionPolicy : - ActionPolicyDict actionPolicyDict = mapper.readValue(root.get("data").toString(), ActionPolicyDict.class); - value = actionPolicyDict.getAttributeName(); - policyList = searchElkDatabase(action, "actionAttributeValue",value); - break; - case brmsParam : - BRMSParamTemplate bRMSParamTemplate = mapper.readValue(root.get("data").toString(), BRMSParamTemplate.class); - value = bRMSParamTemplate.getRuleName(); - policyList = searchElkDatabase(config, "ruleName",value); - break; - case pepOptions : - PEPOptions pEPOptions = mapper.readValue(root.get("data").toString(), PEPOptions.class); - value = pEPOptions.getPepName(); - policyList = searchElkDatabase(closedloop,"jsonBodyData.pepName",value); - break; - case clSite : - ClosedLoopSite closedLoopSite = mapper.readValue(root.get("data").toString(), ClosedLoopSite.class); - value = closedLoopSite.getSiteName(); - policyList = searchElkDatabase(closedloop,"siteNames",value); - break; - case clService : - ClosedLoopD2Services closedLoopD2Services = mapper.readValue(root.get("data").toString(), ClosedLoopD2Services.class); - value = closedLoopD2Services.getServiceName(); - policyList = searchElkDatabase(closedloop, pholder,value); - break; - case clVarbind : - VarbindDictionary varbindDictionary = mapper.readValue(root.get("data").toString(), VarbindDictionary.class); - value = varbindDictionary.getVarbindName(); - policyList = searchElkDatabase(closedloop, jsonBodyData,"*"+value+"*"); - break; - case clVnf : - VNFType vNFType = mapper.readValue(root.get("data").toString(), VNFType.class); - value = vNFType.getVnftype(); - policyList = searchElkDatabase(closedloop, jsonBodyData,"*"+value+"*"); - break; - case clVSCL : - VSCLAction vsclAction = mapper.readValue(root.get("data").toString(), VSCLAction.class); - value = vsclAction.getVsclaction(); - policyList = searchElkDatabase(closedloop, jsonBodyData,"*"+value+"*"); - break; - case decision : - DecisionSettings decisionSettings = mapper.readValue(root.get("data").toString(), DecisionSettings.class); - value = decisionSettings.getXacmlId(); - policyList = searchElkDatabase(decision,pholder,value); - break; - case fwTerm : - TermList term = mapper.readValue(root.get("data").toString(), TermList.class); - value = term.getTermName(); - policyList = searchElkDatabase(config, pholder,value); - break; - case msDCAEUUID : - DCAEuuid dcaeUUID = mapper.readValue(root.get("data").toString(), DCAEuuid.class); - value = dcaeUUID.getName(); - policyList = searchElkDatabase(config, "uuid",value); - break; - case msLocation : - MicroServiceLocation mslocation = mapper.readValue(root.get("data").toString(), MicroServiceLocation.class); - value = mslocation.getName(); - policyList = searchElkDatabase(config, "location",value); - break; - case msModels : - MicroServiceModels msModels = mapper.readValue(root.get("data").toString(), MicroServiceModels.class); - value = msModels.getModelName(); - policyList = searchElkDatabase(config, "serviceType",value); - break; - case psGroupPolicy : - GroupPolicyScopeList groupPoilicy = mapper.readValue(root.get("data").toString(), GroupPolicyScopeList.class); - value = groupPoilicy.getGroupName(); - policyList = searchElkDatabase(config, pholder,value); - break; - case safeRisk : - RiskType riskType= mapper.readValue(root.get("data").toString(), RiskType.class); - value = riskType.getRiskName(); - policyList = searchElkDatabase(config, "riskType",value); - break; - case safePolicyWarning : - SafePolicyWarning safePolicy = mapper.readValue(root.get("data").toString(), SafePolicyWarning.class); - value = safePolicy.getName(); - policyList = searchElkDatabase(config, pholder,value); - break; - default: - } - - response.setStatus(HttpServletResponse.SC_OK); - response.addHeader(success, success); - JSONObject k = new JSONObject("{policyresult: " + policyList + "}"); - response.getWriter().write(k.toString()); - }catch(Exception e){ - response.setCharacterEncoding("UTF-8"); - request.setCharacterEncoding("UTF-8"); - PrintWriter out = response.getWriter(); - out.write(PolicyUtils.CATCH_EXCEPTION); - LOGGER.error(e); - } - return null; - } - //Search the Elk database - public List<String> searchElkDatabase(PolicyIndexType type, String key, String value){ - PolicyElasticSearchController controller = new PolicyElasticSearchController(); - Map<String, String> searchKeyValue = new HashMap<>(); - if(!pholder.equals(key)){ - searchKeyValue.put(key, value); - } - - List<String> policyList = new ArrayList<>(); - JestResult policyResultList = controller.search(type, value, searchKeyValue); - if(policyResultList.isSucceeded()){ - JsonArray resultObject = policyResultList.getJsonObject().get("hits").getAsJsonObject().get("hits").getAsJsonArray(); - for(int i =0; i < resultObject.size(); i++){ - String policyName = resultObject.get(i).getAsJsonObject().get("_id").toString(); - policyList.add(policyName); - } - }else{ - LOGGER.error("Exception Occured While Searching for Data in Elastic Search Server, Check the Logs"); - } - return policyList; - } - - public JestResult search(PolicyIndexType type, String text, Map<String, String> searchKeyValue) { - return ElkConnector.singleton.search(type, text, searchKeyValue); - } - + @RequestMapping(value="/searchPolicy", method= RequestMethod.POST) + public void searchPolicy(HttpServletRequest request, HttpServletResponse response) { + try{ + String message=""; + boolean result = false; + boolean policyResult = false; + boolean validationCheck = true; + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + PolicyRestAdapter policyData = new PolicyRestAdapter(); + PolicyElasticSearchController controller = new PolicyElasticSearchController(); + Map<String, String> searchKeyValue = new HashMap<>(); + List<String> policyList = new ArrayList<>(); + if(request.getParameter("policyName") != null){ + String policyName = request.getParameter("policyName"); + policyData.setNewFileName(policyName); + if("delete".equalsIgnoreCase(request.getParameter(action))){ + result = controller.deleteElk(policyData); + }else{ + result = controller.updateElk(policyData); + } + } + if("search".equalsIgnoreCase(request.getParameter(action))){ + try { + JsonNode root = mapper.readTree(request.getReader()); + SearchData searchData = mapper.readValue(root.get("searchdata").toString(), SearchData.class); + + String policyType = searchData.getPolicyType(); + + String searchText = searchData.getQuery(); + String descriptivevalue = searchData.getDescriptiveScope(); + if(descriptivevalue != null){ + DescriptiveScope dsSearch = (DescriptiveScope) commonClassDao.getEntityItem(DescriptiveScope.class, "descriptiveScopeName", descriptivevalue); + if(dsSearch != null){ + String[] descriptiveList = dsSearch.getSearch().split("AND"); + for(String keyValue : descriptiveList){ + String[] entry = keyValue.split(":"); + if(searchData.getPolicyType() != null && "closedLoop".equals(searchData.getPolicyType())){ + if(!PolicyUtils.policySpecialCharValidator(entry[1]).contains(success)){ + message = "The Descriptive Scope Dictionary value contains space and it is invalid for Search : "+entry[1]; + validationCheck = false; + } + searchKeyValue.put(jsonBodyData, "*" +entry[1] +"*"); + }else{ + searchText = entry[1]; + } + } + } + } + + if(!PolicyUtils.policySpecialCharValidator(searchText).contains(success)){ + message = "The Search value contains space and it is invalid for Search : "+searchText; + validationCheck = false; + } + + if(searchData.getClosedLooppolicyType() != null){ + String closedLoopType; + if("Config_Fault".equalsIgnoreCase(searchData.getClosedLooppolicyType())){ + closedLoopType = "ClosedLoop_Fault"; + }else{ + closedLoopType = "ClosedLoop_PM"; + } + searchKeyValue.put("configPolicyType", closedLoopType); + } + if(searchData.getOnapName() != null){ + searchKeyValue.put("onapName", searchData.getOnapName()); + } + if(searchData.getD2Service() != null){ + String d2Service = searchData.getD2Service().trim(); + if("Hosted Voice (Trinity)".equalsIgnoreCase(d2Service)){ + d2Service = "trinity"; + }else if("vUSP".equalsIgnoreCase(d2Service)){ + d2Service = "vUSP"; + }else if("MCR".equalsIgnoreCase(d2Service)){ + d2Service = "mcr"; + }else if("Gamma".equalsIgnoreCase(d2Service)){ + d2Service = "gamma"; + }else if("vDNS".equalsIgnoreCase(d2Service)){ + d2Service = "vDNS"; + } + searchKeyValue.put("jsonBodyData."+d2Service+"", "true"); + } + if(searchData.getVnfType() != null){ + searchKeyValue.put(jsonBodyData, "*"+searchData.getVnfType()+"*"); + } + if(searchData.getPolicyStatus() != null){ + searchKeyValue.put(jsonBodyData, "*"+searchData.getPolicyStatus()+"*"); + } + if(searchData.getVproAction() != null){ + searchKeyValue.put(jsonBodyData, "*"+searchData.getVproAction()+"*"); + } + if(searchData.getServiceType() != null){ + searchKeyValue.put("serviceType", searchData.getServiceType()); + } + if(searchData.getBindTextSearch() != null){ + searchKeyValue.put(searchData.getBindTextSearch(), searchText); + searchText = null; + } + PolicyIndexType type = null; + if(policyType != null){ + if(action.equalsIgnoreCase(policyType)){ + type = ElkConnector.PolicyIndexType.action; + }else if(decision.equalsIgnoreCase(policyType)){ + type = ElkConnector.PolicyIndexType.decision; + }else if(config.equalsIgnoreCase(policyType)){ + type = ElkConnector.PolicyIndexType.config; + }else if("closedloop".equalsIgnoreCase(policyType)){ + type = ElkConnector.PolicyIndexType.closedloop; + }else{ + type = ElkConnector.PolicyIndexType.all; + } + }else{ + type = ElkConnector.PolicyIndexType.all; + } + if(validationCheck){ + JestResult policyResultList = controller.search(type, searchText, searchKeyValue); + if(policyResultList.isSucceeded()){ + result = true; + policyResult = true; + JsonArray resultObject = policyResultList.getJsonObject().get("hits").getAsJsonObject().get("hits").getAsJsonArray(); + for(int i =0; i < resultObject.size(); i++){ + String policyName = resultObject.get(i).getAsJsonObject().get("_id").toString(); + policyList.add(policyName); + } + }else{ + LOGGER.error("Exception Occured While Searching for Data in Elastic Search Server, Check the Logs"); + } + } + }catch(Exception e){ + LOGGER.error("Exception Occured While Searching for Data in Elastic Search Server" + e); + } + } + if(validationCheck){ + if(result){ + message = "Elastic Server Transaction is success"; + }else{ + message = "Elastic Server Transaction is failed, please check the logs"; + } + } + JsonMessage msg = new JsonMessage(mapper.writeValueAsString(message)); + JSONObject j = new JSONObject(msg); + response.setStatus(HttpServletResponse.SC_OK); + response.addHeader(success, success); + if(policyResult){ + JSONObject k = new JSONObject("{policyresult: " + policyList + "}"); + response.getWriter().write(k.toString()); + }else{ + response.getWriter().write(j.toString()); + } + }catch(Exception e){ + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + response.addHeader("error", "Exception Occured While Performing Elastic Transaction"); + LOGGER.error("Exception Occured While Performing Elastic Transaction"+e.getMessage(),e); + } + } + + @RequestMapping(value={"/searchDictionary"}, method={org.springframework.web.bind.annotation.RequestMethod.POST}) + public ModelAndView searchDictionary(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException, IOException { + try{ + PolicyIndexType config = PolicyIndexType.config; + PolicyIndexType closedloop = PolicyIndexType.closedloop; + PolicyIndexType action = PolicyIndexType.action; + PolicyIndexType decision = PolicyIndexType.decision; + PolicyIndexType all = PolicyIndexType.all; + + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + String dictionaryType = root.get("type").textValue(); + Mode mode = Mode.valueOf(dictionaryType); + String value; + List<String> policyList = new ArrayList<>(); + switch (mode){ + case attribute : + Attribute attributedata = mapper.readValue(root.get("data").toString(), Attribute.class); + value = attributedata.getXacmlId(); + policyList = searchElkDatabase(all, pholder,value); + break; + case onapName : + OnapName onapName = mapper.readValue(root.get("data").toString(), OnapName.class); + value = onapName.getOnapName(); + policyList = searchElkDatabase(all, "onapName",value); + break; + case actionPolicy : + ActionPolicyDict actionPolicyDict = mapper.readValue(root.get("data").toString(), ActionPolicyDict.class); + value = actionPolicyDict.getAttributeName(); + policyList = searchElkDatabase(action, "actionAttributeValue",value); + break; + case brmsParam : + BRMSParamTemplate bRMSParamTemplate = mapper.readValue(root.get("data").toString(), BRMSParamTemplate.class); + value = bRMSParamTemplate.getRuleName(); + policyList = searchElkDatabase(config, "ruleName",value); + break; + case pepOptions : + PEPOptions pEPOptions = mapper.readValue(root.get("data").toString(), PEPOptions.class); + value = pEPOptions.getPepName(); + policyList = searchElkDatabase(closedloop,"jsonBodyData.pepName",value); + break; + case clSite : + ClosedLoopSite closedLoopSite = mapper.readValue(root.get("data").toString(), ClosedLoopSite.class); + value = closedLoopSite.getSiteName(); + policyList = searchElkDatabase(closedloop,"siteNames",value); + break; + case clService : + ClosedLoopD2Services closedLoopD2Services = mapper.readValue(root.get("data").toString(), ClosedLoopD2Services.class); + value = closedLoopD2Services.getServiceName(); + policyList = searchElkDatabase(closedloop, pholder,value); + break; + case clVarbind : + VarbindDictionary varbindDictionary = mapper.readValue(root.get("data").toString(), VarbindDictionary.class); + value = varbindDictionary.getVarbindName(); + policyList = searchElkDatabase(closedloop, jsonBodyData,"*"+value+"*"); + break; + case clVnf : + VNFType vNFType = mapper.readValue(root.get("data").toString(), VNFType.class); + value = vNFType.getVnftype(); + policyList = searchElkDatabase(closedloop, jsonBodyData,"*"+value+"*"); + break; + case clVSCL : + VSCLAction vsclAction = mapper.readValue(root.get("data").toString(), VSCLAction.class); + value = vsclAction.getVsclaction(); + policyList = searchElkDatabase(closedloop, jsonBodyData,"*"+value+"*"); + break; + case decision : + DecisionSettings decisionSettings = mapper.readValue(root.get("data").toString(), DecisionSettings.class); + value = decisionSettings.getXacmlId(); + policyList = searchElkDatabase(decision,pholder,value); + break; + case fwTerm : + TermList term = mapper.readValue(root.get("data").toString(), TermList.class); + value = term.getTermName(); + policyList = searchElkDatabase(config, pholder,value); + break; + case msDCAEUUID : + DCAEuuid dcaeUUID = mapper.readValue(root.get("data").toString(), DCAEuuid.class); + value = dcaeUUID.getName(); + policyList = searchElkDatabase(config, "uuid",value); + break; + case msLocation : + MicroServiceLocation mslocation = mapper.readValue(root.get("data").toString(), MicroServiceLocation.class); + value = mslocation.getName(); + policyList = searchElkDatabase(config, "location",value); + break; + case msModels : + MicroServiceModels msModels = mapper.readValue(root.get("data").toString(), MicroServiceModels.class); + value = msModels.getModelName(); + policyList = searchElkDatabase(config, "serviceType",value); + break; + case psGroupPolicy : + GroupPolicyScopeList groupPoilicy = mapper.readValue(root.get("data").toString(), GroupPolicyScopeList.class); + value = groupPoilicy.getGroupName(); + policyList = searchElkDatabase(config, pholder,value); + break; + case safeRisk : + RiskType riskType= mapper.readValue(root.get("data").toString(), RiskType.class); + value = riskType.getRiskName(); + policyList = searchElkDatabase(config, "riskType",value); + break; + case safePolicyWarning : + SafePolicyWarning safePolicy = mapper.readValue(root.get("data").toString(), SafePolicyWarning.class); + value = safePolicy.getName(); + policyList = searchElkDatabase(config, pholder,value); + break; + default: + } + + response.setStatus(HttpServletResponse.SC_OK); + response.addHeader(success, success); + JSONObject k = new JSONObject("{policyresult: " + policyList + "}"); + response.getWriter().write(k.toString()); + }catch(Exception e){ + response.setCharacterEncoding("UTF-8"); + request.setCharacterEncoding("UTF-8"); + PrintWriter out = response.getWriter(); + out.write(PolicyUtils.CATCH_EXCEPTION); + LOGGER.error(e); + } + return null; + } + + //Search the Elk database + public List<String> searchElkDatabase(PolicyIndexType type, String key, String value){ + PolicyElasticSearchController controller = new PolicyElasticSearchController(); + Map<String, String> searchKeyValue = new HashMap<>(); + if(!pholder.equals(key)){ + searchKeyValue.put(key, value); + } + + List<String> policyList = new ArrayList<>(); + JestResult policyResultList = controller.search(type, value, searchKeyValue); + if(policyResultList.isSucceeded()){ + JsonArray resultObject = policyResultList.getJsonObject().get("hits").getAsJsonObject().get("hits").getAsJsonArray(); + for(int i =0; i < resultObject.size(); i++){ + String policyName = resultObject.get(i).getAsJsonObject().get("_id").toString(); + policyList.add(policyName); + } + }else{ + LOGGER.error("Exception Occured While Searching for Data in Elastic Search Server, Check the Logs"); + } + return policyList; + } + + public JestResult search(PolicyIndexType type, String text, Map<String, String> searchKeyValue) { + return ElkConnector.singleton.search(type, text, searchKeyValue); + } + }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/PolicyLocator.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/PolicyLocator.java index 58c89f781..9338cdbbd 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/PolicyLocator.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/PolicyLocator.java @@ -20,32 +20,32 @@ package org.onap.policy.pap.xacml.rest.elk.client; public class PolicyLocator { - public final String policyType; - public final String policyName; - public final String owner; - public final String scope; - public final String policyId; - public final String version; - - public PolicyLocator(String policyType, String policyName, - String owner, String scope, String policyId, - String version) { - this.policyType = policyType; - this.policyName= policyName; - this.owner = owner; - this.scope = scope; - this.policyId = policyId; - this.version = version; - } - - public String toString() { - return "[" + - this.owner + "|" + - this.scope + "|" + - this.policyType + "|" + - this.policyName + "|" + - this.policyId + "|" + - "v" + this.version + "|" + "]"; - - } + public final String policyType; + public final String policyName; + public final String owner; + public final String scope; + public final String policyId; + public final String version; + + public PolicyLocator(String policyType, String policyName, + String owner, String scope, String policyId, + String version) { + this.policyType = policyType; + this.policyName= policyName; + this.owner = owner; + this.scope = scope; + this.policyId = policyId; + this.version = version; + } + + public String toString() { + return "[" + + this.owner + "|" + + this.scope + "|" + + this.policyType + "|" + + this.policyName + "|" + + this.policyId + "|" + + "v" + this.version + "|" + "]"; + + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/APIRequestHandler.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/APIRequestHandler.java index db7711039..cc9cc16a0 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/APIRequestHandler.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/APIRequestHandler.java @@ -32,66 +32,66 @@ import org.onap.policy.xacml.api.pap.OnapPDPGroup; public class APIRequestHandler { - private OnapPDPGroup newGroup; + private OnapPDPGroup newGroup; - public void doGet(HttpServletRequest request, HttpServletResponse response, String apiflag) throws IOException{ - // Request from the API to get Dictionary Items - if ("api".equalsIgnoreCase(apiflag)) { - DictionaryHandler dictionaryHandler = DictionaryHandler.getInstance(); - dictionaryHandler.doDictionaryAPIGet(request, response); - return; - } - // Request from the API to get the ActiveVersion from the PolicyVersion table - if ("version".equalsIgnoreCase(apiflag)){ - PushPolicyHandler pushHandler = new PushPolicyHandler(); - pushHandler.getActiveVersion(request, response); - return; - } - // Request from the API to get the URI from the gitpath - if ("uri".equalsIgnoreCase(apiflag)){ - PushPolicyHandler pushHandler = new PushPolicyHandler(); - pushHandler.getSelectedURI(request, response); - return; - } - if ("getMetrics".equalsIgnoreCase(apiflag)){ - MetricService.doGetPolicyMetrics(response); - return; - } - } + public void doGet(HttpServletRequest request, HttpServletResponse response, String apiflag) throws IOException{ + // Request from the API to get Dictionary Items + if ("api".equalsIgnoreCase(apiflag)) { + DictionaryHandler dictionaryHandler = DictionaryHandler.getInstance(); + dictionaryHandler.doDictionaryAPIGet(request, response); + return; + } + // Request from the API to get the ActiveVersion from the PolicyVersion table + if ("version".equalsIgnoreCase(apiflag)){ + PushPolicyHandler pushHandler = new PushPolicyHandler(); + pushHandler.getActiveVersion(request, response); + return; + } + // Request from the API to get the URI from the gitpath + if ("uri".equalsIgnoreCase(apiflag)){ + PushPolicyHandler pushHandler = new PushPolicyHandler(); + pushHandler.getSelectedURI(request, response); + return; + } + if ("getMetrics".equalsIgnoreCase(apiflag)){ + MetricService.doGetPolicyMetrics(response); + return; + } + } - public void doPut(HttpServletRequest request, HttpServletResponse response, String service) throws IOException { - if ("MICROSERVICE".equalsIgnoreCase(service) || "BRMSPARAM".equalsIgnoreCase(service) || "OPTIMIZATION".equalsIgnoreCase(service)){ - ImportService importService = new ImportService(); - importService.doImportMicroServicePut(request, response); - return; - } - if ("dictionaryItem".equalsIgnoreCase(service)) { - DictionaryHandler dictionaryHandler = DictionaryHandler.getInstance(); - dictionaryHandler.doDictionaryAPIPut(request, response); - return; - } else { - SavePolicyHandler savePolicy = SavePolicyHandler.getInstance(); - savePolicy.doPolicyAPIPut(request, response); - } - } + public void doPut(HttpServletRequest request, HttpServletResponse response, String service) throws IOException { + if ("MICROSERVICE".equalsIgnoreCase(service) || "BRMSPARAM".equalsIgnoreCase(service) || "OPTIMIZATION".equalsIgnoreCase(service)){ + ImportService importService = new ImportService(); + importService.doImportMicroServicePut(request, response); + return; + } + if ("dictionaryItem".equalsIgnoreCase(service)) { + DictionaryHandler dictionaryHandler = DictionaryHandler.getInstance(); + dictionaryHandler.doDictionaryAPIPut(request, response); + return; + } else { + SavePolicyHandler savePolicy = SavePolicyHandler.getInstance(); + savePolicy.doPolicyAPIPut(request, response); + } + } - public void doDelete(HttpServletRequest request, HttpServletResponse response, ONAPLoggingContext loggingContext, String apiflag) throws IOException, SQLException{ - DeleteHandler deleteHandler = DeleteHandler.getInstance(); - if ("deletePapApi".equalsIgnoreCase(apiflag)) { - deleteHandler.doAPIDeleteFromPAP(request, response); - return; - } else if ("deletePdpApi".equalsIgnoreCase(apiflag)) { - deleteHandler.doAPIDeleteFromPDP(request, response, loggingContext); - setNewGroup(deleteHandler.getDeletedGroup()); - return; - } - } - - private void setNewGroup(OnapPDPGroup newGroup) { - this.newGroup = newGroup; - } + public void doDelete(HttpServletRequest request, HttpServletResponse response, ONAPLoggingContext loggingContext, String apiflag) throws IOException, SQLException{ + DeleteHandler deleteHandler = DeleteHandler.getInstance(); + if ("deletePapApi".equalsIgnoreCase(apiflag)) { + deleteHandler.doAPIDeleteFromPAP(request, response); + return; + } else if ("deletePdpApi".equalsIgnoreCase(apiflag)) { + deleteHandler.doAPIDeleteFromPDP(request, response, loggingContext); + setNewGroup(deleteHandler.getDeletedGroup()); + return; + } + } - public OnapPDPGroup getNewGroup() { - return newGroup; - } + private void setNewGroup(OnapPDPGroup newGroup) { + this.newGroup = newGroup; + } + + public OnapPDPGroup getNewGroup() { + return newGroup; + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DeleteHandler.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DeleteHandler.java index f3dda33fc..e2c348239 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DeleteHandler.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DeleteHandler.java @@ -59,429 +59,429 @@ import com.att.research.xacml.util.XACMLProperties; public class DeleteHandler { - private OnapPDPGroup newgroup; - private static Logger logger = FlexLogger.getLogger(DeleteHandler.class); - public static final String POLICY_IN_PDP = "PolicyInPDP"; - public static final String ERROR = "error"; - public static final String UNKNOWN = "unknown"; - private static final String REGEX = "[0-9a-zA-Z._]*"; + private OnapPDPGroup newgroup; + private static Logger logger = FlexLogger.getLogger(DeleteHandler.class); + public static final String POLICY_IN_PDP = "PolicyInPDP"; + public static final String ERROR = "error"; + public static final String UNKNOWN = "unknown"; + private static final String REGEX = "[0-9a-zA-Z._]*"; - public void doAPIDeleteFromPAP(HttpServletRequest request, HttpServletResponse response) throws IOException, SQLException { - // get the request content into a String - String json = null; - java.util.Scanner scanner = new java.util.Scanner(request.getInputStream()); - scanner.useDelimiter("\\A"); - json = scanner.hasNext() ? scanner.next() : ""; - scanner.close(); - PolicyLogger.info("JSON request from API to Delete Policy from the PAP: " + json); - // convert Object sent as JSON into local object - StdPAPPolicy policy = PolicyUtils.jsonStringToObject(json, StdPAPPolicy.class); - String policyName = policy.getPolicyName(); - Boolean policyVersionDeleted = false; - String removeXMLExtension; - int currentVersion; - String removeVersionExtension; - String splitPolicyName = null; - String[] split = null; - String status = ERROR; - PolicyEntity policyEntity = null; - JPAUtils jpaUtils = null; + public void doAPIDeleteFromPAP(HttpServletRequest request, HttpServletResponse response) throws IOException, SQLException { + // get the request content into a String + String json = null; + java.util.Scanner scanner = new java.util.Scanner(request.getInputStream()); + scanner.useDelimiter("\\A"); + json = scanner.hasNext() ? scanner.next() : ""; + scanner.close(); + PolicyLogger.info("JSON request from API to Delete Policy from the PAP: " + json); + // convert Object sent as JSON into local object + StdPAPPolicy policy = PolicyUtils.jsonStringToObject(json, StdPAPPolicy.class); + String policyName = policy.getPolicyName(); + Boolean policyVersionDeleted = false; + String removeXMLExtension; + int currentVersion; + String removeVersionExtension; + String splitPolicyName = null; + String[] split = null; + String status = ERROR; + PolicyEntity policyEntity = null; + JPAUtils jpaUtils = null; - String papDbDriver = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_DB_DRIVER); - String papDbUrl = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_DB_URL); - String papDbUser = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_DB_USER); - String papDbPassword = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_DB_PASSWORD); - Connection con = null; - - try { - jpaUtils = JPAUtils.getJPAUtilsInstance(XACMLPapServlet.getEmf()); - } catch (Exception e) { - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "XACMLPapServlet", " Could not create JPAUtils instance on the PAP"); - response.addHeader(ERROR, "jpautils"); - response.addHeader("operation", "delete"); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - return; - } - if (jpaUtils.dbLockdownIgnoreErrors()) { - PolicyLogger.warn("Policies are locked down"); - response.addHeader("operation", "delete"); - response.addHeader("lockdown", "true"); - response.setStatus(HttpServletResponse.SC_ACCEPTED); - return; - } - EntityManager em = XACMLPapServlet.getEmf().createEntityManager(); - Query policyEntityQuery = null; - try{ - if(policyName.endsWith(".xml")){ - removeXMLExtension = policyName.replace(".xml", ""); - currentVersion = Integer.parseInt(removeXMLExtension.substring(removeXMLExtension.lastIndexOf('.')+1)); - removeVersionExtension = removeXMLExtension.substring(0, removeXMLExtension.lastIndexOf('.')); - boolean queryCheck = true; - if(policy.getDeleteCondition().equalsIgnoreCase("All Versions")){ - if(policyName.contains("Config_")){ - splitPolicyName = removeVersionExtension.replace(".Config_", ":Config_"); - }else if(policyName.contains("Action_")){ - splitPolicyName = removeVersionExtension.replace(".Action_", ":Action_"); - }else if(policyName.contains("Decision_")){ - splitPolicyName = removeVersionExtension.replace(".Decision_", ":Decision_"); - } - if(splitPolicyName != null){ - split = splitPolicyName.split(":"); - }else{ - PolicyLogger.error(MessageCodes.ERROR_UNKNOWN + "Failed to delete the policy. Please, provide the valid policyname."); - response.addHeader(ERROR, UNKNOWN); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR ); - return; - } - policyEntityQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.policyName LIKE :pName and p.scope=:pScope"); - }else if(policy.getDeleteCondition().equalsIgnoreCase("Current Version")) { - if(policyName.contains("Config_")){ - splitPolicyName = policyName.replace(".Config_", ":Config_"); - }else if(policyName.contains("Action_")){ - splitPolicyName = policyName.replace(".Action_", ":Action_"); - }else if(policyName.contains("Decision_")){ - splitPolicyName = policyName.replace(".Decision_", ":Decision_"); - } - split = splitPolicyName.split(":"); - queryCheck = false; - policyEntityQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.policyName=:pName and p.scope=:pScope"); - } - - if(queryCheck){ - policyEntityQuery.setParameter("pName", "%"+split[1]+"%"); - }else{ - policyEntityQuery.setParameter("pName", split[1]); - } - - policyEntityQuery.setParameter("pScope", split[0]); - List<?> peResult = policyEntityQuery.getResultList(); - if(!peResult.isEmpty()){ - Query getPolicyVersion = em.createQuery("Select p from PolicyVersion p where p.policyName=:pname"); - getPolicyVersion.setParameter("pname", removeVersionExtension.replace(".", File.separator)); - List<?> pvResult = getPolicyVersion.getResultList(); - PolicyVersion pVersion = (PolicyVersion) pvResult.get(0); - int newVersion = 0; - em.getTransaction().begin(); - Class.forName(papDbDriver); - con = DriverManager.getConnection(papDbUrl,papDbUser,papDbPassword); - - if(policy.getDeleteCondition().equalsIgnoreCase("All Versions")){ - boolean groupCheck = checkPolicyGroupEntity(con, peResult); - if(!groupCheck){ - for(Object peData : peResult){ - policyEntity = (PolicyEntity) peData; - status = deletePolicyEntityData(em, policyEntity); - } - }else{ - status = POLICY_IN_PDP; - } - if(status.equals(ERROR)){ - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + "Exception Occured while deleting the Entity from Database."); - response.addHeader(ERROR, UNKNOWN); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR ); - return; - }else if(status.equals(POLICY_IN_PDP)){ - PolicyLogger.error(MessageCodes.GENERAL_WARNING + "Policy can't be deleted, it is active in PDP Groups."); - response.addHeader(ERROR, POLICY_IN_PDP); - response.setStatus(HttpServletResponse.SC_CONFLICT); - return; - }else{ - try{ - policyVersionDeleted = true; - em.remove(pVersion); - }catch(Exception e){ - logger.error(e.getMessage(),e); - policyVersionDeleted = false; - } - } - }else if(policy.getDeleteCondition().equalsIgnoreCase("Current Version")){ - boolean groupCheck = checkPolicyGroupEntity(con, peResult); - if(!groupCheck){ - policyEntity = (PolicyEntity) peResult.get(0); - status = deletePolicyEntityData(em, policyEntity); - }else{ - status = POLICY_IN_PDP; - } - - if(ERROR.equals(status)){ - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + "Exception Occured while deleting the Entity from Database."); - response.addHeader(ERROR, UNKNOWN); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR ); - return; - }else if(POLICY_IN_PDP.equals(status)){ - PolicyLogger.error(MessageCodes.GENERAL_WARNING + "Policy can't be deleted, it is active in PDP Groups."); - response.addHeader(ERROR, POLICY_IN_PDP); - response.setStatus(HttpServletResponse.SC_CONFLICT); - return; - }else{ - if(currentVersion > 1){ - if(!peResult.isEmpty()){ - for(Object object : peResult){ - policyEntity = (PolicyEntity) object; - String policyEntityName = policyEntity.getPolicyName().replace(".xml", ""); - int policyEntityVersion = Integer.parseInt(policyEntityName.substring(policyEntityName.lastIndexOf('.')+1)); - if(policyEntityVersion > newVersion){ - newVersion = policyEntityVersion-1; - } - } - } - pVersion.setActiveVersion(newVersion); - pVersion.setHigherVersion(newVersion); - try{ - policyVersionDeleted = true; - em.persist(pVersion); - }catch(Exception e){ - logger.error(e.getMessage(),e); - policyVersionDeleted = false; - } - }else{ - try{ - policyVersionDeleted = true; - em.remove(pVersion); - }catch(Exception e){ - logger.error(e.getMessage(),e); - policyVersionDeleted = false; - } - } - } - } - }else{ - PolicyLogger.error(MessageCodes.ERROR_UNKNOWN + "Failed to delete the policy for an unknown reason. Check the file system and other logs for further information."); - response.addHeader(ERROR, UNKNOWN); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR ); - return; - } - } - em.getTransaction().commit(); - }catch(Exception e){ - em.getTransaction().rollback(); - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "XACMLPapServlet", " ERROR"); - response.addHeader(ERROR, "deleteDB"); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - return; - } finally { - em.close(); - if(con != null){ - con.close(); - } - } + String papDbDriver = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_DB_DRIVER); + String papDbUrl = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_DB_URL); + String papDbUser = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_DB_USER); + String papDbPassword = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_DB_PASSWORD); + Connection con = null; - if (policyVersionDeleted) { - response.setStatus(HttpServletResponse.SC_OK); - response.addHeader("successMapKey", "success"); - response.addHeader("operation", "delete"); - return; - } else { - PolicyLogger.error(MessageCodes.ERROR_UNKNOWN + "Failed to delete the policy for an unknown reason. Check the file system and other logs for further information."); - response.addHeader(ERROR, UNKNOWN); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR ); - return; - } - } - - public static String deletePolicyEntityData(EntityManager em, PolicyEntity policyEntity){ - PolicyElasticSearchController controller = new PolicyElasticSearchController(); - PolicyRestAdapter policyData = new PolicyRestAdapter(); - String policyName = policyEntity.getPolicyName(); - try{ - if(policyName.contains("Config_")){ - em.remove(policyEntity.getConfigurationData()); - }else if(policyName.contains("Action_")){ - em.remove(policyEntity.getActionBodyEntity()); - } - String searchPolicyName = policyEntity.getScope() + "." + policyEntity.getPolicyName(); - policyData.setNewFileName(searchPolicyName); - controller.deleteElk(policyData); - em.remove(policyEntity); - }catch(Exception e){ - logger.error(e.getMessage(),e); - return ERROR; - } - return "success"; - } - - public static boolean checkPolicyGroupEntity(Connection con, List<?> peResult) throws SQLException{ - for(Object peData : peResult){ - PolicyEntity policyEntity = (PolicyEntity) peData; - try(Statement st = con.createStatement(); - ResultSet rs = st.executeQuery("Select * from PolicyGroupEntity where policyid = '"+policyEntity.getPolicyId()+"'")){ - boolean gEntityList = rs.next(); - if(gEntityList){ - return true; - } - } - } - return false; - } + try { + jpaUtils = JPAUtils.getJPAUtilsInstance(XACMLPapServlet.getEmf()); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "XACMLPapServlet", " Could not create JPAUtils instance on the PAP"); + response.addHeader(ERROR, "jpautils"); + response.addHeader("operation", "delete"); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + return; + } + if (jpaUtils.dbLockdownIgnoreErrors()) { + PolicyLogger.warn("Policies are locked down"); + response.addHeader("operation", "delete"); + response.addHeader("lockdown", "true"); + response.setStatus(HttpServletResponse.SC_ACCEPTED); + return; + } + EntityManager em = XACMLPapServlet.getEmf().createEntityManager(); + Query policyEntityQuery = null; + try{ + if(policyName.endsWith(".xml")){ + removeXMLExtension = policyName.replace(".xml", ""); + currentVersion = Integer.parseInt(removeXMLExtension.substring(removeXMLExtension.lastIndexOf('.')+1)); + removeVersionExtension = removeXMLExtension.substring(0, removeXMLExtension.lastIndexOf('.')); + boolean queryCheck = true; + if(policy.getDeleteCondition().equalsIgnoreCase("All Versions")){ + if(policyName.contains("Config_")){ + splitPolicyName = removeVersionExtension.replace(".Config_", ":Config_"); + }else if(policyName.contains("Action_")){ + splitPolicyName = removeVersionExtension.replace(".Action_", ":Action_"); + }else if(policyName.contains("Decision_")){ + splitPolicyName = removeVersionExtension.replace(".Decision_", ":Decision_"); + } + if(splitPolicyName != null){ + split = splitPolicyName.split(":"); + }else{ + PolicyLogger.error(MessageCodes.ERROR_UNKNOWN + "Failed to delete the policy. Please, provide the valid policyname."); + response.addHeader(ERROR, UNKNOWN); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR ); + return; + } + policyEntityQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.policyName LIKE :pName and p.scope=:pScope"); + }else if(policy.getDeleteCondition().equalsIgnoreCase("Current Version")) { + if(policyName.contains("Config_")){ + splitPolicyName = policyName.replace(".Config_", ":Config_"); + }else if(policyName.contains("Action_")){ + splitPolicyName = policyName.replace(".Action_", ":Action_"); + }else if(policyName.contains("Decision_")){ + splitPolicyName = policyName.replace(".Decision_", ":Decision_"); + } + split = splitPolicyName.split(":"); + queryCheck = false; + policyEntityQuery = em.createQuery("SELECT p FROM PolicyEntity p WHERE p.policyName=:pName and p.scope=:pScope"); + } - public void doAPIDeleteFromPDP(HttpServletRequest request, HttpServletResponse response, ONAPLoggingContext loggingContext) throws IOException { - - String policyName = request.getParameter("policyName"); - String groupId = request.getParameter("groupId"); - String responseString = null; - - if(groupId != null && !groupId.matches(REGEX) ){ - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - response.addHeader("error",ERROR); - response.addHeader("message", "Group Id is not valid"); - return; - } - - PolicyLogger.info("JSON request from API to Delete Policy from the PDP: " + policyName); + if(queryCheck){ + policyEntityQuery.setParameter("pName", "%"+split[1]+"%"); + }else{ + policyEntityQuery.setParameter("pName", split[1]); + } - // for PUT operations the group may or may not need to exist before the operation can be done - OnapPDPGroup group = null; - try { - group = XACMLPapServlet.getPAPEngine().getGroup(groupId); - } catch (PAPException e) { - PolicyLogger.error("Exception occured While PUT operation is performing for PDP Group"+e); - } - if (group == null) { - String message = "Unknown groupId '" + groupId + "'."; - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " " + message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - response.addHeader(ERROR, "UnknownGroup"); - response.addHeader("message", message); - response.setStatus(HttpServletResponse.SC_NOT_FOUND); - return; - } else { - loggingContext.setServiceName("API:PAP.deletPolicyFromPDPGroup"); - if (policyName.contains("xml")) { - PolicyLogger.debug("The full file name including the extension was provided for policyName.. continue."); - } else { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid policyName... " - + "policyName must be the full name of the file to be deleted including version and extension"; - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Invalid policyName... " - + "policyName must be the full name of the file to be deleted including version and extension"); - response.addHeader(ERROR, message); - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - return; - } - RemoveGroupPolicy removePolicy = new RemoveGroupPolicy((StdPDPGroup) group); - PDPPolicy policy = group.getPolicy(policyName); - if (policy != null) { - - if ((policy.getId().contains("Config_MS_")) || (policy.getId().contains("BRMS_Param"))) { - if (preSafetyCheck(policy)) { - PolicyLogger.debug("Precheck Successful."); - } - } - PolicyLogger.info("Preparing to remove policy from group: " + group.getId()); - removePolicy.prepareToRemove(policy); - OnapPDPGroup updatedGroup = removePolicy.getUpdatedObject(); - responseString = deletePolicyFromPDPGroup(updatedGroup, loggingContext); - } else { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Policy does not exist on the PDP."; - PolicyLogger.error(message); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Policy does not exist on the PDP."); - response.addHeader(ERROR, message); - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - return; - } - } - if (responseString.equals("success")) { - loggingContext.transactionEnded(); - PolicyLogger.info("Policy successfully deleted!"); - PolicyLogger.audit("Policy successfully deleted!"); - response.setStatus(HttpServletResponse.SC_OK); - response.addHeader("successMapKey", "success"); - response.addHeader("operation", "delete"); - return; - } else if (responseString.equals("No Group")) { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Group update had bad input."; - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Group update had bad input."); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - response.addHeader(ERROR, "groupUpdate"); - response.addHeader("message", message); - return; - } else if (responseString.equals("DB Error")) { - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW + " Error while updating group in the database"); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - response.addHeader(ERROR, "deleteDB"); - return; - } else { - PolicyLogger.error(MessageCodes.ERROR_UNKNOWN + " Failed to delete the policy for an unknown reason. Check the file system and other logs for further information."); - response.addHeader(ERROR, UNKNOWN); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR ); - return; - } - } + policyEntityQuery.setParameter("pScope", split[0]); + List<?> peResult = policyEntityQuery.getResultList(); + if(!peResult.isEmpty()){ + Query getPolicyVersion = em.createQuery("Select p from PolicyVersion p where p.policyName=:pname"); + getPolicyVersion.setParameter("pname", removeVersionExtension.replace(".", File.separator)); + List<?> pvResult = getPolicyVersion.getResultList(); + PolicyVersion pVersion = (PolicyVersion) pvResult.get(0); + int newVersion = 0; + em.getTransaction().begin(); + Class.forName(papDbDriver); + con = DriverManager.getConnection(papDbUrl,papDbUser,papDbPassword); - private String deletePolicyFromPDPGroup (OnapPDPGroup group, ONAPLoggingContext loggingContext){ - PolicyDBDaoTransaction acPutTransaction = XACMLPapServlet.getDbDaoTransaction(); - String response = null; - loggingContext.setServiceName("API:PAP.DeleteHandler"); - OnapPDPGroup existingGroup = null; - try { - existingGroup = XACMLPapServlet.getPAPEngine().getGroup(group.getId()); - } catch (PAPException e1) { - PolicyLogger.error("Exception occured While Deleting Policy From PDP Group"+e1); - } - if (!(group instanceof StdPDPGroup) || existingGroup == null || !(group.getId().equals(existingGroup.getId()))) { - String existingID = null; - if(existingGroup != null){ - existingID = existingGroup.getId(); - } - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Group update had bad input. id=" + existingID + " objectFromJSON="+group); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - response = "No Group"; - return response; - } - // The Path on the PAP side is not carried on the RESTful interface with the AC - // (because it is local to the PAP) - // so we need to fill that in before submitting the group for update - ((StdPDPGroup)group).setDirectory(((StdPDPGroup)existingGroup).getDirectory()); - try{ - acPutTransaction.updateGroup(group, "XACMLPapServlet.doDelete"); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " Error while updating group in the database: " - +"group="+existingGroup.getId()); - response = "DB Error"; - return response; - } - try { - XACMLPapServlet.getPAPEngine().updateGroup(group); - } catch (PAPException e) { - PolicyLogger.error("Exception occured While Updating PDP Groups"+e); - response = "error in updateGroup method"; - } - PolicyLogger.debug("Group '" + group.getId() + "' updated"); - acPutTransaction.commitTransaction(); - // Group changed, which might include changing the policies - try { - newgroup = existingGroup; - } catch (Exception e) { - PolicyLogger.error("Exception occured in Group Change Method"+e); - response = "error in groupChanged method"; - } - if (response==null){ - response = "success"; - loggingContext.transactionEnded(); - PolicyLogger.audit("Policy successfully deleted!"); - } - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Ended"); - return response; - } - - public OnapPDPGroup getDeletedGroup(){ - return newgroup; - } - - public boolean preSafetyCheck(PDPPolicy policy) { - return true; - } - - public static DeleteHandler getInstance() { - try { - Class<?> deleteHandler = Class.forName(XACMLProperties.getProperty("deletePolicy.impl.className", DeleteHandler.class.getName())); - return (DeleteHandler) deleteHandler.newInstance(); - } catch (Exception e) { - logger.error(e.getMessage(),e); - } - return null; - } + if(policy.getDeleteCondition().equalsIgnoreCase("All Versions")){ + boolean groupCheck = checkPolicyGroupEntity(con, peResult); + if(!groupCheck){ + for(Object peData : peResult){ + policyEntity = (PolicyEntity) peData; + status = deletePolicyEntityData(em, policyEntity); + } + }else{ + status = POLICY_IN_PDP; + } + if(status.equals(ERROR)){ + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + "Exception Occured while deleting the Entity from Database."); + response.addHeader(ERROR, UNKNOWN); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR ); + return; + }else if(status.equals(POLICY_IN_PDP)){ + PolicyLogger.error(MessageCodes.GENERAL_WARNING + "Policy can't be deleted, it is active in PDP Groups."); + response.addHeader(ERROR, POLICY_IN_PDP); + response.setStatus(HttpServletResponse.SC_CONFLICT); + return; + }else{ + try{ + policyVersionDeleted = true; + em.remove(pVersion); + }catch(Exception e){ + logger.error(e.getMessage(),e); + policyVersionDeleted = false; + } + } + }else if(policy.getDeleteCondition().equalsIgnoreCase("Current Version")){ + boolean groupCheck = checkPolicyGroupEntity(con, peResult); + if(!groupCheck){ + policyEntity = (PolicyEntity) peResult.get(0); + status = deletePolicyEntityData(em, policyEntity); + }else{ + status = POLICY_IN_PDP; + } + + if(ERROR.equals(status)){ + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + "Exception Occured while deleting the Entity from Database."); + response.addHeader(ERROR, UNKNOWN); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR ); + return; + }else if(POLICY_IN_PDP.equals(status)){ + PolicyLogger.error(MessageCodes.GENERAL_WARNING + "Policy can't be deleted, it is active in PDP Groups."); + response.addHeader(ERROR, POLICY_IN_PDP); + response.setStatus(HttpServletResponse.SC_CONFLICT); + return; + }else{ + if(currentVersion > 1){ + if(!peResult.isEmpty()){ + for(Object object : peResult){ + policyEntity = (PolicyEntity) object; + String policyEntityName = policyEntity.getPolicyName().replace(".xml", ""); + int policyEntityVersion = Integer.parseInt(policyEntityName.substring(policyEntityName.lastIndexOf('.')+1)); + if(policyEntityVersion > newVersion){ + newVersion = policyEntityVersion-1; + } + } + } + pVersion.setActiveVersion(newVersion); + pVersion.setHigherVersion(newVersion); + try{ + policyVersionDeleted = true; + em.persist(pVersion); + }catch(Exception e){ + logger.error(e.getMessage(),e); + policyVersionDeleted = false; + } + }else{ + try{ + policyVersionDeleted = true; + em.remove(pVersion); + }catch(Exception e){ + logger.error(e.getMessage(),e); + policyVersionDeleted = false; + } + } + } + } + }else{ + PolicyLogger.error(MessageCodes.ERROR_UNKNOWN + "Failed to delete the policy for an unknown reason. Check the file system and other logs for further information."); + response.addHeader(ERROR, UNKNOWN); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR ); + return; + } + } + em.getTransaction().commit(); + }catch(Exception e){ + em.getTransaction().rollback(); + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "XACMLPapServlet", " ERROR"); + response.addHeader(ERROR, "deleteDB"); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + return; + } finally { + em.close(); + if(con != null){ + con.close(); + } + } + + if (policyVersionDeleted) { + response.setStatus(HttpServletResponse.SC_OK); + response.addHeader("successMapKey", "success"); + response.addHeader("operation", "delete"); + return; + } else { + PolicyLogger.error(MessageCodes.ERROR_UNKNOWN + "Failed to delete the policy for an unknown reason. Check the file system and other logs for further information."); + response.addHeader(ERROR, UNKNOWN); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR ); + return; + } + } + + public static String deletePolicyEntityData(EntityManager em, PolicyEntity policyEntity){ + PolicyElasticSearchController controller = new PolicyElasticSearchController(); + PolicyRestAdapter policyData = new PolicyRestAdapter(); + String policyName = policyEntity.getPolicyName(); + try{ + if(policyName.contains("Config_")){ + em.remove(policyEntity.getConfigurationData()); + }else if(policyName.contains("Action_")){ + em.remove(policyEntity.getActionBodyEntity()); + } + String searchPolicyName = policyEntity.getScope() + "." + policyEntity.getPolicyName(); + policyData.setNewFileName(searchPolicyName); + controller.deleteElk(policyData); + em.remove(policyEntity); + }catch(Exception e){ + logger.error(e.getMessage(),e); + return ERROR; + } + return "success"; + } + + public static boolean checkPolicyGroupEntity(Connection con, List<?> peResult) throws SQLException{ + for(Object peData : peResult){ + PolicyEntity policyEntity = (PolicyEntity) peData; + try(Statement st = con.createStatement(); + ResultSet rs = st.executeQuery("Select * from PolicyGroupEntity where policyid = '"+policyEntity.getPolicyId()+"'")){ + boolean gEntityList = rs.next(); + if(gEntityList){ + return true; + } + } + } + return false; + } + + public void doAPIDeleteFromPDP(HttpServletRequest request, HttpServletResponse response, ONAPLoggingContext loggingContext) throws IOException { + + String policyName = request.getParameter("policyName"); + String groupId = request.getParameter("groupId"); + String responseString = null; + + if(groupId != null && !groupId.matches(REGEX) ){ + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + response.addHeader("error",ERROR); + response.addHeader("message", "Group Id is not valid"); + return; + } + + PolicyLogger.info("JSON request from API to Delete Policy from the PDP: " + policyName); + + // for PUT operations the group may or may not need to exist before the operation can be done + OnapPDPGroup group = null; + try { + group = XACMLPapServlet.getPAPEngine().getGroup(groupId); + } catch (PAPException e) { + PolicyLogger.error("Exception occured While PUT operation is performing for PDP Group"+e); + } + if (group == null) { + String message = "Unknown groupId '" + groupId + "'."; + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " " + message); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + response.addHeader(ERROR, "UnknownGroup"); + response.addHeader("message", message); + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + return; + } else { + loggingContext.setServiceName("API:PAP.deletPolicyFromPDPGroup"); + if (policyName.contains("xml")) { + PolicyLogger.debug("The full file name including the extension was provided for policyName.. continue."); + } else { + String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid policyName... " + + "policyName must be the full name of the file to be deleted including version and extension"; + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Invalid policyName... " + + "policyName must be the full name of the file to be deleted including version and extension"); + response.addHeader(ERROR, message); + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + return; + } + RemoveGroupPolicy removePolicy = new RemoveGroupPolicy((StdPDPGroup) group); + PDPPolicy policy = group.getPolicy(policyName); + if (policy != null) { + + if ((policy.getId().contains("Config_MS_")) || (policy.getId().contains("BRMS_Param"))) { + if (preSafetyCheck(policy)) { + PolicyLogger.debug("Precheck Successful."); + } + } + PolicyLogger.info("Preparing to remove policy from group: " + group.getId()); + removePolicy.prepareToRemove(policy); + OnapPDPGroup updatedGroup = removePolicy.getUpdatedObject(); + responseString = deletePolicyFromPDPGroup(updatedGroup, loggingContext); + } else { + String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Policy does not exist on the PDP."; + PolicyLogger.error(message); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Policy does not exist on the PDP."); + response.addHeader(ERROR, message); + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + return; + } + } + if (responseString.equals("success")) { + loggingContext.transactionEnded(); + PolicyLogger.info("Policy successfully deleted!"); + PolicyLogger.audit("Policy successfully deleted!"); + response.setStatus(HttpServletResponse.SC_OK); + response.addHeader("successMapKey", "success"); + response.addHeader("operation", "delete"); + return; + } else if (responseString.equals("No Group")) { + String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Group update had bad input."; + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Group update had bad input."); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + response.addHeader(ERROR, "groupUpdate"); + response.addHeader("message", message); + return; + } else if (responseString.equals("DB Error")) { + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW + " Error while updating group in the database"); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + response.addHeader(ERROR, "deleteDB"); + return; + } else { + PolicyLogger.error(MessageCodes.ERROR_UNKNOWN + " Failed to delete the policy for an unknown reason. Check the file system and other logs for further information."); + response.addHeader(ERROR, UNKNOWN); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR ); + return; + } + } + + private String deletePolicyFromPDPGroup (OnapPDPGroup group, ONAPLoggingContext loggingContext){ + PolicyDBDaoTransaction acPutTransaction = XACMLPapServlet.getDbDaoTransaction(); + String response = null; + loggingContext.setServiceName("API:PAP.DeleteHandler"); + OnapPDPGroup existingGroup = null; + try { + existingGroup = XACMLPapServlet.getPAPEngine().getGroup(group.getId()); + } catch (PAPException e1) { + PolicyLogger.error("Exception occured While Deleting Policy From PDP Group"+e1); + } + if (!(group instanceof StdPDPGroup) || existingGroup == null || !(group.getId().equals(existingGroup.getId()))) { + String existingID = null; + if(existingGroup != null){ + existingID = existingGroup.getId(); + } + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Group update had bad input. id=" + existingID + " objectFromJSON="+group); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + response = "No Group"; + return response; + } + // The Path on the PAP side is not carried on the RESTful interface with the AC + // (because it is local to the PAP) + // so we need to fill that in before submitting the group for update + ((StdPDPGroup)group).setDirectory(((StdPDPGroup)existingGroup).getDirectory()); + try{ + acPutTransaction.updateGroup(group, "XACMLPapServlet.doDelete"); + } catch(Exception e){ + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", " Error while updating group in the database: " + +"group="+existingGroup.getId()); + response = "DB Error"; + return response; + } + try { + XACMLPapServlet.getPAPEngine().updateGroup(group); + } catch (PAPException e) { + PolicyLogger.error("Exception occured While Updating PDP Groups"+e); + response = "error in updateGroup method"; + } + PolicyLogger.debug("Group '" + group.getId() + "' updated"); + acPutTransaction.commitTransaction(); + // Group changed, which might include changing the policies + try { + newgroup = existingGroup; + } catch (Exception e) { + PolicyLogger.error("Exception occured in Group Change Method"+e); + response = "error in groupChanged method"; + } + if (response==null){ + response = "success"; + loggingContext.transactionEnded(); + PolicyLogger.audit("Policy successfully deleted!"); + } + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Ended"); + return response; + } + + public OnapPDPGroup getDeletedGroup(){ + return newgroup; + } + + public boolean preSafetyCheck(PDPPolicy policy) { + return true; + } + + public static DeleteHandler getInstance() { + try { + Class<?> deleteHandler = Class.forName(XACMLProperties.getProperty("deletePolicy.impl.className", DeleteHandler.class.getName())); + return (DeleteHandler) deleteHandler.newInstance(); + } catch (Exception e) { + logger.error(e.getMessage(),e); + } + return null; + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DictionaryHandler.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DictionaryHandler.java index 6aec7a9bc..89ce18835 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DictionaryHandler.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DictionaryHandler.java @@ -28,38 +28,38 @@ import org.onap.policy.common.logging.flexlogger.Logger; import com.att.research.xacml.util.XACMLProperties; public interface DictionaryHandler { - public static final Logger logger = FlexLogger.getLogger(DictionaryHandler.class); - String DICTIONARY_DEFAULT_CLASS = DictionaryHandlerImpl.class.getName(); + public static final Logger logger = FlexLogger.getLogger(DictionaryHandler.class); + String DICTIONARY_DEFAULT_CLASS = DictionaryHandlerImpl.class.getName(); - /* - * Get Instance - */ - public static DictionaryHandler getInstance(){ - try { - Class<?> dictionaryHandler = Class.forName(XACMLProperties.getProperty("dictionary.impl.className", DICTIONARY_DEFAULT_CLASS)); - DictionaryHandler instance = (DictionaryHandler) dictionaryHandler.newInstance(); - return instance; - } catch (Exception e) { - logger.error(e.getMessage(),e); - } - return null; - } - - /* - * Get Equivalent for Dictionary Services. - */ - public void doDictionaryAPIGet(HttpServletRequest request, HttpServletResponse response); - /* - * Put Equivalent for Dictionary Services. - */ - public void doDictionaryAPIPut(HttpServletRequest request, HttpServletResponse response); - - /** - * Can be used to extend the services. - * - * getflag=true indicates Get Request. - * getflag=false indicates Put Request. - * @return - */ - public String extendedOptions(String dictionaryType, HttpServletRequest request, HttpServletResponse response, boolean getflag); + /* + * Get Instance + */ + public static DictionaryHandler getInstance(){ + try { + Class<?> dictionaryHandler = Class.forName(XACMLProperties.getProperty("dictionary.impl.className", DICTIONARY_DEFAULT_CLASS)); + DictionaryHandler instance = (DictionaryHandler) dictionaryHandler.newInstance(); + return instance; + } catch (Exception e) { + logger.error(e.getMessage(),e); + } + return null; + } + + /* + * Get Equivalent for Dictionary Services. + */ + public void doDictionaryAPIGet(HttpServletRequest request, HttpServletResponse response); + /* + * Put Equivalent for Dictionary Services. + */ + public void doDictionaryAPIPut(HttpServletRequest request, HttpServletResponse response); + + /** + * Can be used to extend the services. + * + * getflag=true indicates Get Request. + * getflag=false indicates Put Request. + * @return + */ + public String extendedOptions(String dictionaryType, HttpServletRequest request, HttpServletResponse response, boolean getflag); } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DictionaryHandlerImpl.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DictionaryHandlerImpl.java index d0cd985a3..b90592b02 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DictionaryHandlerImpl.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DictionaryHandlerImpl.java @@ -28,302 +28,302 @@ import org.onap.policy.pap.xacml.rest.service.DictionaryService; import org.onap.policy.xacml.api.XACMLErrorConstants; public class DictionaryHandlerImpl implements DictionaryHandler{ - /* - * Get Equivalent for Dictionary Services. - */ - public void doDictionaryAPIGet(HttpServletRequest request, HttpServletResponse response) { - String dictionaryType = request.getParameter("dictionaryType"); - try { - DictionaryService dictionary = new DictionaryService(); - switch (dictionaryType) { - case "OnapName": - dictionary.getOnapDictionary(response); - break; - case "Attribute": - dictionary.getAttributeDictionary(response); - break; - case "Action": - dictionary.getActionPolicyDictionary(response); - break; - case "BRMSParamTemplate": - dictionary.getBRMSParamDictionary(response); - break; - case "VSCLAction": - dictionary.getVSCLAction(response); - break; - case "VNFType": - dictionary.getVnfType(response); - break; - case "PEPOptions": - dictionary.getPEPOptions(response); - break; - case "Varbind": - dictionary.getVarbind(response); - break; - case "Service": - dictionary.getServiceType(response); - break; - case "Site": - dictionary.getSiteType(response); - break; - case "Settings": - dictionary.getSettingsDictionary(response); - break; - case "RainyDayTreatments": - dictionary.getRainyDayDictionary(response); - break; - case "DescriptiveScope": - dictionary.getDescriptiveDictionary(response); - break; - case "ActionList": - dictionary.getActionListDictionary(response); - break; - case "ProtocolList": - dictionary.getProtocolListDictionary(response); - break; - case "Zone": - dictionary.getZoneDictionary(response); - break; - case "SecurityZone": - dictionary.getSecurityZoneDictionary(response); - break; - case "PrefixList": - dictionary.getPrefixListDictionary(response); - break; - case "AddressGroup": - dictionary.getAddressGroupDictionary(response); - break; - case "ServiceGroup": - dictionary.getServiceGroupDictionary(response); - break; - case "ServiceList": - dictionary.getServiceListDictionary(response); - break; - case "TermList": - case "RuleList": - case "FirewallRuleList": - case "Term": - dictionary.getTermListDictionary(response); - break; - case "MicroServiceLocation": - dictionary.getMicroServiceLocationDictionary(response); - break; - case "MicroServiceConfigName": - dictionary.getMicroServiceConfigNameDictionary(response); - break; - case "DCAEUUID": - dictionary.getDCAEUUIDDictionary(response); - break; - case "MicroServiceModels": - dictionary.getMicroServiceModelsDictionary(response); - break; - case "MicroServiceDictionary": - dictionary.getMicroServiceDictionary(response); - break; - case "OptimizationModels": - dictionary.getOptimizationModelsDictionary(response); - break; - case "PolicyScopeService": - dictionary.getPSServiceDictionary(response); - break; - case "PolicyScopeResource": - dictionary.getPSResourceDictionary(response); - break; - case "PolicyScopeType": - dictionary.getPSTypeDictionary(response); - break; - case "PolicyScopeClosedLoop": - dictionary.getPSClosedLoopDictionary(response); - break; - case "GroupPolicyScopeList": - dictionary.getPSGroupScopeDictionary(response); - break; - case "RiskType": - dictionary.getRiskTypeDictionary(response); - break; - case "SafePolicyWarning": - dictionary.getSafePolicyWarningDictionary(response); - break; - default: - extendedOptions(dictionaryType, request, response, true); - return; - } - } catch (Exception e) { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + " Error Querying the Database: " + e.getMessage(); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "DictionaryHandler", " Error Querying the Database."); - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - response.addHeader("error", "dictionaryDBQuery"); - response.addHeader("error", message); - return; - } - } - - /** - * Can be used to extend the services. - * - * getflag=true indicates Get Request. - * getflag=false indicates Put Request. - * @return - */ - public String extendedOptions(String dictionaryType, HttpServletRequest request, HttpServletResponse response, boolean getflag) { - // Default code - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + " Invalid Dictionary in Request."; - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, "DictionaryHandler", " Invalid Dictionary in Request."); - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - response.setHeader("error", "dictionary"); - response.addHeader("error", message); - return null; - } + /* + * Get Equivalent for Dictionary Services. + */ + public void doDictionaryAPIGet(HttpServletRequest request, HttpServletResponse response) { + String dictionaryType = request.getParameter("dictionaryType"); + try { + DictionaryService dictionary = new DictionaryService(); + switch (dictionaryType) { + case "OnapName": + dictionary.getOnapDictionary(response); + break; + case "Attribute": + dictionary.getAttributeDictionary(response); + break; + case "Action": + dictionary.getActionPolicyDictionary(response); + break; + case "BRMSParamTemplate": + dictionary.getBRMSParamDictionary(response); + break; + case "VSCLAction": + dictionary.getVSCLAction(response); + break; + case "VNFType": + dictionary.getVnfType(response); + break; + case "PEPOptions": + dictionary.getPEPOptions(response); + break; + case "Varbind": + dictionary.getVarbind(response); + break; + case "Service": + dictionary.getServiceType(response); + break; + case "Site": + dictionary.getSiteType(response); + break; + case "Settings": + dictionary.getSettingsDictionary(response); + break; + case "RainyDayTreatments": + dictionary.getRainyDayDictionary(response); + break; + case "DescriptiveScope": + dictionary.getDescriptiveDictionary(response); + break; + case "ActionList": + dictionary.getActionListDictionary(response); + break; + case "ProtocolList": + dictionary.getProtocolListDictionary(response); + break; + case "Zone": + dictionary.getZoneDictionary(response); + break; + case "SecurityZone": + dictionary.getSecurityZoneDictionary(response); + break; + case "PrefixList": + dictionary.getPrefixListDictionary(response); + break; + case "AddressGroup": + dictionary.getAddressGroupDictionary(response); + break; + case "ServiceGroup": + dictionary.getServiceGroupDictionary(response); + break; + case "ServiceList": + dictionary.getServiceListDictionary(response); + break; + case "TermList": + case "RuleList": + case "FirewallRuleList": + case "Term": + dictionary.getTermListDictionary(response); + break; + case "MicroServiceLocation": + dictionary.getMicroServiceLocationDictionary(response); + break; + case "MicroServiceConfigName": + dictionary.getMicroServiceConfigNameDictionary(response); + break; + case "DCAEUUID": + dictionary.getDCAEUUIDDictionary(response); + break; + case "MicroServiceModels": + dictionary.getMicroServiceModelsDictionary(response); + break; + case "MicroServiceDictionary": + dictionary.getMicroServiceDictionary(response); + break; + case "OptimizationModels": + dictionary.getOptimizationModelsDictionary(response); + break; + case "PolicyScopeService": + dictionary.getPSServiceDictionary(response); + break; + case "PolicyScopeResource": + dictionary.getPSResourceDictionary(response); + break; + case "PolicyScopeType": + dictionary.getPSTypeDictionary(response); + break; + case "PolicyScopeClosedLoop": + dictionary.getPSClosedLoopDictionary(response); + break; + case "GroupPolicyScopeList": + dictionary.getPSGroupScopeDictionary(response); + break; + case "RiskType": + dictionary.getRiskTypeDictionary(response); + break; + case "SafePolicyWarning": + dictionary.getSafePolicyWarningDictionary(response); + break; + default: + extendedOptions(dictionaryType, request, response, true); + return; + } + } catch (Exception e) { + String message = XACMLErrorConstants.ERROR_DATA_ISSUE + " Error Querying the Database: " + e.getMessage(); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "DictionaryHandler", " Error Querying the Database."); + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + response.addHeader("error", "dictionaryDBQuery"); + response.addHeader("error", message); + return; + } + } - public void doDictionaryAPIPut(HttpServletRequest request, HttpServletResponse response) { - String result = null; - String dictionaryType = request.getParameter("dictionaryType"); - String operation = request.getParameter("operation"); - try { - DictionaryService dictionary = new DictionaryService(); - switch (dictionaryType) { - case "OnapName": - result = dictionary.saveOnapDictionary(request, response); - break; - case "Attribute": - result = dictionary.saveAttributeDictionary(request, response); - break; - case "Action": - result = dictionary.saveActionPolicyDictionary(request, response); - break; - case "BRMSParamTemplate": - result = dictionary.saveBRMSParamDictionary(request, response); - break; - case "VSCLAction": - result = dictionary.saveVSCLAction(request, response); - break; - case "VNFType": - result = dictionary.saveVnfType(request, response); - break; - case "PEPOptions": - result = dictionary.savePEPOptions(request, response); - break; - case "Varbind": - result = dictionary.saveVarbind(request, response); - break; - case "Service": - result = dictionary.saveServiceType(request, response); - break; - case "Site": - result = dictionary.saveSiteType(request, response); - break; - case "Settings": - result = dictionary.saveSettingsDictionary(request, response); - break; - case "RainyDayTreatments": - result = dictionary.saveRainyDayDictionary(request, response); - break; - case "DescriptiveScope": - result = dictionary.saveDescriptiveDictionary(request, response); - break; - case "ActionList": - result = dictionary.saveActionListDictionary(request, response); - break; - case "ProtocolList": - result = dictionary.saveProtocolListDictionary(request, response); - break; - case "Zone": - result = dictionary.saveZoneDictionary(request, response); - break; - case "SecurityZone": - result = dictionary.saveSecurityZoneDictionary(request, response); - break; - case "PrefixList": - result = dictionary.savePrefixListDictionary(request, response); - break; - case "AddressGroup": - result = dictionary.saveAddressGroupDictionary(request, response); - break; - case "ServiceGroup": - result = dictionary.saveServiceGroupDictionary(request, response); - break; - case "ServiceList": - result = dictionary.saveServiceListDictionary(request, response); - break; - case "TermList": - case "RuleList": - case "FirewallRuleList": - case "Term": - result = dictionary.saveTermListDictionary(request, response); - break; - case "MicroServiceLocation": - result = dictionary.saveMicroServiceLocationDictionary(request, response); - break; - case "MicroServiceConfigName": - result = dictionary.saveMicroServiceConfigNameDictionary(request, response); - break; - case "DCAEUUID": - result = dictionary.saveDCAEUUIDDictionary(request, response); - break; - case "MicroServiceModels": - result = dictionary.saveMicroServiceModelsDictionary(request, response); - break; - case "MicroServiceDictionary": - result = dictionary.saveMicroServiceDictionary(request, response); - break; - case "OptimizationModels": - result = dictionary.saveOptimizationModelsDictionary(request, response); - break; - case "PolicyScopeService": - result = dictionary.savePSServiceDictionary(request, response); - break; - case "PolicyScopeResource": - result = dictionary.savePSResourceDictionary(request, response); - break; - case "PolicyScopeType": - result = dictionary.savePSTypeDictionary(request, response); - break; - case "PolicyScopeClosedLoop": - result = dictionary.savePSClosedLoopDictionary(request, response); - break; - case "GroupPolicyScopeList": - result = dictionary.savePSGroupScopeDictionary(request, response); - break; - case "RiskType": - result = dictionary.saveRiskTypeDictionary(request, response); - break; - case "SafePolicyWarning": - result = dictionary.saveSafePolicyWarningDictionary(request, response); - break; - default: - result = extendedOptions(dictionaryType, request, response, false); - if(result==null){ - return; - }else{ - break; - } - } - } catch (Exception e) { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + " Error Updating the Database: " + e.getMessage(); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "XACMLPapServlet", " Error Updating the Database."); - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - response.addHeader("error", message); - return; - } - if (result.equalsIgnoreCase("Success")) { - response.setStatus(HttpServletResponse.SC_OK); - response.addHeader("successMapKey", "success"); - if (operation.equalsIgnoreCase("update")) { - response.addHeader("operation", "updateDictionary"); - } else { - response.addHeader("operation", "createDictionary"); - } - } else if (result.equalsIgnoreCase("Duplicate")) { - response.setStatus(HttpServletResponse.SC_CONFLICT); - response.addHeader("error", "dictionaryItemExists"); - } else if (result.equalsIgnoreCase("DuplicateGroup")) { - response.setStatus(HttpServletResponse.SC_CONFLICT); - response.addHeader("error", "duplicateGroup"); - } else { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + " Error Updating the Database."; - PolicyLogger.error(message); - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - response.addHeader("error", message); - } - } + /** + * Can be used to extend the services. + * + * getflag=true indicates Get Request. + * getflag=false indicates Put Request. + * @return + */ + public String extendedOptions(String dictionaryType, HttpServletRequest request, HttpServletResponse response, boolean getflag) { + // Default code + String message = XACMLErrorConstants.ERROR_DATA_ISSUE + " Invalid Dictionary in Request."; + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, "DictionaryHandler", " Invalid Dictionary in Request."); + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + response.setHeader("error", "dictionary"); + response.addHeader("error", message); + return null; + } + + public void doDictionaryAPIPut(HttpServletRequest request, HttpServletResponse response) { + String result = null; + String dictionaryType = request.getParameter("dictionaryType"); + String operation = request.getParameter("operation"); + try { + DictionaryService dictionary = new DictionaryService(); + switch (dictionaryType) { + case "OnapName": + result = dictionary.saveOnapDictionary(request, response); + break; + case "Attribute": + result = dictionary.saveAttributeDictionary(request, response); + break; + case "Action": + result = dictionary.saveActionPolicyDictionary(request, response); + break; + case "BRMSParamTemplate": + result = dictionary.saveBRMSParamDictionary(request, response); + break; + case "VSCLAction": + result = dictionary.saveVSCLAction(request, response); + break; + case "VNFType": + result = dictionary.saveVnfType(request, response); + break; + case "PEPOptions": + result = dictionary.savePEPOptions(request, response); + break; + case "Varbind": + result = dictionary.saveVarbind(request, response); + break; + case "Service": + result = dictionary.saveServiceType(request, response); + break; + case "Site": + result = dictionary.saveSiteType(request, response); + break; + case "Settings": + result = dictionary.saveSettingsDictionary(request, response); + break; + case "RainyDayTreatments": + result = dictionary.saveRainyDayDictionary(request, response); + break; + case "DescriptiveScope": + result = dictionary.saveDescriptiveDictionary(request, response); + break; + case "ActionList": + result = dictionary.saveActionListDictionary(request, response); + break; + case "ProtocolList": + result = dictionary.saveProtocolListDictionary(request, response); + break; + case "Zone": + result = dictionary.saveZoneDictionary(request, response); + break; + case "SecurityZone": + result = dictionary.saveSecurityZoneDictionary(request, response); + break; + case "PrefixList": + result = dictionary.savePrefixListDictionary(request, response); + break; + case "AddressGroup": + result = dictionary.saveAddressGroupDictionary(request, response); + break; + case "ServiceGroup": + result = dictionary.saveServiceGroupDictionary(request, response); + break; + case "ServiceList": + result = dictionary.saveServiceListDictionary(request, response); + break; + case "TermList": + case "RuleList": + case "FirewallRuleList": + case "Term": + result = dictionary.saveTermListDictionary(request, response); + break; + case "MicroServiceLocation": + result = dictionary.saveMicroServiceLocationDictionary(request, response); + break; + case "MicroServiceConfigName": + result = dictionary.saveMicroServiceConfigNameDictionary(request, response); + break; + case "DCAEUUID": + result = dictionary.saveDCAEUUIDDictionary(request, response); + break; + case "MicroServiceModels": + result = dictionary.saveMicroServiceModelsDictionary(request, response); + break; + case "MicroServiceDictionary": + result = dictionary.saveMicroServiceDictionary(request, response); + break; + case "OptimizationModels": + result = dictionary.saveOptimizationModelsDictionary(request, response); + break; + case "PolicyScopeService": + result = dictionary.savePSServiceDictionary(request, response); + break; + case "PolicyScopeResource": + result = dictionary.savePSResourceDictionary(request, response); + break; + case "PolicyScopeType": + result = dictionary.savePSTypeDictionary(request, response); + break; + case "PolicyScopeClosedLoop": + result = dictionary.savePSClosedLoopDictionary(request, response); + break; + case "GroupPolicyScopeList": + result = dictionary.savePSGroupScopeDictionary(request, response); + break; + case "RiskType": + result = dictionary.saveRiskTypeDictionary(request, response); + break; + case "SafePolicyWarning": + result = dictionary.saveSafePolicyWarningDictionary(request, response); + break; + default: + result = extendedOptions(dictionaryType, request, response, false); + if(result==null){ + return; + }else{ + break; + } + } + } catch (Exception e) { + String message = XACMLErrorConstants.ERROR_DATA_ISSUE + " Error Updating the Database: " + e.getMessage(); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "XACMLPapServlet", " Error Updating the Database."); + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + response.addHeader("error", message); + return; + } + if (result.equalsIgnoreCase("Success")) { + response.setStatus(HttpServletResponse.SC_OK); + response.addHeader("successMapKey", "success"); + if (operation.equalsIgnoreCase("update")) { + response.addHeader("operation", "updateDictionary"); + } else { + response.addHeader("operation", "createDictionary"); + } + } else if (result.equalsIgnoreCase("Duplicate")) { + response.setStatus(HttpServletResponse.SC_CONFLICT); + response.addHeader("error", "dictionaryItemExists"); + } else if (result.equalsIgnoreCase("DuplicateGroup")) { + response.setStatus(HttpServletResponse.SC_CONFLICT); + response.addHeader("error", "duplicateGroup"); + } else { + String message = XACMLErrorConstants.ERROR_DATA_ISSUE + " Error Updating the Database."; + PolicyLogger.error(message); + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + response.addHeader("error", message); + } + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/PushPolicyHandler.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/PushPolicyHandler.java index 6e348fb1b..4dd87e22f 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/PushPolicyHandler.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/PushPolicyHandler.java @@ -39,86 +39,86 @@ import org.onap.policy.common.logging.flexlogger.Logger; import com.att.research.xacml.util.XACMLProperties; public class PushPolicyHandler { - private static final Logger logger = FlexLogger.getLogger(PushPolicyHandler.class); - /* - * Get Active Version. - */ - public void getActiveVersion(HttpServletRequest request, HttpServletResponse response) { - EntityManager em = null; - if(XACMLPapServlet.getEmf()!=null){ - em = (EntityManager) XACMLPapServlet.getEmf().createEntityManager(); - } - if (em==null){ - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Error creating entity manager with persistence unit: " + XACMLPapServlet.getPersistenceUnit()); - return; - } - String policyScope = request.getParameter("policyScope"); - String filePrefix = request.getParameter("filePrefix"); - String policyName = request.getParameter("policyName"); + private static final Logger logger = FlexLogger.getLogger(PushPolicyHandler.class); + /* + * Get Active Version. + */ + public void getActiveVersion(HttpServletRequest request, HttpServletResponse response) { + EntityManager em = null; + if(XACMLPapServlet.getEmf()!=null){ + em = (EntityManager) XACMLPapServlet.getEmf().createEntityManager(); + } + if (em==null){ + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Error creating entity manager with persistence unit: " + XACMLPapServlet.getPersistenceUnit()); + return; + } + String policyScope = request.getParameter("policyScope"); + String filePrefix = request.getParameter("filePrefix"); + String policyName = request.getParameter("policyName"); - String pvName = policyScope + File.separator + filePrefix + policyName; - int activeVersion = 0; + String pvName = policyScope + File.separator + filePrefix + policyName; + int activeVersion = 0; - //Get the Active Version to use in the ID - em.getTransaction().begin(); - Query query = em.createQuery("Select p from PolicyVersion p where p.policyName=:pname"); - query.setParameter("pname", pvName); + //Get the Active Version to use in the ID + em.getTransaction().begin(); + Query query = em.createQuery("Select p from PolicyVersion p where p.policyName=:pname"); + query.setParameter("pname", pvName); - @SuppressWarnings("rawtypes") - List result = query.getResultList(); - PolicyVersion versionEntity = null; - if (!result.isEmpty()) { - versionEntity = (PolicyVersion) result.get(0); - em.persist(versionEntity); - activeVersion = versionEntity.getActiveVersion(); - em.getTransaction().commit(); - } else { - PolicyLogger.debug("No PolicyVersion using policyName found"); - } + @SuppressWarnings("rawtypes") + List result = query.getResultList(); + PolicyVersion versionEntity = null; + if (!result.isEmpty()) { + versionEntity = (PolicyVersion) result.get(0); + em.persist(versionEntity); + activeVersion = versionEntity.getActiveVersion(); + em.getTransaction().commit(); + } else { + PolicyLogger.debug("No PolicyVersion using policyName found"); + } - //clean up connection - em.close(); - if (String.valueOf(activeVersion)!=null || !String.valueOf(activeVersion).equalsIgnoreCase("")) { - response.setStatus(HttpServletResponse.SC_OK); - response.addHeader("version", String.valueOf(activeVersion)); - } else { - response.setStatus(HttpServletResponse.SC_NOT_FOUND); - } - } - - /* - * Get Selected URI path. - */ - public void getSelectedURI(HttpServletRequest request, HttpServletResponse response) { - String gitPath = request.getParameter("gitPath"); - File file = new File(gitPath); - PolicyLogger.debug("The fileItem is : " + file.toString()); - URI selectedURI = file.toURI(); - String uri = selectedURI.toString(); - if (!uri.equalsIgnoreCase("")) { - response.setStatus(HttpServletResponse.SC_OK); - response.addHeader("selectedURI", uri); - } else { - response.setStatus(HttpServletResponse.SC_NOT_FOUND); - } - } - - public boolean preSafetyCheck(StdPDPPolicy policy, String configHome){ - return true; - } - - public boolean preSafetyCheck(OnapPDPGroup policy, String configHome){ - return true; - } - - public static PushPolicyHandler getInstance() { - try { - Class<?> pushPolicyHandler = Class.forName(XACMLProperties.getProperty("pushPolicy.impl.className", PushPolicyHandler.class.getName())); - PushPolicyHandler instance = (PushPolicyHandler) pushPolicyHandler.newInstance(); - return instance; - } catch (Exception e) { - logger.error(e.getMessage(),e); - } - return null; - } + //clean up connection + em.close(); + if (String.valueOf(activeVersion)!=null || !String.valueOf(activeVersion).equalsIgnoreCase("")) { + response.setStatus(HttpServletResponse.SC_OK); + response.addHeader("version", String.valueOf(activeVersion)); + } else { + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + } + } + + /* + * Get Selected URI path. + */ + public void getSelectedURI(HttpServletRequest request, HttpServletResponse response) { + String gitPath = request.getParameter("gitPath"); + File file = new File(gitPath); + PolicyLogger.debug("The fileItem is : " + file.toString()); + URI selectedURI = file.toURI(); + String uri = selectedURI.toString(); + if (!uri.equalsIgnoreCase("")) { + response.setStatus(HttpServletResponse.SC_OK); + response.addHeader("selectedURI", uri); + } else { + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + } + } + + public boolean preSafetyCheck(StdPDPPolicy policy, String configHome){ + return true; + } + + public boolean preSafetyCheck(OnapPDPGroup policy, String configHome){ + return true; + } + + public static PushPolicyHandler getInstance() { + try { + Class<?> pushPolicyHandler = Class.forName(XACMLProperties.getProperty("pushPolicy.impl.className", PushPolicyHandler.class.getName())); + PushPolicyHandler instance = (PushPolicyHandler) pushPolicyHandler.newInstance(); + return instance; + } catch (Exception e) { + logger.error(e.getMessage(),e); + } + return null; + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/SavePolicyHandler.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/SavePolicyHandler.java index 6606d383b..335434fd4 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/SavePolicyHandler.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/SavePolicyHandler.java @@ -40,127 +40,127 @@ import org.xml.sax.SAXException; import com.att.research.xacml.util.XACMLProperties; public class SavePolicyHandler { - private static final Logger logger = FlexLogger.getLogger(SavePolicyHandler.class); - private HashMap<String, String> ErrorHeaders = null; - - public void doPolicyAPIPut(HttpServletRequest request, HttpServletResponse response) throws IOException { - String operation = request.getParameter("operation"); - String policyType = request.getParameter("policyType"); - String apiflag = request.getParameter("apiflag"); - PolicyCreation creation = new PolicyCreation(); + private static final Logger logger = FlexLogger.getLogger(SavePolicyHandler.class); + private HashMap<String, String> ErrorHeaders = null; + + public void doPolicyAPIPut(HttpServletRequest request, HttpServletResponse response) throws IOException { + String operation = request.getParameter("operation"); + String policyType = request.getParameter("policyType"); + String apiflag = request.getParameter("apiflag"); + PolicyCreation creation = new PolicyCreation(); if ( policyType != null ) { - PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); - if("update".equalsIgnoreCase(operation)){ - policyAdapter.setEditPolicy(true); - }else{ - policyAdapter.setEditPolicy(false); - } - - // get the request content into a String - String json = null; - // read the inputStream into a buffer (trick found online scans entire input looking for end-of-file) - java.util.Scanner scanner = new java.util.Scanner(request.getInputStream()); - scanner.useDelimiter("\\A"); - json = scanner.hasNext() ? scanner.next() : ""; - scanner.close(); - - if(policyAdapter.isEditPolicy()){ - PolicyLogger.info("SavePolicyHandler: JSON request from API to update a policy: " + json); - } else { - PolicyLogger.info("SavePolicyHandler: JSON request from API to create a policy: " + json); - } - - // convert Object sent as JSON into local object - StdPAPPolicy policy = PolicyUtils.jsonStringToObject(json, StdPAPPolicy.class); - //Set policyAdapter values including parentPath (Common to all policy types) - try { - PolicyLogger.info("SavePolicyHandler: Setting parameter values to PolicyAdapter"); + PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); + if("update".equalsIgnoreCase(operation)){ + policyAdapter.setEditPolicy(true); + }else{ + policyAdapter.setEditPolicy(false); + } + + // get the request content into a String + String json = null; + // read the inputStream into a buffer (trick found online scans entire input looking for end-of-file) + java.util.Scanner scanner = new java.util.Scanner(request.getInputStream()); + scanner.useDelimiter("\\A"); + json = scanner.hasNext() ? scanner.next() : ""; + scanner.close(); + + if(policyAdapter.isEditPolicy()){ + PolicyLogger.info("SavePolicyHandler: JSON request from API to update a policy: " + json); + } else { + PolicyLogger.info("SavePolicyHandler: JSON request from API to create a policy: " + json); + } + + // convert Object sent as JSON into local object + StdPAPPolicy policy = PolicyUtils.jsonStringToObject(json, StdPAPPolicy.class); + //Set policyAdapter values including parentPath (Common to all policy types) + try { + PolicyLogger.info("SavePolicyHandler: Setting parameter values to PolicyAdapter"); policyAdapter = setDataToPolicyAdapter(policy, policyType, apiflag); if(!extendedPolicyOptions(policyAdapter, response)){ - creation.savePolicy(policyAdapter, response); + creation.savePolicy(policyAdapter, response); } if ("update".equalsIgnoreCase(operation)) { - response.addHeader("operation", "update"); - } else { - response.addHeader("operation", "create"); - } - } catch (Exception e1) { - logger.error("Could not set data to policy adapter "+e1.getMessage(),e1); - } + response.addHeader("operation", "update"); + } else { + response.addHeader("operation", "create"); + } + } catch (Exception e1) { + logger.error("Could not set data to policy adapter "+e1.getMessage(),e1); + } } - } + } - private PolicyRestAdapter setDataToPolicyAdapter(StdPAPPolicy policy, String policyType, String apiflag) throws ParserConfigurationException, ServletException, SAXException, IOException{ - PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); - policyAdapter.setApiflag(apiflag); - /* - * set policy adapter values for Building JSON object containing policy data - */ - //Common among policy types - policyAdapter.setPolicyName(policy.getPolicyName()); - policyAdapter.setPolicyDescription(policy.getPolicyDescription()); - policyAdapter.setOnapName(policy.getOnapName()); //Config Base and Decision Policies - policyAdapter.setRuleCombiningAlgId("urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides"); - - policyAdapter.setPolicyType(policyType); - policyAdapter.setDynamicFieldConfigAttributes(policy.getDynamicFieldConfigAttributes()); - policyAdapter.setEditPolicy(policy.isEditPolicy()); - policyAdapter.setEntityManagerFactory(XACMLPapServlet.getEmf()); - //Config Specific - policyAdapter.setConfigName(policy.getConfigName()); //Base and Firewall - policyAdapter.setConfigBodyData(policy.getConfigBodyData()); //Base - policyAdapter.setConfigType((policy.getConfigType()!=null) ? policy.getConfigType().toUpperCase(): null); //Base - policyAdapter.setJsonBody(policy.getJsonBody()); //Firewall, ClosedLoop - policyAdapter.setConfigPolicyType(policy.getConfigPolicyType()); - policyAdapter.setDraft(policy.isDraft()); //ClosedLoop_Fault - policyAdapter.setServiceType(policy.getServiceType()); //ClosedLoop_PM - policyAdapter.setUuid(policy.getUuid()); //Micro Service - policyAdapter.setLocation(policy.getMsLocation()); //Micro Service - policyAdapter.setPriority(policy.getPriority()); //Micro Service - policyAdapter.setPolicyScope(policy.getDomainDir()); - policyAdapter.setRiskType(policy.getRiskType()); //Safe Policy Attributes - policyAdapter.setRiskLevel(policy.getRiskLevel());//Safe Policy Attributes - policyAdapter.setGuard(policy.getGuard());//Safe Policy Attributes - policyAdapter.setTtlDate(policy.getTTLDate());//Safe Policy Attributes - policyAdapter.setBrmsParamBody(policy.getDrlRuleAndUIParams()); + private PolicyRestAdapter setDataToPolicyAdapter(StdPAPPolicy policy, String policyType, String apiflag) throws ParserConfigurationException, ServletException, SAXException, IOException{ + PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); + policyAdapter.setApiflag(apiflag); + /* + * set policy adapter values for Building JSON object containing policy data + */ + //Common among policy types + policyAdapter.setPolicyName(policy.getPolicyName()); + policyAdapter.setPolicyDescription(policy.getPolicyDescription()); + policyAdapter.setOnapName(policy.getOnapName()); //Config Base and Decision Policies + policyAdapter.setRuleCombiningAlgId("urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides"); + + policyAdapter.setPolicyType(policyType); + policyAdapter.setDynamicFieldConfigAttributes(policy.getDynamicFieldConfigAttributes()); + policyAdapter.setEditPolicy(policy.isEditPolicy()); + policyAdapter.setEntityManagerFactory(XACMLPapServlet.getEmf()); + //Config Specific + policyAdapter.setConfigName(policy.getConfigName()); //Base and Firewall + policyAdapter.setConfigBodyData(policy.getConfigBodyData()); //Base + policyAdapter.setConfigType((policy.getConfigType()!=null) ? policy.getConfigType().toUpperCase(): null); //Base + policyAdapter.setJsonBody(policy.getJsonBody()); //Firewall, ClosedLoop + policyAdapter.setConfigPolicyType(policy.getConfigPolicyType()); + policyAdapter.setDraft(policy.isDraft()); //ClosedLoop_Fault + policyAdapter.setServiceType(policy.getServiceType()); //ClosedLoop_PM + policyAdapter.setUuid(policy.getUuid()); //Micro Service + policyAdapter.setLocation(policy.getMsLocation()); //Micro Service + policyAdapter.setPriority(policy.getPriority()); //Micro Service + policyAdapter.setPolicyScope(policy.getDomainDir()); + policyAdapter.setRiskType(policy.getRiskType()); //Safe Policy Attributes + policyAdapter.setRiskLevel(policy.getRiskLevel());//Safe Policy Attributes + policyAdapter.setGuard(policy.getGuard());//Safe Policy Attributes + policyAdapter.setTtlDate(policy.getTTLDate());//Safe Policy Attributes + policyAdapter.setBrmsParamBody(policy.getDrlRuleAndUIParams()); policyAdapter.setBrmsDependency(policy.getBrmsDependency()); // BRMS Policies. policyAdapter.setBrmsController(policy.getBrmsController()); // BRMS Policies. - //Action Policy Specific - policyAdapter.setActionAttribute(policy.getActionAttribute()); //comboDictValue - policyAdapter.setActionPerformer(policy.getActionPerformer()); - policyAdapter.setDynamicRuleAlgorithmLabels(policy.getDynamicRuleAlgorithmLabels()); - policyAdapter.setDynamicRuleAlgorithmCombo(policy.getDynamicRuleAlgorithmCombo()); - policyAdapter.setDynamicRuleAlgorithmField1(policy.getDynamicRuleAlgorithmField1()); - policyAdapter.setDynamicRuleAlgorithmField2(policy.getDynamicRuleAlgorithmField2()); - //Decision Policy Specific - policyAdapter.setDynamicSettingsMap(policy.getDynamicSettingsMap()); - policyAdapter.setRuleProvider(policy.getProviderComboBox()); - policyAdapter.setDomainDir(policyAdapter.getPolicyScope()); - policyAdapter.setRainydayMap(policy.getTreatments()); + //Action Policy Specific + policyAdapter.setActionAttribute(policy.getActionAttribute()); //comboDictValue + policyAdapter.setActionPerformer(policy.getActionPerformer()); + policyAdapter.setDynamicRuleAlgorithmLabels(policy.getDynamicRuleAlgorithmLabels()); + policyAdapter.setDynamicRuleAlgorithmCombo(policy.getDynamicRuleAlgorithmCombo()); + policyAdapter.setDynamicRuleAlgorithmField1(policy.getDynamicRuleAlgorithmField1()); + policyAdapter.setDynamicRuleAlgorithmField2(policy.getDynamicRuleAlgorithmField2()); + //Decision Policy Specific + policyAdapter.setDynamicSettingsMap(policy.getDynamicSettingsMap()); + policyAdapter.setRuleProvider(policy.getProviderComboBox()); + policyAdapter.setDomainDir(policyAdapter.getPolicyScope()); + policyAdapter.setRainydayMap(policy.getTreatments()); + + return policyAdapter; + } - return policyAdapter; - } - - public boolean extendedPolicyOptions(PolicyRestAdapter policyAdapter, HttpServletResponse response){ - return false; - } - - public void addErrorHeader(String key, String value){ - if(ErrorHeaders==null){ - ErrorHeaders= new HashMap<>(); - } - ErrorHeaders.put(key, value); - } + public boolean extendedPolicyOptions(PolicyRestAdapter policyAdapter, HttpServletResponse response){ + return false; + } - public static SavePolicyHandler getInstance() { - try { - Class<?> savePolicyHandler = Class.forName(XACMLProperties.getProperty("savePolicy.impl.className", SavePolicyHandler.class.getName())); - SavePolicyHandler instance = (SavePolicyHandler) savePolicyHandler.newInstance(); - return instance; - } catch (Exception e) { - logger.error(e.getMessage(),e); - } - return null; - } + public void addErrorHeader(String key, String value){ + if(ErrorHeaders==null){ + ErrorHeaders= new HashMap<>(); + } + ErrorHeaders.put(key, value); + } + + public static SavePolicyHandler getInstance() { + try { + Class<?> savePolicyHandler = Class.forName(XACMLProperties.getProperty("savePolicy.impl.className", SavePolicyHandler.class.getName())); + SavePolicyHandler instance = (SavePolicyHandler) savePolicyHandler.newInstance(); + return instance; + } catch (Exception e) { + logger.error(e.getMessage(),e); + } + return null; + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/model/RemoveGroupPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/model/RemoveGroupPolicy.java index 8c891bf69..2d98b820d 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/model/RemoveGroupPolicy.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/model/RemoveGroupPolicy.java @@ -32,74 +32,74 @@ import com.att.research.xacml.api.pap.PDPPolicy; public class RemoveGroupPolicy { - - //Container from where we are fetching the policies - private static PDPPolicyContainer policyContainer; - - private RemoveGroupPolicy self = this; - private StdPDPGroup updatedObject; - private final StdPDPGroup group; - private boolean isSaved = false; - - public RemoveGroupPolicy(StdPDPGroup group) { - - this.group = group; - - } - - public void prepareToRemove(PDPPolicy policy) { - - if (this.group == null) { - return; - } - setRemoveGroupPolicy(new PDPPolicyContainer(group)); - - RemoveGroupPolicy.policyContainer.removeItem(policy); - - self.doSave(); - - self.isSaved = true; - - } - - private static void setRemoveGroupPolicy(PDPPolicyContainer pdpPolicyContainer) { + + //Container from where we are fetching the policies + private static PDPPolicyContainer policyContainer; + + private RemoveGroupPolicy self = this; + private StdPDPGroup updatedObject; + private final StdPDPGroup group; + private boolean isSaved = false; + + public RemoveGroupPolicy(StdPDPGroup group) { + + this.group = group; + + } + + public void prepareToRemove(PDPPolicy policy) { + + if (this.group == null) { + return; + } + setRemoveGroupPolicy(new PDPPolicyContainer(group)); + + RemoveGroupPolicy.policyContainer.removeItem(policy); + + self.doSave(); + + self.isSaved = true; + + } + + private static void setRemoveGroupPolicy(PDPPolicyContainer pdpPolicyContainer) { RemoveGroupPolicy.policyContainer = pdpPolicyContainer; } @SuppressWarnings("unchecked") - protected void doSave() { - if (this.group == null) { - return; - } - - StdPDPGroup updatedGroupObject = new StdPDPGroup( - group.getId(), - group.isDefaultGroup(), - group.getName(), - group.getDescription(), - null); - - // replace the original set of Policies with the set from the container (possibly modified by the user) - Set<PDPPolicy> changedPolicies = new HashSet<>(); - changedPolicies.addAll((Collection<PDPPolicy>) RemoveGroupPolicy.policyContainer.getItemIds()); - updatedGroupObject.setPolicies(changedPolicies); - updatedGroupObject.setOnapPdps(this.group.getOnapPdps()); - - // replace the original set of PIP Configs with the set from the container - updatedGroupObject.setPipConfigs(this.group.getPipConfigs()); - - // copy those things that the user cannot change from the original to the new object - updatedGroupObject.setStatus(this.group.getStatus()); - - this.updatedObject = updatedGroupObject; - } - - public boolean isRemoved() { - return this.isSaved; - } - - public OnapPDPGroup getUpdatedObject() { - return this.updatedObject; - } + protected void doSave() { + if (this.group == null) { + return; + } + + StdPDPGroup updatedGroupObject = new StdPDPGroup( + group.getId(), + group.isDefaultGroup(), + group.getName(), + group.getDescription(), + null); + + // replace the original set of Policies with the set from the container (possibly modified by the user) + Set<PDPPolicy> changedPolicies = new HashSet<>(); + changedPolicies.addAll((Collection<PDPPolicy>) RemoveGroupPolicy.policyContainer.getItemIds()); + updatedGroupObject.setPolicies(changedPolicies); + updatedGroupObject.setOnapPdps(this.group.getOnapPdps()); + + // replace the original set of PIP Configs with the set from the container + updatedGroupObject.setPipConfigs(this.group.getPipConfigs()); + + // copy those things that the user cannot change from the original to the new object + updatedGroupObject.setStatus(this.group.getStatus()); + + this.updatedObject = updatedGroupObject; + } + + public boolean isRemoved() { + return this.isSaved; + } + + public OnapPDPGroup getUpdatedObject() { + return this.updatedObject; + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/policycontroller/PolicyCreation.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/policycontroller/PolicyCreation.java index a6cda5e68..951f25c25 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/policycontroller/PolicyCreation.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/policycontroller/PolicyCreation.java @@ -76,428 +76,428 @@ import com.fasterxml.jackson.databind.ObjectMapper; @RequestMapping("/") public class PolicyCreation extends AbstractPolicyCreation{ - private static final Logger LOGGER = FlexLogger.getLogger(PolicyCreation.class); - - private String ruleID = ""; - private PolicyDBDao policyDBDao; - String CLName = null; - - private static CommonClassDao commonClassDao; - - public static CommonClassDao getCommonClassDao() { - return commonClassDao; - } - - public static void setCommonClassDao(CommonClassDao commonClassDao) { - PolicyCreation.commonClassDao = commonClassDao; - } - - @Autowired - public PolicyCreation(CommonClassDao commonClassDao){ - PolicyCreation.commonClassDao = commonClassDao; - } - - public PolicyCreation(){} - - @RequestMapping(value="/policycreation/save_policy", method = RequestMethod.POST) - @ResponseBody - public ResponseEntity<String> savePolicy(@RequestBody PolicyRestAdapter policyData, HttpServletResponse response){ - String body = null; - HttpStatus status = HttpStatus.BAD_REQUEST; - Map<String, String> successMap = new HashMap<>(); - Map<String, String> attributeMap = new HashMap<>(); - PolicyVersion policyVersionDao; - try { - - Policy newPolicy = null; - String policyConfigType = null; - String userId = policyData.getUserId(); - - if (policyData.getTtlDate()==null){ - policyData.setTtlDate("NA"); - }else{ - String dateTTL = policyData.getTtlDate(); - String newDate = convertDate(dateTTL); - policyData.setTtlDate(newDate); - } - - String policyType = policyData.getPolicyType(); - - String filePrefix = null; - if ("Config".equalsIgnoreCase(policyType)) { - policyConfigType = policyData.getConfigPolicyType(); - if ("Firewall Config".equalsIgnoreCase(policyConfigType)) { - filePrefix = "Config_FW_"; - }else if ("ClosedLoop_Fault".equalsIgnoreCase(policyConfigType)) { - filePrefix = "Config_Fault_"; - }else if ("ClosedLoop_PM".equalsIgnoreCase(policyConfigType)) { - filePrefix = "Config_PM_"; - }else if ("Micro Service".equalsIgnoreCase(policyConfigType)) { - filePrefix = "Config_MS_"; - }else if ("Optimization".equalsIgnoreCase(policyConfigType)) { - filePrefix = "Config_OOF_"; - }else if ("BRMS_Raw".equalsIgnoreCase(policyConfigType)) { - filePrefix = "Config_BRMS_Raw_"; - }else if ("BRMS_Param".equalsIgnoreCase(policyConfigType)) { - filePrefix = "Config_BRMS_Param_"; - }else { - filePrefix = "Config_"; - } - } else if ("Action".equalsIgnoreCase(policyType)) { - filePrefix = "Action_"; - } else if ("Decision".equalsIgnoreCase(policyType)) { - filePrefix = "Decision_"; - } - - int version = 0; - int highestVersion = 0; - String createdBy; - String modifiedBy; - String scopeCheck = policyData.getDomainDir().replace(".", File.separator); - PolicyEditorScopes policyEditorScope = (PolicyEditorScopes) commonClassDao.getEntityItem(PolicyEditorScopes.class, "scopeName", scopeCheck); - if(policyEditorScope == null){ - UserInfo userInfo = new UserInfo(); - userInfo.setUserName("API"); - userInfo.setUserLoginId("API"); - PolicyEditorScopes editorScope = new PolicyEditorScopes(); - editorScope.setScopeName(scopeCheck); - editorScope.setUserCreatedBy(userInfo); - editorScope.setUserModifiedBy(userInfo); - commonClassDao.save(editorScope); - } - //get the highest version of policy from policy version table. - String dbCheckPolicyName = policyData.getDomainDir() + File.separator + filePrefix + policyData.getPolicyName(); - PolicyVersion policyVersion = getPolicyVersionData(dbCheckPolicyName); - if(policyVersion == null){ - highestVersion = 0; - }else{ - highestVersion = policyVersion.getHigherVersion(); - } - - if(highestVersion != 0 && policyVersion != null){ - if(policyData.isEditPolicy()){ - version = highestVersion +1; - if(userId ==null){ - modifiedBy = "API"; - }else{ - modifiedBy = userId; - } - policyData.setUserId("API"); - createdBy = policyVersion.getCreatedBy(); - policyVersionDao = policyVersion; - policyVersionDao.setActiveVersion(version); - policyVersionDao.setHigherVersion(version); - policyVersionDao.setModifiedBy(modifiedBy); - policyVersionDao.setModifiedDate(new Date()); - }else{ - body = "policyExists"; - status = HttpStatus.CONFLICT; - response.setStatus(HttpServletResponse.SC_CONFLICT); - response.addHeader("error", "policyExists"); - response.addHeader("policyName", policyData.getPolicyName()); - return new ResponseEntity<>(body, status); - } - }else{ - // if policy does not exist and the request is updatePolicy return error - if(policyData.isEditPolicy()){ - body = "policyNotAvailableForEdit"; - status = HttpStatus.NOT_FOUND; - response.setStatus(HttpServletResponse.SC_NOT_FOUND); - response.addHeader("error", body); - response.addHeader("message", policyData.getPolicyName() + " does not exist on the PAP and cannot be updated."); - return new ResponseEntity<>(body, status); - } - version = 1; - if(userId == null){ - createdBy = "API"; - modifiedBy = "API"; - policyData.setUserId("API"); - }else{ - createdBy = userId; - modifiedBy = userId; - policyData.setUserId("API"); - } - policyVersionDao = new PolicyVersion(); - policyVersionDao.setPolicyName(dbCheckPolicyName); - policyVersionDao.setActiveVersion(version); - policyVersionDao.setHigherVersion(version); - policyVersionDao.setCreatedBy(createdBy); - policyVersionDao.setModifiedBy(modifiedBy); - } - - policyData.setPolicyID(newPolicyID()); - policyData.setRuleID(ruleID); - - String policyFileName = dbCheckPolicyName.replace(File.separator, ".")+ "." + version + ".xml"; - policyData.setNewFileName(policyFileName); - policyData.setPolicyDescription(policyData.getPolicyDescription()+ "@CreatedBy:" +createdBy + "@CreatedBy:" + "@ModifiedBy:" +modifiedBy + "@ModifiedBy:"); - policyData.setRuleCombiningAlgId("urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides"); - if(policyData.getApiflag() == null){ - //set the Rule Combining Algorithm Id to be sent to PAP-REST via JSON - if(policyData.getAttributes() != null && !policyData.getAttributes().isEmpty()){ - for(Object attribute : policyData.getAttributes()){ - if(attribute instanceof LinkedHashMap<?, ?>){ - String key = ((LinkedHashMap<?, ?>) attribute).get("key").toString(); - String value = ((LinkedHashMap<?, ?>) attribute).get("value").toString(); - attributeMap.put(key, value); - } - } - } - policyData.setDynamicFieldConfigAttributes(attributeMap); - } - - policyData.setVersion(String.valueOf(version)); - policyData.setHighestVersion(version); - - // Calling Component class per policy type - if ("Config".equalsIgnoreCase(policyType)) { - if ("Firewall Config".equalsIgnoreCase(policyConfigType)) { - newPolicy = new FirewallConfigPolicy(policyData); - }else if ("BRMS_Raw".equalsIgnoreCase(policyConfigType)) { - policyData.setOnapName("DROOLS"); - policyData.setConfigName("BRMS_RAW_RULE"); - newPolicy = new CreateBrmsRawPolicy(policyData); - }else if ("BRMS_Param".equalsIgnoreCase(policyConfigType)) { - policyData.setOnapName("DROOLS"); - policyData.setConfigName("BRMS_PARAM_RULE"); - Map<String, String> drlRuleAndUIParams = new HashMap<>(); - if(policyData.getApiflag() == null){ - // If there is any dynamic field create the matches here - String key="templateName"; - String value= policyData.getRuleName(); - drlRuleAndUIParams.put(key, value); - if(policyData.getRuleData().size() > 0){ - for(Object keyValue: policyData.getRuleData().keySet()){ - drlRuleAndUIParams.put(keyValue.toString(), policyData.getRuleData().get(keyValue).toString()); - } - } - policyData.setBrmsParamBody(drlRuleAndUIParams); - }else{ - drlRuleAndUIParams=policyData.getBrmsParamBody(); - String modelName= drlRuleAndUIParams.get("templateName"); - PolicyLogger.info("Template name from API is: "+modelName); - - BRMSParamTemplate template = (BRMSParamTemplate) commonClassDao.getEntityItem(BRMSParamTemplate.class, "ruleName", modelName); - if(template == null){ - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid Template. The template name, " - + modelName + " was not found in the dictionary."; - body = message; - status = HttpStatus.BAD_REQUEST; - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - response.addHeader("error", message); - response.addHeader("modelName", modelName); - return new ResponseEntity<String>(body, status); - } - } - newPolicy = new CreateBrmsParamPolicy(policyData); - }else if ("Base".equalsIgnoreCase(policyConfigType)) { - newPolicy = new ConfigPolicy(policyData); - }else if ("ClosedLoop_Fault".equalsIgnoreCase(policyConfigType)) { - newPolicy = new ClosedLoopPolicy(policyData); - }else if ("ClosedLoop_PM".equalsIgnoreCase(policyConfigType)) { - if(policyData.getApiflag() == null){ - policyData.setServiceType(policyData.getServiceTypePolicyName().get("serviceTypePolicyName").toString()); - ObjectMapper jsonMapper = new ObjectMapper(); - String jsonBody = jsonMapper.writeValueAsString(policyData.getJsonBodyData()); - jsonBody = jsonBody.replaceFirst("\\{", "\\{\"serviceTypePolicyName\": \"serviceTypeFieldValue\","); - jsonBody = jsonBody.replace("serviceTypeFieldValue", policyData.getServiceType()); - policyData.setJsonBody(jsonBody); - } - newPolicy = new CreateClosedLoopPerformanceMetrics(policyData); - }else if ("Micro Service".equalsIgnoreCase(policyConfigType)) { - newPolicy = new MicroServiceConfigPolicy(policyData); - }else if ("Optimization".equalsIgnoreCase(policyConfigType)) { - newPolicy = new OptimizationConfigPolicy(policyData); - } - }else if("Action".equalsIgnoreCase(policyType)) { - if(policyData.getApiflag() == null){ - List<String> dynamicRuleAlgorithmLabels = new LinkedList<>(); - List<String> dynamicRuleAlgorithmCombo = new LinkedList<>(); - List<String> dynamicRuleAlgorithmField1 = new LinkedList<>(); - List<String> dynamicRuleAlgorithmField2 = new LinkedList<>(); - - - if(!policyData.getRuleAlgorithmschoices().isEmpty()){ - for(Object attribute : policyData.getRuleAlgorithmschoices()){ - if(attribute instanceof LinkedHashMap<?, ?>){ - String label = ((LinkedHashMap<?, ?>) attribute).get("id").toString(); - String key = ((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField1").toString(); - String rule = ((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmCombo").toString(); - String value = ((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField2").toString(); - dynamicRuleAlgorithmLabels.add(label); - dynamicRuleAlgorithmField1.add(key); - dynamicRuleAlgorithmCombo.add(rule); - dynamicRuleAlgorithmField2.add(value); - } - } - } - - String actionDictValue = policyData.getActionAttributeValue(); - ActionPolicyDict jsonData = ((ActionPolicyDict) commonClassDao.getEntityItem(ActionPolicyDict.class, "attributeName", actionDictValue)); - if(jsonData!=null){ - String actionBodyString = jsonData.getBody(); - String actionDictHeader = jsonData.getHeader(); - String actionDictType = jsonData.getType(); - String actionDictUrl = jsonData.getUrl(); - String actionDictMethod = jsonData.getMethod(); - policyData.setActionDictHeader(actionDictHeader); - policyData.setActionDictType(actionDictType); - policyData.setActionDictUrl(actionDictUrl); - policyData.setActionDictMethod(actionDictMethod); - if (actionBodyString != null) { - policyData.setActionBody(actionBodyString); - } - } - policyData.setActionAttribute(actionDictValue); - policyData.setDynamicRuleAlgorithmLabels(dynamicRuleAlgorithmLabels); - policyData.setDynamicRuleAlgorithmCombo(dynamicRuleAlgorithmCombo); - policyData.setDynamicRuleAlgorithmField1(dynamicRuleAlgorithmField1); - policyData.setDynamicRuleAlgorithmField2(dynamicRuleAlgorithmField2); - }else{ - // API request. - String comboDictValue = policyData.getActionAttribute(); - ActionPolicyDict jsonData = ((ActionPolicyDict) commonClassDao.getEntityItem(ActionPolicyDict.class, "attributeName", comboDictValue)); - if(jsonData!=null){ - policyData.setActionBody(jsonData.getBody()); - policyData.setActionDictHeader(jsonData.getHeader()); - policyData.setActionDictType(jsonData.getType()); - policyData.setActionDictUrl(jsonData.getUrl()); - policyData.setActionDictMethod(jsonData.getMethod()); - } - } - newPolicy = new ActionPolicy(policyData, commonClassDao); - } else if ("Decision".equalsIgnoreCase(policyType)) { - if(policyData.getApiflag() == null){ - Map<String, String> settingsMap = new HashMap<>(); - Map<String, String> treatmentMap = new HashMap<>(); - List<String> dynamicRuleAlgorithmLabels = new LinkedList<>(); - List<String> dynamicRuleAlgorithmCombo = new LinkedList<>(); - List<String> dynamicRuleAlgorithmField1 = new LinkedList<>(); - List<String> dynamicRuleAlgorithmField2 = new LinkedList<>(); - List<Object> dynamicVariableList = new LinkedList<>(); - List<String> dataTypeList = new LinkedList<>(); - List<String> errorCodeList = new LinkedList<>(); - List<String> treatmentList = new LinkedList<>(); - - if(!policyData.getSettings().isEmpty()){ - for(Object settingsData : policyData.getSettings()){ - if(settingsData instanceof LinkedHashMap<?, ?>){ - String key = ((LinkedHashMap<?, ?>) settingsData).get("key").toString(); - String value = ((LinkedHashMap<?, ?>) settingsData).get("value").toString(); - settingsMap.put(key, value); - } - } - } - if(policyData.getRuleAlgorithmschoices()!=null && policyData.getRuleAlgorithmschoices().size() > 0){ - for(Object attribute : policyData.getRuleAlgorithmschoices()){ - if(attribute instanceof LinkedHashMap<?, ?>){ - String label = ((LinkedHashMap<?, ?>) attribute).get("id").toString(); - String key = ((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField1").toString(); - String rule = ((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmCombo").toString(); - String value = ((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField2").toString(); - dynamicRuleAlgorithmLabels.add(label); - dynamicRuleAlgorithmField1.add(key); - dynamicRuleAlgorithmCombo.add(rule); - dynamicRuleAlgorithmField2.add(value); - } - } - } - if(policyData.getRuleProvider()!=null && (policyData.getRuleProvider().equals(DecisionPolicy.GUARD_YAML)|| policyData.getRuleProvider().equals(DecisionPolicy.GUARD_BL_YAML)) - && policyData.getYamlparams()!=null){ - attributeMap.put("actor", policyData.getYamlparams().getActor()); - attributeMap.put("recipe", policyData.getYamlparams().getRecipe()); - attributeMap.put("clname", policyData.getYamlparams().getClname()); - attributeMap.put("limit", policyData.getYamlparams().getLimit()); - attributeMap.put("timeWindow", policyData.getYamlparams().getTimeWindow()); - attributeMap.put("timeUnits", policyData.getYamlparams().getTimeUnits()); - attributeMap.put("guardActiveStart", policyData.getYamlparams().getGuardActiveStart()); - attributeMap.put("guardActiveEnd", policyData.getYamlparams().getGuardActiveEnd()); - if(policyData.getYamlparams().getBlackList()!=null){ - String blackList = StringUtils.join(policyData.getYamlparams().getBlackList(), ","); - attributeMap.put("blackList", blackList); - } - if(DecisionPolicy.GUARD_BL_YAML.equals(policyData.getRuleProvider()) && "Use File Upload".equals(policyData.getBlackListEntryType())){ - if(policyData.getBlackListEntries() != null && !policyData.getBlackListEntries().isEmpty()){ - String blackList = StringUtils.join(policyData.getBlackListEntries(), ","); - attributeMap.put("blackList", blackList); - } - if(policyData.getAppendBlackListEntries() != null && !policyData.getAppendBlackListEntries().isEmpty()){ - String blackList = StringUtils.join(policyData.getAppendBlackListEntries(), ","); - attributeMap.put("appendBlackList", blackList); - } - } - if(policyData.getYamlparams().getTargets()!=null){ - String targets = StringUtils.join(policyData.getYamlparams().getTargets(),","); - attributeMap.put("targets", targets); - } - } - if(policyData.getRuleProvider()!=null && policyData.getRuleProvider().equals(DecisionPolicy.RAINY_DAY)){ - attributeMap.put("ServiceType", policyData.getRainyday().getServiceType()); - attributeMap.put("VNFType", policyData.getRainyday().getVnfType()); - attributeMap.put("BB_ID", policyData.getRainyday().getBbid()); - attributeMap.put("WorkStep", policyData.getRainyday().getWorkstep()); - - if(policyData.getRainyday().getTreatmentTableChoices()!=null && policyData.getRainyday().getTreatmentTableChoices().size() > 0){ - for (Object table : policyData.getRainyday().getTreatmentTableChoices()){ - if(table instanceof LinkedHashMap<?,?>){ - String errorcode = ((LinkedHashMap<?,?>) table).get("errorcode").toString(); - String treatment = ((LinkedHashMap<?,?>) table).get("treatment").toString(); - treatmentMap.put(errorcode, treatment); - } - } - } - } - - policyData.setDynamicRuleAlgorithmLabels(dynamicRuleAlgorithmLabels); - policyData.setDynamicRuleAlgorithmCombo(dynamicRuleAlgorithmCombo); - policyData.setDynamicRuleAlgorithmField1(dynamicRuleAlgorithmField1); - policyData.setDynamicRuleAlgorithmField2(dynamicRuleAlgorithmField2); - policyData.setDynamicVariableList(dynamicVariableList); - policyData.setDynamicSettingsMap(settingsMap); - policyData.setDynamicFieldConfigAttributes(attributeMap); - policyData.setDataTypeList(dataTypeList); - policyData.setRainydayMap(treatmentMap); - policyData.setErrorCodeList(errorCodeList); - policyData.setTreatmentList(treatmentList); - } - newPolicy = new DecisionPolicy(policyData, commonClassDao); - } - - if(newPolicy != null){ - newPolicy.prepareToSave(); - }else{ - body = "error"; - status = HttpStatus.INTERNAL_SERVER_ERROR; - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - response.addHeader("error", "error"); - return new ResponseEntity<>(body, status); - } - - PolicyDBDaoTransaction policyDBDaoTransaction = null; - try{ - policyDBDao = PolicyDBDao.getPolicyDBDaoInstance(XACMLPapServlet.getEmf()); - policyDBDaoTransaction = policyDBDao.getNewTransaction(); - policyDBDaoTransaction.createPolicy(newPolicy, policyData.getUserId()); - successMap = newPolicy.savePolicies(); - if(successMap.containsKey("success")){ - policyDBDaoTransaction.commitTransaction(); - if(policyData.isEditPolicy()){ - commonClassDao.update(policyVersionDao); - }else{ - commonClassDao.save(policyVersionDao); - } - try{ - PolicyElasticSearchController search= new PolicyElasticSearchController(); - search.updateElk(policyData); - }catch(Exception e){ - LOGGER.error("Error Occured while saving policy to Elastic Database"+e); - } - body = "success"; - status = HttpStatus.OK; - response.setStatus(HttpServletResponse.SC_OK); - response.addHeader("successMapKey", "success"); - response.addHeader("policyName", policyData.getNewFileName()); - + private static final Logger LOGGER = FlexLogger.getLogger(PolicyCreation.class); + + private String ruleID = ""; + private PolicyDBDao policyDBDao; + String CLName = null; + + private static CommonClassDao commonClassDao; + + public static CommonClassDao getCommonClassDao() { + return commonClassDao; + } + + public static void setCommonClassDao(CommonClassDao commonClassDao) { + PolicyCreation.commonClassDao = commonClassDao; + } + + @Autowired + public PolicyCreation(CommonClassDao commonClassDao){ + PolicyCreation.commonClassDao = commonClassDao; + } + + public PolicyCreation(){} + + @RequestMapping(value="/policycreation/save_policy", method = RequestMethod.POST) + @ResponseBody + public ResponseEntity<String> savePolicy(@RequestBody PolicyRestAdapter policyData, HttpServletResponse response){ + String body = null; + HttpStatus status = HttpStatus.BAD_REQUEST; + Map<String, String> successMap = new HashMap<>(); + Map<String, String> attributeMap = new HashMap<>(); + PolicyVersion policyVersionDao; + try { + + Policy newPolicy = null; + String policyConfigType = null; + String userId = policyData.getUserId(); + + if (policyData.getTtlDate()==null){ + policyData.setTtlDate("NA"); + }else{ + String dateTTL = policyData.getTtlDate(); + String newDate = convertDate(dateTTL); + policyData.setTtlDate(newDate); + } + + String policyType = policyData.getPolicyType(); + + String filePrefix = null; + if ("Config".equalsIgnoreCase(policyType)) { + policyConfigType = policyData.getConfigPolicyType(); + if ("Firewall Config".equalsIgnoreCase(policyConfigType)) { + filePrefix = "Config_FW_"; + }else if ("ClosedLoop_Fault".equalsIgnoreCase(policyConfigType)) { + filePrefix = "Config_Fault_"; + }else if ("ClosedLoop_PM".equalsIgnoreCase(policyConfigType)) { + filePrefix = "Config_PM_"; + }else if ("Micro Service".equalsIgnoreCase(policyConfigType)) { + filePrefix = "Config_MS_"; + }else if ("Optimization".equalsIgnoreCase(policyConfigType)) { + filePrefix = "Config_OOF_"; + }else if ("BRMS_Raw".equalsIgnoreCase(policyConfigType)) { + filePrefix = "Config_BRMS_Raw_"; + }else if ("BRMS_Param".equalsIgnoreCase(policyConfigType)) { + filePrefix = "Config_BRMS_Param_"; + }else { + filePrefix = "Config_"; + } + } else if ("Action".equalsIgnoreCase(policyType)) { + filePrefix = "Action_"; + } else if ("Decision".equalsIgnoreCase(policyType)) { + filePrefix = "Decision_"; + } + + int version = 0; + int highestVersion = 0; + String createdBy; + String modifiedBy; + String scopeCheck = policyData.getDomainDir().replace(".", File.separator); + PolicyEditorScopes policyEditorScope = (PolicyEditorScopes) commonClassDao.getEntityItem(PolicyEditorScopes.class, "scopeName", scopeCheck); + if(policyEditorScope == null){ + UserInfo userInfo = new UserInfo(); + userInfo.setUserName("API"); + userInfo.setUserLoginId("API"); + PolicyEditorScopes editorScope = new PolicyEditorScopes(); + editorScope.setScopeName(scopeCheck); + editorScope.setUserCreatedBy(userInfo); + editorScope.setUserModifiedBy(userInfo); + commonClassDao.save(editorScope); + } + //get the highest version of policy from policy version table. + String dbCheckPolicyName = policyData.getDomainDir() + File.separator + filePrefix + policyData.getPolicyName(); + PolicyVersion policyVersion = getPolicyVersionData(dbCheckPolicyName); + if(policyVersion == null){ + highestVersion = 0; + }else{ + highestVersion = policyVersion.getHigherVersion(); + } + + if(highestVersion != 0 && policyVersion != null){ + if(policyData.isEditPolicy()){ + version = highestVersion +1; + if(userId ==null){ + modifiedBy = "API"; + }else{ + modifiedBy = userId; + } + policyData.setUserId("API"); + createdBy = policyVersion.getCreatedBy(); + policyVersionDao = policyVersion; + policyVersionDao.setActiveVersion(version); + policyVersionDao.setHigherVersion(version); + policyVersionDao.setModifiedBy(modifiedBy); + policyVersionDao.setModifiedDate(new Date()); + }else{ + body = "policyExists"; + status = HttpStatus.CONFLICT; + response.setStatus(HttpServletResponse.SC_CONFLICT); + response.addHeader("error", "policyExists"); + response.addHeader("policyName", policyData.getPolicyName()); + return new ResponseEntity<>(body, status); + } + }else{ + // if policy does not exist and the request is updatePolicy return error + if(policyData.isEditPolicy()){ + body = "policyNotAvailableForEdit"; + status = HttpStatus.NOT_FOUND; + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + response.addHeader("error", body); + response.addHeader("message", policyData.getPolicyName() + " does not exist on the PAP and cannot be updated."); + return new ResponseEntity<>(body, status); + } + version = 1; + if(userId == null){ + createdBy = "API"; + modifiedBy = "API"; + policyData.setUserId("API"); + }else{ + createdBy = userId; + modifiedBy = userId; + policyData.setUserId("API"); + } + policyVersionDao = new PolicyVersion(); + policyVersionDao.setPolicyName(dbCheckPolicyName); + policyVersionDao.setActiveVersion(version); + policyVersionDao.setHigherVersion(version); + policyVersionDao.setCreatedBy(createdBy); + policyVersionDao.setModifiedBy(modifiedBy); + } + + policyData.setPolicyID(newPolicyID()); + policyData.setRuleID(ruleID); + + String policyFileName = dbCheckPolicyName.replace(File.separator, ".")+ "." + version + ".xml"; + policyData.setNewFileName(policyFileName); + policyData.setPolicyDescription(policyData.getPolicyDescription()+ "@CreatedBy:" +createdBy + "@CreatedBy:" + "@ModifiedBy:" +modifiedBy + "@ModifiedBy:"); + policyData.setRuleCombiningAlgId("urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides"); + if(policyData.getApiflag() == null){ + //set the Rule Combining Algorithm Id to be sent to PAP-REST via JSON + if(policyData.getAttributes() != null && !policyData.getAttributes().isEmpty()){ + for(Object attribute : policyData.getAttributes()){ + if(attribute instanceof LinkedHashMap<?, ?>){ + String key = ((LinkedHashMap<?, ?>) attribute).get("key").toString(); + String value = ((LinkedHashMap<?, ?>) attribute).get("value").toString(); + attributeMap.put(key, value); + } + } + } + policyData.setDynamicFieldConfigAttributes(attributeMap); + } + + policyData.setVersion(String.valueOf(version)); + policyData.setHighestVersion(version); + + // Calling Component class per policy type + if ("Config".equalsIgnoreCase(policyType)) { + if ("Firewall Config".equalsIgnoreCase(policyConfigType)) { + newPolicy = new FirewallConfigPolicy(policyData); + }else if ("BRMS_Raw".equalsIgnoreCase(policyConfigType)) { + policyData.setOnapName("DROOLS"); + policyData.setConfigName("BRMS_RAW_RULE"); + newPolicy = new CreateBrmsRawPolicy(policyData); + }else if ("BRMS_Param".equalsIgnoreCase(policyConfigType)) { + policyData.setOnapName("DROOLS"); + policyData.setConfigName("BRMS_PARAM_RULE"); + Map<String, String> drlRuleAndUIParams = new HashMap<>(); + if(policyData.getApiflag() == null){ + // If there is any dynamic field create the matches here + String key="templateName"; + String value= policyData.getRuleName(); + drlRuleAndUIParams.put(key, value); + if(policyData.getRuleData().size() > 0){ + for(Object keyValue: policyData.getRuleData().keySet()){ + drlRuleAndUIParams.put(keyValue.toString(), policyData.getRuleData().get(keyValue).toString()); + } + } + policyData.setBrmsParamBody(drlRuleAndUIParams); + }else{ + drlRuleAndUIParams=policyData.getBrmsParamBody(); + String modelName= drlRuleAndUIParams.get("templateName"); + PolicyLogger.info("Template name from API is: "+modelName); + + BRMSParamTemplate template = (BRMSParamTemplate) commonClassDao.getEntityItem(BRMSParamTemplate.class, "ruleName", modelName); + if(template == null){ + String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid Template. The template name, " + + modelName + " was not found in the dictionary."; + body = message; + status = HttpStatus.BAD_REQUEST; + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + response.addHeader("error", message); + response.addHeader("modelName", modelName); + return new ResponseEntity<String>(body, status); + } + } + newPolicy = new CreateBrmsParamPolicy(policyData); + }else if ("Base".equalsIgnoreCase(policyConfigType)) { + newPolicy = new ConfigPolicy(policyData); + }else if ("ClosedLoop_Fault".equalsIgnoreCase(policyConfigType)) { + newPolicy = new ClosedLoopPolicy(policyData); + }else if ("ClosedLoop_PM".equalsIgnoreCase(policyConfigType)) { + if(policyData.getApiflag() == null){ + policyData.setServiceType(policyData.getServiceTypePolicyName().get("serviceTypePolicyName").toString()); + ObjectMapper jsonMapper = new ObjectMapper(); + String jsonBody = jsonMapper.writeValueAsString(policyData.getJsonBodyData()); + jsonBody = jsonBody.replaceFirst("\\{", "\\{\"serviceTypePolicyName\": \"serviceTypeFieldValue\","); + jsonBody = jsonBody.replace("serviceTypeFieldValue", policyData.getServiceType()); + policyData.setJsonBody(jsonBody); + } + newPolicy = new CreateClosedLoopPerformanceMetrics(policyData); + }else if ("Micro Service".equalsIgnoreCase(policyConfigType)) { + newPolicy = new MicroServiceConfigPolicy(policyData); + }else if ("Optimization".equalsIgnoreCase(policyConfigType)) { + newPolicy = new OptimizationConfigPolicy(policyData); + } + }else if("Action".equalsIgnoreCase(policyType)) { + if(policyData.getApiflag() == null){ + List<String> dynamicRuleAlgorithmLabels = new LinkedList<>(); + List<String> dynamicRuleAlgorithmCombo = new LinkedList<>(); + List<String> dynamicRuleAlgorithmField1 = new LinkedList<>(); + List<String> dynamicRuleAlgorithmField2 = new LinkedList<>(); + + + if(!policyData.getRuleAlgorithmschoices().isEmpty()){ + for(Object attribute : policyData.getRuleAlgorithmschoices()){ + if(attribute instanceof LinkedHashMap<?, ?>){ + String label = ((LinkedHashMap<?, ?>) attribute).get("id").toString(); + String key = ((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField1").toString(); + String rule = ((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmCombo").toString(); + String value = ((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField2").toString(); + dynamicRuleAlgorithmLabels.add(label); + dynamicRuleAlgorithmField1.add(key); + dynamicRuleAlgorithmCombo.add(rule); + dynamicRuleAlgorithmField2.add(value); + } + } + } + + String actionDictValue = policyData.getActionAttributeValue(); + ActionPolicyDict jsonData = ((ActionPolicyDict) commonClassDao.getEntityItem(ActionPolicyDict.class, "attributeName", actionDictValue)); + if(jsonData!=null){ + String actionBodyString = jsonData.getBody(); + String actionDictHeader = jsonData.getHeader(); + String actionDictType = jsonData.getType(); + String actionDictUrl = jsonData.getUrl(); + String actionDictMethod = jsonData.getMethod(); + policyData.setActionDictHeader(actionDictHeader); + policyData.setActionDictType(actionDictType); + policyData.setActionDictUrl(actionDictUrl); + policyData.setActionDictMethod(actionDictMethod); + if (actionBodyString != null) { + policyData.setActionBody(actionBodyString); + } + } + policyData.setActionAttribute(actionDictValue); + policyData.setDynamicRuleAlgorithmLabels(dynamicRuleAlgorithmLabels); + policyData.setDynamicRuleAlgorithmCombo(dynamicRuleAlgorithmCombo); + policyData.setDynamicRuleAlgorithmField1(dynamicRuleAlgorithmField1); + policyData.setDynamicRuleAlgorithmField2(dynamicRuleAlgorithmField2); + }else{ + // API request. + String comboDictValue = policyData.getActionAttribute(); + ActionPolicyDict jsonData = ((ActionPolicyDict) commonClassDao.getEntityItem(ActionPolicyDict.class, "attributeName", comboDictValue)); + if(jsonData!=null){ + policyData.setActionBody(jsonData.getBody()); + policyData.setActionDictHeader(jsonData.getHeader()); + policyData.setActionDictType(jsonData.getType()); + policyData.setActionDictUrl(jsonData.getUrl()); + policyData.setActionDictMethod(jsonData.getMethod()); + } + } + newPolicy = new ActionPolicy(policyData, commonClassDao); + } else if ("Decision".equalsIgnoreCase(policyType)) { + if(policyData.getApiflag() == null){ + Map<String, String> settingsMap = new HashMap<>(); + Map<String, String> treatmentMap = new HashMap<>(); + List<String> dynamicRuleAlgorithmLabels = new LinkedList<>(); + List<String> dynamicRuleAlgorithmCombo = new LinkedList<>(); + List<String> dynamicRuleAlgorithmField1 = new LinkedList<>(); + List<String> dynamicRuleAlgorithmField2 = new LinkedList<>(); + List<Object> dynamicVariableList = new LinkedList<>(); + List<String> dataTypeList = new LinkedList<>(); + List<String> errorCodeList = new LinkedList<>(); + List<String> treatmentList = new LinkedList<>(); + + if(!policyData.getSettings().isEmpty()){ + for(Object settingsData : policyData.getSettings()){ + if(settingsData instanceof LinkedHashMap<?, ?>){ + String key = ((LinkedHashMap<?, ?>) settingsData).get("key").toString(); + String value = ((LinkedHashMap<?, ?>) settingsData).get("value").toString(); + settingsMap.put(key, value); + } + } + } + if(policyData.getRuleAlgorithmschoices()!=null && policyData.getRuleAlgorithmschoices().size() > 0){ + for(Object attribute : policyData.getRuleAlgorithmschoices()){ + if(attribute instanceof LinkedHashMap<?, ?>){ + String label = ((LinkedHashMap<?, ?>) attribute).get("id").toString(); + String key = ((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField1").toString(); + String rule = ((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmCombo").toString(); + String value = ((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField2").toString(); + dynamicRuleAlgorithmLabels.add(label); + dynamicRuleAlgorithmField1.add(key); + dynamicRuleAlgorithmCombo.add(rule); + dynamicRuleAlgorithmField2.add(value); + } + } + } + if(policyData.getRuleProvider()!=null && (policyData.getRuleProvider().equals(DecisionPolicy.GUARD_YAML)|| policyData.getRuleProvider().equals(DecisionPolicy.GUARD_BL_YAML)) + && policyData.getYamlparams()!=null){ + attributeMap.put("actor", policyData.getYamlparams().getActor()); + attributeMap.put("recipe", policyData.getYamlparams().getRecipe()); + attributeMap.put("clname", policyData.getYamlparams().getClname()); + attributeMap.put("limit", policyData.getYamlparams().getLimit()); + attributeMap.put("timeWindow", policyData.getYamlparams().getTimeWindow()); + attributeMap.put("timeUnits", policyData.getYamlparams().getTimeUnits()); + attributeMap.put("guardActiveStart", policyData.getYamlparams().getGuardActiveStart()); + attributeMap.put("guardActiveEnd", policyData.getYamlparams().getGuardActiveEnd()); + if(policyData.getYamlparams().getBlackList()!=null){ + String blackList = StringUtils.join(policyData.getYamlparams().getBlackList(), ","); + attributeMap.put("blackList", blackList); + } + if(DecisionPolicy.GUARD_BL_YAML.equals(policyData.getRuleProvider()) && "Use File Upload".equals(policyData.getBlackListEntryType())){ + if(policyData.getBlackListEntries() != null && !policyData.getBlackListEntries().isEmpty()){ + String blackList = StringUtils.join(policyData.getBlackListEntries(), ","); + attributeMap.put("blackList", blackList); + } + if(policyData.getAppendBlackListEntries() != null && !policyData.getAppendBlackListEntries().isEmpty()){ + String blackList = StringUtils.join(policyData.getAppendBlackListEntries(), ","); + attributeMap.put("appendBlackList", blackList); + } + } + if(policyData.getYamlparams().getTargets()!=null){ + String targets = StringUtils.join(policyData.getYamlparams().getTargets(),","); + attributeMap.put("targets", targets); + } + } + if(policyData.getRuleProvider()!=null && policyData.getRuleProvider().equals(DecisionPolicy.RAINY_DAY)){ + attributeMap.put("ServiceType", policyData.getRainyday().getServiceType()); + attributeMap.put("VNFType", policyData.getRainyday().getVnfType()); + attributeMap.put("BB_ID", policyData.getRainyday().getBbid()); + attributeMap.put("WorkStep", policyData.getRainyday().getWorkstep()); + + if(policyData.getRainyday().getTreatmentTableChoices()!=null && policyData.getRainyday().getTreatmentTableChoices().size() > 0){ + for (Object table : policyData.getRainyday().getTreatmentTableChoices()){ + if(table instanceof LinkedHashMap<?,?>){ + String errorcode = ((LinkedHashMap<?,?>) table).get("errorcode").toString(); + String treatment = ((LinkedHashMap<?,?>) table).get("treatment").toString(); + treatmentMap.put(errorcode, treatment); + } + } + } + } + + policyData.setDynamicRuleAlgorithmLabels(dynamicRuleAlgorithmLabels); + policyData.setDynamicRuleAlgorithmCombo(dynamicRuleAlgorithmCombo); + policyData.setDynamicRuleAlgorithmField1(dynamicRuleAlgorithmField1); + policyData.setDynamicRuleAlgorithmField2(dynamicRuleAlgorithmField2); + policyData.setDynamicVariableList(dynamicVariableList); + policyData.setDynamicSettingsMap(settingsMap); + policyData.setDynamicFieldConfigAttributes(attributeMap); + policyData.setDataTypeList(dataTypeList); + policyData.setRainydayMap(treatmentMap); + policyData.setErrorCodeList(errorCodeList); + policyData.setTreatmentList(treatmentList); + } + newPolicy = new DecisionPolicy(policyData, commonClassDao); + } + + if(newPolicy != null){ + newPolicy.prepareToSave(); + }else{ + body = "error"; + status = HttpStatus.INTERNAL_SERVER_ERROR; + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + response.addHeader("error", "error"); + return new ResponseEntity<>(body, status); + } + + PolicyDBDaoTransaction policyDBDaoTransaction = null; + try{ + policyDBDao = PolicyDBDao.getPolicyDBDaoInstance(XACMLPapServlet.getEmf()); + policyDBDaoTransaction = policyDBDao.getNewTransaction(); + policyDBDaoTransaction.createPolicy(newPolicy, policyData.getUserId()); + successMap = newPolicy.savePolicies(); + if(successMap.containsKey("success")){ + policyDBDaoTransaction.commitTransaction(); + if(policyData.isEditPolicy()){ + commonClassDao.update(policyVersionDao); + }else{ + commonClassDao.save(policyVersionDao); + } + try{ + PolicyElasticSearchController search= new PolicyElasticSearchController(); + search.updateElk(policyData); + }catch(Exception e){ + LOGGER.error("Error Occured while saving policy to Elastic Database"+e); + } + body = "success"; + status = HttpStatus.OK; + response.setStatus(HttpServletResponse.SC_OK); + response.addHeader("successMapKey", "success"); + response.addHeader("policyName", policyData.getNewFileName()); + //get message from the SafetyCheckerResults if present String safetyCheckerResponse = policyData.getClWarning(); String existingCLName = policyData.getExistingCLName(); @@ -512,77 +512,77 @@ public class PolicyCreation extends AbstractPolicyCreation{ PolicyLogger.info("SafetyCheckerResponse was empty or null."); } - }else if (successMap.containsKey("invalidAttribute")) { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid Action Attribute"; - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Could not fine " + policyData.getActionAttribute() + " in the ActionPolicyDict table."); - body = "invalidAttribute"; - status = HttpStatus.BAD_REQUEST; - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - response.addHeader("invalidAttribute", policyData.getActionAttribute()); - response.addHeader("error", message); - response.addHeader("policyName", policyData.getPolicyName()); - }else if (successMap.containsKey("fwdberror")) { - policyDBDaoTransaction.rollbackTransaction(); - body = "fwdberror"; - status = HttpStatus.BAD_REQUEST; - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + }else if (successMap.containsKey("invalidAttribute")) { + String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid Action Attribute"; + LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Could not fine " + policyData.getActionAttribute() + " in the ActionPolicyDict table."); + body = "invalidAttribute"; + status = HttpStatus.BAD_REQUEST; + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + response.addHeader("invalidAttribute", policyData.getActionAttribute()); + response.addHeader("error", message); + response.addHeader("policyName", policyData.getPolicyName()); + }else if (successMap.containsKey("fwdberror")) { + policyDBDaoTransaction.rollbackTransaction(); + body = "fwdberror"; + status = HttpStatus.BAD_REQUEST; + String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Error when inserting Firewall ConfigBody data into the database."; - PolicyLogger.error(message); - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - response.addHeader("error", message); - response.addHeader("policyName", policyData.getPolicyName()); - } else if (successMap.get("error").equals("Validation Failed")) { + PolicyLogger.error(message); + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + response.addHeader("error", message); + response.addHeader("policyName", policyData.getPolicyName()); + } else if (successMap.get("error").equals("Validation Failed")) { policyDBDaoTransaction.rollbackTransaction(); String message = XACMLErrorConstants.ERROR_DATA_ISSUE - + "Error Validating the Policy on the PAP."; + + "Error Validating the Policy on the PAP."; PolicyLogger.error(message); body = "Validation"; - status = HttpStatus.BAD_REQUEST; + status = HttpStatus.BAD_REQUEST; response.setStatus(HttpServletResponse.SC_BAD_REQUEST); response.addHeader("error", message); response.addHeader("policyName", policyData.getPolicyName()); }else { - policyDBDaoTransaction.rollbackTransaction(); - body = "error"; - status = HttpStatus.INTERNAL_SERVER_ERROR; - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - response.addHeader("error", "error"); - } - }catch(Exception e){ - LOGGER.error("Exception Occured : ",e); - if(policyDBDaoTransaction != null){ - policyDBDaoTransaction.rollbackTransaction(); - } - } - } - catch (Exception e){ - LOGGER.error("Exception Occured : "+e.getMessage(),e); - body = "error"; - response.addHeader("error", e.getMessage()); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - } - return new ResponseEntity<>(body, status); - } - - @ExceptionHandler({ HttpMessageNotReadableException.class }) - public ResponseEntity<String> messageNotReadableExceptionHandler(HttpServletRequest req, HttpMessageNotReadableException exception) { - LOGGER.error("Request not readable: {}", exception); - StringBuilder message = new StringBuilder(); - message.append(exception.getMessage()); - if (exception.getCause() != null) { - message.append(" Reason Caused: " - + exception.getCause().getMessage()); - } - return new ResponseEntity<>(message.toString(), HttpStatus.BAD_REQUEST); - } - - public PolicyVersion getPolicyVersionData(String dbCheckPolicyName){ - PolicyVersion entityItem = (PolicyVersion) commonClassDao.getEntityItem(PolicyVersion.class, "policyName", dbCheckPolicyName); - if (entityItem != null) { - if(entityItem.getPolicyName().equals(dbCheckPolicyName)){ - return entityItem; - } - } - return entityItem; - } + policyDBDaoTransaction.rollbackTransaction(); + body = "error"; + status = HttpStatus.INTERNAL_SERVER_ERROR; + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + response.addHeader("error", "error"); + } + }catch(Exception e){ + LOGGER.error("Exception Occured : ",e); + if(policyDBDaoTransaction != null){ + policyDBDaoTransaction.rollbackTransaction(); + } + } + } + catch (Exception e){ + LOGGER.error("Exception Occured : "+e.getMessage(),e); + body = "error"; + response.addHeader("error", e.getMessage()); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + } + return new ResponseEntity<>(body, status); + } + + @ExceptionHandler({ HttpMessageNotReadableException.class }) + public ResponseEntity<String> messageNotReadableExceptionHandler(HttpServletRequest req, HttpMessageNotReadableException exception) { + LOGGER.error("Request not readable: {}", exception); + StringBuilder message = new StringBuilder(); + message.append(exception.getMessage()); + if (exception.getCause() != null) { + message.append(" Reason Caused: " + + exception.getCause().getMessage()); + } + return new ResponseEntity<>(message.toString(), HttpStatus.BAD_REQUEST); + } + + public PolicyVersion getPolicyVersionData(String dbCheckPolicyName){ + PolicyVersion entityItem = (PolicyVersion) commonClassDao.getEntityItem(PolicyVersion.class, "policyName", dbCheckPolicyName); + if (entityItem != null) { + if(entityItem.getPolicyName().equals(dbCheckPolicyName)){ + return entityItem; + } + } + return entityItem; + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/DictionaryService.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/DictionaryService.java index cb03d44ec..e965356be 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/DictionaryService.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/DictionaryService.java @@ -42,433 +42,433 @@ import org.springframework.web.servlet.ModelAndView; @Service("DictionaryService") public class DictionaryService { - /* - * Methods that call the controller method directly to Save and Update dictionary data - */ - public String saveOnapDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - - DictionaryController dictionary = new DictionaryController(); - ModelAndView result = dictionary.saveOnapDictionary(request, response); - return result.getViewName(); - } - - public String saveAttributeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - DictionaryController dictionary = new DictionaryController(); - ModelAndView result = dictionary.saveAttributeDictionary(request, response); - return result.getViewName(); - } - - public String saveActionPolicyDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - - ActionPolicyDictionaryController action = new ActionPolicyDictionaryController(); - ModelAndView result = action.saveActionPolicyDictionary(request, response); - return result.getViewName(); - } - - public String saveBRMSParamDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { - - BRMSDictionaryController dictionary = new BRMSDictionaryController(); - ModelAndView result = dictionary.saveBRMSParamDictionary(request, response); - return result.getViewName(); - } - - public String saveVSCLAction(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); - ModelAndView result = dictionary.saveVSCLAction(request, response); - return result.getViewName(); - } - - public String saveVnfType(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); - ModelAndView result = dictionary.saveVnfType(request, response); - return result.getViewName(); - } - - public String savePEPOptions(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); - ModelAndView result = dictionary.savePEPOptions(request, response); - return result.getViewName(); - } - - public String saveVarbind(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); - ModelAndView result = dictionary.saveVarbind(request, response); - return result.getViewName(); - } - - public String saveServiceType(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); - ModelAndView result = dictionary.saveServiceType(request, response); - return result.getViewName(); - } - - public String saveSiteType(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); - ModelAndView result = dictionary.saveSiteType(request, response); - return result.getViewName(); - } - - public String saveSettingsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - DecisionPolicyDictionaryController dictionary = new DecisionPolicyDictionaryController(); - ModelAndView result = dictionary.saveSettingsDictionary(request, response); - return result.getViewName(); - } - - public String saveRainyDayDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - DecisionPolicyDictionaryController dictionary = new DecisionPolicyDictionaryController(); - ModelAndView result = dictionary.saveRainyDayDictionary(request, response); - return result.getViewName(); - } - - public String saveDescriptiveDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - DescriptiveDictionaryController dictionary = new DescriptiveDictionaryController(); - ModelAndView result = dictionary.saveDescriptiveDictionary(request, response); - return result.getViewName(); - } - - public String saveActionListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - FirewallDictionaryController dictionary = new FirewallDictionaryController(); - ModelAndView result = dictionary.saveActionListDictionary(request, response); - return result.getViewName(); - } - - public String saveProtocolListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - FirewallDictionaryController dictionary = new FirewallDictionaryController(); - ModelAndView result = dictionary.saveProtocolListDictionary(request, response); - return result.getViewName(); - } - - public String saveZoneDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - FirewallDictionaryController dictionary = new FirewallDictionaryController(); - ModelAndView result = dictionary.saveZoneDictionary(request, response); - return result.getViewName(); - } - - public String saveSecurityZoneDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - FirewallDictionaryController dictionary = new FirewallDictionaryController(); - ModelAndView result = dictionary.saveSecurityZoneDictionary(request, response); - return result.getViewName(); - } - - public String savePrefixListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - FirewallDictionaryController dictionary = new FirewallDictionaryController(); - ModelAndView result = dictionary.savePrefixListDictionary(request, response); - return result.getViewName(); - } - - public String saveAddressGroupDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - FirewallDictionaryController dictionary = new FirewallDictionaryController(); - ModelAndView result = dictionary.saveAddressGroupDictionary(request, response); - return result.getViewName(); - } - - public String saveServiceGroupDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - FirewallDictionaryController dictionary = new FirewallDictionaryController(); - ModelAndView result = dictionary.saveServiceGroupDictionary(request, response); - return result.getViewName(); - } - - public String saveServiceListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - FirewallDictionaryController dictionary = new FirewallDictionaryController(); - ModelAndView result = dictionary.saveServiceListDictionary(request, response); - return result.getViewName(); - } - - public String saveTermListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - FirewallDictionaryController dictionary = new FirewallDictionaryController(); - ModelAndView result = dictionary.saveTermListDictionary(request, response); - return result.getViewName(); - } - - - - - public String saveMicroServiceLocationDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); - ModelAndView result = dictionary.saveMicroServiceLocationDictionary(request, response); - return result.getViewName(); - } - - public String saveMicroServiceConfigNameDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); - ModelAndView result = dictionary.saveMicroServiceConfigNameDictionary(request, response); - return result.getViewName(); - } - - public String saveDCAEUUIDDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); - ModelAndView result = dictionary.saveDCAEUUIDDictionary(request, response); - return result.getViewName(); - } - - public String saveMicroServiceModelsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); - ModelAndView result = dictionary.saveMicroServiceModelsDictionary(request, response); - return result.getViewName(); - } - - public String saveMicroServiceDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); - ModelAndView result = dictionary.saveMicroServiceAttributeDictionary(request, response); - return result.getViewName(); - } - - public String saveOptimizationModelsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - OptimizationDictionaryController dictionary = new OptimizationDictionaryController(); - ModelAndView result = dictionary.saveOptimizationModelsDictionary(request, response); - return result.getViewName(); - } - - public String savePSServiceDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); - ModelAndView result = dictionary.savePSServiceDictionary(request, response); - return result.getViewName(); - } - - public String savePSResourceDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); - ModelAndView result = dictionary.savePSResourceDictionary(request, response); - return result.getViewName(); - } - - public String savePSTypeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); - ModelAndView result = dictionary.savePSTypeDictionary(request, response); - return result.getViewName(); - } - - public String savePSClosedLoopDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); - ModelAndView result = dictionary.savePSClosedLoopDictionary(request, response); - return result.getViewName(); - } - - public String savePSGroupScopeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); - ModelAndView result = dictionary.savePSGroupScopeDictionary(request, response); - return result.getViewName(); - } - - public String saveRiskTypeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - - SafePolicyController dictionary = new SafePolicyController(); - ModelAndView result = dictionary.saveRiskTypeDictionary(request, response); - return result.getViewName(); - } - - public String saveSafePolicyWarningDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ - SafePolicyController dictionary = new SafePolicyController(); - ModelAndView result = dictionary.saveSafePolicyWarningDictionary(request, response); - return result.getViewName(); - } - - - /* - * Methods that call the controller get methods directly to get dictionary data - */ - public void getOnapDictionary(HttpServletResponse response){ - DictionaryController dictionary = new DictionaryController(); - dictionary.getOnapNameDictionaryEntityData(response); - } - - public void getAttributeDictionary(HttpServletResponse response){ - DictionaryController dictionary = new DictionaryController(); - dictionary.getAttributeDictionaryEntityData(response); - } - - public void getActionPolicyDictionary(HttpServletResponse response){ - ActionPolicyDictionaryController action = new ActionPolicyDictionaryController(); - action.getActionPolicyDictionaryEntityData(response); - } - - public void getBRMSParamDictionary(HttpServletResponse response){ - BRMSDictionaryController dictionary = new BRMSDictionaryController(); - dictionary.getBRMSParamDictionaryEntityData(response); - } - - public void getVSCLAction(HttpServletResponse response){ - ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); - dictionary.getVSCLActionDictionaryEntityData(response); - } - - public void getVnfType(HttpServletResponse response){ - ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); - dictionary.getVNFTypeDictionaryEntityData(response); - } - - public void getPEPOptions(HttpServletResponse response){ - ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); - dictionary.getPEPOptionsDictionaryEntityData(response); - } - - public void getVarbind(HttpServletResponse response){ - ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); - dictionary.getVarbindDictionaryEntityData(response); - } - - public void getServiceType(HttpServletResponse response){ - ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); - dictionary.getClosedLoopServiceDictionaryEntityData(response); - } - - public void getSiteType(HttpServletResponse response){ - ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); - dictionary.getClosedLoopSiteDictionaryEntityData(response); - } - - public void getSettingsDictionary(HttpServletResponse response){ - DecisionPolicyDictionaryController dictionary = new DecisionPolicyDictionaryController(); - dictionary.getSettingsDictionaryEntityData(response); - } - - public void getRainyDayDictionary(HttpServletResponse response){ - DecisionPolicyDictionaryController dictionary = new DecisionPolicyDictionaryController(); - dictionary.getRainyDayDictionaryEntityData(response); - } - - public void getDescriptiveDictionary(HttpServletResponse response){ - DescriptiveDictionaryController dictionary = new DescriptiveDictionaryController(); - dictionary.getDescriptiveDictionaryEntityData(response); - } - - public void getActionListDictionary(HttpServletResponse response){ - FirewallDictionaryController dictionary = new FirewallDictionaryController(); - dictionary.getActionListDictionaryEntityData(response); - } - - public void getProtocolListDictionary(HttpServletResponse response){ - FirewallDictionaryController dictionary = new FirewallDictionaryController(); - dictionary.getProtocolListDictionaryEntityData(response); - } - - public void getZoneDictionary(HttpServletResponse response){ - FirewallDictionaryController dictionary = new FirewallDictionaryController(); - dictionary.getZoneDictionaryEntityData(response); - } - - public void getSecurityZoneDictionary(HttpServletResponse response){ - FirewallDictionaryController dictionary = new FirewallDictionaryController(); - dictionary.getSecurityZoneDictionaryEntityData(response); - } - - public void getPrefixListDictionary(HttpServletResponse response){ - FirewallDictionaryController dictionary = new FirewallDictionaryController(); - dictionary.getPrefixListDictionaryEntityData(response); - } - - public void getAddressGroupDictionary(HttpServletResponse response){ - FirewallDictionaryController dictionary = new FirewallDictionaryController(); - dictionary.getAddressGroupDictionaryEntityData(response); - } - - public void getServiceGroupDictionary(HttpServletResponse response){ - FirewallDictionaryController dictionary = new FirewallDictionaryController(); - dictionary.getServiceGroupDictionaryEntityData(response); - } - - public void getServiceListDictionary(HttpServletResponse response){ - FirewallDictionaryController dictionary = new FirewallDictionaryController(); - dictionary.getServiceListDictionaryEntityData(response); - } - - public void getTermListDictionary(HttpServletResponse response){ - FirewallDictionaryController dictionary = new FirewallDictionaryController(); - dictionary.getTermListDictionaryEntityData(response); - } - - - public void getMicroServiceLocationDictionary(HttpServletResponse response){ - MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); - dictionary.getMicroServiceLocationDictionaryEntityData(response); - } - - public void getMicroServiceConfigNameDictionary(HttpServletResponse response){ - MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); - dictionary.getMicroServiceConfigNameDictionaryEntityData(response); - } - - public void getDCAEUUIDDictionary(HttpServletResponse response){ - MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); - dictionary.getDCAEUUIDDictionaryEntityData(response); - } - - public void getMicroServiceModelsDictionary(HttpServletResponse response){ - MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); - dictionary.getMicroServiceModelsDictionaryEntityData(response); - } - - public void getMicroServiceDictionary(HttpServletResponse response){ - MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); - dictionary.getMicroServiceModelsDictionaryEntityData(response); - } - - public void getOptimizationModelsDictionary(HttpServletResponse response){ - OptimizationDictionaryController dictionary = new OptimizationDictionaryController(); - dictionary.getOptimizationModelsDictionaryEntityData(response); - } - - public void getPSServiceDictionary(HttpServletResponse response){ - PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); - dictionary.getPSServiceEntityData(response); - } - - public void getPSResourceDictionary(HttpServletResponse response){ - PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); - dictionary.getPSResourceEntityData(response); - } - - public void getPSTypeDictionary(HttpServletResponse response){ - PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); - dictionary.getPSTypeEntityData(response); - } - - public void getPSClosedLoopDictionary(HttpServletResponse response){ - PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); - dictionary.getPSClosedLoopEntityData(response); - } - - public void getPSGroupScopeDictionary(HttpServletResponse response){ - PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); - dictionary.getGroupPolicyScopeEntityData(response); - } - - public void getRiskTypeDictionary(HttpServletResponse response){ - SafePolicyController dictionary = new SafePolicyController(); - dictionary.getRiskTypeDictionaryEntityData(response); - } - - public void getSafePolicyWarningDictionary(HttpServletResponse response) { - SafePolicyController dictionary = new SafePolicyController(); - dictionary.getSafePolicyWarningeEntityData(response); - } + /* + * Methods that call the controller method directly to Save and Update dictionary data + */ + public String saveOnapDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + + DictionaryController dictionary = new DictionaryController(); + ModelAndView result = dictionary.saveOnapDictionary(request, response); + return result.getViewName(); + } + + public String saveAttributeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + DictionaryController dictionary = new DictionaryController(); + ModelAndView result = dictionary.saveAttributeDictionary(request, response); + return result.getViewName(); + } + + public String saveActionPolicyDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + + ActionPolicyDictionaryController action = new ActionPolicyDictionaryController(); + ModelAndView result = action.saveActionPolicyDictionary(request, response); + return result.getViewName(); + } + + public String saveBRMSParamDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException { + + BRMSDictionaryController dictionary = new BRMSDictionaryController(); + ModelAndView result = dictionary.saveBRMSParamDictionary(request, response); + return result.getViewName(); + } + + public String saveVSCLAction(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); + ModelAndView result = dictionary.saveVSCLAction(request, response); + return result.getViewName(); + } + + public String saveVnfType(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); + ModelAndView result = dictionary.saveVnfType(request, response); + return result.getViewName(); + } + + public String savePEPOptions(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); + ModelAndView result = dictionary.savePEPOptions(request, response); + return result.getViewName(); + } + + public String saveVarbind(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); + ModelAndView result = dictionary.saveVarbind(request, response); + return result.getViewName(); + } + + public String saveServiceType(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); + ModelAndView result = dictionary.saveServiceType(request, response); + return result.getViewName(); + } + + public String saveSiteType(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); + ModelAndView result = dictionary.saveSiteType(request, response); + return result.getViewName(); + } + + public String saveSettingsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + DecisionPolicyDictionaryController dictionary = new DecisionPolicyDictionaryController(); + ModelAndView result = dictionary.saveSettingsDictionary(request, response); + return result.getViewName(); + } + + public String saveRainyDayDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + DecisionPolicyDictionaryController dictionary = new DecisionPolicyDictionaryController(); + ModelAndView result = dictionary.saveRainyDayDictionary(request, response); + return result.getViewName(); + } + + public String saveDescriptiveDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + DescriptiveDictionaryController dictionary = new DescriptiveDictionaryController(); + ModelAndView result = dictionary.saveDescriptiveDictionary(request, response); + return result.getViewName(); + } + + public String saveActionListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + FirewallDictionaryController dictionary = new FirewallDictionaryController(); + ModelAndView result = dictionary.saveActionListDictionary(request, response); + return result.getViewName(); + } + + public String saveProtocolListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + FirewallDictionaryController dictionary = new FirewallDictionaryController(); + ModelAndView result = dictionary.saveProtocolListDictionary(request, response); + return result.getViewName(); + } + + public String saveZoneDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + FirewallDictionaryController dictionary = new FirewallDictionaryController(); + ModelAndView result = dictionary.saveZoneDictionary(request, response); + return result.getViewName(); + } + + public String saveSecurityZoneDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + FirewallDictionaryController dictionary = new FirewallDictionaryController(); + ModelAndView result = dictionary.saveSecurityZoneDictionary(request, response); + return result.getViewName(); + } + + public String savePrefixListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + FirewallDictionaryController dictionary = new FirewallDictionaryController(); + ModelAndView result = dictionary.savePrefixListDictionary(request, response); + return result.getViewName(); + } + + public String saveAddressGroupDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + FirewallDictionaryController dictionary = new FirewallDictionaryController(); + ModelAndView result = dictionary.saveAddressGroupDictionary(request, response); + return result.getViewName(); + } + + public String saveServiceGroupDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + FirewallDictionaryController dictionary = new FirewallDictionaryController(); + ModelAndView result = dictionary.saveServiceGroupDictionary(request, response); + return result.getViewName(); + } + + public String saveServiceListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + FirewallDictionaryController dictionary = new FirewallDictionaryController(); + ModelAndView result = dictionary.saveServiceListDictionary(request, response); + return result.getViewName(); + } + + public String saveTermListDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + FirewallDictionaryController dictionary = new FirewallDictionaryController(); + ModelAndView result = dictionary.saveTermListDictionary(request, response); + return result.getViewName(); + } + + + + + public String saveMicroServiceLocationDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); + ModelAndView result = dictionary.saveMicroServiceLocationDictionary(request, response); + return result.getViewName(); + } + + public String saveMicroServiceConfigNameDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); + ModelAndView result = dictionary.saveMicroServiceConfigNameDictionary(request, response); + return result.getViewName(); + } + + public String saveDCAEUUIDDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); + ModelAndView result = dictionary.saveDCAEUUIDDictionary(request, response); + return result.getViewName(); + } + + public String saveMicroServiceModelsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); + ModelAndView result = dictionary.saveMicroServiceModelsDictionary(request, response); + return result.getViewName(); + } + + public String saveMicroServiceDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); + ModelAndView result = dictionary.saveMicroServiceAttributeDictionary(request, response); + return result.getViewName(); + } + + public String saveOptimizationModelsDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + OptimizationDictionaryController dictionary = new OptimizationDictionaryController(); + ModelAndView result = dictionary.saveOptimizationModelsDictionary(request, response); + return result.getViewName(); + } + + public String savePSServiceDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); + ModelAndView result = dictionary.savePSServiceDictionary(request, response); + return result.getViewName(); + } + + public String savePSResourceDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); + ModelAndView result = dictionary.savePSResourceDictionary(request, response); + return result.getViewName(); + } + + public String savePSTypeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); + ModelAndView result = dictionary.savePSTypeDictionary(request, response); + return result.getViewName(); + } + + public String savePSClosedLoopDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); + ModelAndView result = dictionary.savePSClosedLoopDictionary(request, response); + return result.getViewName(); + } + + public String savePSGroupScopeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); + ModelAndView result = dictionary.savePSGroupScopeDictionary(request, response); + return result.getViewName(); + } + + public String saveRiskTypeDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + + SafePolicyController dictionary = new SafePolicyController(); + ModelAndView result = dictionary.saveRiskTypeDictionary(request, response); + return result.getViewName(); + } + + public String saveSafePolicyWarningDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{ + SafePolicyController dictionary = new SafePolicyController(); + ModelAndView result = dictionary.saveSafePolicyWarningDictionary(request, response); + return result.getViewName(); + } + + + /* + * Methods that call the controller get methods directly to get dictionary data + */ + public void getOnapDictionary(HttpServletResponse response){ + DictionaryController dictionary = new DictionaryController(); + dictionary.getOnapNameDictionaryEntityData(response); + } + + public void getAttributeDictionary(HttpServletResponse response){ + DictionaryController dictionary = new DictionaryController(); + dictionary.getAttributeDictionaryEntityData(response); + } + + public void getActionPolicyDictionary(HttpServletResponse response){ + ActionPolicyDictionaryController action = new ActionPolicyDictionaryController(); + action.getActionPolicyDictionaryEntityData(response); + } + + public void getBRMSParamDictionary(HttpServletResponse response){ + BRMSDictionaryController dictionary = new BRMSDictionaryController(); + dictionary.getBRMSParamDictionaryEntityData(response); + } + + public void getVSCLAction(HttpServletResponse response){ + ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); + dictionary.getVSCLActionDictionaryEntityData(response); + } + + public void getVnfType(HttpServletResponse response){ + ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); + dictionary.getVNFTypeDictionaryEntityData(response); + } + + public void getPEPOptions(HttpServletResponse response){ + ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); + dictionary.getPEPOptionsDictionaryEntityData(response); + } + + public void getVarbind(HttpServletResponse response){ + ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); + dictionary.getVarbindDictionaryEntityData(response); + } + + public void getServiceType(HttpServletResponse response){ + ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); + dictionary.getClosedLoopServiceDictionaryEntityData(response); + } + + public void getSiteType(HttpServletResponse response){ + ClosedLoopDictionaryController dictionary = new ClosedLoopDictionaryController(); + dictionary.getClosedLoopSiteDictionaryEntityData(response); + } + + public void getSettingsDictionary(HttpServletResponse response){ + DecisionPolicyDictionaryController dictionary = new DecisionPolicyDictionaryController(); + dictionary.getSettingsDictionaryEntityData(response); + } + + public void getRainyDayDictionary(HttpServletResponse response){ + DecisionPolicyDictionaryController dictionary = new DecisionPolicyDictionaryController(); + dictionary.getRainyDayDictionaryEntityData(response); + } + + public void getDescriptiveDictionary(HttpServletResponse response){ + DescriptiveDictionaryController dictionary = new DescriptiveDictionaryController(); + dictionary.getDescriptiveDictionaryEntityData(response); + } + + public void getActionListDictionary(HttpServletResponse response){ + FirewallDictionaryController dictionary = new FirewallDictionaryController(); + dictionary.getActionListDictionaryEntityData(response); + } + + public void getProtocolListDictionary(HttpServletResponse response){ + FirewallDictionaryController dictionary = new FirewallDictionaryController(); + dictionary.getProtocolListDictionaryEntityData(response); + } + + public void getZoneDictionary(HttpServletResponse response){ + FirewallDictionaryController dictionary = new FirewallDictionaryController(); + dictionary.getZoneDictionaryEntityData(response); + } + + public void getSecurityZoneDictionary(HttpServletResponse response){ + FirewallDictionaryController dictionary = new FirewallDictionaryController(); + dictionary.getSecurityZoneDictionaryEntityData(response); + } + + public void getPrefixListDictionary(HttpServletResponse response){ + FirewallDictionaryController dictionary = new FirewallDictionaryController(); + dictionary.getPrefixListDictionaryEntityData(response); + } + + public void getAddressGroupDictionary(HttpServletResponse response){ + FirewallDictionaryController dictionary = new FirewallDictionaryController(); + dictionary.getAddressGroupDictionaryEntityData(response); + } + + public void getServiceGroupDictionary(HttpServletResponse response){ + FirewallDictionaryController dictionary = new FirewallDictionaryController(); + dictionary.getServiceGroupDictionaryEntityData(response); + } + + public void getServiceListDictionary(HttpServletResponse response){ + FirewallDictionaryController dictionary = new FirewallDictionaryController(); + dictionary.getServiceListDictionaryEntityData(response); + } + + public void getTermListDictionary(HttpServletResponse response){ + FirewallDictionaryController dictionary = new FirewallDictionaryController(); + dictionary.getTermListDictionaryEntityData(response); + } + + + public void getMicroServiceLocationDictionary(HttpServletResponse response){ + MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); + dictionary.getMicroServiceLocationDictionaryEntityData(response); + } + + public void getMicroServiceConfigNameDictionary(HttpServletResponse response){ + MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); + dictionary.getMicroServiceConfigNameDictionaryEntityData(response); + } + + public void getDCAEUUIDDictionary(HttpServletResponse response){ + MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); + dictionary.getDCAEUUIDDictionaryEntityData(response); + } + + public void getMicroServiceModelsDictionary(HttpServletResponse response){ + MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); + dictionary.getMicroServiceModelsDictionaryEntityData(response); + } + + public void getMicroServiceDictionary(HttpServletResponse response){ + MicroServiceDictionaryController dictionary = new MicroServiceDictionaryController(); + dictionary.getMicroServiceModelsDictionaryEntityData(response); + } + + public void getOptimizationModelsDictionary(HttpServletResponse response){ + OptimizationDictionaryController dictionary = new OptimizationDictionaryController(); + dictionary.getOptimizationModelsDictionaryEntityData(response); + } + + public void getPSServiceDictionary(HttpServletResponse response){ + PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); + dictionary.getPSServiceEntityData(response); + } + + public void getPSResourceDictionary(HttpServletResponse response){ + PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); + dictionary.getPSResourceEntityData(response); + } + + public void getPSTypeDictionary(HttpServletResponse response){ + PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); + dictionary.getPSTypeEntityData(response); + } + + public void getPSClosedLoopDictionary(HttpServletResponse response){ + PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); + dictionary.getPSClosedLoopEntityData(response); + } + + public void getPSGroupScopeDictionary(HttpServletResponse response){ + PolicyScopeDictionaryController dictionary = new PolicyScopeDictionaryController(); + dictionary.getGroupPolicyScopeEntityData(response); + } + + public void getRiskTypeDictionary(HttpServletResponse response){ + SafePolicyController dictionary = new SafePolicyController(); + dictionary.getRiskTypeDictionaryEntityData(response); + } + + public void getSafePolicyWarningDictionary(HttpServletResponse response) { + SafePolicyController dictionary = new SafePolicyController(); + dictionary.getSafePolicyWarningeEntityData(response); + } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/ImportService.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/ImportService.java index 7382a77a1..5e4b4ee7d 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/ImportService.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/ImportService.java @@ -41,187 +41,187 @@ import org.onap.policy.pap.xacml.rest.components.CreateNewMicroServiceModel; import org.onap.policy.pap.xacml.rest.components.CreateNewOptimizationModel; 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._ ]*"; - private static final String MISSING = "missing"; - - public void doImportMicroServicePut(HttpServletRequest request, HttpServletResponse response) { - 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; - } + 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._ ]*"; + private static final String MISSING = "missing"; - String description = request.getParameter("description"); - Map<String, String> successMap = new HashMap<>(); - if(("BRMSPARAM").equals(importServiceCreation)){ - StringBuilder builder = new StringBuilder(); - int ch; - try { - while((ch = request.getInputStream().read()) != -1){ - builder.append((char)ch); - } - } catch (IOException e) { - logger.error(e); - PolicyLogger.error(errorMessage); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - response.addHeader(errorMsg, MISSING); - response.addHeader(operation, importHeader); - response.addHeader(service, serviceName); - } - CreateBRMSRuleTemplate brmsRuleTemplate = new CreateBRMSRuleTemplate(); - successMap = brmsRuleTemplate.addRule(builder.toString(), serviceName, description, "API"); - } - else if(("MICROSERVICE").equals(importServiceCreation)){ - CreateNewMicroServiceModel newMS = null; - String randomID = UUID.randomUUID().toString(); - String type = ".xmi"; - if ( fileName != null) { - File extracDir = new File(extractDir); - if (!extracDir.exists()){ - extracDir.mkdirs(); - } - if (fileName.contains(".xmi") || fileName.contains(".yml")){ - if(fileName.contains(".yml")){ - type = ".yml"; - } - // get the request content into a String - String xmi = null; - java.util.Scanner scanner; - try { - scanner = new java.util.Scanner(request.getInputStream()); - scanner.useDelimiter("\\A"); - xmi = scanner.hasNext() ? scanner.next() : ""; - scanner.close(); - } catch (IOException e1) { - logger.error(e1); - PolicyLogger.error(errorMessage); - return; - } - PolicyLogger.info("Request from API to import new Service"); - try (Writer writer = new BufferedWriter(new OutputStreamWriter( - new FileOutputStream(extractDir + File.separator + randomID+type), "utf-8"))) { - writer.write(xmi); - } catch (IOException e) { - logger.error(e); - PolicyLogger.error(errorMessage); - return; - } - }else{ - InputStream inputStream = null; - try(FileOutputStream outputStream = new FileOutputStream(extractDir + File.separator + randomID+".zip")) { - inputStream = request.getInputStream(); - byte[] buffer = new byte[4096]; - int bytesRead = -1 ; - while ((bytesRead = inputStream.read(buffer)) != -1) { - outputStream.write(buffer, 0, bytesRead) ; - } - } catch (IOException e) { - PolicyLogger.error("Error in reading in Zip File from API call"+e); - return; - }finally{ - try { - if(inputStream != null){ - inputStream.close(); - } - } catch (IOException e) { - PolicyLogger.error("Exception Occured while closing the input/output stream"+e); - } - } - } - - newMS = new CreateNewMicroServiceModel(fileName, serviceName, "API", version, randomID); - - successMap = newMS.addValuesToNewModel(type); - - if (successMap.containsKey(successMessage)) { - successMap.clear(); - successMap = newMS.saveImportService(); - } - } - } else if(("OPTIMIZATION").equals(importServiceCreation)){ - CreateNewOptimizationModel newOOF = null; - String randomID = UUID.randomUUID().toString(); - if ( fileName != null) { - File extracDir = new File(extractDir); - if (!extracDir.exists()){ - extracDir.mkdirs(); - } - - String type = ".yml"; - - // get the request content into a String - String yml = null; - try (java.util.Scanner scanner = new java.util.Scanner(request.getInputStream());){ - scanner.useDelimiter("\\A"); - yml = scanner.hasNext() ? scanner.next() : ""; - } catch (IOException e1) { - logger.error(e1); - PolicyLogger.error(errorMessage); - return; - } - PolicyLogger.info("Request from API to import new Optimization Service Model"); - try (Writer writer = new BufferedWriter(new OutputStreamWriter( - new FileOutputStream(extractDir + File.separator + randomID+type), "utf-8"))) { - writer.write(yml); - } catch (IOException e) { - logger.error(e); - PolicyLogger.error(errorMessage); - return; - } - - newOOF = new CreateNewOptimizationModel(fileName, serviceName, "API Import Service", version, randomID); - successMap = newOOF.addValuesToNewModel(); - if (successMap.containsKey(successMessage)) { - successMap.clear(); - successMap = newOOF.saveImportService(); - } - } - } - - // return a response to the PAP - if (successMap.containsKey(successMessage)) { - response.setStatus(HttpServletResponse.SC_OK); - 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(errorMsg, "modelExistsDB"); - }else{ - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - response.addHeader(errorMsg, "importDB"); - } - response.addHeader(operation, importHeader); - response.addHeader(service, serviceName); - }else if (successMap.get(errorMsg).contains("MISSING")){ - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - 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(errorMsg, "validation"); - response.addHeader(operation, importHeader); - response.addHeader(service, serviceName); - } - } + public void doImportMicroServicePut(HttpServletRequest request, HttpServletResponse response) { + 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<>(); + if(("BRMSPARAM").equals(importServiceCreation)){ + StringBuilder builder = new StringBuilder(); + int ch; + try { + while((ch = request.getInputStream().read()) != -1){ + builder.append((char)ch); + } + } catch (IOException e) { + logger.error(e); + PolicyLogger.error(errorMessage); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + response.addHeader(errorMsg, MISSING); + response.addHeader(operation, importHeader); + response.addHeader(service, serviceName); + } + CreateBRMSRuleTemplate brmsRuleTemplate = new CreateBRMSRuleTemplate(); + successMap = brmsRuleTemplate.addRule(builder.toString(), serviceName, description, "API"); + } + else if(("MICROSERVICE").equals(importServiceCreation)){ + CreateNewMicroServiceModel newMS = null; + String randomID = UUID.randomUUID().toString(); + String type = ".xmi"; + if ( fileName != null) { + File extracDir = new File(extractDir); + if (!extracDir.exists()){ + extracDir.mkdirs(); + } + if (fileName.contains(".xmi") || fileName.contains(".yml")){ + if(fileName.contains(".yml")){ + type = ".yml"; + } + // get the request content into a String + String xmi = null; + java.util.Scanner scanner; + try { + scanner = new java.util.Scanner(request.getInputStream()); + scanner.useDelimiter("\\A"); + xmi = scanner.hasNext() ? scanner.next() : ""; + scanner.close(); + } catch (IOException e1) { + logger.error(e1); + PolicyLogger.error(errorMessage); + return; + } + PolicyLogger.info("Request from API to import new Service"); + try (Writer writer = new BufferedWriter(new OutputStreamWriter( + new FileOutputStream(extractDir + File.separator + randomID+type), "utf-8"))) { + writer.write(xmi); + } catch (IOException e) { + logger.error(e); + PolicyLogger.error(errorMessage); + return; + } + }else{ + InputStream inputStream = null; + try(FileOutputStream outputStream = new FileOutputStream(extractDir + File.separator + randomID+".zip")) { + inputStream = request.getInputStream(); + byte[] buffer = new byte[4096]; + int bytesRead = -1 ; + while ((bytesRead = inputStream.read(buffer)) != -1) { + outputStream.write(buffer, 0, bytesRead) ; + } + } catch (IOException e) { + PolicyLogger.error("Error in reading in Zip File from API call"+e); + return; + }finally{ + try { + if(inputStream != null){ + inputStream.close(); + } + } catch (IOException e) { + PolicyLogger.error("Exception Occured while closing the input/output stream"+e); + } + } + } + + newMS = new CreateNewMicroServiceModel(fileName, serviceName, "API", version, randomID); + + successMap = newMS.addValuesToNewModel(type); + + if (successMap.containsKey(successMessage)) { + successMap.clear(); + successMap = newMS.saveImportService(); + } + } + } else if(("OPTIMIZATION").equals(importServiceCreation)){ + CreateNewOptimizationModel newOOF = null; + String randomID = UUID.randomUUID().toString(); + if ( fileName != null) { + File extracDir = new File(extractDir); + if (!extracDir.exists()){ + extracDir.mkdirs(); + } + + String type = ".yml"; + + // get the request content into a String + String yml = null; + try (java.util.Scanner scanner = new java.util.Scanner(request.getInputStream());){ + scanner.useDelimiter("\\A"); + yml = scanner.hasNext() ? scanner.next() : ""; + } catch (IOException e1) { + logger.error(e1); + PolicyLogger.error(errorMessage); + return; + } + PolicyLogger.info("Request from API to import new Optimization Service Model"); + try (Writer writer = new BufferedWriter(new OutputStreamWriter( + new FileOutputStream(extractDir + File.separator + randomID+type), "utf-8"))) { + writer.write(yml); + } catch (IOException e) { + logger.error(e); + PolicyLogger.error(errorMessage); + return; + } + + newOOF = new CreateNewOptimizationModel(fileName, serviceName, "API Import Service", version, randomID); + successMap = newOOF.addValuesToNewModel(); + if (successMap.containsKey(successMessage)) { + successMap.clear(); + successMap = newOOF.saveImportService(); + } + } + } + + // return a response to the PAP + if (successMap.containsKey(successMessage)) { + response.setStatus(HttpServletResponse.SC_OK); + 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(errorMsg, "modelExistsDB"); + }else{ + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + response.addHeader(errorMsg, "importDB"); + } + response.addHeader(operation, importHeader); + response.addHeader(service, serviceName); + }else if (successMap.get(errorMsg).contains("MISSING")){ + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + 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(errorMsg, "validation"); + response.addHeader(operation, importHeader); + response.addHeader(service, serviceName); + } + } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/MetricService.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/MetricService.java index 3fff9f266..864201cfe 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/MetricService.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/MetricService.java @@ -35,64 +35,64 @@ import org.onap.policy.xacml.api.pap.OnapPDPGroup; import com.att.research.xacml.api.pap.PDPPolicy; public class MetricService { - private static String errorMsg = "error"; - /* - * This is a private constructor - * */ - private MetricService(){ - - } - public static void doGetPolicyMetrics(HttpServletResponse response) { - Set<OnapPDPGroup> groups = new HashSet<>(); - try { - //get the count of policies on the PDP - if(XACMLPapServlet.getPAPEngine()!=null){ - groups = XACMLPapServlet.getPAPEngine().getOnapPDPGroups(); - } - int pdpCount = 0; - for (OnapPDPGroup group : groups) { - Set<PDPPolicy> policies = group.getPolicies(); - pdpCount += policies.size(); - } - //get the count of policies on the PAP - EntityManager em = null; - if(XACMLPapServlet.getEmf()!=null){ - em = XACMLPapServlet.getEmf().createEntityManager(); - } - if (em==null){ - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Error creating entity manager with persistence unit: " + XACMLPapServlet.getPersistenceUnit()); - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - response.addHeader(errorMsg, "Error creating entity manager with persistence unit"); - return; - } - int papCount = ((Number) em.createNamedQuery("PolicyVersion.findAllCount").getSingleResult()).intValue(); - em.close(); - int totalCount = pdpCount + papCount; - //create json string for API response - JSONObject json = new JSONObject(); - json.put("papCount", papCount); - json.put("pdpCount", pdpCount); - json.put("totalCount", totalCount); - if (pdpCount>0 && papCount>0 && totalCount>0) { - PolicyLogger.info("Metrics have been found on the Policy Engine for the number of policies on the PAP and PDP."); - response.setStatus(HttpServletResponse.SC_OK); - response.addHeader("successMapKey", "success"); - response.addHeader("operation", "getMetrics"); - response.addHeader("metrics", json.toString() ); - return; - }else{ - String message = "The policy count on the PAP and PDP is 0. Please check the database and file system to correct this error."; - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - response.addHeader(errorMsg, message); - return; - } - } catch (Exception e) { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + " Error Querying the Database: " + e.getMessage(); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "XACMLPapServlet", " Error Querying the Database."); - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - response.addHeader(errorMsg, message); - return; - } - } + private static String errorMsg = "error"; + /* + * This is a private constructor + * */ + private MetricService(){ + + } + public static void doGetPolicyMetrics(HttpServletResponse response) { + Set<OnapPDPGroup> groups = new HashSet<>(); + try { + //get the count of policies on the PDP + if(XACMLPapServlet.getPAPEngine()!=null){ + groups = XACMLPapServlet.getPAPEngine().getOnapPDPGroups(); + } + int pdpCount = 0; + for (OnapPDPGroup group : groups) { + Set<PDPPolicy> policies = group.getPolicies(); + pdpCount += policies.size(); + } + //get the count of policies on the PAP + EntityManager em = null; + if(XACMLPapServlet.getEmf()!=null){ + em = XACMLPapServlet.getEmf().createEntityManager(); + } + if (em==null){ + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Error creating entity manager with persistence unit: " + XACMLPapServlet.getPersistenceUnit()); + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + response.addHeader(errorMsg, "Error creating entity manager with persistence unit"); + return; + } + int papCount = ((Number) em.createNamedQuery("PolicyVersion.findAllCount").getSingleResult()).intValue(); + em.close(); + int totalCount = pdpCount + papCount; + //create json string for API response + JSONObject json = new JSONObject(); + json.put("papCount", papCount); + json.put("pdpCount", pdpCount); + json.put("totalCount", totalCount); + if (pdpCount>0 && papCount>0 && totalCount>0) { + PolicyLogger.info("Metrics have been found on the Policy Engine for the number of policies on the PAP and PDP."); + response.setStatus(HttpServletResponse.SC_OK); + response.addHeader("successMapKey", "success"); + response.addHeader("operation", "getMetrics"); + response.addHeader("metrics", json.toString() ); + return; + }else{ + String message = "The policy count on the PAP and PDP is 0. Please check the database and file system to correct this error."; + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + response.addHeader(errorMsg, message); + return; + } + } catch (Exception e) { + String message = XACMLErrorConstants.ERROR_DATA_ISSUE + " Error Querying the Database: " + e.getMessage(); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "XACMLPapServlet", " Error Querying the Database."); + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + response.addHeader(errorMsg, message); + return; + } + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/util/AbstractPolicyCreation.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/util/AbstractPolicyCreation.java index 0c98a44a3..f411e7d98 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/util/AbstractPolicyCreation.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/util/AbstractPolicyCreation.java @@ -30,69 +30,69 @@ import com.google.common.base.Joiner; @Component public abstract class AbstractPolicyCreation { - - public static String getDomain() { - return XACMLProperties.getProperty(XACMLRestProperties.PROP_ADMIN_DOMAIN, "urn"); - } - - public String newPolicyID() { - return Joiner.on(':').skipNulls().join((getDomain().startsWith("urn") ? null: "urn"), - getDomain().replaceAll("[/\\\\.]", ":"), "xacml", "policy", "id", UUID.randomUUID()); - } - - public String convertDate(String dateTTL) { - String formateDate = null; - if(dateTTL.contains("/")){ - formateDate = dateTTL.replace("/", "-"); - }else { - formateDate = dateTTL; - } - return formateDate; - } - - - public void updatePolicyCreationToDatabase(){ - // Add it into our tree + public static String getDomain() { + return XACMLProperties.getProperty(XACMLRestProperties.PROP_ADMIN_DOMAIN, "urn"); + } + + public String newPolicyID() { + return Joiner.on(':').skipNulls().join((getDomain().startsWith("urn") ? null: "urn"), + getDomain().replaceAll("[/\\\\.]", ":"), "xacml", "policy", "id", UUID.randomUUID()); + } + + public String convertDate(String dateTTL) { + String formateDate = null; + if(dateTTL.contains("/")){ + formateDate = dateTTL.replace("/", "-"); + }else { + formateDate = dateTTL; + } + return formateDate; + } + + + + public void updatePolicyCreationToDatabase(){ + // Add it into our tree /* Path finalPolicyPath = null; - finalPolicyPath = Paths.get(successMap.get("success")); - PolicyElasticSearchController controller = new PolicyElasticSearchController(); - controller.updateElk(finalPolicyPath.toString()); - File file = finalPolicyPath.toFile(); - if(file != null){ - String policyName = file.toString(); - String removePath = policyName.substring(policyName.indexOf("repository")+11); - String removeXml = removePath.replace(".xml", ""); - String removeExtension = removeXml.substring(0, removeXml.indexOf(".")); - List<Object> policyVersionList = commonClassDao.getDataById(PolicyVersion.class, "policyName", removeExtension); - if (policyVersionList.size() > 0) { - for(int i = 0; i < policyVersionList.size(); i++) { - PolicyVersion entityItem = (PolicyVersion) policyVersionList.get(i); - if(entityItem.getPolicyName().equals(removeExtension)){ - version = entityItem.getHigherVersion() +1; - entityItem.setActiveVersion(version); - entityItem.setHigherVersion(version); - entityItem.setModifiedBy(userId); - commonClassDao.update(entityItem); - if(policyData.isEditPolicy){ - PolicyNotificationMail email = new PolicyNotificationMail(); - String mode = "EditPolicy"; - String policyNameForEmail = policyData.getDomainDir() + File.separator + policyData.getOldPolicyFileName() + ".xml"; - email.sendMail(entityItem, policyNameForEmail, mode, commonClassDao); - } - } - } - }else{ - PolicyVersion entityItem = new PolicyVersion(); - entityItem.setActiveVersion(version); - entityItem.setHigherVersion(version); - entityItem.setPolicyName(removeExtension); - entityItem.setCreatedBy(userId); - entityItem.setModifiedBy(userId); - commonClassDao.save(entityItem); - } - }*/ - } + finalPolicyPath = Paths.get(successMap.get("success")); + PolicyElasticSearchController controller = new PolicyElasticSearchController(); + controller.updateElk(finalPolicyPath.toString()); + File file = finalPolicyPath.toFile(); + if(file != null){ + String policyName = file.toString(); + String removePath = policyName.substring(policyName.indexOf("repository")+11); + String removeXml = removePath.replace(".xml", ""); + String removeExtension = removeXml.substring(0, removeXml.indexOf(".")); + List<Object> policyVersionList = commonClassDao.getDataById(PolicyVersion.class, "policyName", removeExtension); + if (policyVersionList.size() > 0) { + for(int i = 0; i < policyVersionList.size(); i++) { + PolicyVersion entityItem = (PolicyVersion) policyVersionList.get(i); + if(entityItem.getPolicyName().equals(removeExtension)){ + version = entityItem.getHigherVersion() +1; + entityItem.setActiveVersion(version); + entityItem.setHigherVersion(version); + entityItem.setModifiedBy(userId); + commonClassDao.update(entityItem); + if(policyData.isEditPolicy){ + PolicyNotificationMail email = new PolicyNotificationMail(); + String mode = "EditPolicy"; + String policyNameForEmail = policyData.getDomainDir() + File.separator + policyData.getOldPolicyFileName() + ".xml"; + email.sendMail(entityItem, policyNameForEmail, mode, commonClassDao); + } + } + } + }else{ + PolicyVersion entityItem = new PolicyVersion(); + entityItem.setActiveVersion(version); + entityItem.setHigherVersion(version); + entityItem.setPolicyName(removeExtension); + entityItem.setCreatedBy(userId); + entityItem.setModifiedBy(userId); + commonClassDao.save(entityItem); + } + }*/ + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/util/DictionaryUtils.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/util/DictionaryUtils.java index 5610577a9..f85255785 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/util/DictionaryUtils.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/util/DictionaryUtils.java @@ -48,166 +48,166 @@ import com.fasterxml.jackson.databind.ObjectMapper; @Service public class DictionaryUtils { - private static final Log LOGGER = LogFactory.getLog(DictionaryUtils.class); - - private static String apiflag = "apiflag"; - private static String operation = "operation"; - private static String duplicateResponseString = "Duplicate"; - private static String utf8 = "UTF-8"; - private static String applicationJsonContentType = "application / json"; - - private static CommonClassDao commonClassDao; - - private static DictionaryUtils dictionaryUtils; - - public static synchronized DictionaryUtils getDictionaryUtils() { - return dictionaryUtils != null ? dictionaryUtils : new DictionaryUtils(); - } - - public static synchronized void setDictionaryUtils(DictionaryUtils dictionaryUtils) { - DictionaryUtils.dictionaryUtils = dictionaryUtils; - } - - @Autowired - public DictionaryUtils(CommonClassDao commonClassDao){ - DictionaryUtils.commonClassDao = commonClassDao; - } - - public DictionaryUtils(){ - super(); - } - - public UserInfo getUserInfo(String loginId){ - return (UserInfo) commonClassDao.getEntityItem(UserInfo.class, "userLoginId", loginId); - } - - public boolean isRequestFromAPI(HttpServletRequest request){ - return request.getParameter(apiflag)!=null && "api".equalsIgnoreCase(request.getParameter(apiflag)); - } - - public String appendKey(List<Object> objects, String key1, String appendValue){ - StringBuilder userValue = new StringBuilder(); - int counter = 0; - for(Object attribute : objects){ - if(attribute instanceof LinkedHashMap<?, ?>){ - String key = ((LinkedHashMap<?, ?>) attribute).get(key1).toString(); - if(counter>0){ - userValue.append(appendValue); - } - userValue.append(key); - counter ++; - } - } - return userValue.toString(); - } - - public String appendKeyValue(List<Object> objects, String append1, String append2){ - StringBuilder header = new StringBuilder(); - int counter = 0; - for(Object attribute : objects){ - if(attribute instanceof LinkedHashMap<?, ?>){ - String key = ((LinkedHashMap<?, ?>) attribute).get("option").toString(); - String value = ((LinkedHashMap<?, ?>) attribute).get("number").toString(); - if(counter>0){ - header.append(append1); - } - header.append(key).append(append2).append(value); - counter ++; - } - } - return header.toString(); - } - - public Datatype getDataType(String datatype){ - Datatype a = new Datatype(); - if("string".equalsIgnoreCase(datatype)){ - a.setId(26); - }else if("integer".equalsIgnoreCase(datatype)){ - a.setId(12); - }else if("boolean".equalsIgnoreCase(datatype)){ - a.setId(18); - }else if("double".equalsIgnoreCase(datatype)){ - a.setId(25); - }else if("user".equalsIgnoreCase(datatype)){ - a.setId(29); - } - return a; - } - - public Category getCategory(){ - return (Category) commonClassDao.getDataById(Category.class, "shortName", "resource").get(0); - } - - public ModelAndView getResultForApi(String inResponseString){ - String responseString = inResponseString; - if(responseString!=null && !duplicateResponseString.equals(responseString)){ - responseString = "Success"; - } - ModelAndView result = new ModelAndView(); - result.setViewName(responseString); - return result; - } - - public void setResponseData(HttpServletResponse response, String key, String responseString) throws IOException{ - response.setCharacterEncoding(utf8); - response.setContentType(applicationJsonContentType); - - PrintWriter out = response.getWriter(); - JSONObject j = new JSONObject("{"+key+":" + responseString + "}"); - out.write(j.toString()); - } - - public void setErrorResponseData(HttpServletResponse response, Exception e) throws IOException{ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e); - response.setCharacterEncoding(utf8); - PrintWriter out = response.getWriter(); - out.write(e.getMessage()); - } - - @SuppressWarnings("rawtypes") - public void getDataByEntity(HttpServletResponse response, String key, String value, Class className){ - try{ - Map<String, Object> model = new HashMap<>(); - ObjectMapper mapper = new ObjectMapper(); - model.put(key, mapper.writeValueAsString(commonClassDao.getDataByColumn(className, value))); - JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model)); - JSONObject j = new JSONObject(msg); - response.getWriter().write(j.toString()); - }catch(Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e); - } - } - - @SuppressWarnings("rawtypes") - public void getData(HttpServletResponse response, String key, Class className){ - try{ - Map<String, Object> model = new HashMap<>(); - ObjectMapper mapper = new ObjectMapper(); - model.put(key, mapper.writeValueAsString(commonClassDao.getData(className))); - JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model)); - JSONObject j = new JSONObject(msg); + private static final Log LOGGER = LogFactory.getLog(DictionaryUtils.class); + + private static String apiflag = "apiflag"; + private static String operation = "operation"; + private static String duplicateResponseString = "Duplicate"; + private static String utf8 = "UTF-8"; + private static String applicationJsonContentType = "application / json"; + + private static CommonClassDao commonClassDao; + + private static DictionaryUtils dictionaryUtils; + + public static synchronized DictionaryUtils getDictionaryUtils() { + return dictionaryUtils != null ? dictionaryUtils : new DictionaryUtils(); + } + + public static synchronized void setDictionaryUtils(DictionaryUtils dictionaryUtils) { + DictionaryUtils.dictionaryUtils = dictionaryUtils; + } + + @Autowired + public DictionaryUtils(CommonClassDao commonClassDao){ + DictionaryUtils.commonClassDao = commonClassDao; + } + + public DictionaryUtils(){ + super(); + } + + public UserInfo getUserInfo(String loginId){ + return (UserInfo) commonClassDao.getEntityItem(UserInfo.class, "userLoginId", loginId); + } + + public boolean isRequestFromAPI(HttpServletRequest request){ + return request.getParameter(apiflag)!=null && "api".equalsIgnoreCase(request.getParameter(apiflag)); + } + + public String appendKey(List<Object> objects, String key1, String appendValue){ + StringBuilder userValue = new StringBuilder(); + int counter = 0; + for(Object attribute : objects){ + if(attribute instanceof LinkedHashMap<?, ?>){ + String key = ((LinkedHashMap<?, ?>) attribute).get(key1).toString(); + if(counter>0){ + userValue.append(appendValue); + } + userValue.append(key); + counter ++; + } + } + return userValue.toString(); + } + + public String appendKeyValue(List<Object> objects, String append1, String append2){ + StringBuilder header = new StringBuilder(); + int counter = 0; + for(Object attribute : objects){ + if(attribute instanceof LinkedHashMap<?, ?>){ + String key = ((LinkedHashMap<?, ?>) attribute).get("option").toString(); + String value = ((LinkedHashMap<?, ?>) attribute).get("number").toString(); + if(counter>0){ + header.append(append1); + } + header.append(key).append(append2).append(value); + counter ++; + } + } + return header.toString(); + } + + public Datatype getDataType(String datatype){ + Datatype a = new Datatype(); + if("string".equalsIgnoreCase(datatype)){ + a.setId(26); + }else if("integer".equalsIgnoreCase(datatype)){ + a.setId(12); + }else if("boolean".equalsIgnoreCase(datatype)){ + a.setId(18); + }else if("double".equalsIgnoreCase(datatype)){ + a.setId(25); + }else if("user".equalsIgnoreCase(datatype)){ + a.setId(29); + } + return a; + } + + public Category getCategory(){ + return (Category) commonClassDao.getDataById(Category.class, "shortName", "resource").get(0); + } + + public ModelAndView getResultForApi(String inResponseString){ + String responseString = inResponseString; + if(responseString!=null && !duplicateResponseString.equals(responseString)){ + responseString = "Success"; + } + ModelAndView result = new ModelAndView(); + result.setViewName(responseString); + return result; + } + + public void setResponseData(HttpServletResponse response, String key, String responseString) throws IOException{ + response.setCharacterEncoding(utf8); + response.setContentType(applicationJsonContentType); + + PrintWriter out = response.getWriter(); + JSONObject j = new JSONObject("{"+key+":" + responseString + "}"); + out.write(j.toString()); + } + + public void setErrorResponseData(HttpServletResponse response, Exception e) throws IOException{ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e); + response.setCharacterEncoding(utf8); + PrintWriter out = response.getWriter(); + out.write(e.getMessage()); + } + + @SuppressWarnings("rawtypes") + public void getDataByEntity(HttpServletResponse response, String key, String value, Class className){ + try{ + Map<String, Object> model = new HashMap<>(); + ObjectMapper mapper = new ObjectMapper(); + model.put(key, mapper.writeValueAsString(commonClassDao.getDataByColumn(className, value))); + JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model)); + JSONObject j = new JSONObject(msg); + response.getWriter().write(j.toString()); + }catch(Exception e){ + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e); + } + } + + @SuppressWarnings("rawtypes") + public void getData(HttpServletResponse response, String key, Class className){ + try{ + Map<String, Object> model = new HashMap<>(); + ObjectMapper mapper = new ObjectMapper(); + model.put(key, mapper.writeValueAsString(commonClassDao.getData(className))); + JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model)); + JSONObject j = new JSONObject(msg); response.addHeader("successMapKey", "success"); response.addHeader(operation, "getDictionary"); - response.getWriter().write(j.toString()); - }catch(Exception e){ + response.getWriter().write(j.toString()); + }catch(Exception e){ LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e); response.setStatus(HttpServletResponse.SC_BAD_REQUEST); response.addHeader("error", "dictionaryDBQuery"); - } - } - - @SuppressWarnings("unchecked") - public void removeData(HttpServletRequest request, HttpServletResponse response, String key, @SuppressWarnings("rawtypes") Class className) throws IOException{ - try{ - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - JsonNode root = mapper.readTree(request.getReader()); - commonClassDao.delete((Object)mapper.readValue(root.get("data").toString(), className)); - String responseString = mapper.writeValueAsString(commonClassDao.getData(className)); - setResponseData(response, key, responseString); - }catch(Exception e){ - setErrorResponseData(response, e); - } - } - + } + } + + @SuppressWarnings("unchecked") + public void removeData(HttpServletRequest request, HttpServletResponse response, String key, @SuppressWarnings("rawtypes") Class className) throws IOException{ + try{ + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNode root = mapper.readTree(request.getReader()); + commonClassDao.delete((Object)mapper.readValue(root.get("data").toString(), className)); + String responseString = mapper.writeValueAsString(commonClassDao.getData(className)); + setResponseData(response, key, responseString); + }catch(Exception e){ + setErrorResponseData(response, e); + } + } + } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/util/JPAUtils.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/util/JPAUtils.java index 22c44a8ab..b9880d8ac 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/util/JPAUtils.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/util/JPAUtils.java @@ -31,88 +31,88 @@ import org.onap.policy.common.logging.flexlogger.FlexLogger; import org.onap.policy.common.logging.flexlogger.Logger; public class JPAUtils { - private static final Logger LOGGER = FlexLogger.getLogger(JPAUtils.class); - - private static EntityManagerFactory emf; - private static JPAUtils currentInstance = null; - - - /** - * Get an instance of a JPAUtils. It creates one if it does not exist. - * Only one instance is allowed to be created per server. - * @param emf The EntityFactoryManager to be used for database connections - * @return The new instance of JPAUtils or throw exception if the given emf is null. - * @throws IllegalStateException if a JPAUtils has already been constructed. Call getJPAUtilsInstance() to get this. - */ - public static JPAUtils getJPAUtilsInstance(EntityManagerFactory emf){ - LOGGER.debug("getJPAUtilsInstance(EntityManagerFactory emf) as getJPAUtilsInstance("+emf+") called"); - if(currentInstance == null){ - if(emf != null){ - currentInstance = new JPAUtils(emf); - return currentInstance; - } - throw new IllegalStateException("The EntityManagerFactory is Null"); - } - return currentInstance; - } - - private JPAUtils(EntityManagerFactory emf){ - LOGGER.debug("JPAUtils(EntityManagerFactory emf) as JPAUtils("+emf+") called"); - JPAUtils.emf = emf; - } - - /** - * Returns the lockdown value, in case of exception it is assumed that lockdown functionality - * is not supported and returns false. - * - * - * @throws ReadOnlyException - * @throws ConversionException - */ - public boolean dbLockdownIgnoreErrors() { - if (LOGGER.isTraceEnabled()) - LOGGER.trace("ENTER"); - - boolean lockdown = false; - try { - lockdown = dbLockdown(); - } catch (Exception e) { - LOGGER.warn("Cannot access DB lockdown value", e); - } - return lockdown; - } - - /** - * Returns the lockdown value from the database. - * - * @throws ReadOnlyException - * @throws ConversionException - */ - public boolean dbLockdown() - throws IllegalAccessException { - if (LOGGER.isTraceEnabled()) - LOGGER.trace("ENTER"); - - EntityManager em = emf.createEntityManager(); - Query globalRoleSettingsJPA = em.createNamedQuery("GlobalRoleSettings.findAll"); - - GlobalRoleSettings globalRoleSettings = (GlobalRoleSettings) globalRoleSettingsJPA.getSingleResult(); - - if (globalRoleSettings == null) { - // this should not happen - String msg = "NO GlobalSetttings for " + XacmlAdminAuthorization.Role.ROLE_SUPERADMIN.toString(); - if (LOGGER.isErrorEnabled()) - LOGGER.error(msg); - throw new IllegalAccessException(msg); - } - - if (!globalRoleSettings.getRole().equals(XacmlAdminAuthorization.Role.ROLE_SUPERADMIN.toString())) { - String msg = "NOT FOUND db data for " + XacmlAdminAuthorization.Role.ROLE_SUPERADMIN.toString(); - if (LOGGER.isErrorEnabled()) - LOGGER.error(msg); - throw new IllegalAccessException(msg); - } - - return globalRoleSettings.isLockdown(); - } + private static final Logger LOGGER = FlexLogger.getLogger(JPAUtils.class); + + private static EntityManagerFactory emf; + private static JPAUtils currentInstance = null; + + + /** + * Get an instance of a JPAUtils. It creates one if it does not exist. + * Only one instance is allowed to be created per server. + * @param emf The EntityFactoryManager to be used for database connections + * @return The new instance of JPAUtils or throw exception if the given emf is null. + * @throws IllegalStateException if a JPAUtils has already been constructed. Call getJPAUtilsInstance() to get this. + */ + public static JPAUtils getJPAUtilsInstance(EntityManagerFactory emf){ + LOGGER.debug("getJPAUtilsInstance(EntityManagerFactory emf) as getJPAUtilsInstance("+emf+") called"); + if(currentInstance == null){ + if(emf != null){ + currentInstance = new JPAUtils(emf); + return currentInstance; + } + throw new IllegalStateException("The EntityManagerFactory is Null"); + } + return currentInstance; + } + + private JPAUtils(EntityManagerFactory emf){ + LOGGER.debug("JPAUtils(EntityManagerFactory emf) as JPAUtils("+emf+") called"); + JPAUtils.emf = emf; + } + + /** + * Returns the lockdown value, in case of exception it is assumed that lockdown functionality + * is not supported and returns false. + * + * + * @throws ReadOnlyException + * @throws ConversionException + */ + public boolean dbLockdownIgnoreErrors() { + if (LOGGER.isTraceEnabled()) + LOGGER.trace("ENTER"); + + boolean lockdown = false; + try { + lockdown = dbLockdown(); + } catch (Exception e) { + LOGGER.warn("Cannot access DB lockdown value", e); + } + return lockdown; + } + + /** + * Returns the lockdown value from the database. + * + * @throws ReadOnlyException + * @throws ConversionException + */ + public boolean dbLockdown() + throws IllegalAccessException { + if (LOGGER.isTraceEnabled()) + LOGGER.trace("ENTER"); + + EntityManager em = emf.createEntityManager(); + Query globalRoleSettingsJPA = em.createNamedQuery("GlobalRoleSettings.findAll"); + + GlobalRoleSettings globalRoleSettings = (GlobalRoleSettings) globalRoleSettingsJPA.getSingleResult(); + + if (globalRoleSettings == null) { + // this should not happen + String msg = "NO GlobalSetttings for " + XacmlAdminAuthorization.Role.ROLE_SUPERADMIN.toString(); + if (LOGGER.isErrorEnabled()) + LOGGER.error(msg); + throw new IllegalAccessException(msg); + } + + if (!globalRoleSettings.getRole().equals(XacmlAdminAuthorization.Role.ROLE_SUPERADMIN.toString())) { + String msg = "NOT FOUND db data for " + XacmlAdminAuthorization.Role.ROLE_SUPERADMIN.toString(); + if (LOGGER.isErrorEnabled()) + LOGGER.error(msg); + throw new IllegalAccessException(msg); + } + + return globalRoleSettings.isLockdown(); + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/util/JsonMessage.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/util/JsonMessage.java index ab3b126ea..6ea0c79ee 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/util/JsonMessage.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/util/JsonMessage.java @@ -22,46 +22,46 @@ package org.onap.policy.pap.xacml.rest.util; public class JsonMessage { - private String data; - private String data2; - private String data3; - public JsonMessage(String data) { - super(); - this.data = data; - } - public JsonMessage(String data,String data2) { - super(); - this.data = data; - this.data2 = data2; - } + private String data; + private String data2; + private String data3; + public JsonMessage(String data) { + super(); + this.data = data; + } + public JsonMessage(String data,String data2) { + super(); + this.data = data; + this.data2 = data2; + } + + public JsonMessage(String data,String data2,String data3) { + super(); + this.data = data; + this.data2 = data2; + this.data3 = data3; + } + + public String getData() { + return data; + } + + public void setData(String data) { + this.data = data; + } + public String getData2() { + return data2; + } + public void setData2(String data2) { + this.data2 = data2; + } + public String getData3() { + return data3; + } + public void setData3(String data3) { + this.data3 = data3; + } - public JsonMessage(String data,String data2,String data3) { - super(); - this.data = data; - this.data2 = data2; - this.data3 = data3; - } - - public String getData() { - return data; - } - public void setData(String data) { - this.data = data; - } - public String getData2() { - return data2; - } - public void setData2(String data2) { - this.data2 = data2; - } - public String getData3() { - return data3; - } - public void setData3(String data3) { - this.data3 = data3; - } - - } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/restAuth/AuthenticationService.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/restAuth/AuthenticationService.java index 352505ec5..0ac6c7009 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/restAuth/AuthenticationService.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/restAuth/AuthenticationService.java @@ -31,34 +31,34 @@ import org.onap.policy.utils.CryptoUtils; import com.att.research.xacml.util.XACMLProperties; public class AuthenticationService { - private String papID = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_USERID); - private String papPass = CryptoUtils.decryptTxtNoExStr(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_PASS)); - - public boolean authenticate(String authCredentials) { + private String papID = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_USERID); + private String papPass = CryptoUtils.decryptTxtNoExStr(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_PASS)); - if (null == authCredentials) - return false; - // header value format will be "Basic encodedstring" for Basic authentication. - final String encodedUserPassword = authCredentials.replaceFirst("Basic" + " ", ""); - String usernameAndPassword = null; - try { - byte[] decodedBytes = Base64.getDecoder().decode(encodedUserPassword); - usernameAndPassword = new String(decodedBytes, "UTF-8"); - } catch (Exception e) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "AuthenticationService", "Exception decoding username and password"); - return false; - } - try { - final StringTokenizer tokenizer = new StringTokenizer(usernameAndPassword, ":"); - final String username = tokenizer.nextToken(); - final String password = tokenizer.nextToken(); + public boolean authenticate(String authCredentials) { + + if (null == authCredentials) + return false; + // header value format will be "Basic encodedstring" for Basic authentication. + final String encodedUserPassword = authCredentials.replaceFirst("Basic" + " ", ""); + String usernameAndPassword = null; + try { + byte[] decodedBytes = Base64.getDecoder().decode(encodedUserPassword); + usernameAndPassword = new String(decodedBytes, "UTF-8"); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "AuthenticationService", "Exception decoding username and password"); + return false; + } + try { + final StringTokenizer tokenizer = new StringTokenizer(usernameAndPassword, ":"); + final String username = tokenizer.nextToken(); + final String password = tokenizer.nextToken(); + + boolean authenticationStatus = papID.equals(username) && papPass.equals(password); + return authenticationStatus; + } catch (Exception e){ + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "AuthenticationService", "Exception authenticating user"); + return false; + } + } - boolean authenticationStatus = papID.equals(username) && papPass.equals(password); - return authenticationStatus; - } catch (Exception e){ - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "AuthenticationService", "Exception authenticating user"); - return false; - } - } - } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/restAuth/CheckPDP.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/restAuth/CheckPDP.java index 335b94f51..28207f29d 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/restAuth/CheckPDP.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/restAuth/CheckPDP.java @@ -47,137 +47,137 @@ import com.att.research.xacml.api.pap.PAPException; public class CheckPDP { - private static Path pdpPath = null; - private static Properties pdpProp = null; - private static Long oldModified = null; - private static Long newModified = null; - private static HashMap<String, String> pdpMap = null; - private static final Logger logger = FlexLogger.getLogger(CheckPDP.class); + private static Path pdpPath = null; + private static Properties pdpProp = null; + private static Long oldModified = null; + private static Long newModified = null; + private static HashMap<String, String> pdpMap = null; + private static final Logger logger = FlexLogger.getLogger(CheckPDP.class); - public static boolean validateID(String id) { - // ReadFile - try { - readFile(); - } catch (Exception e) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "CheckPDP", "Exception reading file"); - return false; - } - // Check ID - if (pdpMap.containsKey(id)) { - return true; - } - return false; - } + public static boolean validateID(String id) { + // ReadFile + try { + readFile(); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "CheckPDP", "Exception reading file"); + return false; + } + // Check ID + if (pdpMap.containsKey(id)) { + return true; + } + return false; + } - private static void readFile() throws PAPException { - String pdpFile = XACMLPapServlet.getPDPFile(); - if (pdpFile == null) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + "PDP File name is undefined"); - throw new PAPException(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"PDP File name not Valid : " + pdpFile); - } - if (pdpPath == null) { - pdpPath = Paths.get(pdpFile); - if (Files.notExists(pdpPath)) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + "File doesn't exist in the specified Path"); - throw new PAPException(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"File doesn't exist in the specified Path : "+ pdpPath.toString()); - } - if (pdpPath.toString().endsWith(".properties")) { - readProps(); - } else { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + "Not a .properties file"); - throw new PAPException(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"Not a .properties file"); - } - } - // Check if File is updated recently - else { - newModified = pdpPath.toFile().lastModified(); - if (newModified != oldModified) { - // File has been updated. - readProps(); - } - } - } + private static void readFile() throws PAPException { + String pdpFile = XACMLPapServlet.getPDPFile(); + if (pdpFile == null) { + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + "PDP File name is undefined"); + throw new PAPException(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"PDP File name not Valid : " + pdpFile); + } + if (pdpPath == null) { + pdpPath = Paths.get(pdpFile); + if (Files.notExists(pdpPath)) { + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + "File doesn't exist in the specified Path"); + throw new PAPException(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"File doesn't exist in the specified Path : "+ pdpPath.toString()); + } + if (pdpPath.toString().endsWith(".properties")) { + readProps(); + } else { + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR + "Not a .properties file"); + throw new PAPException(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"Not a .properties file"); + } + } + // Check if File is updated recently + else { + newModified = pdpPath.toFile().lastModified(); + if (newModified != oldModified) { + // File has been updated. + readProps(); + } + } + } - @SuppressWarnings({ "rawtypes", "unchecked" }) - private static void readProps() throws PAPException { - InputStream in; - pdpProp = new Properties(); - try { - in = new FileInputStream(pdpPath.toFile()); - oldModified = pdpPath.toFile().lastModified(); - pdpProp.load(in); - } catch (IOException e) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "CheckPDP", "Cannot load the Properties file"); - throw new PAPException("Cannot Load the Properties file", e); - } - // Read the Properties and Load the PDPs and encoding. - pdpMap = new HashMap<>(); - // Check the Keys for PDP_URLs - Collection<Object> unsorted = pdpProp.keySet(); - List<String> sorted = new ArrayList(unsorted); - Collections.sort(sorted); - for (String propKey : sorted) { - if (propKey.startsWith("PDP_URL")) { - String check_val = pdpProp.getProperty(propKey); - if (check_val == null) { - throw new PAPException("Properties file doesn't have the PDP_URL parameter"); - } - if (check_val.contains(";")) { - List<String> pdp_default = new ArrayList<>(Arrays.asList(check_val.split("\\s*;\\s*"))); - int pdpCount = 0; - while (pdpCount < pdp_default.size()) { - String pdpVal = pdp_default.get(pdpCount); - readPDPParam(pdpVal); - pdpCount++; - } - } else { - readPDPParam(check_val); - } - } - } - if (pdpMap == null || pdpMap.isEmpty()) { - logger.debug(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Cannot Proceed without PDP_URLs"); - throw new PAPException(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"Cannot Proceed without PDP_URLs"); - } - } + @SuppressWarnings({ "rawtypes", "unchecked" }) + private static void readProps() throws PAPException { + InputStream in; + pdpProp = new Properties(); + try { + in = new FileInputStream(pdpPath.toFile()); + oldModified = pdpPath.toFile().lastModified(); + pdpProp.load(in); + } catch (IOException e) { + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "CheckPDP", "Cannot load the Properties file"); + throw new PAPException("Cannot Load the Properties file", e); + } + // Read the Properties and Load the PDPs and encoding. + pdpMap = new HashMap<>(); + // Check the Keys for PDP_URLs + Collection<Object> unsorted = pdpProp.keySet(); + List<String> sorted = new ArrayList(unsorted); + Collections.sort(sorted); + for (String propKey : sorted) { + if (propKey.startsWith("PDP_URL")) { + String check_val = pdpProp.getProperty(propKey); + if (check_val == null) { + throw new PAPException("Properties file doesn't have the PDP_URL parameter"); + } + if (check_val.contains(";")) { + List<String> pdp_default = new ArrayList<>(Arrays.asList(check_val.split("\\s*;\\s*"))); + int pdpCount = 0; + while (pdpCount < pdp_default.size()) { + String pdpVal = pdp_default.get(pdpCount); + readPDPParam(pdpVal); + pdpCount++; + } + } else { + readPDPParam(check_val); + } + } + } + if (pdpMap == null || pdpMap.isEmpty()) { + logger.debug(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Cannot Proceed without PDP_URLs"); + throw new PAPException(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"Cannot Proceed without PDP_URLs"); + } + } - private static void readPDPParam(String pdpVal) throws PAPException{ - if(pdpVal.contains(",")){ - List<String> pdpValues = new ArrayList<>(Arrays.asList(pdpVal.split("\\s*,\\s*"))); - if(pdpValues.size()==3){ - // 1:2 will be UserID:Password - String userID = pdpValues.get(1); - String pass = pdpValues.get(2); - Base64.Encoder encoder = Base64.getEncoder(); - // 0 - PDPURL - pdpMap.put(pdpValues.get(0), encoder.encodeToString((userID+":"+pass).getBytes(StandardCharsets.UTF_8))); - }else{ - PolicyLogger.error(MessageCodes.ERROR_PERMISSIONS + "No Credentials to send Request"); - throw new PAPException(XACMLErrorConstants.ERROR_PERMISSIONS + "No enough Credentials to send Request. " + pdpValues); - } - }else{ - PolicyLogger.error(MessageCodes.ERROR_PERMISSIONS + "No Credentials to send Request: " + pdpVal); - throw new PAPException(XACMLErrorConstants.ERROR_PERMISSIONS +"No enough Credentials to send Request."); - } - } - - public static String getEncoding(String pdpID){ - try { - readFile(); - } catch (Exception e) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "CheckPDP", "Exeption reading Properties file"); - } - String encoding = null; - if(pdpMap!=null && (!pdpMap.isEmpty())){ - try{ - encoding = pdpMap.get(pdpID); - } catch(Exception e){ - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "CheckPDP", "Exception encoding"); - } - return encoding; - }else{ - return null; - } - } + private static void readPDPParam(String pdpVal) throws PAPException{ + if(pdpVal.contains(",")){ + List<String> pdpValues = new ArrayList<>(Arrays.asList(pdpVal.split("\\s*,\\s*"))); + if(pdpValues.size()==3){ + // 1:2 will be UserID:Password + String userID = pdpValues.get(1); + String pass = pdpValues.get(2); + Base64.Encoder encoder = Base64.getEncoder(); + // 0 - PDPURL + pdpMap.put(pdpValues.get(0), encoder.encodeToString((userID+":"+pass).getBytes(StandardCharsets.UTF_8))); + }else{ + PolicyLogger.error(MessageCodes.ERROR_PERMISSIONS + "No Credentials to send Request"); + throw new PAPException(XACMLErrorConstants.ERROR_PERMISSIONS + "No enough Credentials to send Request. " + pdpValues); + } + }else{ + PolicyLogger.error(MessageCodes.ERROR_PERMISSIONS + "No Credentials to send Request: " + pdpVal); + throw new PAPException(XACMLErrorConstants.ERROR_PERMISSIONS +"No enough Credentials to send Request."); + } + } + + public static String getEncoding(String pdpID){ + try { + readFile(); + } catch (Exception e) { + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "CheckPDP", "Exeption reading Properties file"); + } + String encoding = null; + if(pdpMap!=null && (!pdpMap.isEmpty())){ + try{ + encoding = pdpMap.get(pdpID); + } catch(Exception e){ + PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "CheckPDP", "Exception encoding"); + } + return encoding; + }else{ + return null; + } + } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/restAuth/PAPAuthenticationFilter.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/restAuth/PAPAuthenticationFilter.java index c4b97f592..94cd9c798 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/restAuth/PAPAuthenticationFilter.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/restAuth/PAPAuthenticationFilter.java @@ -41,69 +41,69 @@ import org.apache.commons.logging.LogFactory; @WebFilter("/*") public class PAPAuthenticationFilter implements Filter { - private static final Log logger = LogFactory.getLog(PAPAuthenticationFilter.class); - public static final String AUTHENTICATION_HEADER = "Authorization"; - - @Override - public void doFilter(ServletRequest request, ServletResponse response, - FilterChain filter) throws IOException, ServletException { - - - if (request instanceof HttpServletRequest) { - HttpServletRequest httpServletRequest = (HttpServletRequest) request; - - String authCredentials = null; - String url = httpServletRequest.getRequestURI(); - - logger.info("Request URI: " + url); - - //getting authentication credentials - authCredentials = httpServletRequest.getHeader(AUTHENTICATION_HEADER); - - // Check Authentication credentials - AuthenticationService authenticationService = new AuthenticationService(); - boolean authenticationStatus = authenticationService.authenticate(authCredentials); - - if (authenticationStatus) { - //indicates the request comes from Traditional Admin Console or PolicyEngineAPI - if ("/pap/".equals(url)){ - logger.info("Request comes from Traditional Admin Console or PolicyEngineAPI"); - //forward request to the XACMLPAPServlet if authenticated - request.getRequestDispatcher("/pap/pap/").forward(request, response); - }else if (url.startsWith("/pap/onap/") && response instanceof HttpServletResponse){ - //indicates the request comes from the ONAP Portal onap-sdk-app - HttpServletResponse alteredResponse = ((HttpServletResponse)response); - addCorsHeader(alteredResponse); - logger.info("Request comes from Onap Portal"); - //Spring dispatcher servlet is at the end of the filter chain at /pap/onap/ path - filter.doFilter(request, response); - } - } else { - if (response instanceof HttpServletResponse) { - HttpServletResponse httpServletResponse = (HttpServletResponse) response; - httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - } - } - - } - } - - //method to add CorsHeaders for onap portal rest call - private void addCorsHeader(HttpServletResponse response) { - logger.info("Adding Cors Response Headers!!!"); - response.addHeader("Access-Control-Allow-Origin", "*"); + private static final Log logger = LogFactory.getLog(PAPAuthenticationFilter.class); + public static final String AUTHENTICATION_HEADER = "Authorization"; + + @Override + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain filter) throws IOException, ServletException { + + + if (request instanceof HttpServletRequest) { + HttpServletRequest httpServletRequest = (HttpServletRequest) request; + + String authCredentials = null; + String url = httpServletRequest.getRequestURI(); + + logger.info("Request URI: " + url); + + //getting authentication credentials + authCredentials = httpServletRequest.getHeader(AUTHENTICATION_HEADER); + + // Check Authentication credentials + AuthenticationService authenticationService = new AuthenticationService(); + boolean authenticationStatus = authenticationService.authenticate(authCredentials); + + if (authenticationStatus) { + //indicates the request comes from Traditional Admin Console or PolicyEngineAPI + if ("/pap/".equals(url)){ + logger.info("Request comes from Traditional Admin Console or PolicyEngineAPI"); + //forward request to the XACMLPAPServlet if authenticated + request.getRequestDispatcher("/pap/pap/").forward(request, response); + }else if (url.startsWith("/pap/onap/") && response instanceof HttpServletResponse){ + //indicates the request comes from the ONAP Portal onap-sdk-app + HttpServletResponse alteredResponse = ((HttpServletResponse)response); + addCorsHeader(alteredResponse); + logger.info("Request comes from Onap Portal"); + //Spring dispatcher servlet is at the end of the filter chain at /pap/onap/ path + filter.doFilter(request, response); + } + } else { + if (response instanceof HttpServletResponse) { + HttpServletResponse httpServletResponse = (HttpServletResponse) response; + httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + } + } + + } + } + + //method to add CorsHeaders for onap portal rest call + private void addCorsHeader(HttpServletResponse response) { + logger.info("Adding Cors Response Headers!!!"); + response.addHeader("Access-Control-Allow-Origin", "*"); response.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, HEAD"); response.addHeader("Access-Control-Allow-Headers", "X-PINGOTHER, Origin, X-Requested-With, Content-Type, Accept"); response.addHeader("Access-Control-Max-Age", "1728000"); - } + } - @Override - public void destroy() { - //Empty - } + @Override + public void destroy() { + //Empty + } - @Override - public void init(FilterConfig arg0) throws ServletException { - //Empty - } + @Override + public void init(FilterConfig arg0) throws ServletException { + //Empty + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/ia/DbAuditCompareEntriesTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/ia/DbAuditCompareEntriesTest.java index 049f721ea..5b4165fdb 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/ia/DbAuditCompareEntriesTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/ia/DbAuditCompareEntriesTest.java @@ -50,404 +50,404 @@ import org.onap.policy.jpa.BackUpMonitorEntity; public class DbAuditCompareEntriesTest { - private static Log logger = LogFactory.getLog(DbAuditCompareEntriesTest.class); - private DbDAO dbDAO; - private String persistenceUnit; - private Properties properties; - private String resourceName; - private String dbDriver; - private String dbUrl; - private String dbUser; - private String dbPwd; - private String siteName; - private String nodeType; - private static final String DEFAULT_DB_DRIVER = "org.h2.Driver"; - private static final String DEFAULT_DB_USER = "sa"; - private static final String DEFAULT_DB_PWD = ""; - - @Before - public void setUp() throws Exception { - logger.info("setUp: Entering"); - - properties = new Properties(); - properties.put(IntegrityAuditProperties.DB_DRIVER, DbAuditCompareEntriesTest.DEFAULT_DB_DRIVER); - properties.put(IntegrityAuditProperties.DB_URL, "jdbc:h2:file:./sql/xacmlTest"); - properties.put(IntegrityAuditProperties.DB_USER, DbAuditCompareEntriesTest.DEFAULT_DB_USER); - properties.put(IntegrityAuditProperties.DB_PWD, DbAuditCompareEntriesTest.DEFAULT_DB_PWD); - properties.put(IntegrityAuditProperties.SITE_NAME, "SiteA"); - properties.put(IntegrityAuditProperties.NODE_TYPE, "pap"); - - dbDriver = DbAuditCompareEntriesTest.DEFAULT_DB_DRIVER; - dbUrl = "jdbc:h2:file:./sql/xacmlTest"; - dbUser = DbAuditCompareEntriesTest.DEFAULT_DB_USER; - dbPwd = DbAuditCompareEntriesTest.DEFAULT_DB_PWD; - siteName = "SiteA"; - nodeType = "pap"; - persistenceUnit = "testPapPU"; - resourceName = "siteA.pap1"; - - //Clean the iaTest DB table for IntegrityAuditEntity entries - cleanDb(persistenceUnit, properties); - - logger.info("setUp: Exiting"); - } - - @After - public void tearDown() throws Exception { - logger.info("tearDown: Entering"); - //nothing to do - logger.info("tearDown: Exiting"); - } - - public void cleanDb(String persistenceUnit, Properties properties){ - logger.debug("cleanDb: enter"); - - EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnit, properties); - - EntityManager em = emf.createEntityManager(); - // Start a transaction - EntityTransaction et = em.getTransaction(); - - et.begin(); - - // Clean up the DB - em.createQuery("Delete from IntegrityAuditEntity").executeUpdate(); - - // commit transaction - et.commit(); - em.close(); - logger.debug("cleanDb: exit"); - } - - - /* - * Tests that a comparison between hashsets is successful if - * the entries match - */ - @Test - public void runAllTests() throws Exception { - logger.info("runAllTests: Entering"); - - - testIntegrityAuditEntity(); - testBackupMonitorEntity(); - testStateManagementEntity(); - testForwardProgressEntity(); - testResourceRegistrationEntity(); - - //clean up the IntegrityAuditEntity table - cleanDb(persistenceUnit, properties); - - logger.info("runAllTests: Exit"); - } - - - public void testIntegrityAuditEntity() throws Exception { - logger.info("testIntegrityAuditEntity: Entering"); - - dbDAO = new DbDAO(resourceName, persistenceUnit, properties); - DbAudit dbAudit = new DbAudit(dbDAO); - - String className = null; - //There is only one entry IntegrityAuditEntity, but we will check anyway - Set<String> classNameSet = dbDAO.getPersistenceClassNames(); - for(String c : classNameSet){ - if (c.equals("org.onap.policy.common.ia.jpa.IntegrityAuditEntity")){ - className = c; - } - } - String resourceName1 = resourceName; - String resourceName2 = resourceName; - - IntegrityAuditEntity entry1 = new IntegrityAuditEntity(); - IntegrityAuditEntity entry2 = new IntegrityAuditEntity(); - Date date = new Date(); - - /* - * Two entries with the same field values - */ - entry1.setDesignated(false); - entry1.setJdbcDriver(dbDriver); - entry1.setJdbcPassword(dbPwd); - entry1.setJdbcUrl(dbUrl); - entry1.setJdbcUser(dbUser); - entry1.setLastUpdated(date); - entry1.setNodeType(nodeType); - entry1.setPersistenceUnit(persistenceUnit); - entry1.setResourceName(resourceName1); - entry1.setSite(siteName); - - entry2 = SerializationUtils.clone(entry1); - - dbAudit.writeAuditDebugLog(className, resourceName1, resourceName2, entry1, entry2); - - HashMap<Object, Object> myEntries = new HashMap<>(); - HashMap<Object, Object> theirEntries = new HashMap<>(); - - myEntries.put("pdp1", entry1); - theirEntries.put("pdp1", entry2); - - Set<Object> result = dbAudit.compareEntries(myEntries, theirEntries); - - /* - * Assert that there are no mismatches returned - */ - assertTrue(result.isEmpty()); - - /* - * ************************************ - * Now test with a mis-matched entry - * ************************************ - */ - - /* - * Change the entry2 to different designated value - */ - entry2.setDesignated(true); - - myEntries = new HashMap<>(); - theirEntries = new HashMap<>(); - - myEntries.put("pdp1", entry1); - theirEntries.put("pdp1", entry2); - - result = dbAudit.compareEntries(myEntries, theirEntries); - - /* - * Assert that there was one mismatch - */ - assertEquals(1, result.size()); - logger.info("testIntegrityAuditEntity: Exit"); - } - - void testBackupMonitorEntity() throws Exception { - logger.info("testBackupMonitorEntity: Entering"); - - dbDAO = new DbDAO(resourceName, persistenceUnit, properties); - DbAudit dbAudit = new DbAudit(dbDAO); - - BackUpMonitorEntity entry1 = new BackUpMonitorEntity(); - BackUpMonitorEntity entry2 = new BackUpMonitorEntity(); - - // Two entries with the same field values - - - entry1.setFlag("flag1"); - entry1.setResourceNodeName("node1"); - entry1.setResourceName("resourceName"); - entry1.setTimeStamp(new Date()); - - // Clone the first entry - entry2 = SerializationUtils.clone(entry1); - - HashMap<Object, Object> myEntries = new HashMap<>(); - HashMap<Object, Object> theirEntries = new HashMap<>(); - - myEntries.put("pdp1", entry1); - theirEntries.put("pdp1", entry2); - - Set<Object> result = dbAudit.compareEntries(myEntries, theirEntries); - - - // Assert that there are no mismatches returned - - assertTrue(result.isEmpty()); - - - /* ************************************ - * Now test with a mis-matched entry - * ************************************/ - - - - // Change a field on entry2 - - entry2.setFlag("flag2"); - - myEntries = new HashMap<>(); - theirEntries = new HashMap<>(); - - myEntries.put("pdp1", entry1); - theirEntries.put("pdp1", entry2); - - result = dbAudit.compareEntries(myEntries, theirEntries); - - - //Assert that there was one mismatch - - assertEquals(1, result.size()); - logger.info("testBackupMonitorEntity: Exit"); - } - - void testStateManagementEntity() throws Exception { - logger.info("testStateManagementEntity: Entering"); - - dbDAO = new DbDAO(resourceName, persistenceUnit, properties); - DbAudit dbAudit = new DbAudit(dbDAO); - - StateManagementEntity entry1 = new StateManagementEntity(); - StateManagementEntity entry2 = new StateManagementEntity(); - - // Two entries with the same field values - - entry1.setAdminState("locked"); - entry1.setAvailStatus("null"); - entry1.setModifiedDate(new Date()); - entry1.setOpState("enabled"); - entry1.setResourceName("myResource"); - entry1.setStandbyStatus("coldstandby"); - - // Clone the first entry - entry2 = SerializationUtils.clone(entry1); - - HashMap<Object, Object> myEntries = new HashMap<>(); - HashMap<Object, Object> theirEntries = new HashMap<>(); - - myEntries.put("pdp1", entry1); - theirEntries.put("pdp1", entry2); - - Set<Object> result = dbAudit.compareEntries(myEntries, theirEntries); - - - // Assert that there are no mismatches returned - - assertTrue(result.isEmpty()); - - - /* ************************************ - * Now test with a mis-matched entry - * ************************************/ - - - - // Change a field on entry2 - - entry2.setAdminState("unlocked"); - - myEntries = new HashMap<>(); - theirEntries = new HashMap<>(); - - myEntries.put("pdp1", entry1); - theirEntries.put("pdp1", entry2); - - result = dbAudit.compareEntries(myEntries, theirEntries); - - - //Assert that there was one mismatch - - assertEquals(1, result.size()); - logger.info("testStateManagementEntity: Exit"); - } - - void testForwardProgressEntity() throws Exception { - logger.info("testForwardProgressEntity: Entering"); - - dbDAO = new DbDAO(resourceName, persistenceUnit, properties); - DbAudit dbAudit = new DbAudit(dbDAO); - - ForwardProgressEntity entry1 = new ForwardProgressEntity(); - ForwardProgressEntity entry2 = new ForwardProgressEntity(); - - // Two entries with the same field values - - entry1.setFpcCount(123L); - entry1.setLastUpdated(new Date()); - entry1.setResourceName("myResource"); - - // Clone the first entry - entry2 = SerializationUtils.clone(entry1); - - HashMap<Object, Object> myEntries = new HashMap<Object, Object>(); - HashMap<Object, Object> theirEntries = new HashMap<Object, Object>(); - - myEntries.put("pdp1", entry1); - theirEntries.put("pdp1", entry2); - - Set<Object> result = dbAudit.compareEntries(myEntries, theirEntries); - - - // Assert that there are no mismatches returned - - assertTrue(result.isEmpty()); - - - /* ************************************ - * Now test with a mis-matched entry - * ************************************/ - - // Change a field on entry2 - - entry2.setFpcCount(321L); - - myEntries = new HashMap<>(); - theirEntries = new HashMap<>(); - - myEntries.put("pdp1", entry1); - theirEntries.put("pdp1", entry2); - - result = dbAudit.compareEntries(myEntries, theirEntries); - - - //Assert that there was one mismatch - - assertEquals(1, result.size()); - logger.info("testForwardProgressEntity: Exit"); - } - - void testResourceRegistrationEntity() throws Exception { - logger.info("testResourceRegistrationEntity: Entering"); - - dbDAO = new DbDAO(resourceName, persistenceUnit, properties); - DbAudit dbAudit = new DbAudit(dbDAO); - - ResourceRegistrationEntity entry1 = new ResourceRegistrationEntity(); - ResourceRegistrationEntity entry2 = new ResourceRegistrationEntity(); - - // Two entries with the same field values - - entry1.setNodeType("pap"); - entry1.setLastUpdated(new Date()); - entry1.setResourceName("myResource"); - entry1.setResourceUrl("http://nowhere.com"); - entry1.setSite("site_1"); - - // Clone the first entry - entry2 = SerializationUtils.clone(entry1); - - HashMap<Object, Object> myEntries = new HashMap<>(); - HashMap<Object, Object> theirEntries = new HashMap<>(); - - myEntries.put("pdp1", entry1); - theirEntries.put("pdp1", entry2); - - Set<Object> result = dbAudit.compareEntries(myEntries, theirEntries); - - - // Assert that there are no mismatches returned - - assertTrue(result.isEmpty()); - - - /* ************************************ - * Now test with a mis-matched entry - * ************************************/ - - // Change a field on entry2 - - entry2.setSite("site_1a"); - - myEntries = new HashMap<>(); - theirEntries = new HashMap<>(); - - myEntries.put("pdp1", entry1); - theirEntries.put("pdp1", entry2); - - result = dbAudit.compareEntries(myEntries, theirEntries); - - - //Assert that there was one mismatch - - assertEquals(1, result.size()); - logger.info("testResourceRegistrationEntity: Exit"); - } + private static Log logger = LogFactory.getLog(DbAuditCompareEntriesTest.class); + private DbDAO dbDAO; + private String persistenceUnit; + private Properties properties; + private String resourceName; + private String dbDriver; + private String dbUrl; + private String dbUser; + private String dbPwd; + private String siteName; + private String nodeType; + private static final String DEFAULT_DB_DRIVER = "org.h2.Driver"; + private static final String DEFAULT_DB_USER = "sa"; + private static final String DEFAULT_DB_PWD = ""; + + @Before + public void setUp() throws Exception { + logger.info("setUp: Entering"); + + properties = new Properties(); + properties.put(IntegrityAuditProperties.DB_DRIVER, DbAuditCompareEntriesTest.DEFAULT_DB_DRIVER); + properties.put(IntegrityAuditProperties.DB_URL, "jdbc:h2:file:./sql/xacmlTest"); + properties.put(IntegrityAuditProperties.DB_USER, DbAuditCompareEntriesTest.DEFAULT_DB_USER); + properties.put(IntegrityAuditProperties.DB_PWD, DbAuditCompareEntriesTest.DEFAULT_DB_PWD); + properties.put(IntegrityAuditProperties.SITE_NAME, "SiteA"); + properties.put(IntegrityAuditProperties.NODE_TYPE, "pap"); + + dbDriver = DbAuditCompareEntriesTest.DEFAULT_DB_DRIVER; + dbUrl = "jdbc:h2:file:./sql/xacmlTest"; + dbUser = DbAuditCompareEntriesTest.DEFAULT_DB_USER; + dbPwd = DbAuditCompareEntriesTest.DEFAULT_DB_PWD; + siteName = "SiteA"; + nodeType = "pap"; + persistenceUnit = "testPapPU"; + resourceName = "siteA.pap1"; + + //Clean the iaTest DB table for IntegrityAuditEntity entries + cleanDb(persistenceUnit, properties); + + logger.info("setUp: Exiting"); + } + + @After + public void tearDown() throws Exception { + logger.info("tearDown: Entering"); + //nothing to do + logger.info("tearDown: Exiting"); + } + + public void cleanDb(String persistenceUnit, Properties properties){ + logger.debug("cleanDb: enter"); + + EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnit, properties); + + EntityManager em = emf.createEntityManager(); + // Start a transaction + EntityTransaction et = em.getTransaction(); + + et.begin(); + + // Clean up the DB + em.createQuery("Delete from IntegrityAuditEntity").executeUpdate(); + + // commit transaction + et.commit(); + em.close(); + logger.debug("cleanDb: exit"); + } + + + /* + * Tests that a comparison between hashsets is successful if + * the entries match + */ + @Test + public void runAllTests() throws Exception { + logger.info("runAllTests: Entering"); + + + testIntegrityAuditEntity(); + testBackupMonitorEntity(); + testStateManagementEntity(); + testForwardProgressEntity(); + testResourceRegistrationEntity(); + + //clean up the IntegrityAuditEntity table + cleanDb(persistenceUnit, properties); + + logger.info("runAllTests: Exit"); + } + + + public void testIntegrityAuditEntity() throws Exception { + logger.info("testIntegrityAuditEntity: Entering"); + + dbDAO = new DbDAO(resourceName, persistenceUnit, properties); + DbAudit dbAudit = new DbAudit(dbDAO); + + String className = null; + //There is only one entry IntegrityAuditEntity, but we will check anyway + Set<String> classNameSet = dbDAO.getPersistenceClassNames(); + for(String c : classNameSet){ + if (c.equals("org.onap.policy.common.ia.jpa.IntegrityAuditEntity")){ + className = c; + } + } + String resourceName1 = resourceName; + String resourceName2 = resourceName; + + IntegrityAuditEntity entry1 = new IntegrityAuditEntity(); + IntegrityAuditEntity entry2 = new IntegrityAuditEntity(); + Date date = new Date(); + + /* + * Two entries with the same field values + */ + entry1.setDesignated(false); + entry1.setJdbcDriver(dbDriver); + entry1.setJdbcPassword(dbPwd); + entry1.setJdbcUrl(dbUrl); + entry1.setJdbcUser(dbUser); + entry1.setLastUpdated(date); + entry1.setNodeType(nodeType); + entry1.setPersistenceUnit(persistenceUnit); + entry1.setResourceName(resourceName1); + entry1.setSite(siteName); + + entry2 = SerializationUtils.clone(entry1); + + dbAudit.writeAuditDebugLog(className, resourceName1, resourceName2, entry1, entry2); + + HashMap<Object, Object> myEntries = new HashMap<>(); + HashMap<Object, Object> theirEntries = new HashMap<>(); + + myEntries.put("pdp1", entry1); + theirEntries.put("pdp1", entry2); + + Set<Object> result = dbAudit.compareEntries(myEntries, theirEntries); + + /* + * Assert that there are no mismatches returned + */ + assertTrue(result.isEmpty()); + + /* + * ************************************ + * Now test with a mis-matched entry + * ************************************ + */ + + /* + * Change the entry2 to different designated value + */ + entry2.setDesignated(true); + + myEntries = new HashMap<>(); + theirEntries = new HashMap<>(); + + myEntries.put("pdp1", entry1); + theirEntries.put("pdp1", entry2); + + result = dbAudit.compareEntries(myEntries, theirEntries); + + /* + * Assert that there was one mismatch + */ + assertEquals(1, result.size()); + logger.info("testIntegrityAuditEntity: Exit"); + } + + void testBackupMonitorEntity() throws Exception { + logger.info("testBackupMonitorEntity: Entering"); + + dbDAO = new DbDAO(resourceName, persistenceUnit, properties); + DbAudit dbAudit = new DbAudit(dbDAO); + + BackUpMonitorEntity entry1 = new BackUpMonitorEntity(); + BackUpMonitorEntity entry2 = new BackUpMonitorEntity(); + + // Two entries with the same field values + + + entry1.setFlag("flag1"); + entry1.setResourceNodeName("node1"); + entry1.setResourceName("resourceName"); + entry1.setTimeStamp(new Date()); + + // Clone the first entry + entry2 = SerializationUtils.clone(entry1); + + HashMap<Object, Object> myEntries = new HashMap<>(); + HashMap<Object, Object> theirEntries = new HashMap<>(); + + myEntries.put("pdp1", entry1); + theirEntries.put("pdp1", entry2); + + Set<Object> result = dbAudit.compareEntries(myEntries, theirEntries); + + + // Assert that there are no mismatches returned + + assertTrue(result.isEmpty()); + + + /* ************************************ + * Now test with a mis-matched entry + * ************************************/ + + + + // Change a field on entry2 + + entry2.setFlag("flag2"); + + myEntries = new HashMap<>(); + theirEntries = new HashMap<>(); + + myEntries.put("pdp1", entry1); + theirEntries.put("pdp1", entry2); + + result = dbAudit.compareEntries(myEntries, theirEntries); + + + //Assert that there was one mismatch + + assertEquals(1, result.size()); + logger.info("testBackupMonitorEntity: Exit"); + } + + void testStateManagementEntity() throws Exception { + logger.info("testStateManagementEntity: Entering"); + + dbDAO = new DbDAO(resourceName, persistenceUnit, properties); + DbAudit dbAudit = new DbAudit(dbDAO); + + StateManagementEntity entry1 = new StateManagementEntity(); + StateManagementEntity entry2 = new StateManagementEntity(); + + // Two entries with the same field values + + entry1.setAdminState("locked"); + entry1.setAvailStatus("null"); + entry1.setModifiedDate(new Date()); + entry1.setOpState("enabled"); + entry1.setResourceName("myResource"); + entry1.setStandbyStatus("coldstandby"); + + // Clone the first entry + entry2 = SerializationUtils.clone(entry1); + + HashMap<Object, Object> myEntries = new HashMap<>(); + HashMap<Object, Object> theirEntries = new HashMap<>(); + + myEntries.put("pdp1", entry1); + theirEntries.put("pdp1", entry2); + + Set<Object> result = dbAudit.compareEntries(myEntries, theirEntries); + + + // Assert that there are no mismatches returned + + assertTrue(result.isEmpty()); + + + /* ************************************ + * Now test with a mis-matched entry + * ************************************/ + + + + // Change a field on entry2 + + entry2.setAdminState("unlocked"); + + myEntries = new HashMap<>(); + theirEntries = new HashMap<>(); + + myEntries.put("pdp1", entry1); + theirEntries.put("pdp1", entry2); + + result = dbAudit.compareEntries(myEntries, theirEntries); + + + //Assert that there was one mismatch + + assertEquals(1, result.size()); + logger.info("testStateManagementEntity: Exit"); + } + + void testForwardProgressEntity() throws Exception { + logger.info("testForwardProgressEntity: Entering"); + + dbDAO = new DbDAO(resourceName, persistenceUnit, properties); + DbAudit dbAudit = new DbAudit(dbDAO); + + ForwardProgressEntity entry1 = new ForwardProgressEntity(); + ForwardProgressEntity entry2 = new ForwardProgressEntity(); + + // Two entries with the same field values + + entry1.setFpcCount(123L); + entry1.setLastUpdated(new Date()); + entry1.setResourceName("myResource"); + + // Clone the first entry + entry2 = SerializationUtils.clone(entry1); + + HashMap<Object, Object> myEntries = new HashMap<Object, Object>(); + HashMap<Object, Object> theirEntries = new HashMap<Object, Object>(); + + myEntries.put("pdp1", entry1); + theirEntries.put("pdp1", entry2); + + Set<Object> result = dbAudit.compareEntries(myEntries, theirEntries); + + + // Assert that there are no mismatches returned + + assertTrue(result.isEmpty()); + + + /* ************************************ + * Now test with a mis-matched entry + * ************************************/ + + // Change a field on entry2 + + entry2.setFpcCount(321L); + + myEntries = new HashMap<>(); + theirEntries = new HashMap<>(); + + myEntries.put("pdp1", entry1); + theirEntries.put("pdp1", entry2); + + result = dbAudit.compareEntries(myEntries, theirEntries); + + + //Assert that there was one mismatch + + assertEquals(1, result.size()); + logger.info("testForwardProgressEntity: Exit"); + } + + void testResourceRegistrationEntity() throws Exception { + logger.info("testResourceRegistrationEntity: Entering"); + + dbDAO = new DbDAO(resourceName, persistenceUnit, properties); + DbAudit dbAudit = new DbAudit(dbDAO); + + ResourceRegistrationEntity entry1 = new ResourceRegistrationEntity(); + ResourceRegistrationEntity entry2 = new ResourceRegistrationEntity(); + + // Two entries with the same field values + + entry1.setNodeType("pap"); + entry1.setLastUpdated(new Date()); + entry1.setResourceName("myResource"); + entry1.setResourceUrl("http://nowhere.com"); + entry1.setSite("site_1"); + + // Clone the first entry + entry2 = SerializationUtils.clone(entry1); + + HashMap<Object, Object> myEntries = new HashMap<>(); + HashMap<Object, Object> theirEntries = new HashMap<>(); + + myEntries.put("pdp1", entry1); + theirEntries.put("pdp1", entry2); + + Set<Object> result = dbAudit.compareEntries(myEntries, theirEntries); + + + // Assert that there are no mismatches returned + + assertTrue(result.isEmpty()); + + + /* ************************************ + * Now test with a mis-matched entry + * ************************************/ + + // Change a field on entry2 + + entry2.setSite("site_1a"); + + myEntries = new HashMap<>(); + theirEntries = new HashMap<>(); + + myEntries.put("pdp1", entry1); + theirEntries.put("pdp1", entry2); + + result = dbAudit.compareEntries(myEntries, theirEntries); + + + //Assert that there was one mismatch + + assertEquals(1, result.size()); + logger.info("testResourceRegistrationEntity: Exit"); + } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/test/UpdateOthersPAPSTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/test/UpdateOthersPAPSTest.java index f9ed0ac70..5a8e20b26 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/test/UpdateOthersPAPSTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/test/UpdateOthersPAPSTest.java @@ -51,66 +51,66 @@ import org.springframework.mock.web.MockHttpServletResponse; @RunWith(PowerMockRunner.class) public class UpdateOthersPAPSTest { - private static Logger logger = FlexLogger.getLogger(UpdateOthersPAPSTest.class); - private static CommonClassDao commonClassDao; - private HttpServletRequest request; - private MockHttpServletResponse response; - - @Before - public void setUp() throws Exception { - logger.info("setUp: Entering"); + private static Logger logger = FlexLogger.getLogger(UpdateOthersPAPSTest.class); + private static CommonClassDao commonClassDao; + private HttpServletRequest request; + private MockHttpServletResponse response; + + @Before + public void setUp() throws Exception { + logger.info("setUp: Entering"); commonClassDao = mock(CommonClassDao.class); request = mock(HttpServletRequest.class); - response = new MockHttpServletResponse(); - List<Object> data = new ArrayList<>(); - PolicyDBDaoEntity entity = new PolicyDBDaoEntity(); - entity.setPolicyDBDaoUrl("http://localhost:8070/pap"); - entity.setUsername("test"); - entity.setPassword("test"); - - PolicyDBDaoEntity entity1 = new PolicyDBDaoEntity(); - entity1.setPolicyDBDaoUrl("http://localhost:8071/pap"); - entity1.setUsername("test"); - entity1.setPassword("test"); - - data.add(entity); - data.add(entity1); - System.setProperty("xacml.rest.pap.url","http://localhost:8070/pap"); - when(commonClassDao.getData(PolicyDBDaoEntity.class)).thenReturn(data); - } - - @Test - public void testNotifyOthersPAPsToUpdateConfigurations(){ - UpdateOthersPAPS updateOtherPaps = new UpdateOthersPAPS(); - UpdateOthersPAPS.setCommonClassDao(commonClassDao); - when(request.getParameter("action")).thenReturn("rename"); - when(request.getParameter("newPolicyName")).thenReturn("com.Config_newTest.1.json"); - when(request.getParameter("oldPolicyName")).thenReturn("com.Config_Test.1.json"); - updateOtherPaps.notifyOthersPAPsToUpdateConfigurations(request, response); - try { - JSONObject responseString = new JSONObject(response.getContentAsString()); - assertTrue(responseString.get("data").toString().contains("http://localhost:8071/pap")); - } catch (Exception e) { - fail(); - } - } - - @PrepareForTest({Policy.class}) - @Test - public void testUpdateConfiguration() throws Exception{ - UpdateOthersPAPS updateOtherPaps = new UpdateOthersPAPS(); - UpdateObjectData data = new UpdateObjectData(); - PowerMockito.mockStatic(Policy.class); - data.setNewPolicyName("com.Config_newTest.1.json"); - data.setOldPolicyName("com.Config_Test.1.json"); - data.setAction("rename"); - when(Policy.getConfigHome()).thenReturn("test"); - when(Policy.getActionHome()).thenReturn("test"); - File mockedFile = Mockito.mock(File.class); - Mockito.when(mockedFile.exists()).thenReturn(true); - PowerMockito.whenNew(File.class).withParameterTypes(String.class).withArguments(Matchers.anyString()).thenReturn(mockedFile); - updateOtherPaps.updateConfiguration(data, response); - assertTrue(response.getStatus() == 200); - } + response = new MockHttpServletResponse(); + List<Object> data = new ArrayList<>(); + PolicyDBDaoEntity entity = new PolicyDBDaoEntity(); + entity.setPolicyDBDaoUrl("http://localhost:8070/pap"); + entity.setUsername("test"); + entity.setPassword("test"); + + PolicyDBDaoEntity entity1 = new PolicyDBDaoEntity(); + entity1.setPolicyDBDaoUrl("http://localhost:8071/pap"); + entity1.setUsername("test"); + entity1.setPassword("test"); + + data.add(entity); + data.add(entity1); + System.setProperty("xacml.rest.pap.url","http://localhost:8070/pap"); + when(commonClassDao.getData(PolicyDBDaoEntity.class)).thenReturn(data); + } + + @Test + public void testNotifyOthersPAPsToUpdateConfigurations(){ + UpdateOthersPAPS updateOtherPaps = new UpdateOthersPAPS(); + UpdateOthersPAPS.setCommonClassDao(commonClassDao); + when(request.getParameter("action")).thenReturn("rename"); + when(request.getParameter("newPolicyName")).thenReturn("com.Config_newTest.1.json"); + when(request.getParameter("oldPolicyName")).thenReturn("com.Config_Test.1.json"); + updateOtherPaps.notifyOthersPAPsToUpdateConfigurations(request, response); + try { + JSONObject responseString = new JSONObject(response.getContentAsString()); + assertTrue(responseString.get("data").toString().contains("http://localhost:8071/pap")); + } catch (Exception e) { + fail(); + } + } + + @PrepareForTest({Policy.class}) + @Test + public void testUpdateConfiguration() throws Exception{ + UpdateOthersPAPS updateOtherPaps = new UpdateOthersPAPS(); + UpdateObjectData data = new UpdateObjectData(); + PowerMockito.mockStatic(Policy.class); + data.setNewPolicyName("com.Config_newTest.1.json"); + data.setOldPolicyName("com.Config_Test.1.json"); + data.setAction("rename"); + when(Policy.getConfigHome()).thenReturn("test"); + when(Policy.getActionHome()).thenReturn("test"); + File mockedFile = Mockito.mock(File.class); + Mockito.when(mockedFile.exists()).thenReturn(true); + PowerMockito.whenNew(File.class).withParameterTypes(String.class).withArguments(Matchers.anyString()).thenReturn(mockedFile); + updateOtherPaps.updateConfiguration(data, response); + assertTrue(response.getStatus() == 200); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/test/XACMLPAPTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/test/XACMLPAPTest.java index 5208ad7a7..717266264 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/test/XACMLPAPTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/test/XACMLPAPTest.java @@ -81,7 +81,7 @@ import org.springframework.orm.hibernate4.LocalSessionFactoryBuilder; import com.mockrunner.mock.web.MockServletInputStream; public class XACMLPAPTest { - private static final Log logger = LogFactory.getLog(XACMLPAPTest.class); + private static final Log logger = LogFactory.getLog(XACMLPAPTest.class); private static final String ENVIRONMENT_HEADER = "Environment"; private List<String> headers = new ArrayList<>(); @@ -93,47 +93,47 @@ public class XACMLPAPTest { private SessionFactory sessionFactory; private CommonClassDao commonClassDao; - private static final String DEFAULT_DB_DRIVER = "org.h2.Driver"; - private static final String DEFAULT_DB_USER = "sa"; - private static final String DEFAULT_DB_PWD = ""; + private static final String DEFAULT_DB_DRIVER = "org.h2.Driver"; + private static final String DEFAULT_DB_USER = "sa"; + private static final String DEFAULT_DB_PWD = ""; - @Before - public void setUpDB() throws Exception { - logger.info("setUpDB: Entering"); + @Before + public void setUpDB() throws Exception { + logger.info("setUpDB: Entering"); - Properties properties = new Properties(); - properties.put(IntegrityAuditProperties.DB_DRIVER, XACMLPAPTest.DEFAULT_DB_DRIVER); - properties.put(IntegrityAuditProperties.DB_URL, "jdbc:h2:file:./sql/xacmlTest"); - properties.put(IntegrityAuditProperties.DB_USER, XACMLPAPTest.DEFAULT_DB_USER); - properties.put(IntegrityAuditProperties.DB_PWD, XACMLPAPTest.DEFAULT_DB_PWD); - properties.put(IntegrityAuditProperties.SITE_NAME, "SiteA"); - properties.put(IntegrityAuditProperties.NODE_TYPE, "pap"); + Properties properties = new Properties(); + properties.put(IntegrityAuditProperties.DB_DRIVER, XACMLPAPTest.DEFAULT_DB_DRIVER); + properties.put(IntegrityAuditProperties.DB_URL, "jdbc:h2:file:./sql/xacmlTest"); + properties.put(IntegrityAuditProperties.DB_USER, XACMLPAPTest.DEFAULT_DB_USER); + properties.put(IntegrityAuditProperties.DB_PWD, XACMLPAPTest.DEFAULT_DB_PWD); + properties.put(IntegrityAuditProperties.SITE_NAME, "SiteA"); + properties.put(IntegrityAuditProperties.NODE_TYPE, "pap"); - //Clean the iaTest DB table for IntegrityAuditEntity entries - cleanDb("testPapPU", properties); + //Clean the iaTest DB table for IntegrityAuditEntity entries + cleanDb("testPapPU", properties); - logger.info("setUpDB: Exiting"); - } + logger.info("setUpDB: Exiting"); + } - public void cleanDb(String persistenceUnit, Properties properties){ - logger.debug("cleanDb: enter"); + public void cleanDb(String persistenceUnit, Properties properties){ + logger.debug("cleanDb: enter"); - EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnit, properties); + EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnit, properties); - EntityManager em = emf.createEntityManager(); - // Start a transaction - EntityTransaction et = em.getTransaction(); + EntityManager em = emf.createEntityManager(); + // Start a transaction + EntityTransaction et = em.getTransaction(); - et.begin(); + et.begin(); - // Clean up the DB - em.createQuery("Delete from IntegrityAuditEntity").executeUpdate(); + // Clean up the DB + em.createQuery("Delete from IntegrityAuditEntity").executeUpdate(); - // commit transaction - et.commit(); - em.close(); - logger.debug("cleanDb: exit"); - } + // commit transaction + et.commit(); + em.close(); + logger.debug("cleanDb: exit"); + } @Before public void setUp() throws ServletException { @@ -584,166 +584,166 @@ public class XACMLPAPTest { @Test public void testCommonCreateDictionary() throws IOException, SQLException, ServletException { - new DictionaryController(commonClassDao); - new ActionPolicyDictionaryController(commonClassDao); - new SafePolicyController(commonClassDao); - new DescriptiveDictionaryController(commonClassDao); - List<Object> object = new ArrayList<>(); + new DictionaryController(commonClassDao); + new ActionPolicyDictionaryController(commonClassDao); + new SafePolicyController(commonClassDao); + new DescriptiveDictionaryController(commonClassDao); + List<Object> object = new ArrayList<>(); object.add(new Category()); when(commonClassDao.getDataById(Category.class, "shortName", "resource")).thenReturn(object); - httpServletRequest = Mockito.mock(HttpServletRequest.class); - httpServletResponse = Mockito.mock(MockHttpServletResponse.class); - String json = "{\"dictionaryFields\": {\"onapName\": \"testMMRestAPI1\",\"description\": \"testing update response message\"}}"; - dictionaryTestSetup(false, "OnapName", json); - // send Request to PAP - pap.service(httpServletRequest, httpServletResponse); - // Verify - Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); - - httpServletRequest = Mockito.mock(HttpServletRequest.class); - httpServletResponse = Mockito.mock(MockHttpServletResponse.class); - json = "{\"dictionaryFields\": {\"xacmlId\": \"testMMRestAPI1\",\"datatypeBean\": {\"shortName\": \"string\"}, \"description\": \"testing update\",\"priority\": \"High\",\"userDataTypeValues\": [{\"attributeValues\": \"testAttr\"}, {\"attributeValues\": \"testAttr2\"}, {\"attributeValues\": \"testAttr3\"}]}}"; - dictionaryTestSetup(false, "Attribute", json); - // send Request to PAP - pap.service(httpServletRequest, httpServletResponse); - // Verify - Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); - - - httpServletRequest = Mockito.mock(HttpServletRequest.class); - httpServletResponse = Mockito.mock(MockHttpServletResponse.class); - json = "{\"dictionaryFields\":{\"attributeName\":\"TestMMrestAPI1\",\"type\":\"REST\",\"url\":\"testsomeurl.com\",\"method\":\"GET\",\"description\":\"test create\",\"body\":\"Testing Create\",\"headers\":[{\"option\":\"test1\",\"number\":\"test\"},{\"option\":\"test2\",\"number\":\"test\"}]}}"; - dictionaryTestSetup(false, "Action", json); - // send Request to PAP - pap.service(httpServletRequest, httpServletResponse); - // Verify - Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); - - httpServletRequest = Mockito.mock(HttpServletRequest.class); - httpServletResponse = Mockito.mock(MockHttpServletResponse.class); - json = "{\"dictionaryFields\":{\"scopeName\":\"testMMRestAPI1\",\"description\":\"test\",\"attributes\":[{\"option\":\"test1\",\"number\":\"test\"},{\"option\":\"test2\",\"number\":\"test\"}]}}"; - dictionaryTestSetup(false, "DescriptiveScope", json); - // send Request to PAP - pap.service(httpServletRequest, httpServletResponse); - // Verify - Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); - - httpServletRequest = Mockito.mock(HttpServletRequest.class); - httpServletResponse = Mockito.mock(MockHttpServletResponse.class); - json = "{\"dictionaryFields\":{\"riskName\":\"testMMrestAPI1\",\"description\":\"test\"}}"; - dictionaryTestSetup(false, "RiskType", json); - // send Request to PAP - pap.service(httpServletRequest, httpServletResponse); - // Verify - Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); - - httpServletRequest = Mockito.mock(HttpServletRequest.class); - httpServletResponse = Mockito.mock(MockHttpServletResponse.class); - json = "{\"dictionaryFields\":{\"name\":\"testMMrestAPI1\",\"message\":\"test\",\"riskType\":\"testMMrestAPI1\"}}"; - dictionaryTestSetup(false, "SafePolicyWarning", json); - // send Request to PAP - pap.service(httpServletRequest, httpServletResponse); - // Verify - Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); + httpServletRequest = Mockito.mock(HttpServletRequest.class); + httpServletResponse = Mockito.mock(MockHttpServletResponse.class); + String json = "{\"dictionaryFields\": {\"onapName\": \"testMMRestAPI1\",\"description\": \"testing update response message\"}}"; + dictionaryTestSetup(false, "OnapName", json); + // send Request to PAP + pap.service(httpServletRequest, httpServletResponse); + // Verify + Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); + + httpServletRequest = Mockito.mock(HttpServletRequest.class); + httpServletResponse = Mockito.mock(MockHttpServletResponse.class); + json = "{\"dictionaryFields\": {\"xacmlId\": \"testMMRestAPI1\",\"datatypeBean\": {\"shortName\": \"string\"}, \"description\": \"testing update\",\"priority\": \"High\",\"userDataTypeValues\": [{\"attributeValues\": \"testAttr\"}, {\"attributeValues\": \"testAttr2\"}, {\"attributeValues\": \"testAttr3\"}]}}"; + dictionaryTestSetup(false, "Attribute", json); + // send Request to PAP + pap.service(httpServletRequest, httpServletResponse); + // Verify + Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); + + + httpServletRequest = Mockito.mock(HttpServletRequest.class); + httpServletResponse = Mockito.mock(MockHttpServletResponse.class); + json = "{\"dictionaryFields\":{\"attributeName\":\"TestMMrestAPI1\",\"type\":\"REST\",\"url\":\"testsomeurl.com\",\"method\":\"GET\",\"description\":\"test create\",\"body\":\"Testing Create\",\"headers\":[{\"option\":\"test1\",\"number\":\"test\"},{\"option\":\"test2\",\"number\":\"test\"}]}}"; + dictionaryTestSetup(false, "Action", json); + // send Request to PAP + pap.service(httpServletRequest, httpServletResponse); + // Verify + Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); + + httpServletRequest = Mockito.mock(HttpServletRequest.class); + httpServletResponse = Mockito.mock(MockHttpServletResponse.class); + json = "{\"dictionaryFields\":{\"scopeName\":\"testMMRestAPI1\",\"description\":\"test\",\"attributes\":[{\"option\":\"test1\",\"number\":\"test\"},{\"option\":\"test2\",\"number\":\"test\"}]}}"; + dictionaryTestSetup(false, "DescriptiveScope", json); + // send Request to PAP + pap.service(httpServletRequest, httpServletResponse); + // Verify + Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); + + httpServletRequest = Mockito.mock(HttpServletRequest.class); + httpServletResponse = Mockito.mock(MockHttpServletResponse.class); + json = "{\"dictionaryFields\":{\"riskName\":\"testMMrestAPI1\",\"description\":\"test\"}}"; + dictionaryTestSetup(false, "RiskType", json); + // send Request to PAP + pap.service(httpServletRequest, httpServletResponse); + // Verify + Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); + + httpServletRequest = Mockito.mock(HttpServletRequest.class); + httpServletResponse = Mockito.mock(MockHttpServletResponse.class); + json = "{\"dictionaryFields\":{\"name\":\"testMMrestAPI1\",\"message\":\"test\",\"riskType\":\"testMMrestAPI1\"}}"; + dictionaryTestSetup(false, "SafePolicyWarning", json); + // send Request to PAP + pap.service(httpServletRequest, httpServletResponse); + // Verify + Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); } @Test public void testDecisionCreateDictionary() throws IOException, SQLException, ServletException { - new DecisionPolicyDictionaryController(commonClassDao); - httpServletRequest = Mockito.mock(HttpServletRequest.class); - httpServletResponse = Mockito.mock(MockHttpServletResponse.class); - String json = "{\"dictionaryFields\":{\"xacmlId\":\"testMMRestAPI1\",\"datatypeBean\":{\"shortName\":\"string\"},\"description\":\"test\",\"priority\":\"High\"}}"; - dictionaryTestSetup(false, "Settings", json); - // send Request to PAP - pap.service(httpServletRequest, httpServletResponse); - // Verify - Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); - - httpServletRequest = Mockito.mock(HttpServletRequest.class); - httpServletResponse = Mockito.mock(MockHttpServletResponse.class); - json = "{\"dictionaryFields\":{\"bbid\":\"BB1\",\"workstep\":\"1\",\"treatments\":\"Manual Handling,Abort,Retry\"}}"; - dictionaryTestSetup(false, "RainyDayTreatments", json); - // send Request to PAP - pap.service(httpServletRequest, httpServletResponse); - // Verify - Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); + new DecisionPolicyDictionaryController(commonClassDao); + httpServletRequest = Mockito.mock(HttpServletRequest.class); + httpServletResponse = Mockito.mock(MockHttpServletResponse.class); + String json = "{\"dictionaryFields\":{\"xacmlId\":\"testMMRestAPI1\",\"datatypeBean\":{\"shortName\":\"string\"},\"description\":\"test\",\"priority\":\"High\"}}"; + dictionaryTestSetup(false, "Settings", json); + // send Request to PAP + pap.service(httpServletRequest, httpServletResponse); + // Verify + Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); + + httpServletRequest = Mockito.mock(HttpServletRequest.class); + httpServletResponse = Mockito.mock(MockHttpServletResponse.class); + json = "{\"dictionaryFields\":{\"bbid\":\"BB1\",\"workstep\":\"1\",\"treatments\":\"Manual Handling,Abort,Retry\"}}"; + dictionaryTestSetup(false, "RainyDayTreatments", json); + // send Request to PAP + pap.service(httpServletRequest, httpServletResponse); + // Verify + Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); } @Test public void testMSCreateDictionary() throws IOException, SQLException, ServletException { - new MicroServiceDictionaryController(commonClassDao); - new PolicyScopeDictionaryController(commonClassDao); - httpServletRequest = Mockito.mock(HttpServletRequest.class); - httpServletResponse = Mockito.mock(MockHttpServletResponse.class); - String json = "{\"dictionaryFields\":{\"name\":\"testMMrestAPI1\",\"descriptionValue\":\"test\"}}"; - dictionaryTestSetup(false, "MicroServiceLocation", json); - // send Request to PAP - pap.service(httpServletRequest, httpServletResponse); - // Verify - Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); - - httpServletRequest = Mockito.mock(HttpServletRequest.class); - httpServletResponse = Mockito.mock(MockHttpServletResponse.class); - json = "{\"dictionaryFields\":{\"name\":\"testMMrestAPI1\",\"descriptionValue\":\"test\"}}"; - dictionaryTestSetup(false, "MicroServiceConfigName", json); - // send Request to PAP - pap.service(httpServletRequest, httpServletResponse); - // Verify - Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); - - httpServletRequest = Mockito.mock(HttpServletRequest.class); - httpServletResponse = Mockito.mock(MockHttpServletResponse.class); - json = "{\"dictionaryFields\":{\"name\":\"testMMrestAPI1\",\"description\":\"test\"}}"; - dictionaryTestSetup(false, "DCAEUUID", json); - // send Request to PAP - pap.service(httpServletRequest, httpServletResponse); - // Verify - Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); - - httpServletRequest = Mockito.mock(HttpServletRequest.class); - httpServletResponse = Mockito.mock(MockHttpServletResponse.class); - json = "{\"dictionaryFields\":{\"name\":\"testApiANY\",\"descriptionValue\":\"default test\"}}"; - dictionaryTestSetup(false, "PolicyScopeService", json); - // send Request to PAP - pap.service(httpServletRequest, httpServletResponse); - // Verify - Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); - - httpServletRequest = Mockito.mock(HttpServletRequest.class); - httpServletResponse = Mockito.mock(MockHttpServletResponse.class); - json = "{\"dictionaryFields\":{\"name\":\"testApiANY\",\"descriptionValue\":\"default test\"}}"; - dictionaryTestSetup(false, "PolicyScopeResource", json); - // send Request to PAP - pap.service(httpServletRequest, httpServletResponse); - // Verify - Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); - - httpServletRequest = Mockito.mock(HttpServletRequest.class); - httpServletResponse = Mockito.mock(MockHttpServletResponse.class); - json = "{\"dictionaryFields\":{\"name\":\"testApiANY\",\"descriptionValue\":\"default test\"}}"; - dictionaryTestSetup(false, "PolicyScopeType", json); - // send Request to PAP - pap.service(httpServletRequest, httpServletResponse); - // Verify - Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); - - httpServletRequest = Mockito.mock(HttpServletRequest.class); - httpServletResponse = Mockito.mock(MockHttpServletResponse.class); - json = "{\"dictionaryFields\":{\"name\":\"testApiANY\",\"descriptionValue\":\"default test\"}}"; - dictionaryTestSetup(false, "PolicyScopeClosedLoop", json); - // send Request to PAP - pap.service(httpServletRequest, httpServletResponse); - // Verify - Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); - - httpServletRequest = Mockito.mock(HttpServletRequest.class); - httpServletResponse = Mockito.mock(MockHttpServletResponse.class); - json = "{\"dictionaryFields\":{\"groupName\":\"testMMrestAPI1\",\"description\":\"testing\"},\"groupPolicyScopeListData1\":{\"resource\":\"ANY\",\"type\":\"ANY\",\"service\":\"ANY\",\"closedloop\":\"ANY\"}}"; - dictionaryTestSetup(false, "GroupPolicyScopeList", json); - // send Request to PAP - pap.service(httpServletRequest, httpServletResponse); - // Verify - Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); + new MicroServiceDictionaryController(commonClassDao); + new PolicyScopeDictionaryController(commonClassDao); + httpServletRequest = Mockito.mock(HttpServletRequest.class); + httpServletResponse = Mockito.mock(MockHttpServletResponse.class); + String json = "{\"dictionaryFields\":{\"name\":\"testMMrestAPI1\",\"descriptionValue\":\"test\"}}"; + dictionaryTestSetup(false, "MicroServiceLocation", json); + // send Request to PAP + pap.service(httpServletRequest, httpServletResponse); + // Verify + Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); + + httpServletRequest = Mockito.mock(HttpServletRequest.class); + httpServletResponse = Mockito.mock(MockHttpServletResponse.class); + json = "{\"dictionaryFields\":{\"name\":\"testMMrestAPI1\",\"descriptionValue\":\"test\"}}"; + dictionaryTestSetup(false, "MicroServiceConfigName", json); + // send Request to PAP + pap.service(httpServletRequest, httpServletResponse); + // Verify + Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); + + httpServletRequest = Mockito.mock(HttpServletRequest.class); + httpServletResponse = Mockito.mock(MockHttpServletResponse.class); + json = "{\"dictionaryFields\":{\"name\":\"testMMrestAPI1\",\"description\":\"test\"}}"; + dictionaryTestSetup(false, "DCAEUUID", json); + // send Request to PAP + pap.service(httpServletRequest, httpServletResponse); + // Verify + Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); + + httpServletRequest = Mockito.mock(HttpServletRequest.class); + httpServletResponse = Mockito.mock(MockHttpServletResponse.class); + json = "{\"dictionaryFields\":{\"name\":\"testApiANY\",\"descriptionValue\":\"default test\"}}"; + dictionaryTestSetup(false, "PolicyScopeService", json); + // send Request to PAP + pap.service(httpServletRequest, httpServletResponse); + // Verify + Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); + + httpServletRequest = Mockito.mock(HttpServletRequest.class); + httpServletResponse = Mockito.mock(MockHttpServletResponse.class); + json = "{\"dictionaryFields\":{\"name\":\"testApiANY\",\"descriptionValue\":\"default test\"}}"; + dictionaryTestSetup(false, "PolicyScopeResource", json); + // send Request to PAP + pap.service(httpServletRequest, httpServletResponse); + // Verify + Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); + + httpServletRequest = Mockito.mock(HttpServletRequest.class); + httpServletResponse = Mockito.mock(MockHttpServletResponse.class); + json = "{\"dictionaryFields\":{\"name\":\"testApiANY\",\"descriptionValue\":\"default test\"}}"; + dictionaryTestSetup(false, "PolicyScopeType", json); + // send Request to PAP + pap.service(httpServletRequest, httpServletResponse); + // Verify + Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); + + httpServletRequest = Mockito.mock(HttpServletRequest.class); + httpServletResponse = Mockito.mock(MockHttpServletResponse.class); + json = "{\"dictionaryFields\":{\"name\":\"testApiANY\",\"descriptionValue\":\"default test\"}}"; + dictionaryTestSetup(false, "PolicyScopeClosedLoop", json); + // send Request to PAP + pap.service(httpServletRequest, httpServletResponse); + // Verify + Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); + + httpServletRequest = Mockito.mock(HttpServletRequest.class); + httpServletResponse = Mockito.mock(MockHttpServletResponse.class); + json = "{\"dictionaryFields\":{\"groupName\":\"testMMrestAPI1\",\"description\":\"testing\"},\"groupPolicyScopeListData1\":{\"resource\":\"ANY\",\"type\":\"ANY\",\"service\":\"ANY\",\"closedloop\":\"ANY\"}}"; + dictionaryTestSetup(false, "GroupPolicyScopeList", json); + // send Request to PAP + pap.service(httpServletRequest, httpServletResponse); + // Verify + Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK); } private void dictionaryTestSetup(Boolean updateFlag, String dictionaryType, String json) throws IOException, SQLException { @@ -790,23 +790,23 @@ public class XACMLPAPTest { @Test public void getDictionary() throws ServletException, IOException{ - String[] dictionarys = new String[]{"Attribute", "OnapName", "Action", "BRMSParamTemplate","VSCLAction" - ,"VNFType","PEPOptions","Varbind","Service","Site", "Settings", "RainyDayTreatments", - "DescriptiveScope", "ActionList", "ProtocolList", "Zone", "SecurityZone", - "PrefixList", "AddressGroup", "ServiceGroup", "ServiceList", "TermList", - "MicroServiceLocation", "MicroServiceConfigName", "DCAEUUID", "MicroServiceModels", - "PolicyScopeService", "PolicyScopeResource", "PolicyScopeType", "PolicyScopeClosedLoop", - "GroupPolicyScopeList", "RiskType", "SafePolicyWarning", "MicroServiceDictionary"}; - for(String dictionary : dictionarys){ - httpServletRequest = Mockito.mock(HttpServletRequest.class); - httpServletResponse = new MockHttpServletResponse(); - Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL"); - Mockito.when(httpServletRequest.getMethod()).thenReturn("GET"); - Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api"); - Mockito.when(httpServletRequest.getParameter("dictionaryType")).thenReturn(dictionary); - pap.service(httpServletRequest, httpServletResponse); - assertTrue(HttpServletResponse.SC_OK == httpServletResponse.getStatus()); - } + String[] dictionarys = new String[]{"Attribute", "OnapName", "Action", "BRMSParamTemplate","VSCLAction" + ,"VNFType","PEPOptions","Varbind","Service","Site", "Settings", "RainyDayTreatments", + "DescriptiveScope", "ActionList", "ProtocolList", "Zone", "SecurityZone", + "PrefixList", "AddressGroup", "ServiceGroup", "ServiceList", "TermList", + "MicroServiceLocation", "MicroServiceConfigName", "DCAEUUID", "MicroServiceModels", + "PolicyScopeService", "PolicyScopeResource", "PolicyScopeType", "PolicyScopeClosedLoop", + "GroupPolicyScopeList", "RiskType", "SafePolicyWarning", "MicroServiceDictionary"}; + for(String dictionary : dictionarys){ + httpServletRequest = Mockito.mock(HttpServletRequest.class); + httpServletResponse = new MockHttpServletResponse(); + Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL"); + Mockito.when(httpServletRequest.getMethod()).thenReturn("GET"); + Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api"); + Mockito.when(httpServletRequest.getParameter("dictionaryType")).thenReturn(dictionary); + pap.service(httpServletRequest, httpServletResponse); + assertTrue(HttpServletResponse.SC_OK == httpServletResponse.getStatus()); + } } @Test diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/PAPRestConfigTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/PAPRestConfigTest.java index b57c187c7..dfadf8e81 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/PAPRestConfigTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/PAPRestConfigTest.java @@ -28,46 +28,46 @@ import org.onap.policy.pap.xacml.rest.PAPRestConfig; import org.springframework.orm.hibernate4.HibernateTransactionManager; public class PAPRestConfigTest { - @Test - public void testSetAndGet() { - String testVal = "testVal"; - - PAPRestConfig.setDbDriver(testVal); - assertEquals(PAPRestConfig.getDbDriver(), testVal); - PAPRestConfig.setDbUrl(testVal); - assertEquals(PAPRestConfig.getDbUrl(), testVal); - PAPRestConfig.setDbUserName(testVal); - assertEquals(PAPRestConfig.getDbUserName(), testVal); - PAPRestConfig.setDbPassword(testVal); - assertEquals(PAPRestConfig.getDbPassword(), testVal); - } - - @Test - public void testInit() { - String driver = "org.mariadb.jdbc.Driver"; - String url = "jdbc:mariadb://localhost:3306/onap_sdk?connectTimeout=30000&socketTimeout=60000&log=true&sessionVariables=max_statement_time=30"; - String user = "policy_user"; - String password = "policy_user"; - - PAPRestConfig config = new PAPRestConfig(); - config.init(); - - assertEquals(PAPRestConfig.getDbDriver(), driver); - assertEquals(PAPRestConfig.getDbUrl(), url); - assertEquals(PAPRestConfig.getDbUserName(), user); - assertEquals(PAPRestConfig.getDbPassword(), password); - - // Test hibernate - BasicDataSource source = (BasicDataSource)config.getDataSource(); - assertEquals(source.getDriverClassName(), driver); - assertEquals(source.getUrl(), url); - assertEquals(source.getUsername(), user); - assertEquals(source.getPassword(), password); - - SessionFactory factory = config.getSessionFactory(source); - assertEquals(factory.isClosed(), false); - - HibernateTransactionManager manager = config.getTransactionManager(factory); - assertEquals(manager.getSessionFactory(), factory); - } + @Test + public void testSetAndGet() { + String testVal = "testVal"; + + PAPRestConfig.setDbDriver(testVal); + assertEquals(PAPRestConfig.getDbDriver(), testVal); + PAPRestConfig.setDbUrl(testVal); + assertEquals(PAPRestConfig.getDbUrl(), testVal); + PAPRestConfig.setDbUserName(testVal); + assertEquals(PAPRestConfig.getDbUserName(), testVal); + PAPRestConfig.setDbPassword(testVal); + assertEquals(PAPRestConfig.getDbPassword(), testVal); + } + + @Test + public void testInit() { + String driver = "org.mariadb.jdbc.Driver"; + String url = "jdbc:mariadb://localhost:3306/onap_sdk?connectTimeout=30000&socketTimeout=60000&log=true&sessionVariables=max_statement_time=30"; + String user = "policy_user"; + String password = "policy_user"; + + PAPRestConfig config = new PAPRestConfig(); + config.init(); + + assertEquals(PAPRestConfig.getDbDriver(), driver); + assertEquals(PAPRestConfig.getDbUrl(), url); + assertEquals(PAPRestConfig.getDbUserName(), user); + assertEquals(PAPRestConfig.getDbPassword(), password); + + // Test hibernate + BasicDataSource source = (BasicDataSource)config.getDataSource(); + assertEquals(source.getDriverClassName(), driver); + assertEquals(source.getUrl(), url); + assertEquals(source.getUsername(), user); + assertEquals(source.getPassword(), password); + + SessionFactory factory = config.getSessionFactory(source); + assertEquals(factory.isClosed(), false); + + HibernateTransactionManager manager = config.getTransactionManager(factory); + assertEquals(manager.getSessionFactory(), factory); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/WebConfigTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/WebConfigTest.java index 15bdf8962..32d7dedd3 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/WebConfigTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/WebConfigTest.java @@ -27,11 +27,11 @@ import org.junit.Test; import org.mockito.Mockito; public class WebConfigTest { - @Test(expected=NullPointerException.class) - public void testNegativeStartup() throws ServletException { - WebConfig init = new WebConfig(); - ServletContext container = Mockito.mock(ServletContext.class); - init.onStartup(container); - fail("Expecting an exception."); - } + @Test(expected=NullPointerException.class) + public void testNegativeStartup() throws ServletException { + WebConfig init = new WebConfig(); + ServletContext container = Mockito.mock(ServletContext.class); + init.onStartup(container); + fail("Expecting an exception."); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/XACMLPapServletTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/XACMLPapServletTest.java index 3630889b0..36d40278b 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/XACMLPapServletTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/XACMLPapServletTest.java @@ -26,44 +26,44 @@ import org.junit.Test; import org.onap.policy.pap.xacml.rest.XACMLPapServlet; public class XACMLPapServletTest { - @Test - public void testSetAndGet() { - String systemKey = "xacml.properties"; - String testVal = "testVal"; - XACMLPapServlet servlet = new XACMLPapServlet(); - - // Set the system property temporarily - String oldProperty = System.getProperty(systemKey); - System.setProperty(systemKey, "xacml.pap.properties"); - - assertNotNull(XACMLPapServlet.getConfigHome()); - assertNotNull(XACMLPapServlet.getActionHome()); - assertEquals(XACMLPapServlet.getPersistenceUnit(), "XACML-PAP-REST"); + @Test + public void testSetAndGet() { + String systemKey = "xacml.properties"; + String testVal = "testVal"; + XACMLPapServlet servlet = new XACMLPapServlet(); - //assertNull(XACMLPapServlet.getEmf()); - //assertNull(XACMLPapServlet.getPDPFile()); - //assertNull(XACMLPapServlet.getPAPEngine()); - //assertNull(servlet.getIa()); - - XACMLPapServlet.setPapDbDriver(testVal); - assertEquals(XACMLPapServlet.getPapDbDriver(), testVal); - XACMLPapServlet.setPapDbUrl(testVal); - assertEquals(XACMLPapServlet.getPapDbUrl(), testVal); - XACMLPapServlet.setPapDbUser(testVal); - assertEquals(XACMLPapServlet.getPapDbUser(), testVal); - XACMLPapServlet.setPapDbPassword(testVal); - assertEquals(XACMLPapServlet.getPapDbPassword(), testVal); - XACMLPapServlet.setMsOnapName(testVal); - assertEquals(XACMLPapServlet.getMsOnapName(), testVal); - XACMLPapServlet.setMsPolicyName(testVal); - assertEquals(XACMLPapServlet.getMsPolicyName(), testVal); - - // Restore the original system property - if (oldProperty != null) { - System.setProperty(systemKey, oldProperty); - } - else { - System.clearProperty(systemKey); - } - } + // Set the system property temporarily + String oldProperty = System.getProperty(systemKey); + System.setProperty(systemKey, "xacml.pap.properties"); + + assertNotNull(XACMLPapServlet.getConfigHome()); + assertNotNull(XACMLPapServlet.getActionHome()); + assertEquals(XACMLPapServlet.getPersistenceUnit(), "XACML-PAP-REST"); + + //assertNull(XACMLPapServlet.getEmf()); + //assertNull(XACMLPapServlet.getPDPFile()); + //assertNull(XACMLPapServlet.getPAPEngine()); + //assertNull(servlet.getIa()); + + XACMLPapServlet.setPapDbDriver(testVal); + assertEquals(XACMLPapServlet.getPapDbDriver(), testVal); + XACMLPapServlet.setPapDbUrl(testVal); + assertEquals(XACMLPapServlet.getPapDbUrl(), testVal); + XACMLPapServlet.setPapDbUser(testVal); + assertEquals(XACMLPapServlet.getPapDbUser(), testVal); + XACMLPapServlet.setPapDbPassword(testVal); + assertEquals(XACMLPapServlet.getPapDbPassword(), testVal); + XACMLPapServlet.setMsOnapName(testVal); + assertEquals(XACMLPapServlet.getMsOnapName(), testVal); + XACMLPapServlet.setMsPolicyName(testVal); + assertEquals(XACMLPapServlet.getMsPolicyName(), testVal); + + // Restore the original system property + if (oldProperty != null) { + System.setProperty(systemKey, oldProperty); + } + else { + System.clearProperty(systemKey); + } + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/adapters/SearchDataTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/adapters/SearchDataTest.java index 839af2fdc..841ba28fc 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/adapters/SearchDataTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/adapters/SearchDataTest.java @@ -24,33 +24,33 @@ import static org.junit.Assert.*; import org.junit.Test; public class SearchDataTest { - - - @Test - public void testSearchData(){ - String data = "Test"; - SearchData searchData = new SearchData(); - searchData.setQuery(data); - searchData.setPolicyType(data); - searchData.setOnapName(data); - searchData.setDescriptiveScope(data); - searchData.setClosedLooppolicyType(data); - searchData.setD2Service(data); - searchData.setVnfType(data); - searchData.setPolicyStatus(data); - searchData.setVproAction(data); - searchData.setServiceType(data); - searchData.setBindTextSearch(data); - assertEquals(data, searchData.getQuery()); - assertEquals(data, searchData.getPolicyType()); - assertEquals(data, searchData.getDescriptiveScope()); - assertEquals(data, searchData.getClosedLooppolicyType()); - assertEquals(data, searchData.getOnapName()); - assertEquals(data, searchData.getD2Service()); - assertEquals(data, searchData.getVnfType()); - assertEquals(data, searchData.getPolicyStatus()); - assertEquals(data, searchData.getVproAction()); - assertEquals(data, searchData.getServiceType()); - assertEquals(data, searchData.getBindTextSearch()); - } + + + @Test + public void testSearchData(){ + String data = "Test"; + SearchData searchData = new SearchData(); + searchData.setQuery(data); + searchData.setPolicyType(data); + searchData.setOnapName(data); + searchData.setDescriptiveScope(data); + searchData.setClosedLooppolicyType(data); + searchData.setD2Service(data); + searchData.setVnfType(data); + searchData.setPolicyStatus(data); + searchData.setVproAction(data); + searchData.setServiceType(data); + searchData.setBindTextSearch(data); + assertEquals(data, searchData.getQuery()); + assertEquals(data, searchData.getPolicyType()); + assertEquals(data, searchData.getDescriptiveScope()); + assertEquals(data, searchData.getClosedLooppolicyType()); + assertEquals(data, searchData.getOnapName()); + assertEquals(data, searchData.getD2Service()); + assertEquals(data, searchData.getVnfType()); + assertEquals(data, searchData.getPolicyStatus()); + assertEquals(data, searchData.getVproAction()); + assertEquals(data, searchData.getServiceType()); + assertEquals(data, searchData.getBindTextSearch()); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/adapters/UpdateObjectDataTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/adapters/UpdateObjectDataTest.java index 2c1bc1c53..094994e41 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/adapters/UpdateObjectDataTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/adapters/UpdateObjectDataTest.java @@ -24,16 +24,16 @@ import static org.junit.Assert.assertTrue; import org.junit.Test; public class UpdateObjectDataTest { - - @Test - public void testClosedLoopFaultTrapDatas(){ - UpdateObjectData updateObject = new UpdateObjectData(); - updateObject.setAction("Rename"); - assertTrue("Rename".equals(updateObject.getAction())); - updateObject.setNewPolicyName("com.Config_test1.1.json"); - assertTrue("com.Config_test1.1.json".equals(updateObject.getNewPolicyName())); - updateObject.setOldPolicyName("com.Config_test.1.json"); - assertTrue("com.Config_test.1.json".equals(updateObject.getOldPolicyName())); - } - + + @Test + public void testClosedLoopFaultTrapDatas(){ + UpdateObjectData updateObject = new UpdateObjectData(); + updateObject.setAction("Rename"); + assertTrue("Rename".equals(updateObject.getAction())); + updateObject.setNewPolicyName("com.Config_test1.1.json"); + assertTrue("com.Config_test1.1.json".equals(updateObject.getNewPolicyName())); + updateObject.setOldPolicyName("com.Config_test.1.json"); + assertTrue("com.Config_test.1.json".equals(updateObject.getOldPolicyName())); + } + } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/ActionPolicyTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/ActionPolicyTest.java index cb09becf3..a04859b27 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/ActionPolicyTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/ActionPolicyTest.java @@ -40,102 +40,102 @@ import com.att.research.xacml.util.XACMLProperties; public class ActionPolicyTest { - - private static Logger logger = FlexLogger.getLogger(ActionPolicyTest.class); - PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); - List<String> dynamicRuleAlgorithmLabels = new LinkedList<>(); - List<String> dynamicRuleAlgorithmCombo = new LinkedList<>(); - List<String> dynamicRuleAlgorithmField1 = new LinkedList<>(); - List<String> dynamicRuleAlgorithmField2 = new LinkedList<>(); - Map<String, String> attributeMap = new HashMap<>(); - ActionPolicy component = null; - - - /** - * @throws java.lang.Exception - */ - @Before - public void setUp() throws Exception { - logger.info("setUp: Entering"); - System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME,"src/test/resources/xacml.pap.properties"); - - dynamicRuleAlgorithmLabels.add("test"); - dynamicRuleAlgorithmField1.add("testField1"); - dynamicRuleAlgorithmCombo.add("testCombo"); - dynamicRuleAlgorithmField2.add("testField2"); - - policyAdapter.setPolicyName("Test.Action_junitTest"); - policyAdapter.setPolicyDescription("test"); - policyAdapter.setRuleCombiningAlgId("urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides"); - policyAdapter.setPolicyType("Action"); - policyAdapter.setEditPolicy(false); - policyAdapter.setDomainDir("Test"); - policyAdapter.setNewFileName("Test.Action_junitTest.1.xml"); - policyAdapter.setHighestVersion(1); - policyAdapter.setPolicyID("urn:xacml:policy:id:"+UUID.randomUUID()); - - policyAdapter.setActionDictHeader(""); - policyAdapter.setActionDictType("REST"); - policyAdapter.setActionDictUrl("onap.org"); - policyAdapter.setActionDictMethod("GET"); - policyAdapter.setActionAttribute("test"); - policyAdapter.setActionBody("test"); - - policyAdapter.setDynamicRuleAlgorithmLabels(dynamicRuleAlgorithmLabels); - policyAdapter.setDynamicRuleAlgorithmCombo(dynamicRuleAlgorithmCombo); - policyAdapter.setDynamicRuleAlgorithmField1(dynamicRuleAlgorithmField1); - policyAdapter.setDynamicRuleAlgorithmField2(dynamicRuleAlgorithmField2); - - attributeMap.put("java", "test"); - policyAdapter.setDynamicFieldConfigAttributes(attributeMap); - - component = new ActionPolicy(policyAdapter, null); + + private static Logger logger = FlexLogger.getLogger(ActionPolicyTest.class); + PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); + List<String> dynamicRuleAlgorithmLabels = new LinkedList<>(); + List<String> dynamicRuleAlgorithmCombo = new LinkedList<>(); + List<String> dynamicRuleAlgorithmField1 = new LinkedList<>(); + List<String> dynamicRuleAlgorithmField2 = new LinkedList<>(); + Map<String, String> attributeMap = new HashMap<>(); + ActionPolicy component = null; + + + /** + * @throws java.lang.Exception + */ + @Before + public void setUp() throws Exception { + logger.info("setUp: Entering"); + System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME,"src/test/resources/xacml.pap.properties"); + + dynamicRuleAlgorithmLabels.add("test"); + dynamicRuleAlgorithmField1.add("testField1"); + dynamicRuleAlgorithmCombo.add("testCombo"); + dynamicRuleAlgorithmField2.add("testField2"); + + policyAdapter.setPolicyName("Test.Action_junitTest"); + policyAdapter.setPolicyDescription("test"); + policyAdapter.setRuleCombiningAlgId("urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides"); + policyAdapter.setPolicyType("Action"); + policyAdapter.setEditPolicy(false); + policyAdapter.setDomainDir("Test"); + policyAdapter.setNewFileName("Test.Action_junitTest.1.xml"); + policyAdapter.setHighestVersion(1); + policyAdapter.setPolicyID("urn:xacml:policy:id:"+UUID.randomUUID()); + + policyAdapter.setActionDictHeader(""); + policyAdapter.setActionDictType("REST"); + policyAdapter.setActionDictUrl("onap.org"); + policyAdapter.setActionDictMethod("GET"); + policyAdapter.setActionAttribute("test"); + policyAdapter.setActionBody("test"); + + policyAdapter.setDynamicRuleAlgorithmLabels(dynamicRuleAlgorithmLabels); + policyAdapter.setDynamicRuleAlgorithmCombo(dynamicRuleAlgorithmCombo); + policyAdapter.setDynamicRuleAlgorithmField1(dynamicRuleAlgorithmField1); + policyAdapter.setDynamicRuleAlgorithmField2(dynamicRuleAlgorithmField2); + + attributeMap.put("java", "test"); + policyAdapter.setDynamicFieldConfigAttributes(attributeMap); + + component = new ActionPolicy(policyAdapter, null); logger.info("setUp: exit"); - } + } - /** - * @throws java.lang.Exception - */ - @After - public void tearDown() throws Exception { - } + /** + * @throws java.lang.Exception + */ + @After + public void tearDown() throws Exception { + } /* *//** - * Test method for {@link org.openecomp.policy.pap.xacml.rest.components.ActionPolicy#savePolicies()}. - */ - @Test - public void testSavePolicies() { + * Test method for {@link org.openecomp.policy.pap.xacml.rest.components.ActionPolicy#savePolicies()}. + */ + @Test + public void testSavePolicies() { ActionPolicy mockAction = Mockito.mock(component.getClass()); - + Map<String, String> successMap = new HashMap<>(); - successMap.put("success", "success"); + successMap.put("success", "success"); try { - when(mockAction.savePolicies()).thenReturn(successMap); - successMap = mockAction.savePolicies(); - } catch (Exception e) { - logger.error("Exception Occured"+e); - } - assertEquals(successMap.get("success"),"success"); - } - - /** - * Test method for {@link org.openecomp.policy.pap.xacml.rest.components.ActionPolicy#prepareToSave()}. - */ - @Test - public void testPrepareToSave() { - logger.debug("test PrepareToSave Policy: enter"); - boolean response = true; - - try { - response = component.prepareToSave(); - } catch (Exception e) { - logger.error("Exception Occured"+e); - } - assertTrue(response); - - } + when(mockAction.savePolicies()).thenReturn(successMap); + successMap = mockAction.savePolicies(); + } catch (Exception e) { + logger.error("Exception Occured"+e); + } + assertEquals(successMap.get("success"),"success"); + } + + /** + * Test method for {@link org.openecomp.policy.pap.xacml.rest.components.ActionPolicy#prepareToSave()}. + */ + @Test + public void testPrepareToSave() { + logger.debug("test PrepareToSave Policy: enter"); + boolean response = true; + + try { + response = component.prepareToSave(); + } catch (Exception e) { + logger.error("Exception Occured"+e); + } + assertTrue(response); + + } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/ClosedLoopPolicyTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/ClosedLoopPolicyTest.java index 9c5f71f55..542d45e3e 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/ClosedLoopPolicyTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/ClosedLoopPolicyTest.java @@ -31,38 +31,38 @@ import com.att.research.xacml.api.pap.PAPException; import java.nio.charset.StandardCharsets; public class ClosedLoopPolicyTest { - @Rule + @Rule public ExpectedException thrown = ExpectedException.none(); - @Test - public void testConstructor1() { - thrown.expect(NullPointerException.class); - ClosedLoopPolicy policy = new ClosedLoopPolicy(); - policy.getCorrectPolicyDataObject(); - } - - @Test - public void testConstructor2() { - PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); - ClosedLoopPolicy policy = new ClosedLoopPolicy(policyAdapter); - assertNull(policy.getCorrectPolicyDataObject()); - } - - @Test - public void testReadFile() throws IOException { - thrown.expect(IOException.class); - String read = ClosedLoopPolicy.readFile("/foo", StandardCharsets.UTF_8); - fail("Expecting an exception."); - } - - @Test - public void testPrepareToSave() throws PAPException { - PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); - ClosedLoopPolicy policy = new ClosedLoopPolicy(policyAdapter); - policyAdapter.setHighestVersion(1); - policyAdapter.setPolicyType("Config"); - policyAdapter.setNewFileName("foo.xml"); - policy.prepareToSave(); - assertEquals(policy.isPreparedToSave(), true); - } + @Test + public void testConstructor1() { + thrown.expect(NullPointerException.class); + ClosedLoopPolicy policy = new ClosedLoopPolicy(); + policy.getCorrectPolicyDataObject(); + } + + @Test + public void testConstructor2() { + PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); + ClosedLoopPolicy policy = new ClosedLoopPolicy(policyAdapter); + assertNull(policy.getCorrectPolicyDataObject()); + } + + @Test + public void testReadFile() throws IOException { + thrown.expect(IOException.class); + String read = ClosedLoopPolicy.readFile("/foo", StandardCharsets.UTF_8); + fail("Expecting an exception."); + } + + @Test + public void testPrepareToSave() throws PAPException { + PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); + ClosedLoopPolicy policy = new ClosedLoopPolicy(policyAdapter); + policyAdapter.setHighestVersion(1); + policyAdapter.setPolicyType("Config"); + policyAdapter.setNewFileName("foo.xml"); + policy.prepareToSave(); + assertEquals(policy.isPreparedToSave(), true); + } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicyTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicyTest.java index e16dd9889..3cf3128dd 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicyTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicyTest.java @@ -41,104 +41,104 @@ import com.att.research.xacml.util.XACMLProperties; public class DecisionPolicyTest { - private static Logger logger = FlexLogger.getLogger(DecisionPolicyTest.class); - PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); - RainyDayParams rainyday = new RainyDayParams(); - Map<String, String> attributeMap = new HashMap<>(); - Map<String, String> treatmentMap = new HashMap<>(); - Map<String, String> settingsMap = new HashMap<>(); - List<String> errorCodeList = new LinkedList<>(); - List<String> treatmentList = new LinkedList<>(); - List<String> dynamicRuleAlgorithmLabels = new LinkedList<>(); - List<String> dynamicRuleAlgorithmCombo = new LinkedList<>(); - List<String> dynamicRuleAlgorithmField1 = new LinkedList<>(); - List<String> dynamicRuleAlgorithmField2 = new LinkedList<>(); - List<Object> dynamicVariableList = new LinkedList<>(); - List<String> dataTypeList = new LinkedList<>(); - DecisionPolicy component = null; - - /** - * @throws java.lang.Exception - */ - @Before - public void setUp() throws Exception { - logger.info("setUp: Entering"); - System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME,"src/test/resources/xacml.pap.properties"); - - policyAdapter.setPolicyName("Test.Decision_junitTest.1.xml"); - policyAdapter.setPolicyDescription("testing"); - policyAdapter.setRuleCombiningAlgId("urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides"); - policyAdapter.setPolicyType("Decision"); - policyAdapter.setEditPolicy(false); - policyAdapter.setDomainDir("Test"); - policyAdapter.setNewFileName("/src/test/resources/Test/client.properties"); - policyAdapter.setHighestVersion(1); - policyAdapter.setPolicyID("urn:xacml:policy:id:"+UUID.randomUUID()); - policyAdapter.setOnapName("MSO"); - - //rainy day attributes - attributeMap.put("ServiceType", "S"); - attributeMap.put("VNFType", "V"); - attributeMap.put("BB_ID", "testBB"); - attributeMap.put("WorkStep", "1"); - - dynamicRuleAlgorithmLabels.add("test1"); - dynamicRuleAlgorithmField1.add("testField1"); - dynamicRuleAlgorithmCombo.add("testruleCombo"); - dynamicRuleAlgorithmField2.add("testField2"); - - policyAdapter.setDynamicRuleAlgorithmLabels(dynamicRuleAlgorithmLabels); - policyAdapter.setDynamicRuleAlgorithmCombo(dynamicRuleAlgorithmCombo); - policyAdapter.setDynamicRuleAlgorithmField1(dynamicRuleAlgorithmField1); - policyAdapter.setDynamicRuleAlgorithmField2(dynamicRuleAlgorithmField2); - policyAdapter.setDynamicVariableList(dynamicVariableList); - policyAdapter.setDynamicSettingsMap(settingsMap); - policyAdapter.setDataTypeList(dataTypeList); - - policyAdapter.setDynamicFieldConfigAttributes(attributeMap); - policyAdapter.setRainydayMap(treatmentMap); - policyAdapter.setRainyday(rainyday); - - component = new DecisionPolicy(policyAdapter, null); + private static Logger logger = FlexLogger.getLogger(DecisionPolicyTest.class); + PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); + RainyDayParams rainyday = new RainyDayParams(); + Map<String, String> attributeMap = new HashMap<>(); + Map<String, String> treatmentMap = new HashMap<>(); + Map<String, String> settingsMap = new HashMap<>(); + List<String> errorCodeList = new LinkedList<>(); + List<String> treatmentList = new LinkedList<>(); + List<String> dynamicRuleAlgorithmLabels = new LinkedList<>(); + List<String> dynamicRuleAlgorithmCombo = new LinkedList<>(); + List<String> dynamicRuleAlgorithmField1 = new LinkedList<>(); + List<String> dynamicRuleAlgorithmField2 = new LinkedList<>(); + List<Object> dynamicVariableList = new LinkedList<>(); + List<String> dataTypeList = new LinkedList<>(); + DecisionPolicy component = null; + + /** + * @throws java.lang.Exception + */ + @Before + public void setUp() throws Exception { + logger.info("setUp: Entering"); + System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME,"src/test/resources/xacml.pap.properties"); + + policyAdapter.setPolicyName("Test.Decision_junitTest.1.xml"); + policyAdapter.setPolicyDescription("testing"); + policyAdapter.setRuleCombiningAlgId("urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides"); + policyAdapter.setPolicyType("Decision"); + policyAdapter.setEditPolicy(false); + policyAdapter.setDomainDir("Test"); + policyAdapter.setNewFileName("/src/test/resources/Test/client.properties"); + policyAdapter.setHighestVersion(1); + policyAdapter.setPolicyID("urn:xacml:policy:id:"+UUID.randomUUID()); + policyAdapter.setOnapName("MSO"); + + //rainy day attributes + attributeMap.put("ServiceType", "S"); + attributeMap.put("VNFType", "V"); + attributeMap.put("BB_ID", "testBB"); + attributeMap.put("WorkStep", "1"); + + dynamicRuleAlgorithmLabels.add("test1"); + dynamicRuleAlgorithmField1.add("testField1"); + dynamicRuleAlgorithmCombo.add("testruleCombo"); + dynamicRuleAlgorithmField2.add("testField2"); + + policyAdapter.setDynamicRuleAlgorithmLabels(dynamicRuleAlgorithmLabels); + policyAdapter.setDynamicRuleAlgorithmCombo(dynamicRuleAlgorithmCombo); + policyAdapter.setDynamicRuleAlgorithmField1(dynamicRuleAlgorithmField1); + policyAdapter.setDynamicRuleAlgorithmField2(dynamicRuleAlgorithmField2); + policyAdapter.setDynamicVariableList(dynamicVariableList); + policyAdapter.setDynamicSettingsMap(settingsMap); + policyAdapter.setDataTypeList(dataTypeList); + + policyAdapter.setDynamicFieldConfigAttributes(attributeMap); + policyAdapter.setRainydayMap(treatmentMap); + policyAdapter.setRainyday(rainyday); + + component = new DecisionPolicy(policyAdapter, null); logger.info("setUp: exit"); - } + } - /** - * Test method for {@link org.openecomp.policy.pap.xacml.rest.components.DecisionPolicy#savePolicies()}. - */ - @Test - public void testSavePolicies() { + /** + * Test method for {@link org.openecomp.policy.pap.xacml.rest.components.DecisionPolicy#savePolicies()}. + */ + @Test + public void testSavePolicies() { DecisionPolicy mockDecision = Mockito.mock(component.getClass()); Map<String, String> successMap = new HashMap<>(); - successMap.put("success", "success"); - + successMap.put("success", "success"); + + try { + when(mockDecision.savePolicies()).thenReturn(successMap); + successMap = mockDecision.savePolicies(); + } catch (Exception e) { + e.printStackTrace(); + } + + assertEquals(successMap.get("success"),"success"); + } + + /** + * Test method for {@link org.openecomp.policy.pap.xacml.rest.components.DecisionPolicy#prepareToSave()}. + */ + @Test + public void testPrepareToSaveRainyDay() { + logger.debug("test PrepareToSave Policy: enter"); + policyAdapter.setRuleProvider("Rainy_Day"); + component = new DecisionPolicy(policyAdapter, null); + boolean response = false; + try { - when(mockDecision.savePolicies()).thenReturn(successMap); - successMap = mockDecision.savePolicies(); - } catch (Exception e) { - e.printStackTrace(); - } - - assertEquals(successMap.get("success"),"success"); - } - - /** - * Test method for {@link org.openecomp.policy.pap.xacml.rest.components.DecisionPolicy#prepareToSave()}. - */ - @Test - public void testPrepareToSaveRainyDay() { - logger.debug("test PrepareToSave Policy: enter"); - policyAdapter.setRuleProvider("Rainy_Day"); - component = new DecisionPolicy(policyAdapter, null); - boolean response = false; - - try { - response = component.prepareToSave(); - } catch (Exception e) { - logger.error("Exception Occured"+e); - } - assertTrue(response); - } + response = component.prepareToSave(); + } catch (Exception e) { + logger.error("Exception Occured"+e); + } + assertTrue(response); + } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/FirewallConfigPolicyTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/FirewallConfigPolicyTest.java index 0dd919a35..7f3ebb3b4 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/FirewallConfigPolicyTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/FirewallConfigPolicyTest.java @@ -42,103 +42,103 @@ import com.att.research.xacml.util.XACMLProperties; public class FirewallConfigPolicyTest { - - private static Logger logger = FlexLogger.getLogger(FirewallConfigPolicyTest.class); - PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); - Map<String, String> attributeMap = new HashMap<>(); - FirewallConfigPolicy component = null; + + private static Logger logger = FlexLogger.getLogger(FirewallConfigPolicyTest.class); + PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); + Map<String, String> attributeMap = new HashMap<>(); + FirewallConfigPolicy component = null; FirewallConfigPolicy mockFWConfig = null; private XACMLPAPTest papTest; - /** - * @throws java.lang.Exception - */ - @Before - public void setUp() throws Exception { - logger.info("setup: enter"); - System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME,"src/test/resources/xacml.pap.properties"); - - policyAdapter.setPolicyName("FWjunitTest"); - policyAdapter.setPolicyDescription("test"); - policyAdapter.setRuleCombiningAlgId("urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides"); - policyAdapter.setPolicyType("Config"); - policyAdapter.setConfigPolicyType("Firewall Config"); - policyAdapter.setEditPolicy(false); - policyAdapter.setDomainDir("Test"); - policyAdapter.setNewFileName("Test.Config_FW_junitTest.1.xml"); - policyAdapter.setHighestVersion(1); - policyAdapter.setVersion(String.valueOf(1)); - policyAdapter.setPolicyID("urn:xacml:policy:id:"+UUID.randomUUID()); - policyAdapter.setRuleID(""); - policyAdapter.setConfigName("testname"); - policyAdapter.setGuard("True"); - policyAdapter.setRiskLevel("3"); - policyAdapter.setRiskType("RiskTest"); - policyAdapter.setSecurityZone("CraigSecurityZone"); - policyAdapter.setUserId("API"); - - attributeMap.put("testJunits", "test"); - policyAdapter.setDynamicFieldConfigAttributes(attributeMap); - - component = new FirewallConfigPolicy(policyAdapter); - mockFWConfig = Mockito.mock(FirewallConfigPolicy.class); - papTest = new XACMLPAPTest(); - papTest.setDBDao(); + /** + * @throws java.lang.Exception + */ + @Before + public void setUp() throws Exception { + logger.info("setup: enter"); + System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME,"src/test/resources/xacml.pap.properties"); + + policyAdapter.setPolicyName("FWjunitTest"); + policyAdapter.setPolicyDescription("test"); + policyAdapter.setRuleCombiningAlgId("urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides"); + policyAdapter.setPolicyType("Config"); + policyAdapter.setConfigPolicyType("Firewall Config"); + policyAdapter.setEditPolicy(false); + policyAdapter.setDomainDir("Test"); + policyAdapter.setNewFileName("Test.Config_FW_junitTest.1.xml"); + policyAdapter.setHighestVersion(1); + policyAdapter.setVersion(String.valueOf(1)); + policyAdapter.setPolicyID("urn:xacml:policy:id:"+UUID.randomUUID()); + policyAdapter.setRuleID(""); + policyAdapter.setConfigName("testname"); + policyAdapter.setGuard("True"); + policyAdapter.setRiskLevel("3"); + policyAdapter.setRiskType("RiskTest"); + policyAdapter.setSecurityZone("CraigSecurityZone"); + policyAdapter.setUserId("API"); + + attributeMap.put("testJunits", "test"); + policyAdapter.setDynamicFieldConfigAttributes(attributeMap); + + component = new FirewallConfigPolicy(policyAdapter); + mockFWConfig = Mockito.mock(FirewallConfigPolicy.class); + papTest = new XACMLPAPTest(); + papTest.setDBDao(); logger.info("setUp: exit"); - - } - - /** - * @throws java.lang.Exception - */ - @After - public void tearDown() throws Exception { - } - - /** - * Test method for {@link org.openecomp.policy.pap.xacml.rest.components.FirewallConfigPolicy#savePolicies()}. - */ - @Test - public void testSavePolicies() { + + } + + /** + * @throws java.lang.Exception + */ + @After + public void tearDown() throws Exception { + } + + /** + * Test method for {@link org.openecomp.policy.pap.xacml.rest.components.FirewallConfigPolicy#savePolicies()}. + */ + @Test + public void testSavePolicies() { Map<String, String> successMap = new HashMap<>(); successMap.put("success", "success"); - try { - when(mockFWConfig.savePolicies()).thenReturn(successMap); - successMap = mockFWConfig.savePolicies(); - } catch (Exception e) { - logger.error("Exception Occured"+e); - } - } - - /** - * Test method for {@link org.openecomp.policy.pap.xacml.rest.components.FirewallConfigPolicy#prepareToSave()}. - */ - @Test - public void testPrepareToSave() { - logger.debug("test prepareToSave Policy: enter"); - - boolean response = false; - try { - when(mockFWConfig.prepareToSave()).thenReturn(true); - response = mockFWConfig.prepareToSave(); - } catch (Exception e) { - logger.error("Exception Occured"+e); - } - assertTrue(response); - - } - - @Test - public void testUpdateJson() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{ - FirewallConfigPolicy firewallConfigPolicy = new FirewallConfigPolicy(); - Method method = firewallConfigPolicy.getClass().getDeclaredMethod("updateFirewallDictionaryData", String.class , String.class); - method.setAccessible(true); - String jsonBody= "{\"serviceTypeId\":\"/v0/firewall/pan\",\"configName\":\"TestFwPolicyConfig\",\"deploymentOption\":{\"deployNow\":false},\"securityZoneId\":\"cloudsite:dev1a\",\"serviceGroups\":[{\"name\":\"SSH\",\"description\":\"Sshservice entry in servicelist\",\"type\":\"SERVICE\",\"transportProtocol\":\"tcp\",\"appProtocol\":null,\"ports\":\"22\"}],\"addressGroups\":[{\"name\":\"test\",\"description\":\"Destination\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/12\"}]},{\"name\":\"TestServers\",\"description\":\"SourceTestServers for firsttesting\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/23\"}]}],\"firewallRuleList\":[{\"position\":\"1\",\"ruleName\":\"FWRuleTestServerToTest\",\"fromZones\":[\"UntrustedZoneTestName\"],\"toZones\":[\"TrustedZoneTestName\"],\"negateSource\":false,\"negateDestination\":false,\"sourceList\":[{\"type\":\"REFERENCE\",\"name\":\"TestServers\"}],\"destinationList\":[{\"type\":\"REFERENCE\",\"name\":\"Test\"}],\"sourceServices\":[],\"destServices\":[{\"type\":\"REFERENCE\",\"name\":\"SSH\"}],\"action\":\"accept\",\"description\":\"FWrule for Test source to Test destination\",\"enabled\":true,\"log\":true}]}"; - String prevJsonBody = "{\"serviceTypeId\":\"/v0/firewall/pan\",\"configName\":\"TestFwPolicy1Config\",\"deploymentOption\":{\"deployNow\":false},\"securityZoneId\":\"cloudsite:dev\",\"vendorServiceId\":\"test\",\"vendorSpecificData\":{\"idMap\":[{\"Id\":\"cloudsite:dev1a\",\"vendorId\":\"deviceGroup:dev\"}]},\"serviceGroups\":[{\"name\":\"SSH\",\"description\":\"Ssh service entry in service list\",\"type\":\"SERVICE\",\"transportProtocol\":\"tcp\",\"appProtocol\":null,\"ports\":\"22\"}],\"addressGroups\":[{\"name\":\"Test\",\"description\":\"Destination Test\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/12\"}]},{\"name\":\"TestServers\",\"description\":\"Source TestServers for first testing\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/23\"}]}],\"firewallRuleList\":[{\"position\":\"1\",\"ruleName\":\"FWRuleTestServerTot\",\"fromZones\":[\"UntrustedZoneTestName\"],\"toZones\":[\"TrustedZoneTName\"],\"negateSource\":false,\"negateDestination\":false,\"sourceList\":[{\"type\":\"REFERENCE\",\"name\":\"TServers\"}],\"destinationList\":[{\"type\":\"REFERENCE\",\"name\":\"Test\"}],\"sourceServices\":[],\"destServices\":[{\"type\":\"REFERENCE\",\"name\":\"SSH\"}],\"action\":\"accept\",\"description\":\"FW rule for HOHO source to CiscoVCE destination\",\"enabled\":true,\"log\":true}]}"; + try { + when(mockFWConfig.savePolicies()).thenReturn(successMap); + successMap = mockFWConfig.savePolicies(); + } catch (Exception e) { + logger.error("Exception Occured"+e); + } + } + + /** + * Test method for {@link org.openecomp.policy.pap.xacml.rest.components.FirewallConfigPolicy#prepareToSave()}. + */ + @Test + public void testPrepareToSave() { + logger.debug("test prepareToSave Policy: enter"); + + boolean response = false; + try { + when(mockFWConfig.prepareToSave()).thenReturn(true); + response = mockFWConfig.prepareToSave(); + } catch (Exception e) { + logger.error("Exception Occured"+e); + } + assertTrue(response); + + } + + @Test + public void testUpdateJson() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{ + FirewallConfigPolicy firewallConfigPolicy = new FirewallConfigPolicy(); + Method method = firewallConfigPolicy.getClass().getDeclaredMethod("updateFirewallDictionaryData", String.class , String.class); + method.setAccessible(true); + String jsonBody= "{\"serviceTypeId\":\"/v0/firewall/pan\",\"configName\":\"TestFwPolicyConfig\",\"deploymentOption\":{\"deployNow\":false},\"securityZoneId\":\"cloudsite:dev1a\",\"serviceGroups\":[{\"name\":\"SSH\",\"description\":\"Sshservice entry in servicelist\",\"type\":\"SERVICE\",\"transportProtocol\":\"tcp\",\"appProtocol\":null,\"ports\":\"22\"}],\"addressGroups\":[{\"name\":\"test\",\"description\":\"Destination\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/12\"}]},{\"name\":\"TestServers\",\"description\":\"SourceTestServers for firsttesting\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/23\"}]}],\"firewallRuleList\":[{\"position\":\"1\",\"ruleName\":\"FWRuleTestServerToTest\",\"fromZones\":[\"UntrustedZoneTestName\"],\"toZones\":[\"TrustedZoneTestName\"],\"negateSource\":false,\"negateDestination\":false,\"sourceList\":[{\"type\":\"REFERENCE\",\"name\":\"TestServers\"}],\"destinationList\":[{\"type\":\"REFERENCE\",\"name\":\"Test\"}],\"sourceServices\":[],\"destServices\":[{\"type\":\"REFERENCE\",\"name\":\"SSH\"}],\"action\":\"accept\",\"description\":\"FWrule for Test source to Test destination\",\"enabled\":true,\"log\":true}]}"; + String prevJsonBody = "{\"serviceTypeId\":\"/v0/firewall/pan\",\"configName\":\"TestFwPolicy1Config\",\"deploymentOption\":{\"deployNow\":false},\"securityZoneId\":\"cloudsite:dev\",\"vendorServiceId\":\"test\",\"vendorSpecificData\":{\"idMap\":[{\"Id\":\"cloudsite:dev1a\",\"vendorId\":\"deviceGroup:dev\"}]},\"serviceGroups\":[{\"name\":\"SSH\",\"description\":\"Ssh service entry in service list\",\"type\":\"SERVICE\",\"transportProtocol\":\"tcp\",\"appProtocol\":null,\"ports\":\"22\"}],\"addressGroups\":[{\"name\":\"Test\",\"description\":\"Destination Test\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/12\"}]},{\"name\":\"TestServers\",\"description\":\"Source TestServers for first testing\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/23\"}]}],\"firewallRuleList\":[{\"position\":\"1\",\"ruleName\":\"FWRuleTestServerTot\",\"fromZones\":[\"UntrustedZoneTestName\"],\"toZones\":[\"TrustedZoneTName\"],\"negateSource\":false,\"negateDestination\":false,\"sourceList\":[{\"type\":\"REFERENCE\",\"name\":\"TServers\"}],\"destinationList\":[{\"type\":\"REFERENCE\",\"name\":\"Test\"}],\"sourceServices\":[],\"destServices\":[{\"type\":\"REFERENCE\",\"name\":\"SSH\"}],\"action\":\"accept\",\"description\":\"FW rule for HOHO source to CiscoVCE destination\",\"enabled\":true,\"log\":true}]}"; assertTrue((Boolean) method.invoke(firewallConfigPolicy, jsonBody, prevJsonBody)); - } - - @Test + } + + @Test public void testInsertJson() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{ FirewallConfigPolicy firewallConfigPolicy = new FirewallConfigPolicy(); Method method = firewallConfigPolicy.getClass().getDeclaredMethod("insertFirewallDicionaryData", String.class); diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/MicroServicePolicyTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/MicroServicePolicyTest.java index a47c2be58..f698bc0c0 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/MicroServicePolicyTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/MicroServicePolicyTest.java @@ -41,71 +41,71 @@ import java.util.Collections; @RunWith(PowerMockRunner.class) public class MicroServicePolicyTest { - @Rule + @Rule public ExpectedException thrown = ExpectedException.none(); - @Test - public void testConstructor1() { - thrown.expect(NullPointerException.class); - MicroServiceConfigPolicy policy = new MicroServiceConfigPolicy(); - policy.getCorrectPolicyDataObject(); - fail("Expected an exception"); - } - - @Test - public void testConstructor2() { - PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); - MicroServiceConfigPolicy policy = new MicroServiceConfigPolicy(policyAdapter); - assertNull(policy.getCorrectPolicyDataObject()); - } - - @PrepareForTest({MicroServiceConfigPolicy.class}) - @Test - public void testPrepareToSave() throws Exception { - // Need to mock internal dictionary retrieval - CommonClassDaoImpl impl = Mockito.mock(CommonClassDaoImpl.class); - PowerMockito.whenNew(CommonClassDaoImpl.class).withNoArguments().thenReturn(impl); - when(impl.getDataById(any(), anyString(), anyString())).thenReturn(null); - - PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); - MicroServiceConfigPolicy policy = new MicroServiceConfigPolicy(policyAdapter); - policyAdapter.setHighestVersion(1); - policyAdapter.setPolicyType("Config"); - policyAdapter.setNewFileName("foo.xml"); - policyAdapter.setJsonBody("{ \"version\": \"1.0\"}"); - policyAdapter.setServiceType("foo"); - policy.prepareToSave(); - assertEquals(policy.isPreparedToSave(), true); - } - - @Test - public void testCreateConstructor1() { - CreateNewMicroServiceModel model = new CreateNewMicroServiceModel(null, null, null, null); - assertNotNull(model); - } - - @PrepareForTest({CreateNewMicroServiceModel.class}) - @Test - public void testCreateModel() throws Exception { - // Mock file retrieval - File testFile = new File("testFile"); - File[] testList = new File[1]; - testList[0] = testFile; - File impl = Mockito.mock(File.class); - PowerMockito.whenNew(File.class).withAnyArguments().thenReturn(impl); - when(impl.listFiles()).thenReturn(testList); - when(impl.isFile()).thenReturn(true); + @Test + public void testConstructor1() { + thrown.expect(NullPointerException.class); + MicroServiceConfigPolicy policy = new MicroServiceConfigPolicy(); + policy.getCorrectPolicyDataObject(); + fail("Expected an exception"); + } - // Mock internal dictionary retrieval - CommonClassDaoImpl daoImpl = Mockito.mock(CommonClassDaoImpl.class); - PowerMockito.whenNew(CommonClassDaoImpl.class).withNoArguments().thenReturn(daoImpl); - when(daoImpl.getDataById(any(), anyString(), anyString())).thenReturn(Collections.emptyList()); + @Test + public void testConstructor2() { + PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); + MicroServiceConfigPolicy policy = new MicroServiceConfigPolicy(policyAdapter); + assertNull(policy.getCorrectPolicyDataObject()); + } - // Test create methods - String testFileName = "testFile.zip"; - String testVal = "testVal"; - CreateNewMicroServiceModel model = new CreateNewMicroServiceModel(testFileName, testVal, testVal, testVal, testVal); - model.addValuesToNewModel(".xmi"); - model.saveImportService(); - } + @PrepareForTest({MicroServiceConfigPolicy.class}) + @Test + public void testPrepareToSave() throws Exception { + // Need to mock internal dictionary retrieval + CommonClassDaoImpl impl = Mockito.mock(CommonClassDaoImpl.class); + PowerMockito.whenNew(CommonClassDaoImpl.class).withNoArguments().thenReturn(impl); + when(impl.getDataById(any(), anyString(), anyString())).thenReturn(null); + + PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); + MicroServiceConfigPolicy policy = new MicroServiceConfigPolicy(policyAdapter); + policyAdapter.setHighestVersion(1); + policyAdapter.setPolicyType("Config"); + policyAdapter.setNewFileName("foo.xml"); + policyAdapter.setJsonBody("{ \"version\": \"1.0\"}"); + policyAdapter.setServiceType("foo"); + policy.prepareToSave(); + assertEquals(policy.isPreparedToSave(), true); + } + + @Test + public void testCreateConstructor1() { + CreateNewMicroServiceModel model = new CreateNewMicroServiceModel(null, null, null, null); + assertNotNull(model); + } + + @PrepareForTest({CreateNewMicroServiceModel.class}) + @Test + public void testCreateModel() throws Exception { + // Mock file retrieval + File testFile = new File("testFile"); + File[] testList = new File[1]; + testList[0] = testFile; + File impl = Mockito.mock(File.class); + PowerMockito.whenNew(File.class).withAnyArguments().thenReturn(impl); + when(impl.listFiles()).thenReturn(testList); + when(impl.isFile()).thenReturn(true); + + // Mock internal dictionary retrieval + CommonClassDaoImpl daoImpl = Mockito.mock(CommonClassDaoImpl.class); + PowerMockito.whenNew(CommonClassDaoImpl.class).withNoArguments().thenReturn(daoImpl); + when(daoImpl.getDataById(any(), anyString(), anyString())).thenReturn(Collections.emptyList()); + + // Test create methods + String testFileName = "testFile.zip"; + String testVal = "testVal"; + CreateNewMicroServiceModel model = new CreateNewMicroServiceModel(testFileName, testVal, testVal, testVal, testVal); + model.addValuesToNewModel(".xmi"); + model.saveImportService(); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/OptimizationConfigPolicyTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/OptimizationConfigPolicyTest.java index 7b9be6891..25e94c1a2 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/OptimizationConfigPolicyTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/OptimizationConfigPolicyTest.java @@ -41,65 +41,65 @@ import java.util.Collections; @RunWith(PowerMockRunner.class) public class OptimizationConfigPolicyTest { - @Rule + @Rule public ExpectedException thrown = ExpectedException.none(); - @Test - public void testConstructor1() { - thrown.expect(NullPointerException.class); - OptimizationConfigPolicy policy = new OptimizationConfigPolicy(); - policy.getCorrectPolicyDataObject(); - fail("Expected an exception"); - } - - @Test - public void testConstructor2() { - PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); - OptimizationConfigPolicy policy = new OptimizationConfigPolicy(policyAdapter); - assertNull(policy.getCorrectPolicyDataObject()); - } - - @PrepareForTest({OptimizationConfigPolicy.class}) - @Test - public void testPrepareToSave() throws Exception { - // Need to mock internal dictionary retrieval - CommonClassDaoImpl impl = Mockito.mock(CommonClassDaoImpl.class); - PowerMockito.whenNew(CommonClassDaoImpl.class).withNoArguments().thenReturn(impl); - when(impl.getDataById(any(), anyString(), anyString())).thenReturn(null); - - PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); - OptimizationConfigPolicy policy = new OptimizationConfigPolicy(policyAdapter); - policyAdapter.setHighestVersion(1); - policyAdapter.setPolicyType("Config"); - policyAdapter.setNewFileName("foo.xml"); - policyAdapter.setJsonBody("{ \"version\": \"1.0\"}"); - policyAdapter.setServiceType("foo"); - policy.prepareToSave(); - assertEquals(true, policy.isPreparedToSave()); - } - - @PrepareForTest({CreateNewOptimizationModel.class}) - @Test - public void testCreateModel() throws Exception { - // Mock file retrieval - File testFile = new File("testFile"); - File[] testList = new File[1]; - testList[0] = testFile; - File impl = Mockito.mock(File.class); - PowerMockito.whenNew(File.class).withAnyArguments().thenReturn(impl); - when(impl.listFiles()).thenReturn(testList); - when(impl.isFile()).thenReturn(true); + @Test + public void testConstructor1() { + thrown.expect(NullPointerException.class); + OptimizationConfigPolicy policy = new OptimizationConfigPolicy(); + policy.getCorrectPolicyDataObject(); + fail("Expected an exception"); + } - // Mock internal dictionary retrieval - CommonClassDaoImpl daoImpl = Mockito.mock(CommonClassDaoImpl.class); - PowerMockito.whenNew(CommonClassDaoImpl.class).withNoArguments().thenReturn(daoImpl); - when(daoImpl.getDataById(any(), anyString(), anyString())).thenReturn(Collections.emptyList()); + @Test + public void testConstructor2() { + PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); + OptimizationConfigPolicy policy = new OptimizationConfigPolicy(policyAdapter); + assertNull(policy.getCorrectPolicyDataObject()); + } - // Test create methods - String testFileName = "testFile.zip"; - String testVal = "testVal"; - CreateNewOptimizationModel model = new CreateNewOptimizationModel(testFileName, testVal, testVal, testVal, testVal); - model.addValuesToNewModel(); - model.saveImportService(); - } + @PrepareForTest({OptimizationConfigPolicy.class}) + @Test + public void testPrepareToSave() throws Exception { + // Need to mock internal dictionary retrieval + CommonClassDaoImpl impl = Mockito.mock(CommonClassDaoImpl.class); + PowerMockito.whenNew(CommonClassDaoImpl.class).withNoArguments().thenReturn(impl); + when(impl.getDataById(any(), anyString(), anyString())).thenReturn(null); + + PolicyRestAdapter policyAdapter = new PolicyRestAdapter(); + OptimizationConfigPolicy policy = new OptimizationConfigPolicy(policyAdapter); + policyAdapter.setHighestVersion(1); + policyAdapter.setPolicyType("Config"); + policyAdapter.setNewFileName("foo.xml"); + policyAdapter.setJsonBody("{ \"version\": \"1.0\"}"); + policyAdapter.setServiceType("foo"); + policy.prepareToSave(); + assertEquals(true, policy.isPreparedToSave()); + } + + @PrepareForTest({CreateNewOptimizationModel.class}) + @Test + public void testCreateModel() throws Exception { + // Mock file retrieval + File testFile = new File("testFile"); + File[] testList = new File[1]; + testList[0] = testFile; + File impl = Mockito.mock(File.class); + PowerMockito.whenNew(File.class).withAnyArguments().thenReturn(impl); + when(impl.listFiles()).thenReturn(testList); + when(impl.isFile()).thenReturn(true); + + // Mock internal dictionary retrieval + CommonClassDaoImpl daoImpl = Mockito.mock(CommonClassDaoImpl.class); + PowerMockito.whenNew(CommonClassDaoImpl.class).withNoArguments().thenReturn(daoImpl); + when(daoImpl.getDataById(any(), anyString(), anyString())).thenReturn(Collections.emptyList()); + + // Test create methods + String testFileName = "testFile.zip"; + String testVal = "testVal"; + CreateNewOptimizationModel model = new CreateNewOptimizationModel(testFileName, testVal, testVal, testVal, testVal); + model.addValuesToNewModel(); + model.saveImportService(); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/PolicyDBDaoTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/PolicyDBDaoTest.java index c098bf4fa..bdfd8db33 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/PolicyDBDaoTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/PolicyDBDaoTest.java @@ -65,538 +65,538 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; public class PolicyDBDaoTest extends Mockito{ - private static Logger logger = FlexLogger.getLogger(PolicyDBDaoTest.class); - - PolicyDBDaoTestClass d; - PolicyDBDao dbd; - PolicyDBDao dbd2; - EntityManagerFactory emf; - private Path repository; - StdEngine stdEngine = null; - - @Before - public void init() throws PAPException, IOException{ - System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME,"src/test/resources/xacml.pap.properties"); - emf = Persistence.createEntityManagerFactory("testPapPU"); - EntityManager em = emf.createEntityManager(); - em.getTransaction().begin(); - try{ - em.createQuery("DELETE FROM PolicyDBDaoEntity").executeUpdate(); - em.createQuery("DELETE FROM PolicyEntity").executeUpdate(); - em.createQuery("DELETE FROM ConfigurationDataEntity").executeUpdate(); - em.createQuery("DELETE FROM ActionBodyEntity").executeUpdate(); - em.createQuery("DELETE FROM PdpEntity").executeUpdate(); - em.createQuery("DELETE FROM GroupEntity").executeUpdate(); - - em.getTransaction().commit(); - } catch(Exception e){ - logger.error("Exception Occured"+e); - em.getTransaction().rollback(); - } - em.close(); - try { - dbd = PolicyDBDao.getPolicyDBDaoInstance(emf); - dbd2 = PolicyDBDao.getPolicyDBDaoInstance(emf); - } catch (Exception e) { - Assert.fail(); - } - - d = PolicyDBDao.getPolicyDBDaoTestClass(); - PolicyDBDao.setJunit(true); - repository = Paths.get("src/test/resources/pdps"); + private static Logger logger = FlexLogger.getLogger(PolicyDBDaoTest.class); + + PolicyDBDaoTestClass d; + PolicyDBDao dbd; + PolicyDBDao dbd2; + EntityManagerFactory emf; + private Path repository; + StdEngine stdEngine = null; + + @Before + public void init() throws PAPException, IOException{ + System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME,"src/test/resources/xacml.pap.properties"); + emf = Persistence.createEntityManagerFactory("testPapPU"); + EntityManager em = emf.createEntityManager(); + em.getTransaction().begin(); + try{ + em.createQuery("DELETE FROM PolicyDBDaoEntity").executeUpdate(); + em.createQuery("DELETE FROM PolicyEntity").executeUpdate(); + em.createQuery("DELETE FROM ConfigurationDataEntity").executeUpdate(); + em.createQuery("DELETE FROM ActionBodyEntity").executeUpdate(); + em.createQuery("DELETE FROM PdpEntity").executeUpdate(); + em.createQuery("DELETE FROM GroupEntity").executeUpdate(); + + em.getTransaction().commit(); + } catch(Exception e){ + logger.error("Exception Occured"+e); + em.getTransaction().rollback(); + } + em.close(); + try { + dbd = PolicyDBDao.getPolicyDBDaoInstance(emf); + dbd2 = PolicyDBDao.getPolicyDBDaoInstance(emf); + } catch (Exception e) { + Assert.fail(); + } + + d = PolicyDBDao.getPolicyDBDaoTestClass(); + PolicyDBDao.setJunit(true); + repository = Paths.get("src/test/resources/pdps"); stdEngine = new StdEngine(repository); dbd.setPapEngine(stdEngine); - } - - @After - public void cleanUp(){ - PolicyDBDao.setJunit(false); - EntityManager em = emf.createEntityManager(); - em.getTransaction().begin(); - try{ - em.createQuery("DELETE FROM PolicyDBDaoEntity").executeUpdate(); - em.createQuery("DELETE FROM PolicyEntity").executeUpdate(); - em.createQuery("DELETE FROM ConfigurationDataEntity").executeUpdate(); - em.createQuery("DELETE FROM ActionBodyEntity").executeUpdate(); - em.createQuery("DELETE FROM PdpEntity").executeUpdate(); - em.createQuery("DELETE FROM GroupEntity").executeUpdate(); - - em.getTransaction().commit(); - } catch(Exception e){ - em.getTransaction().rollback(); - } - em.close(); - try { - FileUtils.forceDelete(new File("src/test/resources/junitTestCreatedDirectory")); - } catch (IOException e) { - //could not delete - } - } - - @Test - public void getConfigFileTest(){ - PolicyRestAdapter pra = new PolicyRestAdapter(); - pra.setConfigType(ConfigPolicy.JSON_CONFIG); - String configFile = d.getConfigFile("Config_mypolicy.xml", "org.onap", pra); - Assert.assertEquals("org.onap.Config_mypolicy.json", configFile); - //yes, we can do action files too even though they don't have configs - configFile = d.getConfigFile("Action_mypolicy.xml", "org.onap", pra); - Assert.assertEquals("org.onap.Action_mypolicy.json", configFile); - } - - @Test - public void createFromPolicyObject(){ - Policy policyObject = new ConfigPolicy(); - policyObject.policyAdapter = new PolicyRestAdapter(); - policyObject.policyAdapter.setConfigName("testpolicy1"); - policyObject.policyAdapter.setPolicyDescription("my description"); - policyObject.policyAdapter.setConfigBodyData("this is my test config file"); - policyObject.policyAdapter.setPolicyName("SampleTest1206"); - policyObject.policyAdapter.setConfigType(ConfigPolicy.OTHER_CONFIG); - policyObject.policyAdapter.setPolicyType("Config"); - policyObject.policyAdapter.setDomainDir("com"); - policyObject.policyAdapter.setVersion("1"); - PolicyType policyTypeObject = new PolicyType(); - policyObject.policyAdapter.setPolicyData(policyTypeObject); - ClassLoader classLoader = getClass().getClassLoader(); - PolicyType policyConfig = new PolicyType(); + } + + @After + public void cleanUp(){ + PolicyDBDao.setJunit(false); + EntityManager em = emf.createEntityManager(); + em.getTransaction().begin(); + try{ + em.createQuery("DELETE FROM PolicyDBDaoEntity").executeUpdate(); + em.createQuery("DELETE FROM PolicyEntity").executeUpdate(); + em.createQuery("DELETE FROM ConfigurationDataEntity").executeUpdate(); + em.createQuery("DELETE FROM ActionBodyEntity").executeUpdate(); + em.createQuery("DELETE FROM PdpEntity").executeUpdate(); + em.createQuery("DELETE FROM GroupEntity").executeUpdate(); + + em.getTransaction().commit(); + } catch(Exception e){ + em.getTransaction().rollback(); + } + em.close(); + try { + FileUtils.forceDelete(new File("src/test/resources/junitTestCreatedDirectory")); + } catch (IOException e) { + //could not delete + } + } + + @Test + public void getConfigFileTest(){ + PolicyRestAdapter pra = new PolicyRestAdapter(); + pra.setConfigType(ConfigPolicy.JSON_CONFIG); + String configFile = d.getConfigFile("Config_mypolicy.xml", "org.onap", pra); + Assert.assertEquals("org.onap.Config_mypolicy.json", configFile); + //yes, we can do action files too even though they don't have configs + configFile = d.getConfigFile("Action_mypolicy.xml", "org.onap", pra); + Assert.assertEquals("org.onap.Action_mypolicy.json", configFile); + } + + @Test + public void createFromPolicyObject(){ + Policy policyObject = new ConfigPolicy(); + policyObject.policyAdapter = new PolicyRestAdapter(); + policyObject.policyAdapter.setConfigName("testpolicy1"); + policyObject.policyAdapter.setPolicyDescription("my description"); + policyObject.policyAdapter.setConfigBodyData("this is my test config file"); + policyObject.policyAdapter.setPolicyName("SampleTest1206"); + policyObject.policyAdapter.setConfigType(ConfigPolicy.OTHER_CONFIG); + policyObject.policyAdapter.setPolicyType("Config"); + policyObject.policyAdapter.setDomainDir("com"); + policyObject.policyAdapter.setVersion("1"); + PolicyType policyTypeObject = new PolicyType(); + policyObject.policyAdapter.setPolicyData(policyTypeObject); + ClassLoader classLoader = getClass().getClassLoader(); + PolicyType policyConfig = new PolicyType(); policyConfig.setVersion(Integer.toString(1)); policyConfig.setPolicyId(""); policyConfig.setTarget(new TargetType()); policyObject.policyAdapter.setData(policyConfig); - mock(XACMLPolicyWriter.class); - try { - policyObject.policyAdapter.setParentPath(IOUtils.toString(classLoader.getResourceAsStream("Config_SampleTest1206.1.xml"))); - } catch (Exception e2) { - fail(); - } - - PolicyDBDaoTransaction transaction = dbd.getNewTransaction(); - try{ - transaction.createPolicy(policyObject, "testuser1"); - transaction.commitTransaction(); - } catch(Exception e){ - transaction.rollbackTransaction(); - Assert.fail(); - } - - EntityManager getData = emf.createEntityManager(); - Query getDataQuery = getData.createQuery("SELECT p FROM PolicyEntity p WHERE p.scope=:scope AND p.policyName=:name"); - getDataQuery.setParameter("scope", "com"); - getDataQuery.setParameter("name","Config_SampleTest1206.1.xml"); - PolicyEntity result = null; - try{ - result = (PolicyEntity)getDataQuery.getSingleResult(); - } catch(Exception e){ - logger.error("Exception Occured"+e); - Assert.fail(); - } - String expectedData; - try { - expectedData = IOUtils.toString(classLoader.getResourceAsStream("Config_SampleTest1206.1.xml")); - } catch (IOException e1) { - expectedData = ""; - } - Assert.assertEquals(expectedData, result.getPolicyData()); - getData.close(); - result = null; - - transaction.commitTransaction(); - Assert.assertFalse(transaction.isTransactionOpen()); - } - - @Test - public void groupTransactions(){ - PolicyDBDaoTransaction group = dbd.getNewTransaction(); - String groupName = "test group 1"; - try{ - group.createGroup(PolicyDBDao.createNewPDPGroupId(groupName), groupName, "this is a test group","testuser"); - group.commitTransaction(); - } catch(Exception e){ - group.rollbackTransaction(); - logger.error("Exception Occured"+e); - Assert.fail(); - } - EntityManager em = emf.createEntityManager(); - Query getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted"); - getGroup.setParameter("groupId", PolicyDBDao.createNewPDPGroupId(groupName)); - getGroup.setParameter("deleted", false); - List<?> groups = getGroup.getResultList(); - if(groups.size() != 1){ - Assert.fail(); - } - GroupEntity groupEntity = (GroupEntity)groups.get(0); - em.close(); - Assert.assertEquals(groupName, groupEntity.getgroupName()); - Assert.assertEquals("this is a test group", groupEntity.getDescription()); - group = dbd.getNewTransaction(); - try{ - OnapPDPGroup groupToDelete = new StdPDPGroup(PolicyDBDao.createNewPDPGroupId(groupName),Paths.get("/")); - group.deleteGroup(groupToDelete, null,"testuser"); - group.commitTransaction(); - } catch(Exception e){ - group.rollbackTransaction(); - logger.error("Exception Occured"+e); - Assert.fail(); - } - em = emf.createEntityManager(); - getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted"); - getGroup.setParameter("groupId", PolicyDBDao.createNewPDPGroupId(groupName)); - getGroup.setParameter("deleted", false); - groups = getGroup.getResultList(); - if(groups.size() != 0){ - System.out.println("Group size: "+groups.size()); - Assert.fail(); - } - em.close(); - //add a pdp to a group - group = dbd.getNewTransaction(); - try{ - group.createGroup(PolicyDBDao.createNewPDPGroupId(groupName), groupName, "test group", "testuser"); - group.commitTransaction(); - } catch(Exception e){ - group.rollbackTransaction(); - logger.error("Exception Occured"+e); - Assert.fail(); - } - group = dbd.getNewTransaction(); - try{ - group.addPdpToGroup("http://localhost:4344/pdp/", PolicyDBDao.createNewPDPGroupId(groupName), "primary", "the main pdp", 3232, "testuser"); - group.commitTransaction(); - } catch(Exception e){ - group.rollbackTransaction(); - logger.error("Exception Occured"+e); - Assert.fail(); - } - em = emf.createEntityManager(); - Query getPdp = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted"); - getPdp.setParameter("pdpId", "http://localhost:4344/pdp/"); - getPdp.setParameter("deleted", false); - List<?> pdps = getPdp.getResultList(); - if(pdps.size() != 1){ - System.out.println("Group size: "+pdps.size()); - Assert.fail(); - } - PdpEntity pdp = (PdpEntity)pdps.get(0); - Assert.assertEquals(groupName, pdp.getGroup().getgroupName()); - Assert.assertEquals(pdp.getPdpName(), "primary"); - em.close(); - group = dbd.getNewTransaction(); - try{ - group.removePdpFromGroup("http://localhost:4344/pdp/","testuser"); - group.commitTransaction(); - } catch(Exception e){ - group.rollbackTransaction(); - logger.error("Exception Occured"+e); - Assert.fail(); - } - em = emf.createEntityManager(); - getPdp = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted"); - getPdp.setParameter("pdpId", "http://localhost:4344/pdp/"); - getPdp.setParameter("deleted", false); - pdps = getPdp.getResultList(); - if(pdps.size() != 0){ - System.out.println("Group size: "+pdps.size()); - Assert.fail(); - } - em.close(); - - //add some pdps to groups - group = dbd.getNewTransaction(); - try{ - group.createGroup(PolicyDBDao.createNewPDPGroupId("testgroup1"), "testgroup1", "test group", "testuser"); - group.commitTransaction(); - } catch(Exception e){ - group.rollbackTransaction(); - logger.error("Exception Occured"+e); - Assert.fail(); - } - group = dbd.getNewTransaction(); - try{ - group.createGroup(PolicyDBDao.createNewPDPGroupId("testgroup2"), "testgroup2", "test group", "testuser"); - group.commitTransaction(); - } catch(Exception e){ - group.rollbackTransaction(); - logger.error("Exception Occured"+e); - Assert.fail(); - } - - group = dbd.getNewTransaction(); - try{ - group.addPdpToGroup("http://localhost:4344/pdp/", PolicyDBDao.createNewPDPGroupId("testgroup1"), "primary", "the main pdp", 3232, "testuser"); - group.commitTransaction(); - } catch(Exception e){ - group.rollbackTransaction(); - logger.error("Exception Occured"+e); - Assert.fail(); - } - group = dbd.getNewTransaction(); - try{ - group.addPdpToGroup("http://localhost:4345/pdp/", PolicyDBDao.createNewPDPGroupId("testgroup1"), "secondary", "the second pdp", 3233, "testuser"); - group.commitTransaction(); - } catch(Exception e){ - group.rollbackTransaction(); - logger.error("Exception Occured"+e); - Assert.fail(); - } - em = emf.createEntityManager(); - getPdp = em.createQuery("SELECT p FROM PdpEntity p WHERE p.deleted=:deleted"); - getPdp.setParameter("deleted", false); - pdps = getPdp.getResultList(); - for(Object o : pdps){ - Assert.assertEquals("testgroup1",((PdpEntity)o).getGroup().getgroupName()); - } - em.close(); - - group = dbd.getNewTransaction(); - try{ - OnapPDPGroup groupToDelete = new StdPDPGroup(PolicyDBDao.createNewPDPGroupId("testgroup1"),Paths.get("/")); - OnapPDPGroup groupToMoveTo = new StdPDPGroup(PolicyDBDao.createNewPDPGroupId("testgroup2"),Paths.get("/")); - group.deleteGroup(groupToDelete, groupToMoveTo,"testuser"); - group.commitTransaction(); - } catch(Exception e){ - group.rollbackTransaction(); - logger.error("Exception Occured"+e); - Assert.fail(); - } - em = emf.createEntityManager(); - getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted"); - getGroup.setParameter("groupId", "testgroup1"); - getGroup.setParameter("deleted", false); - groups = getGroup.getResultList(); - if(groups.size() != 0){ - System.out.println("Group size: "+groups.size()); - Assert.fail(); - } - em.close(); - - em = emf.createEntityManager(); - getPdp = em.createQuery("SELECT p FROM PdpEntity p WHERE p.deleted=:deleted"); - getPdp.setParameter("deleted", false); - pdps = getPdp.getResultList(); - for(Object o : pdps){ - Assert.assertEquals("testgroup2",((PdpEntity)o).getGroup().getgroupName()); - } - em.close(); - - group = dbd.getNewTransaction(); - try{ - OnapPDPGroup groupToDelete = new StdPDPGroup(PolicyDBDao.createNewPDPGroupId("testgroup2"),Paths.get("/")); - OnapPDPGroup groupToMoveTo = null; - group.deleteGroup(groupToDelete, groupToMoveTo,"testuser"); - group.commitTransaction(); - Assert.fail(); - } catch(PolicyDBException pe){ - //good, can't delete group with pdps - group.rollbackTransaction(); - } catch(Exception e){ - group.rollbackTransaction(); - logger.error("Exception Occured"+e); - Assert.fail(); - } - - //update group - OnapPDPGroup pdpGroup = new StdPDPGroup("testgroup2", false, "newtestgroup2", "this is my new description", Paths.get("/")); - group = dbd.getNewTransaction(); - try{ - group.updateGroup(pdpGroup, "testuser"); - group.commitTransaction(); - }catch (Exception e){ - logger.error("Exception Occured"+e); - group.rollbackTransaction(); - Assert.fail(); - } - em = emf.createEntityManager(); - getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted"); - getGroup.setParameter("groupId", "newtestgroup2"); - getGroup.setParameter("deleted", false); - groups = getGroup.getResultList(); - if(groups.size() != 1){ - System.out.println("Group size: "+groups.size()); - Assert.fail(); - } - em.close(); - em = emf.createEntityManager(); - getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted"); - getGroup.setParameter("groupId", "testgroup2"); - getGroup.setParameter("deleted", false); - groups = getGroup.getResultList(); - if(groups.size() != 0){ - System.out.println("Group size: "+groups.size()); - Assert.fail(); - } - em.close(); - } - - @Ignore - @Test - public void threadingStabilityTest(){ - if(logger.isDebugEnabled()){ - logger.debug("\n\n****************************" - + "threadingStabilityTest() entry" - + "******************************\n\n"); - } - - PolicyDBDaoTransaction t = dbd.getNewTransaction(); - Assert.assertTrue(t.isTransactionOpen()); - try { - //Add 1000 ms to the timeout just to be sure it actually times out - int sleepTime = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_TRANS_TIMEOUT)) + 1000; - if(logger.isDebugEnabled()){ - Date date= new java.util.Date(); - logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " - + "\n sleepTime = " + sleepTime - + "\n TimeStamp = " + date.getTime() - + "\n\n"); - } - Thread.sleep(sleepTime); - } catch (InterruptedException e) { - logger.error("Exception Occured"+e); - } - if(logger.isDebugEnabled()){ - Date date= new java.util.Date(); - logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " - + "\n Assert.assertFalse(t.isTransactionOpen() = " + t.isTransactionOpen() + ")" - + "\n TimeStamp = " + date.getTime() - + "\n\n"); - } - Assert.assertFalse(t.isTransactionOpen()); - - - if(logger.isDebugEnabled()){ - Date date= new java.util.Date(); - logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " - + "\n a = dbd.getNewTransaction() " - + "\n TimeStamp = " + date.getTime() - + "\n\n"); - } - PolicyDBDaoTransaction a = dbd.getNewTransaction(); - if(logger.isDebugEnabled()){ - Date date= new java.util.Date(); - logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " - + "\n Assert.assertTrue(a.isTransactionOpen() = " + a.isTransactionOpen() + ")" - + "\n TimeStamp = " + date.getTime() - + "\n\n"); - } - Assert.assertTrue(a.isTransactionOpen()); - - try { - //Add 1000 ms to the timeout just to be sure it actually times out - int sleepTime = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_TRANS_TIMEOUT)) + 1000; - if(logger.isDebugEnabled()){ - Date date= new java.util.Date(); - logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " - + "\n sleepTime = " + sleepTime - + "\n TimeStamp = " + date.getTime() - + "\n\n"); - } - Thread.sleep(sleepTime); - } catch (InterruptedException e) { - logger.error("Exception Occured"+e); - } - if(logger.isDebugEnabled()){ - Date date= new java.util.Date(); - logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " - + "\n b = dbd.getNewTransaction() " - + "\n TimeStamp = " + date.getTime() - + "\n\n"); - } - PolicyDBDaoTransaction b = dbd.getNewTransaction(); - if(logger.isDebugEnabled()){ - Date date= new java.util.Date(); - logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " - + "\n Assert.assertFalse(a.isTransactionOpen() = " + a.isTransactionOpen() + ")" - + "\n TimeStamp = " + date.getTime() - + "\n\n"); - } - Assert.assertFalse(a.isTransactionOpen()); - if(logger.isDebugEnabled()){ - Date date= new java.util.Date(); - logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " - + "\n Assert.assertTrue(b.isTransactionOpen() = " + b.isTransactionOpen() + ")" - + "\n TimeStamp = " + date.getTime() - + "\n\n"); - } - Assert.assertTrue(b.isTransactionOpen()); - b.close(); - - - - //Now let's test the transaction wait time timeout. Shorten the wait time to 1000 ms - System.setProperty(XACMLRestProperties.PROP_PAP_TRANS_WAIT,"1000"); - //And let's lengthen the transaction timeout to 5000 ms - System.setProperty(XACMLRestProperties.PROP_PAP_TRANS_TIMEOUT,"5000"); - //get a transacton - PolicyDBDaoTransaction t1 = dbd.getNewTransaction(); - if(logger.isDebugEnabled()){ - Date date= new java.util.Date(); - logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " - + "\n Assert.assertTrue(t1.isTransactionOpen() = " + t1.isTransactionOpen() + ")" - + "\n TimeStamp = " + date.getTime() - + "\n\n"); - } - Assert.assertTrue(t1.isTransactionOpen()); - //while it is open, get another from a different DB Dao so it will not collide on the synchronized code segment - //but will collide at the DB. Remember that the wait time is only 1000 ms - try { - //Now the 2nd transaction has a wait timeout in 1000 ms - PolicyDBDaoTransaction t2 = dbd2.getNewTransaction(); - /* - * Give it plenty of time to time out the second transaction - * It will actually hang right here until it either gets the lock from the DB or the - * request for the DB lock times out. The timers are very sloppy so, I have given - * this plenty of leeway. - */ - - if(logger.isDebugEnabled()){ - Date date= new java.util.Date(); - logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " - + "\n Thread.sleep(3000)" - + "\n TimeStamp = " + date.getTime() - + "\n\n"); - } - Thread.sleep(3000); - if(logger.isDebugEnabled()){ - Date date= new java.util.Date(); - logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " - + "\n Assert.assertTrue(t1.isTransactionOpen() = " + t1.isTransactionOpen() + ")" - + "\n Assert.assertFalse(t2.isTransactionOpen() = " + t2.isTransactionOpen() + ")" - + "\n TimeStamp = " + date.getTime() - + "\n\n"); - } - //Assert.assertTrue(t1.isTransactionOpen()); - //Assert.assertFalse(t2.isTransactionOpen()); - - Assert.fail("\n\nTransaction timeout of 1000 ms exceeded without a PersistenceException\n\n"); - } catch (PersistenceException e) { - //success - if(logger.isDebugEnabled()){ - Date date= new java.util.Date(); - logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " - + "\n SUCCESS! Transaction Wait Timeout worked!" - + "\n Caught PersistenceException = " + e - + "\n TimeStamp = " + date.getTime() - + "\n\n"); - } - } catch (Exception e) { - // failure due to some other reason - if(logger.isDebugEnabled()){ - Date date= new java.util.Date(); - logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() FAILURE" - + "\n Caught Exception = " + e - + "\n TimeStamp = " + date.getTime() - + "\n\n"); - } - logger.error("Exception Occured"+e); - Assert.fail(); - } - - if(logger.isDebugEnabled()){ - Date date= new java.util.Date(); - logger.debug("\n\nthreadingStabilityTest() exit" - + "\n TimeStamp = " + date.getTime() - + "\n\n"); - } - } + mock(XACMLPolicyWriter.class); + try { + policyObject.policyAdapter.setParentPath(IOUtils.toString(classLoader.getResourceAsStream("Config_SampleTest1206.1.xml"))); + } catch (Exception e2) { + fail(); + } + + PolicyDBDaoTransaction transaction = dbd.getNewTransaction(); + try{ + transaction.createPolicy(policyObject, "testuser1"); + transaction.commitTransaction(); + } catch(Exception e){ + transaction.rollbackTransaction(); + Assert.fail(); + } + + EntityManager getData = emf.createEntityManager(); + Query getDataQuery = getData.createQuery("SELECT p FROM PolicyEntity p WHERE p.scope=:scope AND p.policyName=:name"); + getDataQuery.setParameter("scope", "com"); + getDataQuery.setParameter("name","Config_SampleTest1206.1.xml"); + PolicyEntity result = null; + try{ + result = (PolicyEntity)getDataQuery.getSingleResult(); + } catch(Exception e){ + logger.error("Exception Occured"+e); + Assert.fail(); + } + String expectedData; + try { + expectedData = IOUtils.toString(classLoader.getResourceAsStream("Config_SampleTest1206.1.xml")); + } catch (IOException e1) { + expectedData = ""; + } + Assert.assertEquals(expectedData, result.getPolicyData()); + getData.close(); + result = null; + + transaction.commitTransaction(); + Assert.assertFalse(transaction.isTransactionOpen()); + } + + @Test + public void groupTransactions(){ + PolicyDBDaoTransaction group = dbd.getNewTransaction(); + String groupName = "test group 1"; + try{ + group.createGroup(PolicyDBDao.createNewPDPGroupId(groupName), groupName, "this is a test group","testuser"); + group.commitTransaction(); + } catch(Exception e){ + group.rollbackTransaction(); + logger.error("Exception Occured"+e); + Assert.fail(); + } + EntityManager em = emf.createEntityManager(); + Query getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted"); + getGroup.setParameter("groupId", PolicyDBDao.createNewPDPGroupId(groupName)); + getGroup.setParameter("deleted", false); + List<?> groups = getGroup.getResultList(); + if(groups.size() != 1){ + Assert.fail(); + } + GroupEntity groupEntity = (GroupEntity)groups.get(0); + em.close(); + Assert.assertEquals(groupName, groupEntity.getgroupName()); + Assert.assertEquals("this is a test group", groupEntity.getDescription()); + group = dbd.getNewTransaction(); + try{ + OnapPDPGroup groupToDelete = new StdPDPGroup(PolicyDBDao.createNewPDPGroupId(groupName),Paths.get("/")); + group.deleteGroup(groupToDelete, null,"testuser"); + group.commitTransaction(); + } catch(Exception e){ + group.rollbackTransaction(); + logger.error("Exception Occured"+e); + Assert.fail(); + } + em = emf.createEntityManager(); + getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted"); + getGroup.setParameter("groupId", PolicyDBDao.createNewPDPGroupId(groupName)); + getGroup.setParameter("deleted", false); + groups = getGroup.getResultList(); + if(groups.size() != 0){ + System.out.println("Group size: "+groups.size()); + Assert.fail(); + } + em.close(); + //add a pdp to a group + group = dbd.getNewTransaction(); + try{ + group.createGroup(PolicyDBDao.createNewPDPGroupId(groupName), groupName, "test group", "testuser"); + group.commitTransaction(); + } catch(Exception e){ + group.rollbackTransaction(); + logger.error("Exception Occured"+e); + Assert.fail(); + } + group = dbd.getNewTransaction(); + try{ + group.addPdpToGroup("http://localhost:4344/pdp/", PolicyDBDao.createNewPDPGroupId(groupName), "primary", "the main pdp", 3232, "testuser"); + group.commitTransaction(); + } catch(Exception e){ + group.rollbackTransaction(); + logger.error("Exception Occured"+e); + Assert.fail(); + } + em = emf.createEntityManager(); + Query getPdp = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted"); + getPdp.setParameter("pdpId", "http://localhost:4344/pdp/"); + getPdp.setParameter("deleted", false); + List<?> pdps = getPdp.getResultList(); + if(pdps.size() != 1){ + System.out.println("Group size: "+pdps.size()); + Assert.fail(); + } + PdpEntity pdp = (PdpEntity)pdps.get(0); + Assert.assertEquals(groupName, pdp.getGroup().getgroupName()); + Assert.assertEquals(pdp.getPdpName(), "primary"); + em.close(); + group = dbd.getNewTransaction(); + try{ + group.removePdpFromGroup("http://localhost:4344/pdp/","testuser"); + group.commitTransaction(); + } catch(Exception e){ + group.rollbackTransaction(); + logger.error("Exception Occured"+e); + Assert.fail(); + } + em = emf.createEntityManager(); + getPdp = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted"); + getPdp.setParameter("pdpId", "http://localhost:4344/pdp/"); + getPdp.setParameter("deleted", false); + pdps = getPdp.getResultList(); + if(pdps.size() != 0){ + System.out.println("Group size: "+pdps.size()); + Assert.fail(); + } + em.close(); + + //add some pdps to groups + group = dbd.getNewTransaction(); + try{ + group.createGroup(PolicyDBDao.createNewPDPGroupId("testgroup1"), "testgroup1", "test group", "testuser"); + group.commitTransaction(); + } catch(Exception e){ + group.rollbackTransaction(); + logger.error("Exception Occured"+e); + Assert.fail(); + } + group = dbd.getNewTransaction(); + try{ + group.createGroup(PolicyDBDao.createNewPDPGroupId("testgroup2"), "testgroup2", "test group", "testuser"); + group.commitTransaction(); + } catch(Exception e){ + group.rollbackTransaction(); + logger.error("Exception Occured"+e); + Assert.fail(); + } + + group = dbd.getNewTransaction(); + try{ + group.addPdpToGroup("http://localhost:4344/pdp/", PolicyDBDao.createNewPDPGroupId("testgroup1"), "primary", "the main pdp", 3232, "testuser"); + group.commitTransaction(); + } catch(Exception e){ + group.rollbackTransaction(); + logger.error("Exception Occured"+e); + Assert.fail(); + } + group = dbd.getNewTransaction(); + try{ + group.addPdpToGroup("http://localhost:4345/pdp/", PolicyDBDao.createNewPDPGroupId("testgroup1"), "secondary", "the second pdp", 3233, "testuser"); + group.commitTransaction(); + } catch(Exception e){ + group.rollbackTransaction(); + logger.error("Exception Occured"+e); + Assert.fail(); + } + em = emf.createEntityManager(); + getPdp = em.createQuery("SELECT p FROM PdpEntity p WHERE p.deleted=:deleted"); + getPdp.setParameter("deleted", false); + pdps = getPdp.getResultList(); + for(Object o : pdps){ + Assert.assertEquals("testgroup1",((PdpEntity)o).getGroup().getgroupName()); + } + em.close(); + + group = dbd.getNewTransaction(); + try{ + OnapPDPGroup groupToDelete = new StdPDPGroup(PolicyDBDao.createNewPDPGroupId("testgroup1"),Paths.get("/")); + OnapPDPGroup groupToMoveTo = new StdPDPGroup(PolicyDBDao.createNewPDPGroupId("testgroup2"),Paths.get("/")); + group.deleteGroup(groupToDelete, groupToMoveTo,"testuser"); + group.commitTransaction(); + } catch(Exception e){ + group.rollbackTransaction(); + logger.error("Exception Occured"+e); + Assert.fail(); + } + em = emf.createEntityManager(); + getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted"); + getGroup.setParameter("groupId", "testgroup1"); + getGroup.setParameter("deleted", false); + groups = getGroup.getResultList(); + if(groups.size() != 0){ + System.out.println("Group size: "+groups.size()); + Assert.fail(); + } + em.close(); + + em = emf.createEntityManager(); + getPdp = em.createQuery("SELECT p FROM PdpEntity p WHERE p.deleted=:deleted"); + getPdp.setParameter("deleted", false); + pdps = getPdp.getResultList(); + for(Object o : pdps){ + Assert.assertEquals("testgroup2",((PdpEntity)o).getGroup().getgroupName()); + } + em.close(); + + group = dbd.getNewTransaction(); + try{ + OnapPDPGroup groupToDelete = new StdPDPGroup(PolicyDBDao.createNewPDPGroupId("testgroup2"),Paths.get("/")); + OnapPDPGroup groupToMoveTo = null; + group.deleteGroup(groupToDelete, groupToMoveTo,"testuser"); + group.commitTransaction(); + Assert.fail(); + } catch(PolicyDBException pe){ + //good, can't delete group with pdps + group.rollbackTransaction(); + } catch(Exception e){ + group.rollbackTransaction(); + logger.error("Exception Occured"+e); + Assert.fail(); + } + + //update group + OnapPDPGroup pdpGroup = new StdPDPGroup("testgroup2", false, "newtestgroup2", "this is my new description", Paths.get("/")); + group = dbd.getNewTransaction(); + try{ + group.updateGroup(pdpGroup, "testuser"); + group.commitTransaction(); + }catch (Exception e){ + logger.error("Exception Occured"+e); + group.rollbackTransaction(); + Assert.fail(); + } + em = emf.createEntityManager(); + getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted"); + getGroup.setParameter("groupId", "newtestgroup2"); + getGroup.setParameter("deleted", false); + groups = getGroup.getResultList(); + if(groups.size() != 1){ + System.out.println("Group size: "+groups.size()); + Assert.fail(); + } + em.close(); + em = emf.createEntityManager(); + getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted"); + getGroup.setParameter("groupId", "testgroup2"); + getGroup.setParameter("deleted", false); + groups = getGroup.getResultList(); + if(groups.size() != 0){ + System.out.println("Group size: "+groups.size()); + Assert.fail(); + } + em.close(); + } + + @Ignore + @Test + public void threadingStabilityTest(){ + if(logger.isDebugEnabled()){ + logger.debug("\n\n****************************" + + "threadingStabilityTest() entry" + + "******************************\n\n"); + } + + PolicyDBDaoTransaction t = dbd.getNewTransaction(); + Assert.assertTrue(t.isTransactionOpen()); + try { + //Add 1000 ms to the timeout just to be sure it actually times out + int sleepTime = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_TRANS_TIMEOUT)) + 1000; + if(logger.isDebugEnabled()){ + Date date= new java.util.Date(); + logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " + + "\n sleepTime = " + sleepTime + + "\n TimeStamp = " + date.getTime() + + "\n\n"); + } + Thread.sleep(sleepTime); + } catch (InterruptedException e) { + logger.error("Exception Occured"+e); + } + if(logger.isDebugEnabled()){ + Date date= new java.util.Date(); + logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " + + "\n Assert.assertFalse(t.isTransactionOpen() = " + t.isTransactionOpen() + ")" + + "\n TimeStamp = " + date.getTime() + + "\n\n"); + } + Assert.assertFalse(t.isTransactionOpen()); + + + if(logger.isDebugEnabled()){ + Date date= new java.util.Date(); + logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " + + "\n a = dbd.getNewTransaction() " + + "\n TimeStamp = " + date.getTime() + + "\n\n"); + } + PolicyDBDaoTransaction a = dbd.getNewTransaction(); + if(logger.isDebugEnabled()){ + Date date= new java.util.Date(); + logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " + + "\n Assert.assertTrue(a.isTransactionOpen() = " + a.isTransactionOpen() + ")" + + "\n TimeStamp = " + date.getTime() + + "\n\n"); + } + Assert.assertTrue(a.isTransactionOpen()); + + try { + //Add 1000 ms to the timeout just to be sure it actually times out + int sleepTime = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_TRANS_TIMEOUT)) + 1000; + if(logger.isDebugEnabled()){ + Date date= new java.util.Date(); + logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " + + "\n sleepTime = " + sleepTime + + "\n TimeStamp = " + date.getTime() + + "\n\n"); + } + Thread.sleep(sleepTime); + } catch (InterruptedException e) { + logger.error("Exception Occured"+e); + } + if(logger.isDebugEnabled()){ + Date date= new java.util.Date(); + logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " + + "\n b = dbd.getNewTransaction() " + + "\n TimeStamp = " + date.getTime() + + "\n\n"); + } + PolicyDBDaoTransaction b = dbd.getNewTransaction(); + if(logger.isDebugEnabled()){ + Date date= new java.util.Date(); + logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " + + "\n Assert.assertFalse(a.isTransactionOpen() = " + a.isTransactionOpen() + ")" + + "\n TimeStamp = " + date.getTime() + + "\n\n"); + } + Assert.assertFalse(a.isTransactionOpen()); + if(logger.isDebugEnabled()){ + Date date= new java.util.Date(); + logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " + + "\n Assert.assertTrue(b.isTransactionOpen() = " + b.isTransactionOpen() + ")" + + "\n TimeStamp = " + date.getTime() + + "\n\n"); + } + Assert.assertTrue(b.isTransactionOpen()); + b.close(); + + + + //Now let's test the transaction wait time timeout. Shorten the wait time to 1000 ms + System.setProperty(XACMLRestProperties.PROP_PAP_TRANS_WAIT,"1000"); + //And let's lengthen the transaction timeout to 5000 ms + System.setProperty(XACMLRestProperties.PROP_PAP_TRANS_TIMEOUT,"5000"); + //get a transacton + PolicyDBDaoTransaction t1 = dbd.getNewTransaction(); + if(logger.isDebugEnabled()){ + Date date= new java.util.Date(); + logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " + + "\n Assert.assertTrue(t1.isTransactionOpen() = " + t1.isTransactionOpen() + ")" + + "\n TimeStamp = " + date.getTime() + + "\n\n"); + } + Assert.assertTrue(t1.isTransactionOpen()); + //while it is open, get another from a different DB Dao so it will not collide on the synchronized code segment + //but will collide at the DB. Remember that the wait time is only 1000 ms + try { + //Now the 2nd transaction has a wait timeout in 1000 ms + PolicyDBDaoTransaction t2 = dbd2.getNewTransaction(); + /* + * Give it plenty of time to time out the second transaction + * It will actually hang right here until it either gets the lock from the DB or the + * request for the DB lock times out. The timers are very sloppy so, I have given + * this plenty of leeway. + */ + + if(logger.isDebugEnabled()){ + Date date= new java.util.Date(); + logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " + + "\n Thread.sleep(3000)" + + "\n TimeStamp = " + date.getTime() + + "\n\n"); + } + Thread.sleep(3000); + if(logger.isDebugEnabled()){ + Date date= new java.util.Date(); + logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " + + "\n Assert.assertTrue(t1.isTransactionOpen() = " + t1.isTransactionOpen() + ")" + + "\n Assert.assertFalse(t2.isTransactionOpen() = " + t2.isTransactionOpen() + ")" + + "\n TimeStamp = " + date.getTime() + + "\n\n"); + } + //Assert.assertTrue(t1.isTransactionOpen()); + //Assert.assertFalse(t2.isTransactionOpen()); + + Assert.fail("\n\nTransaction timeout of 1000 ms exceeded without a PersistenceException\n\n"); + } catch (PersistenceException e) { + //success + if(logger.isDebugEnabled()){ + Date date= new java.util.Date(); + logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() " + + "\n SUCCESS! Transaction Wait Timeout worked!" + + "\n Caught PersistenceException = " + e + + "\n TimeStamp = " + date.getTime() + + "\n\n"); + } + } catch (Exception e) { + // failure due to some other reason + if(logger.isDebugEnabled()){ + Date date= new java.util.Date(); + logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() FAILURE" + + "\n Caught Exception = " + e + + "\n TimeStamp = " + date.getTime() + + "\n\n"); + } + logger.error("Exception Occured"+e); + Assert.fail(); + } + + if(logger.isDebugEnabled()){ + Date date= new java.util.Date(); + logger.debug("\n\nthreadingStabilityTest() exit" + + "\n TimeStamp = " + date.getTime() + + "\n\n"); + } + } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/ActionPolicyDictionaryControllerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/ActionPolicyDictionaryControllerTest.java index 6fa480c72..efb13b5a0 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/ActionPolicyDictionaryControllerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/ActionPolicyDictionaryControllerTest.java @@ -46,117 +46,117 @@ import org.springframework.mock.web.MockHttpServletResponse; public class ActionPolicyDictionaryControllerTest { - private static Logger logger = FlexLogger.getLogger(ActionPolicyDictionaryControllerTest.class); - private static CommonClassDao commonClassDao; - private String jsonString = null; - private HttpServletRequest request = null; - private ActionPolicyDictionaryController controller = null; - private MockHttpServletResponse response = null; + private static Logger logger = FlexLogger.getLogger(ActionPolicyDictionaryControllerTest.class); + private static CommonClassDao commonClassDao; + private String jsonString = null; + private HttpServletRequest request = null; + private ActionPolicyDictionaryController controller = null; + private MockHttpServletResponse response = null; - @Before - public void setUp() throws Exception { - logger.info("setUp: Entering"); - commonClassDao = Mockito.mock(CommonClassDao.class); - List<String> data = new ArrayList<>(); - List<Object> objectData = new ArrayList<>(); - data.add("Test"); - - UserInfo userInfo = new UserInfo(); - userInfo.setUserLoginId("Test"); - userInfo.setUserName("Test"); - - ActionPolicyDict actionData = new ActionPolicyDict(); - actionData.setAttributeName("Test"); - assertTrue("Test".equals(actionData.getAttributeName())); - actionData.setBody("Test"); - assertTrue("Test".equals(actionData.getBody())); - actionData.setCreatedDate(new Date()); - assertTrue(actionData.getCreatedDate()!= null); - actionData.setModifiedDate(new Date()); - assertTrue(actionData.getModifiedDate()!= null); - actionData.setHeader("Test"); - assertTrue("Test".equals(actionData.getHeader())); - actionData.setMethod("POST"); - assertTrue("POST".equals(actionData.getMethod())); - actionData.setType("Test"); - assertTrue("Test".equals(actionData.getType())); - actionData.setUrl("http://test.com"); - assertTrue("http://test.com".equals(actionData.getUrl())); - actionData.setUserCreatedBy(userInfo); - assertTrue(actionData.getUserCreatedBy()!= null); - actionData.setUserModifiedBy(userInfo); - assertTrue(actionData.getUserModifiedBy()!= null); - - objectData.add(actionData); - when(commonClassDao.getDataByColumn(ActionPolicyDict.class, "attributeName")).thenReturn(data); - when(commonClassDao.getData(ActionPolicyDict.class)).thenReturn(objectData); - doNothing().when(commonClassDao).delete(new ActionPolicyDict()); - doNothing().when(commonClassDao).save(new ActionPolicyDict()); - controller = new ActionPolicyDictionaryController(); - controller.setCommonClassDao(commonClassDao); - request = Mockito.mock(HttpServletRequest.class); - response = new MockHttpServletResponse(); - new DictionaryUtils(commonClassDao); + @Before + public void setUp() throws Exception { + logger.info("setUp: Entering"); + commonClassDao = Mockito.mock(CommonClassDao.class); + List<String> data = new ArrayList<>(); + List<Object> objectData = new ArrayList<>(); + data.add("Test"); + + UserInfo userInfo = new UserInfo(); + userInfo.setUserLoginId("Test"); + userInfo.setUserName("Test"); + + ActionPolicyDict actionData = new ActionPolicyDict(); + actionData.setAttributeName("Test"); + assertTrue("Test".equals(actionData.getAttributeName())); + actionData.setBody("Test"); + assertTrue("Test".equals(actionData.getBody())); + actionData.setCreatedDate(new Date()); + assertTrue(actionData.getCreatedDate()!= null); + actionData.setModifiedDate(new Date()); + assertTrue(actionData.getModifiedDate()!= null); + actionData.setHeader("Test"); + assertTrue("Test".equals(actionData.getHeader())); + actionData.setMethod("POST"); + assertTrue("POST".equals(actionData.getMethod())); + actionData.setType("Test"); + assertTrue("Test".equals(actionData.getType())); + actionData.setUrl("http://test.com"); + assertTrue("http://test.com".equals(actionData.getUrl())); + actionData.setUserCreatedBy(userInfo); + assertTrue(actionData.getUserCreatedBy()!= null); + actionData.setUserModifiedBy(userInfo); + assertTrue(actionData.getUserModifiedBy()!= null); + + objectData.add(actionData); + when(commonClassDao.getDataByColumn(ActionPolicyDict.class, "attributeName")).thenReturn(data); + when(commonClassDao.getData(ActionPolicyDict.class)).thenReturn(objectData); + doNothing().when(commonClassDao).delete(new ActionPolicyDict()); + doNothing().when(commonClassDao).save(new ActionPolicyDict()); + controller = new ActionPolicyDictionaryController(); + controller.setCommonClassDao(commonClassDao); + request = Mockito.mock(HttpServletRequest.class); + response = new MockHttpServletResponse(); + new DictionaryUtils(commonClassDao); DictionaryUtils.setDictionaryUtils(new DictionaryUtils()); mock(DictionaryUtils.class); - logger.info("setUp: exit"); - } - - @Test - public void testGetActionEntitybyName(){ - controller.getActionEntitybyName(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("actionPolicyDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetActionPolicyDictionaryEntityData(){ - controller.getActionPolicyDictionaryEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("actionPolicyDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testSaveActionPolicyDictionary(){ - jsonString = "{\"actionPolicyDictionaryData\":{\"attributeName\":\"Test\",\"body\":\"{}\",\"description\":\"test\",\"headers\":[{\"$$hashKey\":\"object:548\",\"id\":\"choice1\",\"number\":\"12\",\"option\":\"test\"}],\"method\":\"GET\",\"type\":\"REST\",\"url\":\"http://test.com\"},\"userid\":\"demo\"}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveActionPolicyDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("actionPolicyDictionaryData")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testUpdateActionPolicyDictionary(){ - jsonString = "{\"actionPolicyDictionaryData\":{\"id\":1,\"attributeName\":\"Test\",\"body\":\"{}\",\"description\":\"test\",\"headers\":[{\"$$hashKey\":\"object:548\",\"id\":\"choice1\",\"number\":\"12\",\"option\":\"test\"}],\"method\":\"GET\",\"type\":\"REST\",\"url\":\"http://test.com\"},\"userid\":\"demo\"}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveActionPolicyDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("actionPolicyDictionaryData")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testRemoveActionPolicyDictionary(){ - jsonString = "{\"data\":{\"$$hashKey\":\"uiGrid-003S\",\"attributeName\":\"Test\",\"body\":\"{}\",\"createdDate\":1518195117000,\"description\":\"test\",\"header\":\"test=12\",\"id\":1,\"method\":\"GET\",\"modifiedDate\":1518195489000,\"type\":\"REST\",\"url\":\"http://test.com\",\"userCreatedBy\":{\"userLoginId\":\"demo\",\"userName\":\"Demo\"},\"userModifiedBy\":{\"userLoginId\":\"demo\",\"userName\":\"Demo\"}}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.removeActionPolicyDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("actionPolicyDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } + logger.info("setUp: exit"); + } + + @Test + public void testGetActionEntitybyName(){ + controller.getActionEntitybyName(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("actionPolicyDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetActionPolicyDictionaryEntityData(){ + controller.getActionPolicyDictionaryEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("actionPolicyDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testSaveActionPolicyDictionary(){ + jsonString = "{\"actionPolicyDictionaryData\":{\"attributeName\":\"Test\",\"body\":\"{}\",\"description\":\"test\",\"headers\":[{\"$$hashKey\":\"object:548\",\"id\":\"choice1\",\"number\":\"12\",\"option\":\"test\"}],\"method\":\"GET\",\"type\":\"REST\",\"url\":\"http://test.com\"},\"userid\":\"demo\"}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveActionPolicyDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("actionPolicyDictionaryData")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testUpdateActionPolicyDictionary(){ + jsonString = "{\"actionPolicyDictionaryData\":{\"id\":1,\"attributeName\":\"Test\",\"body\":\"{}\",\"description\":\"test\",\"headers\":[{\"$$hashKey\":\"object:548\",\"id\":\"choice1\",\"number\":\"12\",\"option\":\"test\"}],\"method\":\"GET\",\"type\":\"REST\",\"url\":\"http://test.com\"},\"userid\":\"demo\"}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveActionPolicyDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("actionPolicyDictionaryData")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testRemoveActionPolicyDictionary(){ + jsonString = "{\"data\":{\"$$hashKey\":\"uiGrid-003S\",\"attributeName\":\"Test\",\"body\":\"{}\",\"createdDate\":1518195117000,\"description\":\"test\",\"header\":\"test=12\",\"id\":1,\"method\":\"GET\",\"modifiedDate\":1518195489000,\"type\":\"REST\",\"url\":\"http://test.com\",\"userCreatedBy\":{\"userLoginId\":\"demo\",\"userName\":\"Demo\"},\"userModifiedBy\":{\"userLoginId\":\"demo\",\"userName\":\"Demo\"}}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.removeActionPolicyDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("actionPolicyDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/BRMSDictionaryControllerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/BRMSDictionaryControllerTest.java index 0a60e1831..d34e505ba 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/BRMSDictionaryControllerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/BRMSDictionaryControllerTest.java @@ -46,217 +46,217 @@ import org.springframework.mock.web.MockHttpServletResponse; public class BRMSDictionaryControllerTest { - private static Logger logger = FlexLogger.getLogger(BRMSDictionaryControllerTest.class); - private static CommonClassDao commonClassDao; - private String jsonString = null; - private HttpServletRequest request = null; - private BRMSDictionaryController controller = null; - private MockHttpServletResponse response = null; + private static Logger logger = FlexLogger.getLogger(BRMSDictionaryControllerTest.class); + private static CommonClassDao commonClassDao; + private String jsonString = null; + private HttpServletRequest request = null; + private BRMSDictionaryController controller = null; + private MockHttpServletResponse response = null; - @Before - public void setUp() throws Exception { - logger.info("setUp: Entering"); - commonClassDao = Mockito.mock(CommonClassDao.class); - UserInfo userInfo = new UserInfo(); - userInfo.setUserLoginId("testUserId"); - userInfo.setUserName("John"); - when(commonClassDao.getEntityItem(UserInfo.class, "userLoginId", "testing")).thenReturn(userInfo); - List<String> brms = new ArrayList<String>(); - brms.add("BRMS-Model"); - when(commonClassDao.getDataByColumn(BRMSParamTemplate.class, "name")).thenReturn(brms); - doNothing().when(commonClassDao).delete(new BRMSParamTemplate()); - doNothing().when(commonClassDao).save(new BRMSParamTemplate()); - controller = new BRMSDictionaryController(); - request = Mockito.mock(HttpServletRequest.class); - response = new MockHttpServletResponse(); - new DictionaryUtils(commonClassDao); + @Before + public void setUp() throws Exception { + logger.info("setUp: Entering"); + commonClassDao = Mockito.mock(CommonClassDao.class); + UserInfo userInfo = new UserInfo(); + userInfo.setUserLoginId("testUserId"); + userInfo.setUserName("John"); + when(commonClassDao.getEntityItem(UserInfo.class, "userLoginId", "testing")).thenReturn(userInfo); + List<String> brms = new ArrayList<String>(); + brms.add("BRMS-Model"); + when(commonClassDao.getDataByColumn(BRMSParamTemplate.class, "name")).thenReturn(brms); + doNothing().when(commonClassDao).delete(new BRMSParamTemplate()); + doNothing().when(commonClassDao).save(new BRMSParamTemplate()); + controller = new BRMSDictionaryController(); + request = Mockito.mock(HttpServletRequest.class); + response = new MockHttpServletResponse(); + new DictionaryUtils(commonClassDao); DictionaryUtils.setDictionaryUtils(new DictionaryUtils()); mock(DictionaryUtils.class); - logger.info("setUp: exit"); - } + logger.info("setUp: exit"); + } - @Test - public void testGetBRMSParamDictionaryByNameEntityData(){ - logger.info("testGetBRMSParamDictionaryByNameEntityData: Entering"); - BRMSDictionaryController.setCommonClassDao(commonClassDao); - controller.getBRMSParamDictionaryByNameEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsParamDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - logger.info("testGetBRMSParamDictionaryByNameEntityData: exit"); - } + @Test + public void testGetBRMSParamDictionaryByNameEntityData(){ + logger.info("testGetBRMSParamDictionaryByNameEntityData: Entering"); + BRMSDictionaryController.setCommonClassDao(commonClassDao); + controller.getBRMSParamDictionaryByNameEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsParamDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + logger.info("testGetBRMSParamDictionaryByNameEntityData: exit"); + } - @Test - public void testGetBRMSParamDictionaryEntityData() { - logger.info("testGetBRMSParamDictionaryEntityData: Entering"); - controller.getBRMSParamDictionaryEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsParamDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - logger.info("testGetBRMSParamDictionaryEntityData: exit"); - } + @Test + public void testGetBRMSParamDictionaryEntityData() { + logger.info("testGetBRMSParamDictionaryEntityData: Entering"); + controller.getBRMSParamDictionaryEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsParamDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + logger.info("testGetBRMSParamDictionaryEntityData: exit"); + } - @Test - public void testSaveBRMSParamDictionary() { - logger.info("testSaveBRMSParamDictionary: Entering"); - jsonString = "{\"brmsParamDictionaryData\": {\"ruleName\": \"test\",\"rule\": \"test\"},\"userid\": \"testName\"}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveBRMSParamDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsParamDictionaryData")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - }catch(Exception e){ - logger.error("Exception"+ e); - } - logger.info("testSaveBRMSParamDictionary: exit"); - } + @Test + public void testSaveBRMSParamDictionary() { + logger.info("testSaveBRMSParamDictionary: Entering"); + jsonString = "{\"brmsParamDictionaryData\": {\"ruleName\": \"test\",\"rule\": \"test\"},\"userid\": \"testName\"}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveBRMSParamDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsParamDictionaryData")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + }catch(Exception e){ + logger.error("Exception"+ e); + } + logger.info("testSaveBRMSParamDictionary: exit"); + } - @Test - public void testRemoveBRMSParamDictionary() { - logger.info("testRemoveBRMSParamDictionary: Entering"); - jsonString = "{\"data\": {\"ruleName\": \"test\",\"rule\": \"test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.removeBRMSParamDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsParamDictionaryDatas")); - } catch (Exception e) { - fail("Exception: " + e); - } - logger.info("testRemoveBRMSParamDictionary: exit"); - } + @Test + public void testRemoveBRMSParamDictionary() { + logger.info("testRemoveBRMSParamDictionary: Entering"); + jsonString = "{\"data\": {\"ruleName\": \"test\",\"rule\": \"test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.removeBRMSParamDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsParamDictionaryDatas")); + } catch (Exception e) { + fail("Exception: " + e); + } + logger.info("testRemoveBRMSParamDictionary: exit"); + } - @Test - public void testGetBRMSDependencyDictionaryByNameEntityData(){ - logger.info("testGetBRMSDependencyDictionaryByNameEntityData: Entering"); - BRMSDictionaryController.setCommonClassDao(commonClassDao); - controller.getBRMSDependencyDictionaryByNameEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsDependencyDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - logger.info("testGetBRMSDependencyDictionaryByNameEntityData: exit"); - } + @Test + public void testGetBRMSDependencyDictionaryByNameEntityData(){ + logger.info("testGetBRMSDependencyDictionaryByNameEntityData: Entering"); + BRMSDictionaryController.setCommonClassDao(commonClassDao); + controller.getBRMSDependencyDictionaryByNameEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsDependencyDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + logger.info("testGetBRMSDependencyDictionaryByNameEntityData: exit"); + } - @Test - public void testGetBRMSDependencyDictionaryEntityData(){ - logger.info("testGetBRMSDependencyDictionaryEntityData: Entering"); - BRMSDictionaryController.setCommonClassDao(commonClassDao); - controller.getBRMSDependencyDictionaryEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsDependencyDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } + @Test + public void testGetBRMSDependencyDictionaryEntityData(){ + logger.info("testGetBRMSDependencyDictionaryEntityData: Entering"); + BRMSDictionaryController.setCommonClassDao(commonClassDao); + controller.getBRMSDependencyDictionaryEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsDependencyDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } - logger.info("testGetBRMSDependencyDictionaryEntityData: exit"); - } + logger.info("testGetBRMSDependencyDictionaryEntityData: exit"); + } - @Test - public void testSaveBRMSDependencyDictionary() { - logger.info("testSaveBRMSDependencyDictionary: Entering"); - jsonString = "{\"brmsDependencyDictionaryData\": {\"ruleName\": \"test\",\"rule\": \"test\"},\"userid\": \"testName\"}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveBRMSDependencyDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsDependencyDictionaryData")); - } catch (Exception e) { - fail("Exception: " + e); - } - logger.info("testSaveBRMSDependencyDictionary: exit"); - } + @Test + public void testSaveBRMSDependencyDictionary() { + logger.info("testSaveBRMSDependencyDictionary: Entering"); + jsonString = "{\"brmsDependencyDictionaryData\": {\"ruleName\": \"test\",\"rule\": \"test\"},\"userid\": \"testName\"}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveBRMSDependencyDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsDependencyDictionaryData")); + } catch (Exception e) { + fail("Exception: " + e); + } + logger.info("testSaveBRMSDependencyDictionary: exit"); + } - @Test - public void testRemoveBRMSDependencyDictionary() { - logger.info("testRemoveBRMSDependencyDictionary: Entering"); - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - jsonString = "{\"data\": {\"ruleName\": \"test\",\"rule\": \"test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.removeBRMSDependencyDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsDependencyDictionaryDatas")); - } catch (Exception e) { - fail("Exception: " + e); - } - logger.info("testRemoveBRMSDependencyDictionary: exit"); - } + @Test + public void testRemoveBRMSDependencyDictionary() { + logger.info("testRemoveBRMSDependencyDictionary: Entering"); + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + jsonString = "{\"data\": {\"ruleName\": \"test\",\"rule\": \"test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.removeBRMSDependencyDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsDependencyDictionaryDatas")); + } catch (Exception e) { + fail("Exception: " + e); + } + logger.info("testRemoveBRMSDependencyDictionary: exit"); + } - @Test - public void testGetBRMSControllerDictionaryByNameEntityData(){ - logger.info("testGetBRMSControllerDictionaryByNameEntityData: Entering"); - MockHttpServletResponse response = new MockHttpServletResponse(); - BRMSDictionaryController.setCommonClassDao(commonClassDao); - controller.getBRMSControllerDictionaryByNameEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsControllerDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - logger.info("testGetBRMSControllerDictionaryByNameEntityData: exit"); - } + @Test + public void testGetBRMSControllerDictionaryByNameEntityData(){ + logger.info("testGetBRMSControllerDictionaryByNameEntityData: Entering"); + MockHttpServletResponse response = new MockHttpServletResponse(); + BRMSDictionaryController.setCommonClassDao(commonClassDao); + controller.getBRMSControllerDictionaryByNameEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsControllerDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + logger.info("testGetBRMSControllerDictionaryByNameEntityData: exit"); + } - @Test - public void testGetBRMSControllerDictionaryEntityData(){ - logger.info("testGetBRMSControllerDictionaryEntityData: Entering"); - MockHttpServletResponse response = new MockHttpServletResponse(); - BRMSDictionaryController.setCommonClassDao(commonClassDao); - controller.getBRMSControllerDictionaryEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsControllerDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - logger.info("testGetBRMSControllerDictionaryEntityData: exit"); - } + @Test + public void testGetBRMSControllerDictionaryEntityData(){ + logger.info("testGetBRMSControllerDictionaryEntityData: Entering"); + MockHttpServletResponse response = new MockHttpServletResponse(); + BRMSDictionaryController.setCommonClassDao(commonClassDao); + controller.getBRMSControllerDictionaryEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsControllerDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + logger.info("testGetBRMSControllerDictionaryEntityData: exit"); + } - @Test - public void testSaveBRMSControllerDictionary() { - logger.info("testSaveBRMSControllerDictionary: Entering"); + @Test + public void testSaveBRMSControllerDictionary() { + logger.info("testSaveBRMSControllerDictionary: Entering"); - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - jsonString = "{\"brmsControllerDictionaryData\": {\"ruleName\": \"test\",\"rule\": \"test\"},\"userid\": \"testName\"}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveBRMSControllerDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsControllerDictionaryData")); - } catch (Exception e) { - fail("Exception: " + e); - } - logger.info("testSaveBRMSControllerDictionary: exit"); - } + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + jsonString = "{\"brmsControllerDictionaryData\": {\"ruleName\": \"test\",\"rule\": \"test\"},\"userid\": \"testName\"}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveBRMSControllerDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsControllerDictionaryData")); + } catch (Exception e) { + fail("Exception: " + e); + } + logger.info("testSaveBRMSControllerDictionary: exit"); + } - @Test - public void testRemoveBRMSControllerDictionary() { - logger.info("testRemoveBRMSControllerDictionary: Entering"); - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - jsonString = "{\"data\": {\"ruleName\": \"test\",\"rule\": \"test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.removeBRMSControllerDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsControllerDictionaryDatas")); + @Test + public void testRemoveBRMSControllerDictionary() { + logger.info("testRemoveBRMSControllerDictionary: Entering"); + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + jsonString = "{\"data\": {\"ruleName\": \"test\",\"rule\": \"test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.removeBRMSControllerDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("brmsControllerDictionaryDatas")); - } catch (Exception e) { - fail("Exception: " + e); - } - logger.info("testRemoveBRMSControllerDictionary: exit"); - } + } catch (Exception e) { + fail("Exception: " + e); + } + logger.info("testRemoveBRMSControllerDictionary: exit"); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/ClosedLoopDictionaryControllerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/ClosedLoopDictionaryControllerTest.java index ea1ea3b88..f530b4c62 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/ClosedLoopDictionaryControllerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/ClosedLoopDictionaryControllerTest.java @@ -49,399 +49,399 @@ import org.onap.policy.rest.jpa.VarbindDictionary; import org.springframework.mock.web.MockHttpServletResponse; public class ClosedLoopDictionaryControllerTest { - - private static Logger logger = FlexLogger.getLogger(ClosedLoopDictionaryControllerTest.class); - private static CommonClassDao commonClassDao; - private String jsonString = null; - private HttpServletRequest request = null; - private ClosedLoopDictionaryController controller = null; - private MockHttpServletResponse response = null; - private UserInfo userInfo; - private List<String> data; - - @Before - public void setUp() throws Exception { - logger.info("setUp: Entering"); - commonClassDao = Mockito.mock(CommonClassDao.class); - - data = new ArrayList<>(); - data.add("Test"); - - userInfo = new UserInfo(); - userInfo.setUserLoginId("Test"); - userInfo.setUserName("Test"); - - doNothing().when(commonClassDao).delete(new VSCLAction()); - doNothing().when(commonClassDao).save(new VSCLAction()); - - controller = new ClosedLoopDictionaryController(); - controller.setCommonClassDao(commonClassDao); - - request = Mockito.mock(HttpServletRequest.class); - response = new MockHttpServletResponse(); - new DictionaryUtils(commonClassDao); + + private static Logger logger = FlexLogger.getLogger(ClosedLoopDictionaryControllerTest.class); + private static CommonClassDao commonClassDao; + private String jsonString = null; + private HttpServletRequest request = null; + private ClosedLoopDictionaryController controller = null; + private MockHttpServletResponse response = null; + private UserInfo userInfo; + private List<String> data; + + @Before + public void setUp() throws Exception { + logger.info("setUp: Entering"); + commonClassDao = Mockito.mock(CommonClassDao.class); + + data = new ArrayList<>(); + data.add("Test"); + + userInfo = new UserInfo(); + userInfo.setUserLoginId("Test"); + userInfo.setUserName("Test"); + + doNothing().when(commonClassDao).delete(new VSCLAction()); + doNothing().when(commonClassDao).save(new VSCLAction()); + + controller = new ClosedLoopDictionaryController(); + controller.setCommonClassDao(commonClassDao); + + request = Mockito.mock(HttpServletRequest.class); + response = new MockHttpServletResponse(); + new DictionaryUtils(commonClassDao); DictionaryUtils.setDictionaryUtils(new DictionaryUtils()); mock(DictionaryUtils.class); - logger.info("setUp: exit"); - } - - @Test - public void testGetVSCLActionDictionaryByNameEntityData(){ - when(commonClassDao.getDataByColumn(VSCLAction.class, "vsclaction")).thenReturn(data); - controller.getVSCLActionDictionaryByNameEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vsclActionDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetVSCLActionDictionaryEntityData(){ - when(commonClassDao.getData(VSCLAction.class)).thenReturn(new ArrayList<>()); - controller.getVSCLActionDictionaryEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vsclActionDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetVNFTypeDictionaryByNameEntityData(){ - when(commonClassDao.getDataByColumn(VNFType.class, "vnftype")).thenReturn(data); - controller.getVNFTypeDictionaryByNameEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vnfTypeDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetVNFTypeDictionaryEntityData(){ - when(commonClassDao.getData(VNFType.class)).thenReturn(new ArrayList<>()); - controller.getVNFTypeDictionaryEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vnfTypeDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetPEPOptionsDictionaryByNameEntityData(){ - when(commonClassDao.getDataByColumn(PEPOptions.class, "pepName")).thenReturn(data); - controller.getPEPOptionsDictionaryByNameEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("pepOptionsDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetPEPOptionsDictionaryEntityData(){ - when(commonClassDao.getData(PEPOptions.class)).thenReturn(new ArrayList<>()); - controller.getPEPOptionsDictionaryEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("pepOptionsDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetVarbindDictionaryByNameEntityData(){ - when(commonClassDao.getDataByColumn(VarbindDictionary.class, "varbindName")).thenReturn(data); - controller.getVarbindDictionaryByNameEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("varbindDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetVarbindDictionaryEntityData(){ - when(commonClassDao.getData(VarbindDictionary.class)).thenReturn(new ArrayList<>()); - controller.getVarbindDictionaryEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("varbindDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetClosedLoopServiceDictionaryByNameEntityData(){ - when(commonClassDao.getDataByColumn(ClosedLoopD2Services.class, "serviceName")).thenReturn(data); - controller.getClosedLoopServiceDictionaryByNameEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopServiceDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetClosedLoopServiceDictionaryEntityData(){ - when(commonClassDao.getData(ClosedLoopD2Services.class)).thenReturn(new ArrayList<>()); - controller.getClosedLoopServiceDictionaryEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopServiceDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetClosedLoopSiteDictionaryByNameEntityData(){ - when(commonClassDao.getDataByColumn(ClosedLoopSite.class, "siteName")).thenReturn(data); - controller.getClosedLoopSiteDictionaryByNameEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopSiteDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetClosedLoopSiteDictionaryEntityData(){ - when(commonClassDao.getData(ClosedLoopSite.class)).thenReturn(new ArrayList<>()); - controller.getClosedLoopSiteDictionaryEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopSiteDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testSaveVSCLAction(){ - jsonString = "{\"userid\":\"demo\",\"vsclActionDictionaryData\":{\"description\":\"test\",\"vsclaction\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveVSCLAction(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vsclActionDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testUpdateVSCLAction(){ - jsonString = "{\"userid\":\"demo\",\"vsclActionDictionaryData\":{\"id\":1,\"description\":\"test\",\"vsclaction\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveVSCLAction(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vsclActionDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testRemoveVSCLAction(){ - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"vsclaction\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.removeVSCLAction(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vsclActionDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testSaveVnfType(){ - jsonString = "{\"userid\":\"demo\",\"vnfTypeDictionaryData\":{\"description\":\"test\",\"vnftype\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveVnfType(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vnfTypeDictionaryData")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testUpdateVnfType(){ - jsonString = "{\"userid\":\"demo\",\"vnfTypeDictionaryData\":{\"id\":1,\"description\":\"test\",\"vnftype\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveVnfType(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vnfTypeDictionaryData")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testRemoveVnfType(){ - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"vnftype\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.removeVnfType(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vnfTypeDictionaryData")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testSavePEPOptions(){ - jsonString = "{\"pepOptionsDictionaryData\":{\"attributes\":[{\"$$hashKey\":\"object:257\",\"id\":\"choice1\",\"number\":\"12\",\"option\":\"test\"}],\"description\":\"test\",\"pepName\":\"Test\"},\"userid\":\"demo\"}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.savePEPOptions(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("pepOptionsDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testUpdatePEPOptions(){ - jsonString = "{\"pepOptionsDictionaryData\":{\"attributes\":[{\"$$hashKey\":\"object:257\",\"id\":\"choice1\",\"number\":\"12\",\"option\":\"test\"}],\"description\":\"test\",\"pepName\":\"Test\",\"id\":1},\"userid\":\"demo\"}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.savePEPOptions(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("pepOptionsDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testRemovePEPOptions(){ - jsonString = "{\"data\":{\"attributes\":[{\"$$hashKey\":\"object:257\",\"id\":\"choice1\",\"number\":\"12\",\"option\":\"test\"}],\"description\":\"test\",\"pepName\":\"Test\"},\"userid\":\"demo\"}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.removePEPOptions(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("pepOptionsDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testSaveServiceType(){ - jsonString = "{\"userid\":\"demo\",\"closedLoopServiceDictionaryData\":{\"description\":\"test\",\"serviceName\":\"Test\",\"id\":1}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveServiceType(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopServiceDictionaryData")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testUpdateServiceType(){ - jsonString = "{\"userid\":\"demo\",\"closedLoopServiceDictionaryData\":{\"id\":1,\"description\":\"test\",\"serviceName\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveServiceType(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopServiceDictionaryData")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testRemoveServiceType(){ - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"serviceName\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.removeServiceType(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopServiceDictionaryData")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testSaveSiteType(){ - jsonString = "{\"userid\":\"demo\",\"closedLoopSiteDictionaryData\":{\"description\":\"test\",\"siteName\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveSiteType(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopSiteDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testUpdateSiteType(){ - jsonString = "{\"userid\":\"demo\",\"closedLoopSiteDictionaryData\":{\"id\":1,\"description\":\"test\",\"siteName\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveSiteType(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopSiteDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testRemoveSiteType(){ - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"siteName\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.removeSiteType(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopSiteDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testSaveVarbind(){ - jsonString = "{\"userid\":\"demo\",\"varbindDictionaryData\":{\"description\":\"test\",\"varbindName\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveVarbind(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("varbindDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testUpdateVarbind(){ - jsonString = "{\"userid\":\"demo\",\"varbindDictionaryData\":{\"id\":1,\"description\":\"test\",\"varbindName\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveVarbind(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("varbindDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testRemoveVarbind(){ - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"varbindName\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.removeVarbind(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("varbindDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } + logger.info("setUp: exit"); + } + + @Test + public void testGetVSCLActionDictionaryByNameEntityData(){ + when(commonClassDao.getDataByColumn(VSCLAction.class, "vsclaction")).thenReturn(data); + controller.getVSCLActionDictionaryByNameEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vsclActionDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetVSCLActionDictionaryEntityData(){ + when(commonClassDao.getData(VSCLAction.class)).thenReturn(new ArrayList<>()); + controller.getVSCLActionDictionaryEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vsclActionDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetVNFTypeDictionaryByNameEntityData(){ + when(commonClassDao.getDataByColumn(VNFType.class, "vnftype")).thenReturn(data); + controller.getVNFTypeDictionaryByNameEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vnfTypeDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetVNFTypeDictionaryEntityData(){ + when(commonClassDao.getData(VNFType.class)).thenReturn(new ArrayList<>()); + controller.getVNFTypeDictionaryEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vnfTypeDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetPEPOptionsDictionaryByNameEntityData(){ + when(commonClassDao.getDataByColumn(PEPOptions.class, "pepName")).thenReturn(data); + controller.getPEPOptionsDictionaryByNameEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("pepOptionsDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetPEPOptionsDictionaryEntityData(){ + when(commonClassDao.getData(PEPOptions.class)).thenReturn(new ArrayList<>()); + controller.getPEPOptionsDictionaryEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("pepOptionsDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetVarbindDictionaryByNameEntityData(){ + when(commonClassDao.getDataByColumn(VarbindDictionary.class, "varbindName")).thenReturn(data); + controller.getVarbindDictionaryByNameEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("varbindDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetVarbindDictionaryEntityData(){ + when(commonClassDao.getData(VarbindDictionary.class)).thenReturn(new ArrayList<>()); + controller.getVarbindDictionaryEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("varbindDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetClosedLoopServiceDictionaryByNameEntityData(){ + when(commonClassDao.getDataByColumn(ClosedLoopD2Services.class, "serviceName")).thenReturn(data); + controller.getClosedLoopServiceDictionaryByNameEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopServiceDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetClosedLoopServiceDictionaryEntityData(){ + when(commonClassDao.getData(ClosedLoopD2Services.class)).thenReturn(new ArrayList<>()); + controller.getClosedLoopServiceDictionaryEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopServiceDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetClosedLoopSiteDictionaryByNameEntityData(){ + when(commonClassDao.getDataByColumn(ClosedLoopSite.class, "siteName")).thenReturn(data); + controller.getClosedLoopSiteDictionaryByNameEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopSiteDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetClosedLoopSiteDictionaryEntityData(){ + when(commonClassDao.getData(ClosedLoopSite.class)).thenReturn(new ArrayList<>()); + controller.getClosedLoopSiteDictionaryEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopSiteDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testSaveVSCLAction(){ + jsonString = "{\"userid\":\"demo\",\"vsclActionDictionaryData\":{\"description\":\"test\",\"vsclaction\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveVSCLAction(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vsclActionDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testUpdateVSCLAction(){ + jsonString = "{\"userid\":\"demo\",\"vsclActionDictionaryData\":{\"id\":1,\"description\":\"test\",\"vsclaction\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveVSCLAction(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vsclActionDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testRemoveVSCLAction(){ + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"vsclaction\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.removeVSCLAction(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vsclActionDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testSaveVnfType(){ + jsonString = "{\"userid\":\"demo\",\"vnfTypeDictionaryData\":{\"description\":\"test\",\"vnftype\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveVnfType(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vnfTypeDictionaryData")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testUpdateVnfType(){ + jsonString = "{\"userid\":\"demo\",\"vnfTypeDictionaryData\":{\"id\":1,\"description\":\"test\",\"vnftype\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveVnfType(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vnfTypeDictionaryData")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testRemoveVnfType(){ + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"vnftype\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.removeVnfType(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("vnfTypeDictionaryData")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testSavePEPOptions(){ + jsonString = "{\"pepOptionsDictionaryData\":{\"attributes\":[{\"$$hashKey\":\"object:257\",\"id\":\"choice1\",\"number\":\"12\",\"option\":\"test\"}],\"description\":\"test\",\"pepName\":\"Test\"},\"userid\":\"demo\"}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.savePEPOptions(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("pepOptionsDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testUpdatePEPOptions(){ + jsonString = "{\"pepOptionsDictionaryData\":{\"attributes\":[{\"$$hashKey\":\"object:257\",\"id\":\"choice1\",\"number\":\"12\",\"option\":\"test\"}],\"description\":\"test\",\"pepName\":\"Test\",\"id\":1},\"userid\":\"demo\"}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.savePEPOptions(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("pepOptionsDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testRemovePEPOptions(){ + jsonString = "{\"data\":{\"attributes\":[{\"$$hashKey\":\"object:257\",\"id\":\"choice1\",\"number\":\"12\",\"option\":\"test\"}],\"description\":\"test\",\"pepName\":\"Test\"},\"userid\":\"demo\"}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.removePEPOptions(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("pepOptionsDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testSaveServiceType(){ + jsonString = "{\"userid\":\"demo\",\"closedLoopServiceDictionaryData\":{\"description\":\"test\",\"serviceName\":\"Test\",\"id\":1}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveServiceType(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopServiceDictionaryData")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testUpdateServiceType(){ + jsonString = "{\"userid\":\"demo\",\"closedLoopServiceDictionaryData\":{\"id\":1,\"description\":\"test\",\"serviceName\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveServiceType(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopServiceDictionaryData")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testRemoveServiceType(){ + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"serviceName\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.removeServiceType(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopServiceDictionaryData")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testSaveSiteType(){ + jsonString = "{\"userid\":\"demo\",\"closedLoopSiteDictionaryData\":{\"description\":\"test\",\"siteName\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveSiteType(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopSiteDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testUpdateSiteType(){ + jsonString = "{\"userid\":\"demo\",\"closedLoopSiteDictionaryData\":{\"id\":1,\"description\":\"test\",\"siteName\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveSiteType(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopSiteDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testRemoveSiteType(){ + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"siteName\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.removeSiteType(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("closedLoopSiteDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testSaveVarbind(){ + jsonString = "{\"userid\":\"demo\",\"varbindDictionaryData\":{\"description\":\"test\",\"varbindName\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveVarbind(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("varbindDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testUpdateVarbind(){ + jsonString = "{\"userid\":\"demo\",\"varbindDictionaryData\":{\"id\":1,\"description\":\"test\",\"varbindName\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveVarbind(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("varbindDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testRemoveVarbind(){ + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"varbindName\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.removeVarbind(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("varbindDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DecisionPolicyDictionaryControllerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DecisionPolicyDictionaryControllerTest.java index 2e8c63cf8..7910aed11 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DecisionPolicyDictionaryControllerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DecisionPolicyDictionaryControllerTest.java @@ -40,26 +40,26 @@ import org.onap.policy.rest.dao.CommonClassDao; import org.springframework.mock.web.MockHttpServletResponse; public class DecisionPolicyDictionaryControllerTest { - private static Logger logger = FlexLogger.getLogger(DecisionPolicyDictionaryControllerTest.class); - private static CommonClassDao commonClassDao; - private String jsonString = null; - private HttpServletRequest request = null; - private DecisionPolicyDictionaryController controller = null; - - @Before - public void setUp() throws Exception { - logger.info("setUp: Entering"); + private static Logger logger = FlexLogger.getLogger(DecisionPolicyDictionaryControllerTest.class); + private static CommonClassDao commonClassDao; + private String jsonString = null; + private HttpServletRequest request = null; + private DecisionPolicyDictionaryController controller = null; + + @Before + public void setUp() throws Exception { + logger.info("setUp: Entering"); commonClassDao = Mockito.mock(CommonClassDao.class); - HttpServletRequest request = Mockito.mock(HttpServletRequest.class); + HttpServletRequest request = Mockito.mock(HttpServletRequest.class); - jsonString = "{\"attributeDictionaryDatas\": {\"error\": \"\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " - + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " - + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," - + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," - + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " - + " \"policyDescription\": \"testing input\", \"ecompName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," - + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " - + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; + jsonString = "{\"attributeDictionaryDatas\": {\"error\": \"\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " + + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " + + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," + + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," + + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " + + " \"policyDescription\": \"testing input\", \"ecompName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," + + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " + + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; BufferedReader br = new BufferedReader(new StringReader(jsonString)); @@ -71,206 +71,206 @@ public class DecisionPolicyDictionaryControllerTest { DictionaryUtils.setDictionaryUtils(new DictionaryUtils()); mock(DictionaryUtils.class); logger.info("setUp: exit"); - } - - @After - public void tearDown() throws Exception { - } - - @Test - public void testGetSettingsDictionaryByNameEntityData() { - logger.info("testGetSettingsDictionaryByNameEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - - controller.getSettingsDictionaryByNameEntityData(request, response); - - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("settingsDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - logger.error("Exception Occured"+e); - fail("Exception: " + e); - } - - logger.info("testGetSettingsDictionaryByNameEntityData: exit"); - - } - - @Test - public void testGetSettingsDictionaryEntityData() { - logger.info("testGetSettingsDictionaryEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - - controller.getSettingsDictionaryEntityData(response); - - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("settingsDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - logger.error("Exception Occured"+e); - fail("Exception: " + e); - } - - logger.info("testGetSettingsDictionaryEntityData: exit"); - - } - - @Test - public void testSaveSettingsDictionary() { - logger.info("testSaveSettingsDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); + } + + @After + public void tearDown() throws Exception { + } + + @Test + public void testGetSettingsDictionaryByNameEntityData() { + logger.info("testGetSettingsDictionaryByNameEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + controller.getSettingsDictionaryByNameEntityData(request, response); + + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("settingsDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + logger.error("Exception Occured"+e); + fail("Exception: " + e); + } + + logger.info("testGetSettingsDictionaryByNameEntityData: exit"); + + } + + @Test + public void testGetSettingsDictionaryEntityData() { + logger.info("testGetSettingsDictionaryEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + controller.getSettingsDictionaryEntityData(response); + + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("settingsDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + logger.error("Exception Occured"+e); + fail("Exception: " + e); + } + + logger.info("testGetSettingsDictionaryEntityData: exit"); + + } + + @Test + public void testSaveSettingsDictionary() { + logger.info("testSaveSettingsDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); - try { - // mock the getReader() call - jsonString = "{\"settingsDictionaryData\":{\"xacmlId\":\"testMMRestAPI1\",\"datatypeBean\":{\"shortName\":\"string\"},\"description\":\"test\",\"priority\":\"High\"}, \"userid\":\"test\"}"; - - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - when(request.getReader()).thenReturn(br); - controller.saveSettingsDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("settingsDictionaryDatas")); - - } catch (Exception e) { - logger.error("Exception Occured"+e); - fail("Exception: " + e); - } - - logger.info("testSaveSettingsDictionary: exit"); - - } - - @Test - public void testRemoveSettingsDictionary() { - logger.info("testRemoveSettingsDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - jsonString = "{\"data\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " - + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " - + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," - + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," - + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " - + " \"policyDescription\": \"testing input\", \"ecompName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," - + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " - + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - when(request.getReader()).thenReturn(br); - controller.removeSettingsDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("settingsDictionaryDatas")); - - } catch (Exception e) { - logger.error("Exception Occured"+e); - fail("Exception: " + e); - } - - logger.info("testRemoveSettingsDictionary: exit"); - - } - - @Test - public void testGetRainyDayDictionaryByNameEntityData() { - logger.info("testGetRainyDayDictionaryByNameEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - - controller.getRainyDayDictionaryByNameEntityData(request, response); - - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("rainyDayDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - logger.error("Exception Occured"+e); - fail("Exception: " + e); - } - - logger.info("testGetRainyDayDictionaryByNameEntityData: exit"); - - } - - @Test - public void testGetRainyDayDictionaryEntityData() { - logger.info("testGetRainyDayDictionaryEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - - controller.getRainyDayDictionaryEntityData(response); - - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("rainyDayDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - logger.error("Exception Occured"+e); - fail("Exception: " + e); - } - - logger.info("testGetRainyDayDictionaryEntityData: exit"); - - } - - @Test - public void testSaveRainyDayDictionary() { - logger.info("testSaveRainyDayDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); + try { + // mock the getReader() call + jsonString = "{\"settingsDictionaryData\":{\"xacmlId\":\"testMMRestAPI1\",\"datatypeBean\":{\"shortName\":\"string\"},\"description\":\"test\",\"priority\":\"High\"}, \"userid\":\"test\"}"; + + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.saveSettingsDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("settingsDictionaryDatas")); + + } catch (Exception e) { + logger.error("Exception Occured"+e); + fail("Exception: " + e); + } + + logger.info("testSaveSettingsDictionary: exit"); + + } + + @Test + public void testRemoveSettingsDictionary() { + logger.info("testRemoveSettingsDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + jsonString = "{\"data\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " + + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " + + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," + + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," + + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " + + " \"policyDescription\": \"testing input\", \"ecompName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," + + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " + + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.removeSettingsDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("settingsDictionaryDatas")); + + } catch (Exception e) { + logger.error("Exception Occured"+e); + fail("Exception: " + e); + } + + logger.info("testRemoveSettingsDictionary: exit"); + + } + + @Test + public void testGetRainyDayDictionaryByNameEntityData() { + logger.info("testGetRainyDayDictionaryByNameEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + controller.getRainyDayDictionaryByNameEntityData(request, response); + + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("rainyDayDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + logger.error("Exception Occured"+e); + fail("Exception: " + e); + } + + logger.info("testGetRainyDayDictionaryByNameEntityData: exit"); + + } + + @Test + public void testGetRainyDayDictionaryEntityData() { + logger.info("testGetRainyDayDictionaryEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + controller.getRainyDayDictionaryEntityData(response); + + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("rainyDayDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + logger.error("Exception Occured"+e); + fail("Exception: " + e); + } + + logger.info("testGetRainyDayDictionaryEntityData: exit"); + + } + + @Test + public void testSaveRainyDayDictionary() { + logger.info("testSaveRainyDayDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); - try { - // mock the getReader() call - jsonString = "{\"rainyDayDictionaryData\":{\"bbid\":\"BB2\",\"workstep\":\"1\",\"userDataTypeValues\":[{\"$$hashKey\":\"object:233\",\"treatment\":\"test1\"},{\"$$hashKey\":\"object:239\",\"treatment\":\"test2\"}]},\"userid\":\"mm117s\"}"; - - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - when(request.getReader()).thenReturn(br); - controller.saveRainyDayDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("rainyDayDictionaryDatas")); - - } catch (Exception e) { - logger.error("Exception Occured"+e); - fail("Exception: " + e); - } - - logger.info("testSaveRainyDayDictionary: exit"); - - } - - @Test - public void testRemoveRainyDayDictionary() { - logger.info("testRemoveRainyDayDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - jsonString = "{\"data\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " - + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " - + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," - + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," - + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " - + " \"policyDescription\": \"testing input\", \"ecompName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," - + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " - + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - when(request.getReader()).thenReturn(br); - controller.removeRainyDayDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("rainyDayDictionaryDatas")); - - } catch (Exception e) { - logger.error("Exception Occured"+e); - fail("Exception: " + e); - } - - logger.info("testRemoveRainyDayDictionary: exit"); - - } + try { + // mock the getReader() call + jsonString = "{\"rainyDayDictionaryData\":{\"bbid\":\"BB2\",\"workstep\":\"1\",\"userDataTypeValues\":[{\"$$hashKey\":\"object:233\",\"treatment\":\"test1\"},{\"$$hashKey\":\"object:239\",\"treatment\":\"test2\"}]},\"userid\":\"mm117s\"}"; + + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.saveRainyDayDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("rainyDayDictionaryDatas")); + + } catch (Exception e) { + logger.error("Exception Occured"+e); + fail("Exception: " + e); + } + + logger.info("testSaveRainyDayDictionary: exit"); + + } + + @Test + public void testRemoveRainyDayDictionary() { + logger.info("testRemoveRainyDayDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + jsonString = "{\"data\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " + + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " + + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," + + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," + + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " + + " \"policyDescription\": \"testing input\", \"ecompName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," + + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " + + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.removeRainyDayDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("rainyDayDictionaryDatas")); + + } catch (Exception e) { + logger.error("Exception Occured"+e); + fail("Exception: " + e); + } + + logger.info("testRemoveRainyDayDictionary: exit"); + + } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DescriptiveDictionaryControllerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DescriptiveDictionaryControllerTest.java index 5310ddc93..0950b1cfd 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DescriptiveDictionaryControllerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DescriptiveDictionaryControllerTest.java @@ -45,124 +45,124 @@ import org.onap.policy.rest.jpa.UserInfo; import org.springframework.mock.web.MockHttpServletResponse; public class DescriptiveDictionaryControllerTest { - - private static Logger logger = FlexLogger.getLogger(DescriptiveDictionaryControllerTest.class); - private static CommonClassDao commonClassDao; - private String jsonString = null; - private HttpServletRequest request = null; - private DescriptiveDictionaryController controller = null; - private MockHttpServletResponse response = null; - private UserInfo userInfo; - private List<String> data; - - @Before - public void setUp() throws Exception { - logger.info("setUp: Entering"); - commonClassDao = Mockito.mock(CommonClassDao.class); - - data = new ArrayList<>(); - data.add("Test"); - - userInfo = new UserInfo(); - userInfo.setUserLoginId("Test"); - userInfo.setUserName("Test"); - - doNothing().when(commonClassDao).delete(new DescriptiveScope()); - doNothing().when(commonClassDao).save(new DescriptiveScope()); - - controller = new DescriptiveDictionaryController(); - controller.setCommonClassDao(commonClassDao); - - request = Mockito.mock(HttpServletRequest.class); - response = new MockHttpServletResponse(); - new DictionaryUtils(commonClassDao); + + private static Logger logger = FlexLogger.getLogger(DescriptiveDictionaryControllerTest.class); + private static CommonClassDao commonClassDao; + private String jsonString = null; + private HttpServletRequest request = null; + private DescriptiveDictionaryController controller = null; + private MockHttpServletResponse response = null; + private UserInfo userInfo; + private List<String> data; + + @Before + public void setUp() throws Exception { + logger.info("setUp: Entering"); + commonClassDao = Mockito.mock(CommonClassDao.class); + + data = new ArrayList<>(); + data.add("Test"); + + userInfo = new UserInfo(); + userInfo.setUserLoginId("Test"); + userInfo.setUserName("Test"); + + doNothing().when(commonClassDao).delete(new DescriptiveScope()); + doNothing().when(commonClassDao).save(new DescriptiveScope()); + + controller = new DescriptiveDictionaryController(); + controller.setCommonClassDao(commonClassDao); + + request = Mockito.mock(HttpServletRequest.class); + response = new MockHttpServletResponse(); + new DictionaryUtils(commonClassDao); DictionaryUtils.setDictionaryUtils(new DictionaryUtils()); mock(DictionaryUtils.class); - logger.info("setUp: exit"); - } - - public List<Object> testDescriptiveScope(){ - List<Object> objectData = new ArrayList<>(); - - DescriptiveScope data = new DescriptiveScope(); - data.setId(1); - assertTrue(1 == data.getId()); - data.setScopeName("Test"); - assertTrue("Test".equals(data.getScopeName())); - data.setDescription("Test"); - assertTrue("Test".equals(data.getDescription())); - data.setSearch("Test"); - assertTrue("Test".equals(data.getSearch())); - data.setCreatedDate(new Date()); - assertTrue(data.getCreatedDate()!= null); - data.setModifiedDate(new Date()); - assertTrue(data.getModifiedDate()!= null); - data.setUserCreatedBy(userInfo); - assertTrue(data.getUserCreatedBy()!= null); - data.setUserModifiedBy(userInfo); - assertTrue(data.getUserModifiedBy()!= null); - objectData.add(data); - - return objectData; - } - - @Test - public void testGetDescriptiveDictionaryByNameEntityData(){ - when(commonClassDao.getDataByColumn(DescriptiveScope.class, "descriptiveScopeName")).thenReturn(data); - controller.getDescriptiveDictionaryByNameEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("descriptiveScopeDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetDescriptiveDictionaryEntityData(){ - when(commonClassDao.getData(DescriptiveScope.class)).thenReturn(testDescriptiveScope()); - controller.getDescriptiveDictionaryEntityData(response); - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("descriptiveScopeDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testSaveDescriptiveDictionary(){ - jsonString = "{\"descriptiveScopeDictionaryData\":{\"attributes\":[{\"$$hashKey\":\"object:257\",\"id\":\"choice1\",\"number\":\"12\",\"option\":\"test\"}],\"description\":\"test\",\"descriptiveScopeName\":\"Test\",\"search\":\"Test\"},\"userid\":\"demo\"}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveDescriptiveDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("descriptiveScopeDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testUpdateDescriptiveDictionary(){ - jsonString = "{\"descriptiveScopeDictionaryData\":{\"attributes\":[{\"$$hashKey\":\"object:257\",\"id\":\"choice1\",\"number\":\"12\",\"option\":\"test\"}],\"description\":\"test\",\"descriptiveScopeName\":\"Test\",\"id\":1,\"search\":\"Test\"},\"userid\":\"demo\"}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveDescriptiveDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("descriptiveScopeDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testRemoveDescriptiveDictionary(){ - jsonString = "{\"data\":{\"attributes\":[{\"$$hashKey\":\"object:257\",\"id\":\"choice1\",\"number\":\"12\",\"option\":\"test\"}],\"description\":\"test\",\"descriptiveScopeName\":\"Test\",\"id\":1,\"search\":\"Test\"},\"userid\":\"demo\"}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.removeDescriptiveDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("descriptiveScopeDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } + logger.info("setUp: exit"); + } + + public List<Object> testDescriptiveScope(){ + List<Object> objectData = new ArrayList<>(); + + DescriptiveScope data = new DescriptiveScope(); + data.setId(1); + assertTrue(1 == data.getId()); + data.setScopeName("Test"); + assertTrue("Test".equals(data.getScopeName())); + data.setDescription("Test"); + assertTrue("Test".equals(data.getDescription())); + data.setSearch("Test"); + assertTrue("Test".equals(data.getSearch())); + data.setCreatedDate(new Date()); + assertTrue(data.getCreatedDate()!= null); + data.setModifiedDate(new Date()); + assertTrue(data.getModifiedDate()!= null); + data.setUserCreatedBy(userInfo); + assertTrue(data.getUserCreatedBy()!= null); + data.setUserModifiedBy(userInfo); + assertTrue(data.getUserModifiedBy()!= null); + objectData.add(data); + + return objectData; + } + + @Test + public void testGetDescriptiveDictionaryByNameEntityData(){ + when(commonClassDao.getDataByColumn(DescriptiveScope.class, "descriptiveScopeName")).thenReturn(data); + controller.getDescriptiveDictionaryByNameEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("descriptiveScopeDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetDescriptiveDictionaryEntityData(){ + when(commonClassDao.getData(DescriptiveScope.class)).thenReturn(testDescriptiveScope()); + controller.getDescriptiveDictionaryEntityData(response); + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("descriptiveScopeDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testSaveDescriptiveDictionary(){ + jsonString = "{\"descriptiveScopeDictionaryData\":{\"attributes\":[{\"$$hashKey\":\"object:257\",\"id\":\"choice1\",\"number\":\"12\",\"option\":\"test\"}],\"description\":\"test\",\"descriptiveScopeName\":\"Test\",\"search\":\"Test\"},\"userid\":\"demo\"}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveDescriptiveDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("descriptiveScopeDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testUpdateDescriptiveDictionary(){ + jsonString = "{\"descriptiveScopeDictionaryData\":{\"attributes\":[{\"$$hashKey\":\"object:257\",\"id\":\"choice1\",\"number\":\"12\",\"option\":\"test\"}],\"description\":\"test\",\"descriptiveScopeName\":\"Test\",\"id\":1,\"search\":\"Test\"},\"userid\":\"demo\"}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveDescriptiveDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("descriptiveScopeDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testRemoveDescriptiveDictionary(){ + jsonString = "{\"data\":{\"attributes\":[{\"$$hashKey\":\"object:257\",\"id\":\"choice1\",\"number\":\"12\",\"option\":\"test\"}],\"description\":\"test\",\"descriptiveScopeName\":\"Test\",\"id\":1,\"search\":\"Test\"},\"userid\":\"demo\"}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.removeDescriptiveDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("descriptiveScopeDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } }
\ No newline at end of file diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DictionaryControllerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DictionaryControllerTest.java index e76ebdf12..89be75f52 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DictionaryControllerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DictionaryControllerTest.java @@ -57,16 +57,16 @@ import org.springframework.mock.web.MockHttpServletResponse; * tasks. */ public class DictionaryControllerTest { - - private static Logger logger = FlexLogger.getLogger(DictionaryControllerTest.class); - private static CommonClassDao commonClassDao; - private String jsonString = null; - private HttpServletRequest request = null; - private DictionaryController controller = null; - - @Before - public void setUp() throws Exception { - logger.info("setUp: Entering"); + + private static Logger logger = FlexLogger.getLogger(DictionaryControllerTest.class); + private static CommonClassDao commonClassDao; + private String jsonString = null; + private HttpServletRequest request = null; + private DictionaryController controller = null; + + @Before + public void setUp() throws Exception { + logger.info("setUp: Entering"); commonClassDao = Mockito.mock(CommonClassDao.class); MicroServiceModels testData = new MicroServiceModels(); @@ -86,173 +86,173 @@ public class DictionaryControllerTest { when(commonClassDao.getData(Attribute.class)).thenReturn(listId); - request = mock(HttpServletRequest.class); + request = mock(HttpServletRequest.class); controller = new DictionaryController(commonClassDao); new DictionaryUtils(commonClassDao); DictionaryUtils.setDictionaryUtils(new DictionaryUtils()); mock(DictionaryUtils.class); logger.info("setUp: exit"); - } - - @Test - public void testGetAttributeDictionaryEntityDatabyAttributeName() { - logger.info("testGetAttributeDictionaryEntityDatabyAttributeName: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - - controller.getAttributeDictionaryEntityDatabyAttributeName(response); - - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("attributeDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - - logger.info("testGetAttributeDictionaryEntityDatabyAttributeName: exit"); - } - - @Test - public void testGetAttributeDictionaryEntityData() { - logger.info("testGetAttributeDictionaryEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - - controller.getAttributeDictionaryEntityData(response); - - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("attributeDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - - logger.info("testGetAttributeDictionaryEntityData: exit"); - } - - @Test - public void testSaveAttributeDictionary() { - logger.info("testSaveAttributeDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); + } + + @Test + public void testGetAttributeDictionaryEntityDatabyAttributeName() { + logger.info("testGetAttributeDictionaryEntityDatabyAttributeName: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + controller.getAttributeDictionaryEntityDatabyAttributeName(response); + + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("attributeDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + + logger.info("testGetAttributeDictionaryEntityDatabyAttributeName: exit"); + } + + @Test + public void testGetAttributeDictionaryEntityData() { + logger.info("testGetAttributeDictionaryEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + controller.getAttributeDictionaryEntityData(response); + + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("attributeDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + + logger.info("testGetAttributeDictionaryEntityData: exit"); + } + + @Test + public void testSaveAttributeDictionary() { + logger.info("testSaveAttributeDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); - try { - jsonString = "{\"attributeDictionaryData\":{\"datatypeBean\":{\"shortName\":\"string\"},\"description\":\"Qwerty\",\"priority\":\"High\",\"userDataTypeValues\":[{\"$$hashKey\":\"object:641\",\"attributeValues\":\"test\",\"id\":\"choice1\"},{\"$$hashKey\":\"object:646\",\"attributeValues\":\"test\",\"id\":\"choice2\"}],\"xacmlId\":\"Qwerty\"},\"userid\":\"demo\"}"; - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - when(request.getReader()).thenReturn(br); - controller.saveAttributeDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("attributeDictionaryDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testSaveAttributeDictionary: exit"); - } - - @Test - public void testRemoveAttributeDictionary() { - logger.info("testRemoveAttributeDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - - try { - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"xacmlId\":\"Test\"}}"; - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - when(request.getReader()).thenReturn(br); - controller.removeAttributeDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("attributeDictionaryDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testRemoveAttributeDictionary: exit"); - } - - @Test - public void testGetOnapNameDictionaryByNameEntityData() { - logger.info("testGetOnapNameDictionaryByNameEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - - controller.getOnapNameDictionaryByNameEntityData(response); - - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("onapNameDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - - logger.info("testGetOnapNameDictionaryByNameEntityData: exit"); - } - - @Test - public void testGetOnapNameDictionaryEntityData() { - logger.info("testGetOnapNameDictionaryEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - - controller.getOnapNameDictionaryEntityData(response); - - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("onapNameDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - - logger.info("testGetOnapNameDictionaryEntityData: exit"); - } - - @Test - public void testSaveOnapDictionary() { - - logger.info("testSaveOnapDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); + try { + jsonString = "{\"attributeDictionaryData\":{\"datatypeBean\":{\"shortName\":\"string\"},\"description\":\"Qwerty\",\"priority\":\"High\",\"userDataTypeValues\":[{\"$$hashKey\":\"object:641\",\"attributeValues\":\"test\",\"id\":\"choice1\"},{\"$$hashKey\":\"object:646\",\"attributeValues\":\"test\",\"id\":\"choice2\"}],\"xacmlId\":\"Qwerty\"},\"userid\":\"demo\"}"; + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.saveAttributeDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("attributeDictionaryDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testSaveAttributeDictionary: exit"); + } + + @Test + public void testRemoveAttributeDictionary() { + logger.info("testRemoveAttributeDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"xacmlId\":\"Test\"}}"; + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.removeAttributeDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("attributeDictionaryDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testRemoveAttributeDictionary: exit"); + } + + @Test + public void testGetOnapNameDictionaryByNameEntityData() { + logger.info("testGetOnapNameDictionaryByNameEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + controller.getOnapNameDictionaryByNameEntityData(response); + + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("onapNameDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + + logger.info("testGetOnapNameDictionaryByNameEntityData: exit"); + } + + @Test + public void testGetOnapNameDictionaryEntityData() { + logger.info("testGetOnapNameDictionaryEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + controller.getOnapNameDictionaryEntityData(response); + + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("onapNameDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + + logger.info("testGetOnapNameDictionaryEntityData: exit"); + } + + @Test + public void testSaveOnapDictionary() { + + logger.info("testSaveOnapDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); - try { - jsonString = "{\"userid\":\"demo\",\"onapNameDictionaryData\":{\"description\":\"test\",\"onapName\":\"Test\"}}"; - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - when(request.getReader()).thenReturn(br); - controller.saveOnapDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("onapNameDictionaryDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testSaveOnapDictionary: exit"); - } - - @Test - public void testRemoveOnapDictionary() { - logger.info("testRemoveOnapDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - - try { - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"onapName\":\"Test\"}}"; - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - when(request.getReader()).thenReturn(br); - controller.removeOnapDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("onapNameDictionaryDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testRemoveOnapDictionary: exit"); - } + try { + jsonString = "{\"userid\":\"demo\",\"onapNameDictionaryData\":{\"description\":\"test\",\"onapName\":\"Test\"}}"; + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.saveOnapDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("onapNameDictionaryDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testSaveOnapDictionary: exit"); + } + + @Test + public void testRemoveOnapDictionary() { + logger.info("testRemoveOnapDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"onapName\":\"Test\"}}"; + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.removeOnapDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("onapNameDictionaryDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testRemoveOnapDictionary: exit"); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DictionaryImportControllerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DictionaryImportControllerTest.java index 6a28c271a..7ab1b170e 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DictionaryImportControllerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DictionaryImportControllerTest.java @@ -43,98 +43,98 @@ import org.onap.policy.rest.dao.CommonClassDao; import org.springframework.mock.web.MockHttpServletResponse; public class DictionaryImportControllerTest extends Mockito{ - - private static Logger logger = FlexLogger.getLogger(DictionaryImportController.class); - - private static CommonClassDao commonClassDao; - private HttpServletRequest request = null; - private HttpServletResponse response = null; - private DictionaryImportController controller = null; - @Before - public void setUp() throws Exception { - logger.info("setUp: Entering"); - commonClassDao = Mockito.mock(CommonClassDao.class); - doNothing().when(commonClassDao).save(new Object()); - controller = new DictionaryImportController(); - new DictionaryImportController(commonClassDao); - request = Mockito.mock(HttpServletRequest.class); - response = new MockHttpServletResponse(); - } - - @Test - public void testIsValidDictionaryName(){ - DictionaryImportController cotroller = new DictionaryImportController(); - //test invalid name - assertTrue(!cotroller.isValidDictionaryName("wrong-name")); - //test valid name - assertTrue(cotroller.isValidDictionaryName("ActionList")); - } + private static Logger logger = FlexLogger.getLogger(DictionaryImportController.class); - @Test - public void testImportDictionaryData() throws ServletException, IOException{ - List<String> fileNames = new ArrayList<>(); - fileNames.add("Attribute.csv"); - fileNames.add("ActionPolicyDictionary.csv"); - fileNames.add("OnapName.csv"); - fileNames.add("MSPolicyDictionary.csv"); - fileNames.add("OptimizationPolicyDictionary.csv"); - fileNames.add("ClosedLoopService.csv"); - fileNames.add("ClosedLoopSite.csv"); - fileNames.add("VarbindDictionary.csv"); - fileNames.add("BRMSParamDictionary.csv"); - fileNames.add("BRMSControllerDictionary.csv"); - fileNames.add("BRMSDependencyDictionary.csv"); - fileNames.add("PrefixList.csv"); - fileNames.add("SecurityZone.csv"); - fileNames.add("ServiceList.csv"); - fileNames.add("ServiceGroup.csv"); - fileNames.add("AddressGroup.csv"); - fileNames.add("ProtocolList.csv"); - fileNames.add("TermList.csv"); - fileNames.add("SearchCriteria.csv"); - fileNames.add("VNFType.csv"); - fileNames.add("VSCLAction.csv"); - fileNames.add("PEPOptions.csv"); - fileNames.add("Settings.csv"); - fileNames.add("Zone.csv"); - fileNames.add("ActionList.csv"); - for(int i =0; i < fileNames.size(); i++){ - File file = new File("src/test/resources/dictionaryImport/"+fileNames.get(i)); - try(FileInputStream targetStream = new FileInputStream(file)){ - PushPolicyControllerTest pushController = new PushPolicyControllerTest(); - when(request.getInputStream()).thenReturn(pushController.getInputStream(getBytes(targetStream))); - when(request.getParameter("userId")).thenReturn("demo"); - when(request.getParameter("dictionaryName")).thenReturn(fileNames.get(i)); - controller.importDictionaryData(request, response); - assertTrue(HttpServletResponse.SC_OK == response.getStatus()); - } catch (IOException e) { - fail(); - } - } - when(request.getParameter("dictionaryName")).thenReturn("WrongName"); - controller.importDictionaryData(request, response); - assertTrue(HttpServletResponse.SC_BAD_REQUEST == response.getStatus()); - - when(request.getParameter("dictionaryName")).thenReturn(""); - controller.importDictionaryData(request, response); - assertTrue(HttpServletResponse.SC_BAD_REQUEST == response.getStatus()); - - when(request.getInputStream()).thenReturn(null); - when(request.getParameter("dictionaryName")).thenReturn("Attribute.csv"); - controller.importDictionaryData(request, response); - assertTrue(HttpServletResponse.SC_INTERNAL_SERVER_ERROR == response.getStatus()); - } - - public static byte[] getBytes(InputStream is) throws IOException { - int len; - int size = 1024; - byte[] buf; - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - buf = new byte[size]; - while ((len = is.read(buf, 0, size)) != -1) - bos.write(buf, 0, len); - buf = bos.toByteArray(); - return buf; - } + private static CommonClassDao commonClassDao; + private HttpServletRequest request = null; + private HttpServletResponse response = null; + private DictionaryImportController controller = null; + + @Before + public void setUp() throws Exception { + logger.info("setUp: Entering"); + commonClassDao = Mockito.mock(CommonClassDao.class); + doNothing().when(commonClassDao).save(new Object()); + controller = new DictionaryImportController(); + new DictionaryImportController(commonClassDao); + request = Mockito.mock(HttpServletRequest.class); + response = new MockHttpServletResponse(); + } + + @Test + public void testIsValidDictionaryName(){ + DictionaryImportController cotroller = new DictionaryImportController(); + //test invalid name + assertTrue(!cotroller.isValidDictionaryName("wrong-name")); + //test valid name + assertTrue(cotroller.isValidDictionaryName("ActionList")); + } + + @Test + public void testImportDictionaryData() throws ServletException, IOException{ + List<String> fileNames = new ArrayList<>(); + fileNames.add("Attribute.csv"); + fileNames.add("ActionPolicyDictionary.csv"); + fileNames.add("OnapName.csv"); + fileNames.add("MSPolicyDictionary.csv"); + fileNames.add("OptimizationPolicyDictionary.csv"); + fileNames.add("ClosedLoopService.csv"); + fileNames.add("ClosedLoopSite.csv"); + fileNames.add("VarbindDictionary.csv"); + fileNames.add("BRMSParamDictionary.csv"); + fileNames.add("BRMSControllerDictionary.csv"); + fileNames.add("BRMSDependencyDictionary.csv"); + fileNames.add("PrefixList.csv"); + fileNames.add("SecurityZone.csv"); + fileNames.add("ServiceList.csv"); + fileNames.add("ServiceGroup.csv"); + fileNames.add("AddressGroup.csv"); + fileNames.add("ProtocolList.csv"); + fileNames.add("TermList.csv"); + fileNames.add("SearchCriteria.csv"); + fileNames.add("VNFType.csv"); + fileNames.add("VSCLAction.csv"); + fileNames.add("PEPOptions.csv"); + fileNames.add("Settings.csv"); + fileNames.add("Zone.csv"); + fileNames.add("ActionList.csv"); + for(int i =0; i < fileNames.size(); i++){ + File file = new File("src/test/resources/dictionaryImport/"+fileNames.get(i)); + try(FileInputStream targetStream = new FileInputStream(file)){ + PushPolicyControllerTest pushController = new PushPolicyControllerTest(); + when(request.getInputStream()).thenReturn(pushController.getInputStream(getBytes(targetStream))); + when(request.getParameter("userId")).thenReturn("demo"); + when(request.getParameter("dictionaryName")).thenReturn(fileNames.get(i)); + controller.importDictionaryData(request, response); + assertTrue(HttpServletResponse.SC_OK == response.getStatus()); + } catch (IOException e) { + fail(); + } + } + when(request.getParameter("dictionaryName")).thenReturn("WrongName"); + controller.importDictionaryData(request, response); + assertTrue(HttpServletResponse.SC_BAD_REQUEST == response.getStatus()); + + when(request.getParameter("dictionaryName")).thenReturn(""); + controller.importDictionaryData(request, response); + assertTrue(HttpServletResponse.SC_BAD_REQUEST == response.getStatus()); + + when(request.getInputStream()).thenReturn(null); + when(request.getParameter("dictionaryName")).thenReturn("Attribute.csv"); + controller.importDictionaryData(request, response); + assertTrue(HttpServletResponse.SC_INTERNAL_SERVER_ERROR == response.getStatus()); + } + + public static byte[] getBytes(InputStream is) throws IOException { + int len; + int size = 1024; + byte[] buf; + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + buf = new byte[size]; + while ((len = is.read(buf, 0, size)) != -1) + bos.write(buf, 0, len); + buf = bos.toByteArray(); + return buf; + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/FirewallDictionaryControllerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/FirewallDictionaryControllerTest.java index e305b1221..45d8466b6 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/FirewallDictionaryControllerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/FirewallDictionaryControllerTest.java @@ -62,617 +62,617 @@ import org.springframework.mock.web.MockHttpServletResponse; public class FirewallDictionaryControllerTest { - private static Logger logger = FlexLogger.getLogger(FirewallDictionaryControllerTest.class); - private static CommonClassDao commonClassDao; - private String jsonString = null; - private HttpServletRequest request = null; - private FirewallDictionaryController controller = null; - private MockHttpServletResponse response = null; - private UserInfo userInfo; - private List<String> data; - - @Before - public void setUp() throws Exception { - logger.info("setUp: Entering"); - commonClassDao = Mockito.mock(CommonClassDao.class); - - data = new ArrayList<>(); - data.add("Test"); - - userInfo = new UserInfo(); - userInfo.setUserLoginId("Test"); - userInfo.setUserName("Test"); - - doNothing().when(commonClassDao).delete(any(Term.class)); - doNothing().when(commonClassDao).save(any(Term.class)); - - controller = new FirewallDictionaryController(); - FirewallDictionaryController.setCommonClassDao(commonClassDao); - - request = Mockito.mock(HttpServletRequest.class); - response = new MockHttpServletResponse(); - new DictionaryUtils(commonClassDao); - DictionaryUtils.setDictionaryUtils(new DictionaryUtils()); - mock(DictionaryUtils.class); - logger.info("setUp: exit"); - } - - @Test - public void testGetPrefixListDictionaryEntityDataByName() { - test_WithGetDataByColumn(PrefixList.class, "prefixListDictionaryDatas", "prefixListName", - () -> controller.getPrefixListDictionaryEntityDataByName(response)); - } - - @Test - public void testGetPrefixListDictionaryEntityData() { - test_WithGetData(PrefixList.class, "prefixListDictionaryDatas", - () -> controller.getPrefixListDictionaryEntityData(response)); - } - - @Test - public void testGetPortListDictionaryEntityData() { - test_WithGetData(PortList.class, "portListDictionaryDatas", - () -> controller.getPortListDictionaryEntityData(response)); - } - - @Test - public void testGetProtocolListDictionaryEntityDataByName() { - test_WithGetDataByColumn(ProtocolList.class, "protocolListDictionaryDatas", "protocolName", - () -> controller.getProtocolListDictionaryEntityDataByName(response)); - } - - @Test - public void testGetProtocolListDictionaryEntityData() { - test_WithGetData(ProtocolList.class, "protocolListDictionaryDatas", - () -> controller.getProtocolListDictionaryEntityData(response)); - } - - @Test - public void testGetAddressGroupDictionaryEntityDataByName() { - test_WithGetDataByColumn(AddressGroup.class, "addressGroupDictionaryDatas", "name", - () -> controller.getAddressGroupDictionaryEntityDataByName(response)); - } - - @Test - public void testGetAddressGroupDictionaryEntityData() { - test_WithGetData(AddressGroup.class, "addressGroupDictionaryDatas", - () -> controller.getAddressGroupDictionaryEntityData(response)); - } - - @Test - public void testGetActionListDictionaryEntityDataByName() { - test_WithGetDataByColumn(ActionList.class, "actionListDictionaryDatas", "actionName", - () -> controller.getActionListDictionaryEntityDataByName(response)); - } - - @Test - public void testGetActionListDictionaryEntityData() { - test_WithGetData(ActionList.class, "actionListDictionaryDatas", - () -> controller.getActionListDictionaryEntityData(response)); - } - - @Test - public void testGetServiceGroupDictionaryEntityDataByName() { - test_WithGetDataByColumn(GroupServiceList.class, "serviceGroupDictionaryDatas", "name", - () -> controller.getServiceGroupDictionaryEntityDataByName(response)); - } - - @Test - public void testGetServiceGroupDictionaryEntityData() { - test_WithGetData(GroupServiceList.class, "serviceGroupDictionaryDatas", - () -> controller.getServiceGroupDictionaryEntityData(response)); - } - - @Test - public void testGetSecurityZoneDictionaryEntityDataByName() { - test_WithGetDataByColumn(SecurityZone.class, "securityZoneDictionaryDatas", "zoneName", - () -> controller.getSecurityZoneDictionaryEntityDataByName(response)); - } - - @Test - public void testGetSecurityZoneDictionaryEntityData() { - test_WithGetData(SecurityZone.class, "securityZoneDictionaryDatas", - () -> controller.getSecurityZoneDictionaryEntityData(response)); - } - - @Test - public void testGetServiceListDictionaryEntityDataByName() { - test_WithGetDataByColumn(ServiceList.class, "serviceListDictionaryDatas", "serviceName", - () -> controller.getServiceListDictionaryEntityDataByName(response)); - } - - @Test - public void testGetServiceListDictionaryEntityData() { - test_WithGetData(ServiceList.class, "serviceListDictionaryDatas", - () -> controller.getServiceListDictionaryEntityData(response)); - } - - @Test - public void testGetZoneDictionaryEntityDataByName() { - test_WithGetDataByColumn(Zone.class, "zoneDictionaryDatas", "zoneName", - () -> controller.getZoneDictionaryEntityDataByName(response)); - } - - @Test - public void testGetZoneDictionaryEntityData() { - test_WithGetData(Zone.class, "zoneDictionaryDatas", () -> controller.getZoneDictionaryEntityData(response)); - } - - @Test - public void testGetTermListDictionaryEntityDataByName() { - test_WithGetDataByColumn(TermList.class, "termListDictionaryDatas", "termName", - () -> controller.getTermListDictionaryEntityDataByName(response)); - } - - @Test - public void testGetTermListDictionaryEntityData() { - test_WithGetData(TermList.class, "termListDictionaryDatas", - () -> controller.getTermListDictionaryEntityData(response)); - } - - @Test - public void testGetFWDictListDictionaryEntityDataByName() { - test_WithGetDataByColumn(FirewallDictionaryList.class, "fwDictListDictionaryDatas", "parentItemName", - () -> controller.getFWDictListDictionaryEntityDataByName(response)); - } - - @Test - public void testGetFWDictionaryListEntityData() { - test_WithGetData(FirewallDictionaryList.class, "fwDictListDictionaryDatas", - () -> controller.getFWDictionaryListEntityData(response)); - } - - @Test - public void testGetTagPickerNameEntityDataByName() { - test_WithGetDataByColumn(FWTagPicker.class, "fwTagPickerDictionaryDatas", "tagPickerName", - () -> controller.getTagPickerNameEntityDataByName(response)); - } - - @Test - public void testGetTagPickerDictionaryEntityData() { - test_WithGetData(FWTagPicker.class, "fwTagPickerDictionaryDatas", - () -> controller.getTagPickerDictionaryEntityData(response)); - } - - @Test - public void testGetTagNameEntityDataByName() { - test_WithGetDataByColumn(FWTag.class, "fwTagDictionaryDatas", "fwTagName", - () -> controller.getTagNameEntityDataByName(response)); - } - - @Test - public void testGetTagDictionaryEntityData() { - test_WithGetData(FWTag.class, "fwTagDictionaryDatas", () -> controller.getTagDictionaryEntityData(response)); - } - - @Test - public void testSavePrefixListDictionary() { - jsonString = "{\"userid\":\"demo\",\"prefixListDictionaryData\":{\"description\":\"test\",\"prefixListName\":\"Test\"}}"; - testSave(PrefixList.class, "prefixListDictionaryDatas", "prefixListName", - () -> controller.savePrefixListDictionary(request, response)); - } - - @Test - public void testUpdatePrefixListDictionary() { - jsonString = "{\"userid\":\"demo\",\"prefixListDictionaryData\":{\"id\":1,\"description\":\"test\",\"prefixListName\":\"Test\"}}"; - testUpdate(PrefixList.class, "prefixListDictionaryDatas", "prefixListName", - () -> controller.savePrefixListDictionary(request, response)); - } - - @Test - public void testRemovePrefixListDictionary() { - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"prefixListName\":\"Test\"}}"; - testRemove(PrefixList.class, "prefixListDictionaryDatas", - () -> controller.removePrefixListDictionary(request, response)); - } - - @Test - public void testValidatePrefixListDictionary() { - jsonString = "{\"userid\":\"demo\",\"prefixListDictionaryData\":{\"id\":1,\"description\":\"test\",\"prefixListName\":\"Test\",\"prefixListValue\":\"10.10.10\"}}"; - testValidate(PrefixList.class, "result", () -> controller.validatePrefixListDictionary(request, response)); - } - - @Test - public void testSavePortListDictionary() { - jsonString = "{\"userid\":\"demo\",\"portListDictionaryData\":{\"description\":\"test\",\"portName\":\"Test\"}}"; - testSave(PortList.class, "portListDictionaryDatas", "portName", - () -> controller.savePortListDictionary(request, response)); - } - - @Test - public void testUpdatePortListDictionary() { - jsonString = "{\"userid\":\"demo\",\"portListDictionaryData\":{\"id\":1,\"description\":\"test\",\"portName\":\"Test\"}}"; - testUpdate(PortList.class, "portListDictionaryDatas", "portName", - () -> controller.savePortListDictionary(request, response)); - } - - @Test - public void testRemovePortListDictionary() { - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"portName\":\"Test\"}}"; - testRemove(PortList.class, "portListDictionaryDatas", - () -> controller.removePortListDictionary(request, response)); - } - - @Test - public void testSaveProtocolListDictionary() { - jsonString = "{\"userid\":\"demo\",\"protocolListDictionaryData\":{\"description\":\"test\",\"protocolName\":\"Test\"}}"; - testSave(ProtocolList.class, "protocolListDictionaryDatas", "protocolName", - () -> controller.saveProtocolListDictionary(request, response)); - } - - @Test - public void testUpdateProtocolListDictionary() { - jsonString = "{\"userid\":\"demo\",\"protocolListDictionaryData\":{\"id\":1,\"description\":\"test\",\"protocolName\":\"Test\"}}"; - testUpdate(ProtocolList.class, "protocolListDictionaryDatas", "protocolName", - () -> controller.saveProtocolListDictionary(request, response)); - } - - @Test - public void testRemoveProtocolListDictionary() { - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"protocolName\":\"Test\"}}"; - testRemove(ProtocolList.class, "protocolListDictionaryDatas", - () -> controller.removeProtocolListDictionary(request, response)); - } - - @Test - public void testSaveAddressGroupDictionary() { - jsonString = "{\"addressGroupDictionaryData\":{\"attributes\":[{\"$$hashKey\":\"object:409\",\"id\":\"choice1\",\"option\":\"Test\"}],\"description\":\"test\",\"groupName\":\"Test\"},\"userid\":\"demo\"}"; - testSave(AddressGroup.class, "addressGroupDictionaryDatas", "name", "Group_Test", - () -> controller.saveAddressGroupDictionary(request, response)); - } - - @Test - public void testUpdateAddressGroupDictionary() { - jsonString = "{\"addressGroupDictionaryData\":{\"id\":1, \"attributes\":[{\"$$hashKey\":\"object:409\",\"id\":\"choice1\",\"option\":\"Test\"}],\"description\":\"test\",\"groupName\":\"Test\"},\"userid\":\"demo\"}"; - testUpdate(AddressGroup.class, "addressGroupDictionaryDatas", "name", "Group_Test", - () -> controller.saveAddressGroupDictionary(request, response)); - } - - @Test - public void testRemoveAddressGroupDictionary() { - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; - testRemove(AddressGroup.class, "addressGroupDictionaryDatas", - () -> controller.removeAddressGroupDictionary(request, response)); - } - - @Test - public void testSaveActionListDictionary() { - jsonString = "{\"userid\":\"demo\",\"actionListDictionaryData\":{\"description\":\"test\",\"actionName\":\"Test\"}}"; - testSave(ActionList.class, "actionListDictionaryDatas", "actionName", - () -> controller.saveActionListDictionary(request, response)); - } - - @Test - public void testUpdateActionListDictionary() { - jsonString = "{\"userid\":\"demo\",\"actionListDictionaryData\":{\"id\":1,\"description\":\"test\",\"actionName\":\"Test\"}}"; - testUpdate(ActionList.class, "actionListDictionaryDatas", "actionName", - () -> controller.saveActionListDictionary(request, response)); - } - - @Test - public void testRemoveActionListDictionary() { - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"actionName\":\"Test\"}}"; - testRemove(ActionList.class, "actionListDictionaryDatas", - () -> controller.removeActionListDictionary(request, response)); - } - - @Test - public void testSaveServiceGroupDictionary() { - jsonString = "{\"serviceGroupDictionaryData\":{\"attributes\":[{\"$$hashKey\":\"object:657\",\"id\":\"choice1\",\"option\":\"Test\"}],\"groupName\":\"Test\"},\"userid\":\"demo\"}"; - testSave(GroupServiceList.class, "serviceGroupDictionaryDatas", "name", "Group_Test", - () -> controller.saveServiceGroupDictionary(request, response)); - } - - @Test - public void testUpdateServiceGroupDictionary() { - jsonString = "{\"serviceGroupDictionaryData\":{\"id\":1, \"attributes\":[{\"$$hashKey\":\"object:657\",\"id\":\"choice1\",\"option\":\"Test\"}],\"groupName\":\"Test\"},\"userid\":\"demo\"}"; - testUpdate(GroupServiceList.class, "serviceGroupDictionaryDatas", "name", "Group_Test", - () -> controller.saveServiceGroupDictionary(request, response)); - } - - @Test - public void testRemoveServiceGroupDictionary() { - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; - testRemove(GroupServiceList.class, "serviceGroupDictionaryDatas", - () -> controller.removeServiceGroupDictionary(request, response)); - } - - @Test - public void testSaveSecurityZoneDictionary() { - jsonString = "{\"userid\":\"demo\",\"securityZoneDictionaryData\":{\"description\":\"test\",\"zoneName\":\"Test\"}}"; - testSave(SecurityZone.class, "securityZoneDictionaryDatas", "zoneName", - () -> controller.saveSecurityZoneDictionary(request, response)); - } - - @Test - public void testUpdateSecurityZoneDictionary() { - jsonString = "{\"userid\":\"demo\",\"securityZoneDictionaryData\":{\"id\":1,\"description\":\"test\",\"zoneName\":\"Test\"}}"; - testUpdate(SecurityZone.class, "securityZoneDictionaryDatas", "zoneName", - () -> controller.saveSecurityZoneDictionary(request, response)); - } - - @Test - public void testRemoveSecurityZoneDictionary() { - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"zoneName\":\"Test\"}}"; - testRemove(SecurityZone.class, "securityZoneDictionaryDatas", - () -> controller.removeSecurityZoneDictionary(request, response)); - } - - @Test - public void testSaveServiceListDictionary() { - jsonString = "{\"serviceListDictionaryData\":{\"appProtocols\":[{\"$$hashKey\":\"object:560\",\"id\":\"choice1\",\"option\":\"Test\"}],\"serviceDescription\":\"test\",\"serviceName\":\"Test\",\"servicePorts\":\"1010\",\"transportProtocols\":[{\"$$hashKey\":\"object:555\",\"id\":\"choice1\",\"option\":\"Test\"}]},\"userid\":\"demo\"}"; - testSave(ServiceList.class, "serviceListDictionaryDatas", "serviceName", - () -> controller.saveServiceListDictionary(request, response)); - } - - @Test - public void testUpdateServiceListDictionary() { - jsonString = "{\"serviceListDictionaryData\":{\"appProtocols\":[{\"$$hashKey\":\"object:560\",\"id\":\"choice1\",\"option\":\"Test\"}],\"serviceDescription\":\"test\",\"id\":1,\"serviceName\":\"Test\",\"servicePorts\":\"1010\",\"transportProtocols\":[{\"$$hashKey\":\"object:555\",\"id\":\"choice1\",\"option\":\"Test\"}]},\"userid\":\"demo\"}"; - testUpdate(ServiceList.class, "serviceListDictionaryDatas", "serviceName", - () -> controller.saveServiceListDictionary(request, response)); - } - - @Test - public void testRemoveServiceListDictionary() { - jsonString = "{\"data\":{\"appProtocols\":[{\"$$hashKey\":\"object:560\",\"id\":\"choice1\",\"option\":\"Test\"}],\"serviceDescription\":\"test\",\"id\":1,\"serviceName\":\"Test\",\"servicePorts\":\"1010\",\"transportProtocols\":[{\"$$hashKey\":\"object:555\",\"id\":\"choice1\",\"option\":\"Test\"}]},\"userid\":\"demo\"}"; - testRemove(ServiceList.class, "serviceListDictionaryDatas", - () -> controller.removeServiceListDictionary(request, response)); - } - - @Test - public void testSaveZoneDictionary() { - jsonString = "{\"userid\":\"demo\",\"zoneDictionaryData\":{\"zoneValue\":\"test\",\"zoneName\":\"Test\"}}"; - testSave(Zone.class, "zoneDictionaryDatas", "zoneName", () -> controller.saveZoneDictionary(request, response)); - } - - @Test - public void testUpdateZoneDictionary() { - jsonString = "{\"userid\":\"demo\",\"zoneDictionaryData\":{\"id\":1,\"zoneValue\":\"test\",\"zoneName\":\"Test\"}}"; - testUpdate(Zone.class, "zoneDictionaryDatas", "zoneName", - () -> controller.saveZoneDictionary(request, response)); - } - - @Test - public void testRemoveZoneDictionary() { - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"zoneValue\":\"test\",\"zoneName\":\"Test\"}}"; - testRemove(Zone.class, "zoneDictionaryDatas", () -> controller.removeZoneDictionary(request, response)); - } - - @Test - public void testSaveTermListDictionary() { - jsonString = "{\"termListDictionaryData\":{\"actionListDatas\":[{\"$$hashKey\":\"object:1220\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"destinationListDatas\":[{\"$$hashKey\":\"object:1220\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"destinationServiceDatas\":[{\"$$hashKey\":\"object:1230\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"fromZoneDatas\":[{\"$$hashKey\":\"object:1245\",\"id\":\"choice1\",\"option\":\"Test\"}],\"sourceListDatas\":[{\"$$hashKey\":\"object:1215\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"sourceServiceDatas\":[{\"$$hashKey\":\"object:1225\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"termDescription\":\"test\",\"termName\":\"Test\",\"toZoneDatas\":[{\"$$hashKey\":\"object:1240\",\"id\":\"choice1\",\"option\":\"Test\"}]},\"userid\":\"demo\"}"; - testSave(TermList.class, "termListDictionaryDatas", "termName", - () -> controller.saveTermListDictionary(request, response)); - } - - @Test - public void testUpdateTermListDictionary() { - jsonString = "{\"termListDictionaryData\":{\"id\":1,\"actionListDatas\":[{\"$$hashKey\":\"object:1220\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"destinationListDatas\":[{\"$$hashKey\":\"object:1220\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"destinationServiceDatas\":[{\"$$hashKey\":\"object:1230\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"fromZoneDatas\":[{\"$$hashKey\":\"object:1245\",\"id\":\"choice1\",\"option\":\"Test\"}],\"sourceListDatas\":[{\"$$hashKey\":\"object:1215\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"sourceServiceDatas\":[{\"$$hashKey\":\"object:1225\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"termDescription\":\"test\",\"termName\":\"Test\",\"toZoneDatas\":[{\"$$hashKey\":\"object:1240\",\"id\":\"choice1\",\"option\":\"Test\"}]},\"userid\":\"demo\"}"; - testUpdate(TermList.class, "termListDictionaryDatas", "termName", - () -> controller.saveTermListDictionary(request, response)); - } - - @Test - public void testRemoveTermListDictionary() { - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"termDescription\":\"test\",\"termName\":\"Test\"}}"; - testRemove(TermList.class, "termListDictionaryDatas", - () -> controller.removeTermListDictionary(request, response)); - } - - @Test - public void testSaveFWDictionaryList() { - jsonString = "{\"fwDictListDictionaryData\":{\"alAttributes\":[{\"$$hashKey\":\"object:1379\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"attributes\":[{\"$$hashKey\":\"object:1374\",\"id\":\"choice1\",\"option\":\"Test\"}],\"description\":\"test\",\"parentItemName\":\"Test\"},\"userid\":\"demo\"}"; - testSave(FirewallDictionaryList.class, "fwDictListDictionaryDatas", "parentItemName", - () -> controller.saveFWDictionaryList(request, response)); - } - - @Test - public void testUpdateFWDictionaryList() { - jsonString = "{\"fwDictListDictionaryData\":{\"id\":1,\"alAttributes\":[{\"$$hashKey\":\"object:1379\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"attributes\":[{\"$$hashKey\":\"object:1374\",\"id\":\"choice1\",\"option\":\"Test\"}],\"description\":\"test\",\"parentItemName\":\"Test\"},\"userid\":\"demo\"}"; - testUpdate(FirewallDictionaryList.class, "fwDictListDictionaryDatas", "parentItemName", - () -> controller.saveFWDictionaryList(request, response)); - } - - @Test - public void testRemoveFWDictionaryList() { - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"parentItemName\":\"Test\"}}"; - testRemove(FirewallDictionaryList.class, "fwDictListDictionaryDatas", - () -> controller.removeFWDictionaryList(request, response)); - } - - @Test - public void testSaveFirewallTagPickerDictionary() { - jsonString = "{\"fwTagPickerDictionaryData\":{\"description\":\"test\",\"networkRole\":\"test\",\"tagPickerName\":\"Test\",\"tags\":[{\"$$hashKey\":\"object:1855\",\"id\":\"choice1\",\"number\":\"test\",\"option\":\"Test\"}]},\"userid\":\"demo\"}"; - testSave(FWTagPicker.class, "fwTagPickerDictionaryDatas", "tagPickerName", - () -> controller.saveFirewallTagPickerDictionary(request, response)); - } - - @Test - public void testUpdateFirewallTagPickerDictionary() { - jsonString = "{\"fwTagPickerDictionaryData\":{\"id\":1,\"description\":\"test\",\"networkRole\":\"test\",\"tagPickerName\":\"Test\",\"tags\":[{\"$$hashKey\":\"object:1855\",\"id\":\"choice1\",\"number\":\"test\",\"option\":\"Test\"}]},\"userid\":\"demo\"}"; - testUpdate(FWTagPicker.class, "fwTagPickerDictionaryDatas", "tagPickerName", - () -> controller.saveFirewallTagPickerDictionary(request, response)); - } - - @Test - public void testRemoveFirewallTagPickerDictionary() { - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"tagPickerName\":\"Test\"}}"; - testRemove(FWTagPicker.class, "fwTagPickerDictionaryDatas", - () -> controller.removeFirewallTagPickerDictionary(request, response)); - } - - @Test - public void testSaveFirewallTagDictionary() { - jsonString = "{\"fwTagDictionaryData\":{\"description\":\"test\",\"fwTagName\":\"Test\",\"tags\":[{\"$$hashKey\":\"object:1690\",\"id\":\"choice1\",\"tags\":\"test\"}]},\"userid\":\"demo\"}"; - testSave(FWTag.class, "fwTagDictionaryDatas", "fwTagName", - () -> controller.saveFirewallTagDictionary(request, response)); - } - - @Test - public void testUpdateFirewallTagDictionary() { - jsonString = "{\"fwTagDictionaryData\":{\"id\":1,\"description\":\"test\",\"fwTagName\":\"Test\",\"tags\":[{\"$$hashKey\":\"object:1690\",\"id\":\"choice1\",\"tags\":\"test\"}]},\"userid\":\"demo\"}"; - testUpdate(FWTag.class, "fwTagDictionaryDatas", "fwTagName", - () -> controller.saveFirewallTagDictionary(request, response)); - } - - @Test - public void testRemoveFirewallTagDictionary() { - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"fwTagName\":\"Test\"}}"; - testRemove(FWTag.class, "fwTagDictionaryDatas", - () -> controller.removeFirewallTagDictionary(request, response)); - } - - /** - * Tests a "get" function that uses commonClassDao.getDataByColumn(). - * - * @param clazz - * @param contentData - * @param contentName - * @param func - */ - private void test_WithGetDataByColumn(Class<?> clazz, String contentData, String contentName, VoidFunc func) { - when(commonClassDao.getDataByColumn(clazz, contentName)).thenReturn(data); - try { - func.apply(); - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains(contentData)); - verify(commonClassDao).getDataByColumn(clazz, contentName); - } catch (Exception e) { - fail("get " + clazz.getName() + e); - } - } - - /** - * Tests a "get" function that uses commonClassDao.getData(). - * - * @param clazz - * @param contentData - * @param contentName - * @param func - */ - private void test_WithGetData(Class<?> clazz, String contentData, VoidFunc func) { - when(commonClassDao.getData(clazz)).thenReturn(new ArrayList<>()); - try { - func.apply(); - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains(contentData)); - verify(commonClassDao).getData(clazz); - } catch (Exception e) { - fail("get " + clazz.getName() + e); - } - } - - /** - * Tests a function that uses commonClassDao.save(). - * - * @param clazz - * @param contentData - * @param contentName - * @param func - */ - private void testSave(Class<?> clazz, String contentData, String contentName, VoidFunc func) { - testSave(clazz, contentData, contentName, "Test", func); - } - - /** - * Tests a function that uses commonClassDao.save(). - * - * @param clazz - * @param contentData - * @param contentName - * @param testName - * @param func - */ - private void testSave(Class<?> clazz, String contentData, String contentName, String testName, VoidFunc func) { - try (BufferedReader br = new BufferedReader(new StringReader(jsonString))) { - when(request.getReader()).thenReturn(br); - func.apply(); - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains(contentData)); - verify(commonClassDao).checkDuplicateEntry(testName, contentName, clazz); - verify(commonClassDao).save(any()); - verify(commonClassDao, never()).update(any()); - verify(commonClassDao).getData(clazz); - - } catch (IOException e) { - fail("save " + clazz.getName() + e); - } - } - - /** - * Tests a function that uses commonClassDao.update(). - * - * @param clazz - * @param contentData - * @param contentName - * @param func - */ - private void testUpdate(Class<?> clazz, String contentData, String contentName, VoidFunc func) { - testUpdate(clazz, contentData, contentName, "Test", func); - } - - /** - * Tests a function that uses commonClassDao.update(). - * - * @param clazz - * @param contentData - * @param contentName - * @param testName - * @param func - */ - private void testUpdate(Class<?> clazz, String contentData, String contentName, String testName, VoidFunc func) { - try (BufferedReader br = new BufferedReader(new StringReader(jsonString))) { - when(request.getReader()).thenReturn(br); - func.apply(); - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains(contentData)); - verify(commonClassDao).checkDuplicateEntry(testName, contentName, clazz); - verify(commonClassDao, never()).save(any()); - verify(commonClassDao).update(any()); - verify(commonClassDao).getData(clazz); - - } catch (IOException e) { - fail("update " + clazz.getName() + e); - } - } - - /** - * Tests a function that uses commonClassDao.delete() and - * commonClassDao.getData(). - * - * @param clazz - * @param contentData - * @param func - */ - private void testRemove(Class<?> clazz, String contentData, VoidFunc func) { - try (BufferedReader br = new BufferedReader(new StringReader(jsonString))) { - when(request.getReader()).thenReturn(br); - func.apply(); - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains(contentData)); - verify(commonClassDao).delete(any()); - verify(commonClassDao).getData(clazz); - - } catch (IOException e) { - fail("remove " + clazz.getName() + e); - } - } - - /** - * Tests a "validate" function. - * - * @param clazz - * @param contentData - * @param func - */ - private void testValidate(Class<?> clazz, String contentData, VoidFunc func) { - try (BufferedReader br = new BufferedReader(new StringReader(jsonString))) { - when(request.getReader()).thenReturn(br); - func.apply(); - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains(contentData)); - - } catch (IOException e) { - fail("save " + clazz.getName() + e); - } - } - - @FunctionalInterface - private static interface VoidFunc { - public void apply() throws IOException; - } + private static Logger logger = FlexLogger.getLogger(FirewallDictionaryControllerTest.class); + private static CommonClassDao commonClassDao; + private String jsonString = null; + private HttpServletRequest request = null; + private FirewallDictionaryController controller = null; + private MockHttpServletResponse response = null; + private UserInfo userInfo; + private List<String> data; + + @Before + public void setUp() throws Exception { + logger.info("setUp: Entering"); + commonClassDao = Mockito.mock(CommonClassDao.class); + + data = new ArrayList<>(); + data.add("Test"); + + userInfo = new UserInfo(); + userInfo.setUserLoginId("Test"); + userInfo.setUserName("Test"); + + doNothing().when(commonClassDao).delete(any(Term.class)); + doNothing().when(commonClassDao).save(any(Term.class)); + + controller = new FirewallDictionaryController(); + FirewallDictionaryController.setCommonClassDao(commonClassDao); + + request = Mockito.mock(HttpServletRequest.class); + response = new MockHttpServletResponse(); + new DictionaryUtils(commonClassDao); + DictionaryUtils.setDictionaryUtils(new DictionaryUtils()); + mock(DictionaryUtils.class); + logger.info("setUp: exit"); + } + + @Test + public void testGetPrefixListDictionaryEntityDataByName() { + test_WithGetDataByColumn(PrefixList.class, "prefixListDictionaryDatas", "prefixListName", + () -> controller.getPrefixListDictionaryEntityDataByName(response)); + } + + @Test + public void testGetPrefixListDictionaryEntityData() { + test_WithGetData(PrefixList.class, "prefixListDictionaryDatas", + () -> controller.getPrefixListDictionaryEntityData(response)); + } + + @Test + public void testGetPortListDictionaryEntityData() { + test_WithGetData(PortList.class, "portListDictionaryDatas", + () -> controller.getPortListDictionaryEntityData(response)); + } + + @Test + public void testGetProtocolListDictionaryEntityDataByName() { + test_WithGetDataByColumn(ProtocolList.class, "protocolListDictionaryDatas", "protocolName", + () -> controller.getProtocolListDictionaryEntityDataByName(response)); + } + + @Test + public void testGetProtocolListDictionaryEntityData() { + test_WithGetData(ProtocolList.class, "protocolListDictionaryDatas", + () -> controller.getProtocolListDictionaryEntityData(response)); + } + + @Test + public void testGetAddressGroupDictionaryEntityDataByName() { + test_WithGetDataByColumn(AddressGroup.class, "addressGroupDictionaryDatas", "name", + () -> controller.getAddressGroupDictionaryEntityDataByName(response)); + } + + @Test + public void testGetAddressGroupDictionaryEntityData() { + test_WithGetData(AddressGroup.class, "addressGroupDictionaryDatas", + () -> controller.getAddressGroupDictionaryEntityData(response)); + } + + @Test + public void testGetActionListDictionaryEntityDataByName() { + test_WithGetDataByColumn(ActionList.class, "actionListDictionaryDatas", "actionName", + () -> controller.getActionListDictionaryEntityDataByName(response)); + } + + @Test + public void testGetActionListDictionaryEntityData() { + test_WithGetData(ActionList.class, "actionListDictionaryDatas", + () -> controller.getActionListDictionaryEntityData(response)); + } + + @Test + public void testGetServiceGroupDictionaryEntityDataByName() { + test_WithGetDataByColumn(GroupServiceList.class, "serviceGroupDictionaryDatas", "name", + () -> controller.getServiceGroupDictionaryEntityDataByName(response)); + } + + @Test + public void testGetServiceGroupDictionaryEntityData() { + test_WithGetData(GroupServiceList.class, "serviceGroupDictionaryDatas", + () -> controller.getServiceGroupDictionaryEntityData(response)); + } + + @Test + public void testGetSecurityZoneDictionaryEntityDataByName() { + test_WithGetDataByColumn(SecurityZone.class, "securityZoneDictionaryDatas", "zoneName", + () -> controller.getSecurityZoneDictionaryEntityDataByName(response)); + } + + @Test + public void testGetSecurityZoneDictionaryEntityData() { + test_WithGetData(SecurityZone.class, "securityZoneDictionaryDatas", + () -> controller.getSecurityZoneDictionaryEntityData(response)); + } + + @Test + public void testGetServiceListDictionaryEntityDataByName() { + test_WithGetDataByColumn(ServiceList.class, "serviceListDictionaryDatas", "serviceName", + () -> controller.getServiceListDictionaryEntityDataByName(response)); + } + + @Test + public void testGetServiceListDictionaryEntityData() { + test_WithGetData(ServiceList.class, "serviceListDictionaryDatas", + () -> controller.getServiceListDictionaryEntityData(response)); + } + + @Test + public void testGetZoneDictionaryEntityDataByName() { + test_WithGetDataByColumn(Zone.class, "zoneDictionaryDatas", "zoneName", + () -> controller.getZoneDictionaryEntityDataByName(response)); + } + + @Test + public void testGetZoneDictionaryEntityData() { + test_WithGetData(Zone.class, "zoneDictionaryDatas", () -> controller.getZoneDictionaryEntityData(response)); + } + + @Test + public void testGetTermListDictionaryEntityDataByName() { + test_WithGetDataByColumn(TermList.class, "termListDictionaryDatas", "termName", + () -> controller.getTermListDictionaryEntityDataByName(response)); + } + + @Test + public void testGetTermListDictionaryEntityData() { + test_WithGetData(TermList.class, "termListDictionaryDatas", + () -> controller.getTermListDictionaryEntityData(response)); + } + + @Test + public void testGetFWDictListDictionaryEntityDataByName() { + test_WithGetDataByColumn(FirewallDictionaryList.class, "fwDictListDictionaryDatas", "parentItemName", + () -> controller.getFWDictListDictionaryEntityDataByName(response)); + } + + @Test + public void testGetFWDictionaryListEntityData() { + test_WithGetData(FirewallDictionaryList.class, "fwDictListDictionaryDatas", + () -> controller.getFWDictionaryListEntityData(response)); + } + + @Test + public void testGetTagPickerNameEntityDataByName() { + test_WithGetDataByColumn(FWTagPicker.class, "fwTagPickerDictionaryDatas", "tagPickerName", + () -> controller.getTagPickerNameEntityDataByName(response)); + } + + @Test + public void testGetTagPickerDictionaryEntityData() { + test_WithGetData(FWTagPicker.class, "fwTagPickerDictionaryDatas", + () -> controller.getTagPickerDictionaryEntityData(response)); + } + + @Test + public void testGetTagNameEntityDataByName() { + test_WithGetDataByColumn(FWTag.class, "fwTagDictionaryDatas", "fwTagName", + () -> controller.getTagNameEntityDataByName(response)); + } + + @Test + public void testGetTagDictionaryEntityData() { + test_WithGetData(FWTag.class, "fwTagDictionaryDatas", () -> controller.getTagDictionaryEntityData(response)); + } + + @Test + public void testSavePrefixListDictionary() { + jsonString = "{\"userid\":\"demo\",\"prefixListDictionaryData\":{\"description\":\"test\",\"prefixListName\":\"Test\"}}"; + testSave(PrefixList.class, "prefixListDictionaryDatas", "prefixListName", + () -> controller.savePrefixListDictionary(request, response)); + } + + @Test + public void testUpdatePrefixListDictionary() { + jsonString = "{\"userid\":\"demo\",\"prefixListDictionaryData\":{\"id\":1,\"description\":\"test\",\"prefixListName\":\"Test\"}}"; + testUpdate(PrefixList.class, "prefixListDictionaryDatas", "prefixListName", + () -> controller.savePrefixListDictionary(request, response)); + } + + @Test + public void testRemovePrefixListDictionary() { + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"prefixListName\":\"Test\"}}"; + testRemove(PrefixList.class, "prefixListDictionaryDatas", + () -> controller.removePrefixListDictionary(request, response)); + } + + @Test + public void testValidatePrefixListDictionary() { + jsonString = "{\"userid\":\"demo\",\"prefixListDictionaryData\":{\"id\":1,\"description\":\"test\",\"prefixListName\":\"Test\",\"prefixListValue\":\"10.10.10\"}}"; + testValidate(PrefixList.class, "result", () -> controller.validatePrefixListDictionary(request, response)); + } + + @Test + public void testSavePortListDictionary() { + jsonString = "{\"userid\":\"demo\",\"portListDictionaryData\":{\"description\":\"test\",\"portName\":\"Test\"}}"; + testSave(PortList.class, "portListDictionaryDatas", "portName", + () -> controller.savePortListDictionary(request, response)); + } + + @Test + public void testUpdatePortListDictionary() { + jsonString = "{\"userid\":\"demo\",\"portListDictionaryData\":{\"id\":1,\"description\":\"test\",\"portName\":\"Test\"}}"; + testUpdate(PortList.class, "portListDictionaryDatas", "portName", + () -> controller.savePortListDictionary(request, response)); + } + + @Test + public void testRemovePortListDictionary() { + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"portName\":\"Test\"}}"; + testRemove(PortList.class, "portListDictionaryDatas", + () -> controller.removePortListDictionary(request, response)); + } + + @Test + public void testSaveProtocolListDictionary() { + jsonString = "{\"userid\":\"demo\",\"protocolListDictionaryData\":{\"description\":\"test\",\"protocolName\":\"Test\"}}"; + testSave(ProtocolList.class, "protocolListDictionaryDatas", "protocolName", + () -> controller.saveProtocolListDictionary(request, response)); + } + + @Test + public void testUpdateProtocolListDictionary() { + jsonString = "{\"userid\":\"demo\",\"protocolListDictionaryData\":{\"id\":1,\"description\":\"test\",\"protocolName\":\"Test\"}}"; + testUpdate(ProtocolList.class, "protocolListDictionaryDatas", "protocolName", + () -> controller.saveProtocolListDictionary(request, response)); + } + + @Test + public void testRemoveProtocolListDictionary() { + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"protocolName\":\"Test\"}}"; + testRemove(ProtocolList.class, "protocolListDictionaryDatas", + () -> controller.removeProtocolListDictionary(request, response)); + } + + @Test + public void testSaveAddressGroupDictionary() { + jsonString = "{\"addressGroupDictionaryData\":{\"attributes\":[{\"$$hashKey\":\"object:409\",\"id\":\"choice1\",\"option\":\"Test\"}],\"description\":\"test\",\"groupName\":\"Test\"},\"userid\":\"demo\"}"; + testSave(AddressGroup.class, "addressGroupDictionaryDatas", "name", "Group_Test", + () -> controller.saveAddressGroupDictionary(request, response)); + } + + @Test + public void testUpdateAddressGroupDictionary() { + jsonString = "{\"addressGroupDictionaryData\":{\"id\":1, \"attributes\":[{\"$$hashKey\":\"object:409\",\"id\":\"choice1\",\"option\":\"Test\"}],\"description\":\"test\",\"groupName\":\"Test\"},\"userid\":\"demo\"}"; + testUpdate(AddressGroup.class, "addressGroupDictionaryDatas", "name", "Group_Test", + () -> controller.saveAddressGroupDictionary(request, response)); + } + + @Test + public void testRemoveAddressGroupDictionary() { + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; + testRemove(AddressGroup.class, "addressGroupDictionaryDatas", + () -> controller.removeAddressGroupDictionary(request, response)); + } + + @Test + public void testSaveActionListDictionary() { + jsonString = "{\"userid\":\"demo\",\"actionListDictionaryData\":{\"description\":\"test\",\"actionName\":\"Test\"}}"; + testSave(ActionList.class, "actionListDictionaryDatas", "actionName", + () -> controller.saveActionListDictionary(request, response)); + } + + @Test + public void testUpdateActionListDictionary() { + jsonString = "{\"userid\":\"demo\",\"actionListDictionaryData\":{\"id\":1,\"description\":\"test\",\"actionName\":\"Test\"}}"; + testUpdate(ActionList.class, "actionListDictionaryDatas", "actionName", + () -> controller.saveActionListDictionary(request, response)); + } + + @Test + public void testRemoveActionListDictionary() { + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"actionName\":\"Test\"}}"; + testRemove(ActionList.class, "actionListDictionaryDatas", + () -> controller.removeActionListDictionary(request, response)); + } + + @Test + public void testSaveServiceGroupDictionary() { + jsonString = "{\"serviceGroupDictionaryData\":{\"attributes\":[{\"$$hashKey\":\"object:657\",\"id\":\"choice1\",\"option\":\"Test\"}],\"groupName\":\"Test\"},\"userid\":\"demo\"}"; + testSave(GroupServiceList.class, "serviceGroupDictionaryDatas", "name", "Group_Test", + () -> controller.saveServiceGroupDictionary(request, response)); + } + + @Test + public void testUpdateServiceGroupDictionary() { + jsonString = "{\"serviceGroupDictionaryData\":{\"id\":1, \"attributes\":[{\"$$hashKey\":\"object:657\",\"id\":\"choice1\",\"option\":\"Test\"}],\"groupName\":\"Test\"},\"userid\":\"demo\"}"; + testUpdate(GroupServiceList.class, "serviceGroupDictionaryDatas", "name", "Group_Test", + () -> controller.saveServiceGroupDictionary(request, response)); + } + + @Test + public void testRemoveServiceGroupDictionary() { + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; + testRemove(GroupServiceList.class, "serviceGroupDictionaryDatas", + () -> controller.removeServiceGroupDictionary(request, response)); + } + + @Test + public void testSaveSecurityZoneDictionary() { + jsonString = "{\"userid\":\"demo\",\"securityZoneDictionaryData\":{\"description\":\"test\",\"zoneName\":\"Test\"}}"; + testSave(SecurityZone.class, "securityZoneDictionaryDatas", "zoneName", + () -> controller.saveSecurityZoneDictionary(request, response)); + } + + @Test + public void testUpdateSecurityZoneDictionary() { + jsonString = "{\"userid\":\"demo\",\"securityZoneDictionaryData\":{\"id\":1,\"description\":\"test\",\"zoneName\":\"Test\"}}"; + testUpdate(SecurityZone.class, "securityZoneDictionaryDatas", "zoneName", + () -> controller.saveSecurityZoneDictionary(request, response)); + } + + @Test + public void testRemoveSecurityZoneDictionary() { + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"zoneName\":\"Test\"}}"; + testRemove(SecurityZone.class, "securityZoneDictionaryDatas", + () -> controller.removeSecurityZoneDictionary(request, response)); + } + + @Test + public void testSaveServiceListDictionary() { + jsonString = "{\"serviceListDictionaryData\":{\"appProtocols\":[{\"$$hashKey\":\"object:560\",\"id\":\"choice1\",\"option\":\"Test\"}],\"serviceDescription\":\"test\",\"serviceName\":\"Test\",\"servicePorts\":\"1010\",\"transportProtocols\":[{\"$$hashKey\":\"object:555\",\"id\":\"choice1\",\"option\":\"Test\"}]},\"userid\":\"demo\"}"; + testSave(ServiceList.class, "serviceListDictionaryDatas", "serviceName", + () -> controller.saveServiceListDictionary(request, response)); + } + + @Test + public void testUpdateServiceListDictionary() { + jsonString = "{\"serviceListDictionaryData\":{\"appProtocols\":[{\"$$hashKey\":\"object:560\",\"id\":\"choice1\",\"option\":\"Test\"}],\"serviceDescription\":\"test\",\"id\":1,\"serviceName\":\"Test\",\"servicePorts\":\"1010\",\"transportProtocols\":[{\"$$hashKey\":\"object:555\",\"id\":\"choice1\",\"option\":\"Test\"}]},\"userid\":\"demo\"}"; + testUpdate(ServiceList.class, "serviceListDictionaryDatas", "serviceName", + () -> controller.saveServiceListDictionary(request, response)); + } + + @Test + public void testRemoveServiceListDictionary() { + jsonString = "{\"data\":{\"appProtocols\":[{\"$$hashKey\":\"object:560\",\"id\":\"choice1\",\"option\":\"Test\"}],\"serviceDescription\":\"test\",\"id\":1,\"serviceName\":\"Test\",\"servicePorts\":\"1010\",\"transportProtocols\":[{\"$$hashKey\":\"object:555\",\"id\":\"choice1\",\"option\":\"Test\"}]},\"userid\":\"demo\"}"; + testRemove(ServiceList.class, "serviceListDictionaryDatas", + () -> controller.removeServiceListDictionary(request, response)); + } + + @Test + public void testSaveZoneDictionary() { + jsonString = "{\"userid\":\"demo\",\"zoneDictionaryData\":{\"zoneValue\":\"test\",\"zoneName\":\"Test\"}}"; + testSave(Zone.class, "zoneDictionaryDatas", "zoneName", () -> controller.saveZoneDictionary(request, response)); + } + + @Test + public void testUpdateZoneDictionary() { + jsonString = "{\"userid\":\"demo\",\"zoneDictionaryData\":{\"id\":1,\"zoneValue\":\"test\",\"zoneName\":\"Test\"}}"; + testUpdate(Zone.class, "zoneDictionaryDatas", "zoneName", + () -> controller.saveZoneDictionary(request, response)); + } + + @Test + public void testRemoveZoneDictionary() { + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"zoneValue\":\"test\",\"zoneName\":\"Test\"}}"; + testRemove(Zone.class, "zoneDictionaryDatas", () -> controller.removeZoneDictionary(request, response)); + } + + @Test + public void testSaveTermListDictionary() { + jsonString = "{\"termListDictionaryData\":{\"actionListDatas\":[{\"$$hashKey\":\"object:1220\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"destinationListDatas\":[{\"$$hashKey\":\"object:1220\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"destinationServiceDatas\":[{\"$$hashKey\":\"object:1230\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"fromZoneDatas\":[{\"$$hashKey\":\"object:1245\",\"id\":\"choice1\",\"option\":\"Test\"}],\"sourceListDatas\":[{\"$$hashKey\":\"object:1215\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"sourceServiceDatas\":[{\"$$hashKey\":\"object:1225\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"termDescription\":\"test\",\"termName\":\"Test\",\"toZoneDatas\":[{\"$$hashKey\":\"object:1240\",\"id\":\"choice1\",\"option\":\"Test\"}]},\"userid\":\"demo\"}"; + testSave(TermList.class, "termListDictionaryDatas", "termName", + () -> controller.saveTermListDictionary(request, response)); + } + + @Test + public void testUpdateTermListDictionary() { + jsonString = "{\"termListDictionaryData\":{\"id\":1,\"actionListDatas\":[{\"$$hashKey\":\"object:1220\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"destinationListDatas\":[{\"$$hashKey\":\"object:1220\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"destinationServiceDatas\":[{\"$$hashKey\":\"object:1230\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"fromZoneDatas\":[{\"$$hashKey\":\"object:1245\",\"id\":\"choice1\",\"option\":\"Test\"}],\"sourceListDatas\":[{\"$$hashKey\":\"object:1215\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"sourceServiceDatas\":[{\"$$hashKey\":\"object:1225\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"termDescription\":\"test\",\"termName\":\"Test\",\"toZoneDatas\":[{\"$$hashKey\":\"object:1240\",\"id\":\"choice1\",\"option\":\"Test\"}]},\"userid\":\"demo\"}"; + testUpdate(TermList.class, "termListDictionaryDatas", "termName", + () -> controller.saveTermListDictionary(request, response)); + } + + @Test + public void testRemoveTermListDictionary() { + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"termDescription\":\"test\",\"termName\":\"Test\"}}"; + testRemove(TermList.class, "termListDictionaryDatas", + () -> controller.removeTermListDictionary(request, response)); + } + + @Test + public void testSaveFWDictionaryList() { + jsonString = "{\"fwDictListDictionaryData\":{\"alAttributes\":[{\"$$hashKey\":\"object:1379\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"attributes\":[{\"$$hashKey\":\"object:1374\",\"id\":\"choice1\",\"option\":\"Test\"}],\"description\":\"test\",\"parentItemName\":\"Test\"},\"userid\":\"demo\"}"; + testSave(FirewallDictionaryList.class, "fwDictListDictionaryDatas", "parentItemName", + () -> controller.saveFWDictionaryList(request, response)); + } + + @Test + public void testUpdateFWDictionaryList() { + jsonString = "{\"fwDictListDictionaryData\":{\"id\":1,\"alAttributes\":[{\"$$hashKey\":\"object:1379\",\"id\":\"choice1\",\"option\":\"Group_Test\"}],\"attributes\":[{\"$$hashKey\":\"object:1374\",\"id\":\"choice1\",\"option\":\"Test\"}],\"description\":\"test\",\"parentItemName\":\"Test\"},\"userid\":\"demo\"}"; + testUpdate(FirewallDictionaryList.class, "fwDictListDictionaryDatas", "parentItemName", + () -> controller.saveFWDictionaryList(request, response)); + } + + @Test + public void testRemoveFWDictionaryList() { + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"parentItemName\":\"Test\"}}"; + testRemove(FirewallDictionaryList.class, "fwDictListDictionaryDatas", + () -> controller.removeFWDictionaryList(request, response)); + } + + @Test + public void testSaveFirewallTagPickerDictionary() { + jsonString = "{\"fwTagPickerDictionaryData\":{\"description\":\"test\",\"networkRole\":\"test\",\"tagPickerName\":\"Test\",\"tags\":[{\"$$hashKey\":\"object:1855\",\"id\":\"choice1\",\"number\":\"test\",\"option\":\"Test\"}]},\"userid\":\"demo\"}"; + testSave(FWTagPicker.class, "fwTagPickerDictionaryDatas", "tagPickerName", + () -> controller.saveFirewallTagPickerDictionary(request, response)); + } + + @Test + public void testUpdateFirewallTagPickerDictionary() { + jsonString = "{\"fwTagPickerDictionaryData\":{\"id\":1,\"description\":\"test\",\"networkRole\":\"test\",\"tagPickerName\":\"Test\",\"tags\":[{\"$$hashKey\":\"object:1855\",\"id\":\"choice1\",\"number\":\"test\",\"option\":\"Test\"}]},\"userid\":\"demo\"}"; + testUpdate(FWTagPicker.class, "fwTagPickerDictionaryDatas", "tagPickerName", + () -> controller.saveFirewallTagPickerDictionary(request, response)); + } + + @Test + public void testRemoveFirewallTagPickerDictionary() { + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"tagPickerName\":\"Test\"}}"; + testRemove(FWTagPicker.class, "fwTagPickerDictionaryDatas", + () -> controller.removeFirewallTagPickerDictionary(request, response)); + } + + @Test + public void testSaveFirewallTagDictionary() { + jsonString = "{\"fwTagDictionaryData\":{\"description\":\"test\",\"fwTagName\":\"Test\",\"tags\":[{\"$$hashKey\":\"object:1690\",\"id\":\"choice1\",\"tags\":\"test\"}]},\"userid\":\"demo\"}"; + testSave(FWTag.class, "fwTagDictionaryDatas", "fwTagName", + () -> controller.saveFirewallTagDictionary(request, response)); + } + + @Test + public void testUpdateFirewallTagDictionary() { + jsonString = "{\"fwTagDictionaryData\":{\"id\":1,\"description\":\"test\",\"fwTagName\":\"Test\",\"tags\":[{\"$$hashKey\":\"object:1690\",\"id\":\"choice1\",\"tags\":\"test\"}]},\"userid\":\"demo\"}"; + testUpdate(FWTag.class, "fwTagDictionaryDatas", "fwTagName", + () -> controller.saveFirewallTagDictionary(request, response)); + } + + @Test + public void testRemoveFirewallTagDictionary() { + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"fwTagName\":\"Test\"}}"; + testRemove(FWTag.class, "fwTagDictionaryDatas", + () -> controller.removeFirewallTagDictionary(request, response)); + } + + /** + * Tests a "get" function that uses commonClassDao.getDataByColumn(). + * + * @param clazz + * @param contentData + * @param contentName + * @param func + */ + private void test_WithGetDataByColumn(Class<?> clazz, String contentData, String contentName, VoidFunc func) { + when(commonClassDao.getDataByColumn(clazz, contentName)).thenReturn(data); + try { + func.apply(); + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains(contentData)); + verify(commonClassDao).getDataByColumn(clazz, contentName); + } catch (Exception e) { + fail("get " + clazz.getName() + e); + } + } + + /** + * Tests a "get" function that uses commonClassDao.getData(). + * + * @param clazz + * @param contentData + * @param contentName + * @param func + */ + private void test_WithGetData(Class<?> clazz, String contentData, VoidFunc func) { + when(commonClassDao.getData(clazz)).thenReturn(new ArrayList<>()); + try { + func.apply(); + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains(contentData)); + verify(commonClassDao).getData(clazz); + } catch (Exception e) { + fail("get " + clazz.getName() + e); + } + } + + /** + * Tests a function that uses commonClassDao.save(). + * + * @param clazz + * @param contentData + * @param contentName + * @param func + */ + private void testSave(Class<?> clazz, String contentData, String contentName, VoidFunc func) { + testSave(clazz, contentData, contentName, "Test", func); + } + + /** + * Tests a function that uses commonClassDao.save(). + * + * @param clazz + * @param contentData + * @param contentName + * @param testName + * @param func + */ + private void testSave(Class<?> clazz, String contentData, String contentName, String testName, VoidFunc func) { + try (BufferedReader br = new BufferedReader(new StringReader(jsonString))) { + when(request.getReader()).thenReturn(br); + func.apply(); + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains(contentData)); + verify(commonClassDao).checkDuplicateEntry(testName, contentName, clazz); + verify(commonClassDao).save(any()); + verify(commonClassDao, never()).update(any()); + verify(commonClassDao).getData(clazz); + + } catch (IOException e) { + fail("save " + clazz.getName() + e); + } + } + + /** + * Tests a function that uses commonClassDao.update(). + * + * @param clazz + * @param contentData + * @param contentName + * @param func + */ + private void testUpdate(Class<?> clazz, String contentData, String contentName, VoidFunc func) { + testUpdate(clazz, contentData, contentName, "Test", func); + } + + /** + * Tests a function that uses commonClassDao.update(). + * + * @param clazz + * @param contentData + * @param contentName + * @param testName + * @param func + */ + private void testUpdate(Class<?> clazz, String contentData, String contentName, String testName, VoidFunc func) { + try (BufferedReader br = new BufferedReader(new StringReader(jsonString))) { + when(request.getReader()).thenReturn(br); + func.apply(); + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains(contentData)); + verify(commonClassDao).checkDuplicateEntry(testName, contentName, clazz); + verify(commonClassDao, never()).save(any()); + verify(commonClassDao).update(any()); + verify(commonClassDao).getData(clazz); + + } catch (IOException e) { + fail("update " + clazz.getName() + e); + } + } + + /** + * Tests a function that uses commonClassDao.delete() and + * commonClassDao.getData(). + * + * @param clazz + * @param contentData + * @param func + */ + private void testRemove(Class<?> clazz, String contentData, VoidFunc func) { + try (BufferedReader br = new BufferedReader(new StringReader(jsonString))) { + when(request.getReader()).thenReturn(br); + func.apply(); + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains(contentData)); + verify(commonClassDao).delete(any()); + verify(commonClassDao).getData(clazz); + + } catch (IOException e) { + fail("remove " + clazz.getName() + e); + } + } + + /** + * Tests a "validate" function. + * + * @param clazz + * @param contentData + * @param func + */ + private void testValidate(Class<?> clazz, String contentData, VoidFunc func) { + try (BufferedReader br = new BufferedReader(new StringReader(jsonString))) { + when(request.getReader()).thenReturn(br); + func.apply(); + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains(contentData)); + + } catch (IOException e) { + fail("save " + clazz.getName() + e); + } + } + + @FunctionalInterface + private static interface VoidFunc { + public void apply() throws IOException; + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/MicroServiceDictionaryControllerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/MicroServiceDictionaryControllerTest.java index ae71692c1..2e9df2592 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/MicroServiceDictionaryControllerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/MicroServiceDictionaryControllerTest.java @@ -58,17 +58,17 @@ import org.springframework.mock.web.MockHttpServletResponse; */ public class MicroServiceDictionaryControllerTest { - - private static Logger logger = FlexLogger.getLogger(MicroServiceDictionaryControllerTest.class); - private static CommonClassDao commonClassDao; - private String jsonString = null; - private HttpServletRequest request = null; - private MicroServiceDictionaryController controller = null; - BufferedReader br = null; - - @Before - public void setUp() throws Exception { - logger.info("setUp: Entering"); + + private static Logger logger = FlexLogger.getLogger(MicroServiceDictionaryControllerTest.class); + private static CommonClassDao commonClassDao; + private String jsonString = null; + private HttpServletRequest request = null; + private MicroServiceDictionaryController controller = null; + BufferedReader br = null; + + @Before + public void setUp() throws Exception { + logger.info("setUp: Entering"); commonClassDao = Mockito.mock(CommonClassDao.class); UserInfo userInfo = new UserInfo(); userInfo.setUserLoginId("testUserId"); @@ -89,21 +89,21 @@ public class MicroServiceDictionaryControllerTest { MicroServiceModels microServiceModels = new MicroServiceModels(); doNothing().when(commonClassDao).delete(microServiceModels); - - MicroServiceDictionaryController.setCommonClassDao(commonClassDao); - - controller = new MicroServiceDictionaryController(); + + MicroServiceDictionaryController.setCommonClassDao(commonClassDao); + + controller = new MicroServiceDictionaryController(); HttpServletRequest request = Mockito.mock(HttpServletRequest.class); - jsonString = "{\"microServiceModelsDictionaryData\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " - + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " - + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," - + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," - + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " - + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," - + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " - + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; + jsonString = "{\"microServiceModelsDictionaryData\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " + + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " + + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," + + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," + + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " + + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," + + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " + + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; br = new BufferedReader(new StringReader(jsonString)); //--- mock the getReader() call @@ -112,653 +112,653 @@ public class MicroServiceDictionaryControllerTest { DictionaryUtils.setDictionaryUtils(new DictionaryUtils()); mock(DictionaryUtils.class); logger.info("setUp: exit"); - } - - - @Test - public void testSaveMicroServiceHeaderDefaultValues() { - logger.info("testSaveMicroServiceHeaderDefaultValues: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - jsonString = "{\"modelAttributeDictionaryData\": {\"onapName\": \"test\", \"guard\": false,\"priority\": \"3\"," - + " \"riskType\": \"test\", \"riskLevel\": \"7\", \"modelName\": \"testname\"}}"; - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - when(request.getReader()).thenReturn(br); - controller.saveMicroServiceHeaderDefaultValues(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceHeaderDefaultDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testSaveMicroServiceHeaderDefaultValues: exit"); - } - - - @Test - public void testGetMicroServiceHeaderDefaultsEntityDataByName() { - logger.info("testGetMicroServiceHeaderDefaultsEntityDataByName: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - - controller.getMicroServiceHeaderDefaultsEntityDataByName(response); - - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceHeaderDefaultDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - - logger.info("testGetMicroServiceHeaderDefaultsEntityDataByName: exit"); - } - - @Test - public void testGetMicroServiceHeaderDefaultsEntityData() { - logger.info("testGetMicroServiceHeaderDefaultsEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - - controller.getMicroServiceHeaderDefaultsEntityData(response); - - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceHeaderDefaultDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - - logger.info("testGetMicroServiceHeaderDefaultsEntityData: exit"); - } - - @Test - public void testRemoveMicroServiceHeaderDefaults() { - logger.info("testRemoveMicroServiceHeaderDefaults: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - jsonString = "{\"data\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " - + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " - + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," - + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," - + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " - + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," - + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " - + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - when(request.getReader()).thenReturn(br); - controller.removeMicroServiceHeaderDefaults(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceHeaderDefaultDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testRemoveMicroServiceHeaderDefaults: exit"); - } - - - @Test - public void testGetDCAEUUIDDictionaryByNameEntityData() { - - logger.info("testGetDCAEUUIDDictionaryByNameEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - - controller.getDCAEUUIDDictionaryByNameEntityData(response); - - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("dcaeUUIDDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - - logger.info("testGetDCAEUUIDDictionaryByNameEntityData: exit"); - } - - @Test - public void testGetDCAEUUIDDictionaryEntityData() { - - logger.info("testGetDCAEUUIDDictionaryEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - - controller.getDCAEUUIDDictionaryEntityData(response); - - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("dcaeUUIDDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - - logger.info("testGetDCAEUUIDDictionaryEntityData: exit"); - } - - @Test - public void testSaveDCAEUUIDDictionary() { - logger.info("testSaveDCAEUUIDDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - jsonString = "{\"dcaeUUIDDictionaryData\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " - + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " - + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," - + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," - + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " - + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," - + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " - + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - when(request.getReader()).thenReturn(br); - controller.saveDCAEUUIDDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("dcaeUUIDDictionaryDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testSaveDCAEUUIDDictionary: exit"); - } - - @Test - public void testRemoveDCAEUUIDDictionary() { - logger.info("testRemoveDCAEUUIDDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - jsonString = "{\"data\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " - + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " - + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," - + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," - + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " - + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," - + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " - + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - when(request.getReader()).thenReturn(br); - controller.removeMicroServiceConfigNameDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceConfigNameDictionaryDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testRemoveDCAEUUIDDictionary: exit"); - } - - @Test - public void testGetMicroServiceConfigNameByNameDictionaryEntityData() { - logger.info("testGetMicroServiceConfigNameByNameDictionaryEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - - controller.getMicroServiceConfigNameByNameDictionaryEntityData(response); - - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceConfigNameDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - - logger.info("testGetMicroServiceConfigNameByNameDictionaryEntityData: exit"); - } - - @Test - public void testGetMicroServiceConfigNameDictionaryEntityData() { - logger.info("testGetMicroServiceConfigNameByNameDictionaryEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - - controller.getMicroServiceConfigNameDictionaryEntityData(response); - - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceConfigNameDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - - logger.info("testGetMicroServiceConfigNameDictionaryEntityData: exit"); - } - - @Test - public void testSaveMicroServiceConfigNameDictionary() { - logger.info("testSaveMicroServiceConfigNameDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - jsonString = "{\"microServiceConfigNameDictionaryData\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " - + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " - + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," - + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," - + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " - + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," - + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " - + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - when(request.getReader()).thenReturn(br); - controller.saveMicroServiceConfigNameDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceConfigNameDictionaryDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testSaveMicroServiceConfigNameDictionary: exit"); - } - - @Test - public void testRemoveMicroServiceConfigNameDictionary() { - logger.info("testRemoveMicroServiceConfigNameDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - jsonString = "{\"data\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " - + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " - + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," - + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," - + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " - + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," - + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " - + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - when(request.getReader()).thenReturn(br); - controller.removeMicroServiceConfigNameDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceConfigNameDictionaryDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testRemoveMicroServiceConfigNameDictionary: exit"); - } - - @Test - public void testGetMicroServiceLocationByNameDictionaryEntityData() { - - logger.info("testGetMicroServiceLocationByNameDictionaryEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - - controller.getMicroServiceLocationByNameDictionaryEntityData(response); - - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceLocationDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - - logger.info("testGetMicroServiceLocationByNameDictionaryEntityData: exit"); - } - - @Test - public void testGetMicroServiceLocationDictionaryEntityData() { - logger.info("testGetMicroServiceLocationDictionaryEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - - controller.getMicroServiceLocationDictionaryEntityData(response); - - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceLocationDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - - logger.info("testGetMicroServiceLocationDictionaryEntityData: exit"); - } - - @Test - public void testSaveMicroServiceLocationDictionary() { - logger.info("testSaveMicroServiceLocationDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - jsonString = "{\"microServiceLocationDictionaryData\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " - + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " - + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," - + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," - + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " - + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," - + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " - + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - when(request.getReader()).thenReturn(br); - controller.saveMicroServiceLocationDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceLocationDictionaryDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testSaveMicroServiceLocationDictionary: exit"); - } - - @Test - public void testRemoveMicroServiceLocationDictionary() { - logger.info("testRemoveMicroServiceLocationDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - jsonString = "{\"data\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " - + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " - + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," - + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," - + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " - + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," - + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " - + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - - when(request.getReader()).thenReturn(br); - controller.removeMicroServiceLocationDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceLocationDictionaryDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testRemoveMicroServiceLocationDictionary: exit"); - } - - @Test - public void testGetMicroServiceAttributeByNameDictionaryEntityData() { - logger.info("testGetMicroServiceAttributeByNameDictionaryEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - - controller.getMicroServiceAttributeByNameDictionaryEntityData(response); - - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceAttributeDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - - logger.info("testGetMicroServiceAttributeByNameDictionaryEntityData: exit"); - } - - @Test - public void testGetMicroServiceAttributeDictionaryEntityData() { - logger.info("testGetMicroServiceAttributeDictionaryEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - - controller.getMicroServiceAttributeDictionaryEntityData(response); - - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceAttributeDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - - logger.info("testGetMicroServiceAttributeDictionaryEntityData: exit"); - } - - @Test - public void testSaveMicroServiceAttributeDictionary() { - logger.info("testSaveMicroServiceAttributeDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - jsonString = "{\"modelAttributeDictionaryData\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " - + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " - + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," - + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," - + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " - + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," - + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " - + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - when(request.getReader()).thenReturn(br); - controller.saveMicroServiceAttributeDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceAttributeDictionaryDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testSaveMicroServiceAttributeDictionary: exit"); - } - - @Test - public void testRemoveMicroServiceAttributeDictionary() { - logger.info("testRemoveMicroServiceAttributeDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - jsonString = "{\"data\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " - + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " - + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," - + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," - + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " - + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," - + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " - + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - when(request.getReader()).thenReturn(br); - controller.removeMicroServiceAttributeDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceAttributeDictionaryDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testRemoveMicroServiceAttributeDictionary: exit"); - } - - @Test - public void testGetMicroServiceModelsDictionaryByNameEntityData() { - logger.info("testGetMicroServiceModelsDictionaryByNameEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - - controller.getMicroServiceModelsDictionaryByNameEntityData(response); - - try { - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceModelsDictionaryDatas")); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - } catch (UnsupportedEncodingException e) { - fail("Exception: " + e); - } - - logger.info("testGetMicroServiceModelsDictionaryByNameEntityData: exit"); - } - - @Test - public void testGetMicroServiceModelsDictionaryByVersionEntityData() { - logger.info("testGetMicroServiceModelsDictionaryByVersionEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - String msModelJson = "{\"microServiceModelsDictionaryData\":[\"modelName\"]}"; - - BufferedReader br = new BufferedReader(new StringReader(msModelJson)); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - when(request.getReader()).thenReturn(br); - controller.getMicroServiceModelsDictionaryByVersionEntityData(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("No model name given")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testGetMicroServiceModelsDictionaryByVersionEntityData: exit"); - } - - @Test - public void testGetMicroServiceModelsDictionaryEntityData() { - logger.info("testGetMicroServiceModelsDictionaryEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - String msModelJson = "{\"microServiceModelsDictionaryData\":[\"modelName\"]}"; - - BufferedReader br = new BufferedReader(new StringReader(msModelJson)); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - when(request.getReader()).thenReturn(br); - controller.getMicroServiceModelsDictionaryEntityData(response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceModelsDictionaryDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testGetMicroServiceModelsDictionaryEntityData: exit"); - } - - @Test - public void testGetMicroServiceModelsDictionaryEntityDataServiceVersion() { - logger.info("testGetMicroServiceModelsDictionaryEntityDataServiceVersion: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - String msModelJson = "{\"microServiceModelsDictionaryData\":[\"modelName\"]}"; - - BufferedReader br = new BufferedReader(new StringReader(msModelJson)); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - when(request.getReader()).thenReturn(br); - controller.getMicroServiceModelsDictionaryEntityDataServiceVersion(response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceModelsDictionaryDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testGetMicroServiceModelsDictionaryEntityDataServiceVersion: exit"); - } - - @Test - public void testGetMicroServiceModelsDictionaryClassEntityData() { - logger.info("testGetMicroServiceModelsDictionaryClassEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - String msModelJson = "{\"microServiceModelsDictionaryData\":[\"modelName\"]}"; - - BufferedReader br = new BufferedReader(new StringReader(msModelJson)); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - when(request.getReader()).thenReturn(br); - controller.getMicroServiceModelsDictionaryClassEntityData(response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceModelsDictionaryClassDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testGetMicroServiceModelsDictionaryClassEntityData: exit"); - } - - @Test - public void testSaveMicroServiceModelsDictionary() { - logger.info("testSaveMicroServiceModelsDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - when(request.getReader()).thenReturn(br); - controller.saveMicroServiceModelsDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceModelsDictionaryDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testSaveMicroServiceModelsDictionary: exit"); - } - - @Test - public void testRemoveMicroServiceModelsDictionary() { - logger.info("testRemoveMicroServiceModelsDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - jsonString = "{\"data\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " - + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " - + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," - + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," - + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " - + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," - + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " - + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; - - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - when(request.getReader()).thenReturn(br); - controller.removeMicroServiceModelsDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceModelsDictionaryDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testRemoveMicroServiceModelsDictionary: exit"); - } + } + + + @Test + public void testSaveMicroServiceHeaderDefaultValues() { + logger.info("testSaveMicroServiceHeaderDefaultValues: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + jsonString = "{\"modelAttributeDictionaryData\": {\"onapName\": \"test\", \"guard\": false,\"priority\": \"3\"," + + " \"riskType\": \"test\", \"riskLevel\": \"7\", \"modelName\": \"testname\"}}"; + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.saveMicroServiceHeaderDefaultValues(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceHeaderDefaultDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testSaveMicroServiceHeaderDefaultValues: exit"); + } + + + @Test + public void testGetMicroServiceHeaderDefaultsEntityDataByName() { + logger.info("testGetMicroServiceHeaderDefaultsEntityDataByName: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + controller.getMicroServiceHeaderDefaultsEntityDataByName(response); + + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceHeaderDefaultDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + + logger.info("testGetMicroServiceHeaderDefaultsEntityDataByName: exit"); + } + + @Test + public void testGetMicroServiceHeaderDefaultsEntityData() { + logger.info("testGetMicroServiceHeaderDefaultsEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + controller.getMicroServiceHeaderDefaultsEntityData(response); + + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceHeaderDefaultDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + + logger.info("testGetMicroServiceHeaderDefaultsEntityData: exit"); + } + + @Test + public void testRemoveMicroServiceHeaderDefaults() { + logger.info("testRemoveMicroServiceHeaderDefaults: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + jsonString = "{\"data\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " + + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " + + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," + + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," + + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " + + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," + + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " + + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.removeMicroServiceHeaderDefaults(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceHeaderDefaultDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testRemoveMicroServiceHeaderDefaults: exit"); + } + + + @Test + public void testGetDCAEUUIDDictionaryByNameEntityData() { + + logger.info("testGetDCAEUUIDDictionaryByNameEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + controller.getDCAEUUIDDictionaryByNameEntityData(response); + + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("dcaeUUIDDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + + logger.info("testGetDCAEUUIDDictionaryByNameEntityData: exit"); + } + + @Test + public void testGetDCAEUUIDDictionaryEntityData() { + + logger.info("testGetDCAEUUIDDictionaryEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + controller.getDCAEUUIDDictionaryEntityData(response); + + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("dcaeUUIDDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + + logger.info("testGetDCAEUUIDDictionaryEntityData: exit"); + } + + @Test + public void testSaveDCAEUUIDDictionary() { + logger.info("testSaveDCAEUUIDDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + jsonString = "{\"dcaeUUIDDictionaryData\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " + + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " + + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," + + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," + + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " + + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," + + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " + + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.saveDCAEUUIDDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("dcaeUUIDDictionaryDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testSaveDCAEUUIDDictionary: exit"); + } + + @Test + public void testRemoveDCAEUUIDDictionary() { + logger.info("testRemoveDCAEUUIDDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + jsonString = "{\"data\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " + + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " + + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," + + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," + + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " + + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," + + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " + + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.removeMicroServiceConfigNameDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceConfigNameDictionaryDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testRemoveDCAEUUIDDictionary: exit"); + } + + @Test + public void testGetMicroServiceConfigNameByNameDictionaryEntityData() { + logger.info("testGetMicroServiceConfigNameByNameDictionaryEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + controller.getMicroServiceConfigNameByNameDictionaryEntityData(response); + + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceConfigNameDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + + logger.info("testGetMicroServiceConfigNameByNameDictionaryEntityData: exit"); + } + + @Test + public void testGetMicroServiceConfigNameDictionaryEntityData() { + logger.info("testGetMicroServiceConfigNameByNameDictionaryEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + controller.getMicroServiceConfigNameDictionaryEntityData(response); + + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceConfigNameDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + + logger.info("testGetMicroServiceConfigNameDictionaryEntityData: exit"); + } + + @Test + public void testSaveMicroServiceConfigNameDictionary() { + logger.info("testSaveMicroServiceConfigNameDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + jsonString = "{\"microServiceConfigNameDictionaryData\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " + + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " + + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," + + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," + + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " + + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," + + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " + + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.saveMicroServiceConfigNameDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceConfigNameDictionaryDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testSaveMicroServiceConfigNameDictionary: exit"); + } + + @Test + public void testRemoveMicroServiceConfigNameDictionary() { + logger.info("testRemoveMicroServiceConfigNameDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + jsonString = "{\"data\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " + + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " + + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," + + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," + + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " + + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," + + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " + + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.removeMicroServiceConfigNameDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceConfigNameDictionaryDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testRemoveMicroServiceConfigNameDictionary: exit"); + } + + @Test + public void testGetMicroServiceLocationByNameDictionaryEntityData() { + + logger.info("testGetMicroServiceLocationByNameDictionaryEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + controller.getMicroServiceLocationByNameDictionaryEntityData(response); + + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceLocationDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + + logger.info("testGetMicroServiceLocationByNameDictionaryEntityData: exit"); + } + + @Test + public void testGetMicroServiceLocationDictionaryEntityData() { + logger.info("testGetMicroServiceLocationDictionaryEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + controller.getMicroServiceLocationDictionaryEntityData(response); + + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceLocationDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + + logger.info("testGetMicroServiceLocationDictionaryEntityData: exit"); + } + + @Test + public void testSaveMicroServiceLocationDictionary() { + logger.info("testSaveMicroServiceLocationDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + jsonString = "{\"microServiceLocationDictionaryData\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " + + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " + + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," + + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," + + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " + + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," + + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " + + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.saveMicroServiceLocationDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceLocationDictionaryDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testSaveMicroServiceLocationDictionary: exit"); + } + + @Test + public void testRemoveMicroServiceLocationDictionary() { + logger.info("testRemoveMicroServiceLocationDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + jsonString = "{\"data\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " + + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " + + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," + + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," + + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " + + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," + + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " + + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + + when(request.getReader()).thenReturn(br); + controller.removeMicroServiceLocationDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceLocationDictionaryDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testRemoveMicroServiceLocationDictionary: exit"); + } + + @Test + public void testGetMicroServiceAttributeByNameDictionaryEntityData() { + logger.info("testGetMicroServiceAttributeByNameDictionaryEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + controller.getMicroServiceAttributeByNameDictionaryEntityData(response); + + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceAttributeDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + + logger.info("testGetMicroServiceAttributeByNameDictionaryEntityData: exit"); + } + + @Test + public void testGetMicroServiceAttributeDictionaryEntityData() { + logger.info("testGetMicroServiceAttributeDictionaryEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + controller.getMicroServiceAttributeDictionaryEntityData(response); + + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceAttributeDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + + logger.info("testGetMicroServiceAttributeDictionaryEntityData: exit"); + } + + @Test + public void testSaveMicroServiceAttributeDictionary() { + logger.info("testSaveMicroServiceAttributeDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + jsonString = "{\"modelAttributeDictionaryData\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " + + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " + + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," + + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," + + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " + + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," + + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " + + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.saveMicroServiceAttributeDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceAttributeDictionaryDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testSaveMicroServiceAttributeDictionary: exit"); + } + + @Test + public void testRemoveMicroServiceAttributeDictionary() { + logger.info("testRemoveMicroServiceAttributeDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + jsonString = "{\"data\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " + + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " + + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," + + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," + + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " + + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," + + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " + + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.removeMicroServiceAttributeDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceAttributeDictionaryDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testRemoveMicroServiceAttributeDictionary: exit"); + } + + @Test + public void testGetMicroServiceModelsDictionaryByNameEntityData() { + logger.info("testGetMicroServiceModelsDictionaryByNameEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + controller.getMicroServiceModelsDictionaryByNameEntityData(response); + + try { + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceModelsDictionaryDatas")); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + } catch (UnsupportedEncodingException e) { + fail("Exception: " + e); + } + + logger.info("testGetMicroServiceModelsDictionaryByNameEntityData: exit"); + } + + @Test + public void testGetMicroServiceModelsDictionaryByVersionEntityData() { + logger.info("testGetMicroServiceModelsDictionaryByVersionEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + String msModelJson = "{\"microServiceModelsDictionaryData\":[\"modelName\"]}"; + + BufferedReader br = new BufferedReader(new StringReader(msModelJson)); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + when(request.getReader()).thenReturn(br); + controller.getMicroServiceModelsDictionaryByVersionEntityData(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("No model name given")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testGetMicroServiceModelsDictionaryByVersionEntityData: exit"); + } + + @Test + public void testGetMicroServiceModelsDictionaryEntityData() { + logger.info("testGetMicroServiceModelsDictionaryEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + String msModelJson = "{\"microServiceModelsDictionaryData\":[\"modelName\"]}"; + + BufferedReader br = new BufferedReader(new StringReader(msModelJson)); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + when(request.getReader()).thenReturn(br); + controller.getMicroServiceModelsDictionaryEntityData(response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceModelsDictionaryDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testGetMicroServiceModelsDictionaryEntityData: exit"); + } + + @Test + public void testGetMicroServiceModelsDictionaryEntityDataServiceVersion() { + logger.info("testGetMicroServiceModelsDictionaryEntityDataServiceVersion: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + String msModelJson = "{\"microServiceModelsDictionaryData\":[\"modelName\"]}"; + + BufferedReader br = new BufferedReader(new StringReader(msModelJson)); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + when(request.getReader()).thenReturn(br); + controller.getMicroServiceModelsDictionaryEntityDataServiceVersion(response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceModelsDictionaryDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testGetMicroServiceModelsDictionaryEntityDataServiceVersion: exit"); + } + + @Test + public void testGetMicroServiceModelsDictionaryClassEntityData() { + logger.info("testGetMicroServiceModelsDictionaryClassEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + String msModelJson = "{\"microServiceModelsDictionaryData\":[\"modelName\"]}"; + + BufferedReader br = new BufferedReader(new StringReader(msModelJson)); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + when(request.getReader()).thenReturn(br); + controller.getMicroServiceModelsDictionaryClassEntityData(response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceModelsDictionaryClassDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testGetMicroServiceModelsDictionaryClassEntityData: exit"); + } + + @Test + public void testSaveMicroServiceModelsDictionary() { + logger.info("testSaveMicroServiceModelsDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + when(request.getReader()).thenReturn(br); + controller.saveMicroServiceModelsDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceModelsDictionaryDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testSaveMicroServiceModelsDictionary: exit"); + } + + @Test + public void testRemoveMicroServiceModelsDictionary() { + logger.info("testRemoveMicroServiceModelsDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + jsonString = "{\"data\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " + + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " + + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," + + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," + + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " + + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," + + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " + + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; + + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.removeMicroServiceModelsDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("microServiceModelsDictionaryDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testRemoveMicroServiceModelsDictionary: exit"); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/OptimizationDictionaryControllerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/OptimizationDictionaryControllerTest.java index edc08f31b..dd355d948 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/OptimizationDictionaryControllerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/OptimizationDictionaryControllerTest.java @@ -49,17 +49,17 @@ import org.springframework.mock.web.MockHttpServletResponse; public class OptimizationDictionaryControllerTest { - - private static Logger logger = FlexLogger.getLogger(OptimizationDictionaryControllerTest.class); - private static CommonClassDao commonClassDao; - private String jsonString = null; - private HttpServletRequest request = null; - private OptimizationDictionaryController controller = null; - BufferedReader br = null; - - @Before - public void setUp() throws Exception { - logger.info("setUp: Entering"); + + private static Logger logger = FlexLogger.getLogger(OptimizationDictionaryControllerTest.class); + private static CommonClassDao commonClassDao; + private String jsonString = null; + private HttpServletRequest request = null; + private OptimizationDictionaryController controller = null; + BufferedReader br = null; + + @Before + public void setUp() throws Exception { + logger.info("setUp: Entering"); commonClassDao = Mockito.mock(CommonClassDao.class); UserInfo userInfo = new UserInfo(); userInfo.setUserLoginId("testUserId"); @@ -69,21 +69,21 @@ public class OptimizationDictionaryControllerTest { OptimizationModels optimziationModels = new OptimizationModels(); doNothing().when(commonClassDao).delete(optimziationModels); - + OptimizationDictionaryController.setCommonClassDao(commonClassDao); - - controller = new OptimizationDictionaryController(); + + controller = new OptimizationDictionaryController(); HttpServletRequest request = Mockito.mock(HttpServletRequest.class); - jsonString = "{\"optimizationModelsDictionaryData\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " - + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " - + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," - + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," - + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " - + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," - + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " - + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; + jsonString = "{\"optimizationModelsDictionaryData\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " + + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " + + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," + + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," + + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " + + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," + + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " + + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; br = new BufferedReader(new StringReader(jsonString)); //--- mock the getReader() call @@ -92,82 +92,82 @@ public class OptimizationDictionaryControllerTest { DictionaryUtils.setDictionaryUtils(new DictionaryUtils()); mock(DictionaryUtils.class); logger.info("setUp: exit"); - } - - @Test - public void testGetOptimizationModelsDictionaryEntityData() { - logger.info("testGetOptimizationModelsDictionaryEntityData: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - String modelJson = "{\"optimizationModelsDictionaryData\":[\"modelName\"]}"; - - BufferedReader br = new BufferedReader(new StringReader(modelJson)); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - when(request.getReader()).thenReturn(br); - controller.getOptimizationModelsDictionaryEntityData(response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("optimizationModelsDictionaryDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testGetOptimizationModelsDictionaryEntityData: exit"); - } - - @Test - public void testSaveOptimizationModelsDictionary() { - logger.info("testSaveOptimizationModelsDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - when(request.getReader()).thenReturn(br); - controller.saveOptimizationModelsDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("optimizationModelsDictionaryDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testSaveOptimizationModelsDictionary: exit"); - } - - @Test - public void testRemoveOptimizationModelsDictionary() { - logger.info("testRemoveOptimizationModelsDictionary: Entering"); - - MockHttpServletResponse response = new MockHttpServletResponse(); - request = mock(HttpServletRequest.class); - - try { - // mock the getReader() call - jsonString = "{\"data\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " - + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " - + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," - + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," - + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " - + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," - + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " - + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; - - BufferedReader br = new BufferedReader(new StringReader(jsonString)); - when(request.getReader()).thenReturn(br); - controller.removeOptimizationModelsDictionary(request, response); - logger.info("response.getContentAsString(): " + response.getContentAsString()); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("optimizationModelsDictionaryDatas")); - - } catch (Exception e) { - fail("Exception: " + e); - } - - logger.info("testRemoveOptimizationModelsDictionary: exit"); - } + } + + @Test + public void testGetOptimizationModelsDictionaryEntityData() { + logger.info("testGetOptimizationModelsDictionaryEntityData: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + String modelJson = "{\"optimizationModelsDictionaryData\":[\"modelName\"]}"; + + BufferedReader br = new BufferedReader(new StringReader(modelJson)); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + when(request.getReader()).thenReturn(br); + controller.getOptimizationModelsDictionaryEntityData(response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("optimizationModelsDictionaryDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testGetOptimizationModelsDictionaryEntityData: exit"); + } + + @Test + public void testSaveOptimizationModelsDictionary() { + logger.info("testSaveOptimizationModelsDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + when(request.getReader()).thenReturn(br); + controller.saveOptimizationModelsDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("optimizationModelsDictionaryDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testSaveOptimizationModelsDictionary: exit"); + } + + @Test + public void testRemoveOptimizationModelsDictionary() { + logger.info("testRemoveOptimizationModelsDictionary: Entering"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + request = mock(HttpServletRequest.class); + + try { + // mock the getReader() call + jsonString = "{\"data\": {\"modelName\": \"test\", \"inprocess\": false,\"model\": {\"name\": \"testingdata\", " + + " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", " + + " \"version\": \"\",\"createdBy\": \"someone\", \"modifiedBy\": \"someone\", \"content\": \"\",\"recursive\": false}," + + " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\" }," + + " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", " + + " \"policyDescription\": \"testing input\", \"onapName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\"," + + " \"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [ [\"fileId\"]],\"ttlDate\": null}}, " + + " \"policyJSON\": {\"pmTableName\": \"test\", \"dmdTopic\": \"1\",\"fileId\": \"56\"} }"; + + BufferedReader br = new BufferedReader(new StringReader(jsonString)); + when(request.getReader()).thenReturn(br); + controller.removeOptimizationModelsDictionary(request, response); + logger.info("response.getContentAsString(): " + response.getContentAsString()); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("optimizationModelsDictionaryDatas")); + + } catch (Exception e) { + fail("Exception: " + e); + } + + logger.info("testRemoveOptimizationModelsDictionary: exit"); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/PolicyScopeDictionaryControllerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/PolicyScopeDictionaryControllerTest.java index 40ec34831..9bf2ae590 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/PolicyScopeDictionaryControllerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/PolicyScopeDictionaryControllerTest.java @@ -48,338 +48,338 @@ import org.onap.policy.rest.jpa.UserInfo; import org.springframework.mock.web.MockHttpServletResponse; public class PolicyScopeDictionaryControllerTest { - private static Logger logger = FlexLogger.getLogger(PolicyScopeDictionaryControllerTest.class); - private static CommonClassDao commonClassDao; - private String jsonString = null; - private HttpServletRequest request = null; - private PolicyScopeDictionaryController controller = null; - private MockHttpServletResponse response = null; - private UserInfo userInfo; - private List<String> data; - - @Before - public void setUp() throws Exception { - logger.info("setUp: Entering"); - commonClassDao = Mockito.mock(CommonClassDao.class); - - data = new ArrayList<>(); - data.add("Test"); - - userInfo = new UserInfo(); - userInfo.setUserLoginId("Test"); - userInfo.setUserName("Test"); - - doNothing().when(commonClassDao).delete(new GroupPolicyScopeList()); - doNothing().when(commonClassDao).save(new GroupPolicyScopeList()); - - controller = new PolicyScopeDictionaryController(); - controller.setCommonClassDao(commonClassDao); - - request = Mockito.mock(HttpServletRequest.class); - response = new MockHttpServletResponse(); - new DictionaryUtils(commonClassDao); + private static Logger logger = FlexLogger.getLogger(PolicyScopeDictionaryControllerTest.class); + private static CommonClassDao commonClassDao; + private String jsonString = null; + private HttpServletRequest request = null; + private PolicyScopeDictionaryController controller = null; + private MockHttpServletResponse response = null; + private UserInfo userInfo; + private List<String> data; + + @Before + public void setUp() throws Exception { + logger.info("setUp: Entering"); + commonClassDao = Mockito.mock(CommonClassDao.class); + + data = new ArrayList<>(); + data.add("Test"); + + userInfo = new UserInfo(); + userInfo.setUserLoginId("Test"); + userInfo.setUserName("Test"); + + doNothing().when(commonClassDao).delete(new GroupPolicyScopeList()); + doNothing().when(commonClassDao).save(new GroupPolicyScopeList()); + + controller = new PolicyScopeDictionaryController(); + controller.setCommonClassDao(commonClassDao); + + request = Mockito.mock(HttpServletRequest.class); + response = new MockHttpServletResponse(); + new DictionaryUtils(commonClassDao); DictionaryUtils.setDictionaryUtils(new DictionaryUtils()); mock(DictionaryUtils.class); - logger.info("setUp: exit"); - } - - @Test - public void testGetGroupPolicyScopeEntityDataByName(){ - when(commonClassDao.getDataByColumn(GroupPolicyScopeList.class, "name")).thenReturn(data); - controller.getGroupPolicyScopeEntityDataByName(response); - try { - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("groupPolicyScopeListDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetGroupPolicyScopeEntityData(){ - when(commonClassDao.getData(GroupPolicyScopeList.class)).thenReturn(new ArrayList<>()); - controller.getGroupPolicyScopeEntityData(response); - try { - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("groupPolicyScopeListDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetPSClosedLoopEntityDataByName(){ - when(commonClassDao.getDataByColumn(PolicyScopeClosedLoop.class, "name")).thenReturn(data); - controller.getPSClosedLoopEntityDataByName(response); - try { - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("psClosedLoopDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetPSClosedLoopEntityData(){ - when(commonClassDao.getData(PolicyScopeClosedLoop.class)).thenReturn(new ArrayList<>()); - controller.getPSClosedLoopEntityData(response); - try { - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("psClosedLoopDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetPSServiceEntityDataByName(){ - when(commonClassDao.getDataByColumn(PolicyScopeService.class, "name")).thenReturn(data); - controller.getPSServiceEntityDataByName(response); - try { - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("psServiceDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetPSServiceEntityData(){ - when(commonClassDao.getData(PolicyScopeService.class)).thenReturn(new ArrayList<>()); - controller.getPSServiceEntityData(response); - try { - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("psServiceDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetPSTypeEntityDataByName(){ - when(commonClassDao.getDataByColumn(PolicyScopeType.class, "name")).thenReturn(data); - controller.getPSTypeEntityDataByName(response); - try { - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("psTypeDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetPSTypeEntityData(){ - when(commonClassDao.getData(PolicyScopeType.class)).thenReturn(new ArrayList<>()); - controller.getPSTypeEntityData(response); - try { - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("psTypeDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetPSResourceEntityDataByName(){ - when(commonClassDao.getDataByColumn(PolicyScopeResource.class, "name")).thenReturn(data); - controller.getPSResourceEntityDataByName(response); - try { - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("psResourceDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetPSResourceEntityData(){ - when(commonClassDao.getData(PolicyScopeResource.class)).thenReturn(new ArrayList<>()); - controller.getPSResourceEntityData(response); - try { - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("psResourceDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testSavePSGroupScopeDictionary(){ - jsonString = "{\"groupPolicyScopeListData\":{\"description\":\"test\",\"groupName\":\"Test\"},\"groupPolicyScopeListData1\":{\"closedloop\":\"SampleClosedLoop\",\"resource\":\"SampleResource\",\"service\":\"SampleService\",\"type\":\"SampleType\"},\"userid\":\"demo\"}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.savePSGroupScopeDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("groupPolicyScopeListDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testUpdatePSGroupScopeDictionary(){ - jsonString = "{\"groupPolicyScopeListData\":{\"id\":1,\"description\":\"test\",\"groupName\":\"Test\"},\"groupPolicyScopeListData1\":{\"closedloop\":\"SampleClosedLoop\",\"resource\":\"SampleResource\",\"service\":\"SampleService\",\"type\":\"SampleType\"},\"userid\":\"demo\"}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.savePSGroupScopeDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("groupPolicyScopeListDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testRemovePSGroupScopeDictionary(){ - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.removePSGroupScopeDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("groupPolicyScopeListDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testSavePSClosedLoopDictionary(){ - jsonString = "{\"userid\":\"demo\",\"psClosedLoopDictionaryData\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.savePSClosedLoopDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psClosedLoopDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testUpdatePSClosedLoopDictionary(){ - jsonString = "{\"userid\":\"demo\",\"psClosedLoopDictionaryData\":{\"description\":\"test\",\"name\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.savePSClosedLoopDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psClosedLoopDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testRemovePSClosedLoopDictionary(){ - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.removePSClosedLoopDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psClosedLoopDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testSavePSServiceDictionary(){ - jsonString = "{\"userid\":\"demo\",\"psServiceDictionaryData\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.savePSServiceDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psServiceDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testUpdatePSServiceDictionary(){ - jsonString = "{\"userid\":\"demo\",\"psServiceDictionaryData\":{\"description\":\"test\",\"name\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.savePSServiceDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psServiceDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testRemovePSServiceDictionary(){ - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.removePSServiceDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psServiceDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testSavePSTypeDictionary(){ - jsonString = "{\"userid\":\"demo\",\"psTypeDictionaryData\":{\"description\":\"test\",\"name\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.savePSTypeDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psTypeDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testUpdatePSTypeDictionary(){ - jsonString = "{\"userid\":\"demo\",\"psTypeDictionaryData\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.savePSTypeDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psTypeDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testRemovePSTypeDictionary(){ - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.removePSTypeDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psTypeDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testSavePSResourceDictionary(){ - jsonString = "{\"userid\":\"demo\",\"psResourceDictionaryData\":{\"description\":\"test\",\"name\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.savePSResourceDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psResourceDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testUpdatePSResourceDictionary(){ - jsonString = "{\"userid\":\"demo\",\"psResourceDictionaryData\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.savePSResourceDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psResourceDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testRemovePSResourceDictionary(){ - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.removePSResourceDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psResourceDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } + logger.info("setUp: exit"); + } + + @Test + public void testGetGroupPolicyScopeEntityDataByName(){ + when(commonClassDao.getDataByColumn(GroupPolicyScopeList.class, "name")).thenReturn(data); + controller.getGroupPolicyScopeEntityDataByName(response); + try { + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("groupPolicyScopeListDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetGroupPolicyScopeEntityData(){ + when(commonClassDao.getData(GroupPolicyScopeList.class)).thenReturn(new ArrayList<>()); + controller.getGroupPolicyScopeEntityData(response); + try { + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("groupPolicyScopeListDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetPSClosedLoopEntityDataByName(){ + when(commonClassDao.getDataByColumn(PolicyScopeClosedLoop.class, "name")).thenReturn(data); + controller.getPSClosedLoopEntityDataByName(response); + try { + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("psClosedLoopDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetPSClosedLoopEntityData(){ + when(commonClassDao.getData(PolicyScopeClosedLoop.class)).thenReturn(new ArrayList<>()); + controller.getPSClosedLoopEntityData(response); + try { + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("psClosedLoopDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetPSServiceEntityDataByName(){ + when(commonClassDao.getDataByColumn(PolicyScopeService.class, "name")).thenReturn(data); + controller.getPSServiceEntityDataByName(response); + try { + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("psServiceDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetPSServiceEntityData(){ + when(commonClassDao.getData(PolicyScopeService.class)).thenReturn(new ArrayList<>()); + controller.getPSServiceEntityData(response); + try { + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("psServiceDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetPSTypeEntityDataByName(){ + when(commonClassDao.getDataByColumn(PolicyScopeType.class, "name")).thenReturn(data); + controller.getPSTypeEntityDataByName(response); + try { + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("psTypeDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetPSTypeEntityData(){ + when(commonClassDao.getData(PolicyScopeType.class)).thenReturn(new ArrayList<>()); + controller.getPSTypeEntityData(response); + try { + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("psTypeDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetPSResourceEntityDataByName(){ + when(commonClassDao.getDataByColumn(PolicyScopeResource.class, "name")).thenReturn(data); + controller.getPSResourceEntityDataByName(response); + try { + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("psResourceDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetPSResourceEntityData(){ + when(commonClassDao.getData(PolicyScopeResource.class)).thenReturn(new ArrayList<>()); + controller.getPSResourceEntityData(response); + try { + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("psResourceDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testSavePSGroupScopeDictionary(){ + jsonString = "{\"groupPolicyScopeListData\":{\"description\":\"test\",\"groupName\":\"Test\"},\"groupPolicyScopeListData1\":{\"closedloop\":\"SampleClosedLoop\",\"resource\":\"SampleResource\",\"service\":\"SampleService\",\"type\":\"SampleType\"},\"userid\":\"demo\"}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.savePSGroupScopeDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("groupPolicyScopeListDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testUpdatePSGroupScopeDictionary(){ + jsonString = "{\"groupPolicyScopeListData\":{\"id\":1,\"description\":\"test\",\"groupName\":\"Test\"},\"groupPolicyScopeListData1\":{\"closedloop\":\"SampleClosedLoop\",\"resource\":\"SampleResource\",\"service\":\"SampleService\",\"type\":\"SampleType\"},\"userid\":\"demo\"}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.savePSGroupScopeDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("groupPolicyScopeListDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testRemovePSGroupScopeDictionary(){ + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.removePSGroupScopeDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("groupPolicyScopeListDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testSavePSClosedLoopDictionary(){ + jsonString = "{\"userid\":\"demo\",\"psClosedLoopDictionaryData\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.savePSClosedLoopDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psClosedLoopDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testUpdatePSClosedLoopDictionary(){ + jsonString = "{\"userid\":\"demo\",\"psClosedLoopDictionaryData\":{\"description\":\"test\",\"name\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.savePSClosedLoopDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psClosedLoopDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testRemovePSClosedLoopDictionary(){ + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.removePSClosedLoopDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psClosedLoopDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testSavePSServiceDictionary(){ + jsonString = "{\"userid\":\"demo\",\"psServiceDictionaryData\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.savePSServiceDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psServiceDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testUpdatePSServiceDictionary(){ + jsonString = "{\"userid\":\"demo\",\"psServiceDictionaryData\":{\"description\":\"test\",\"name\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.savePSServiceDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psServiceDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testRemovePSServiceDictionary(){ + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.removePSServiceDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psServiceDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testSavePSTypeDictionary(){ + jsonString = "{\"userid\":\"demo\",\"psTypeDictionaryData\":{\"description\":\"test\",\"name\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.savePSTypeDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psTypeDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testUpdatePSTypeDictionary(){ + jsonString = "{\"userid\":\"demo\",\"psTypeDictionaryData\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.savePSTypeDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psTypeDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testRemovePSTypeDictionary(){ + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.removePSTypeDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psTypeDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testSavePSResourceDictionary(){ + jsonString = "{\"userid\":\"demo\",\"psResourceDictionaryData\":{\"description\":\"test\",\"name\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.savePSResourceDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psResourceDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testUpdatePSResourceDictionary(){ + jsonString = "{\"userid\":\"demo\",\"psResourceDictionaryData\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.savePSResourceDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psResourceDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testRemovePSResourceDictionary(){ + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.removePSResourceDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("psResourceDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/PushPolicyControllerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/PushPolicyControllerTest.java index 1f8cb6f90..dbddecc51 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/PushPolicyControllerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/PushPolicyControllerTest.java @@ -54,22 +54,22 @@ import com.att.research.xacml.api.pap.PAPException; public class PushPolicyControllerTest { - - private static Logger logger = FlexLogger.getLogger(PushPolicyControllerTest.class); - private static CommonClassDao commonClassDao; - private String jsonString = null; - private HttpServletRequest request = null; - private PushPolicyController controller = null; - private HttpServletResponse response = null; + + private static Logger logger = FlexLogger.getLogger(PushPolicyControllerTest.class); + private static CommonClassDao commonClassDao; + private String jsonString = null; + private HttpServletRequest request = null; + private PushPolicyController controller = null; + private HttpServletResponse response = null; private List<String> headers = new ArrayList<>(); private ServletConfig servletConfig; private XACMLPapServlet pap; - @Before - public void setUp() throws Exception { - logger.info("setUp: Entering"); - request = Mockito.mock(HttpServletRequest.class); - response = Mockito.mock(HttpServletResponse.class); + @Before + public void setUp() throws Exception { + logger.info("setUp: Entering"); + request = Mockito.mock(HttpServletRequest.class); + response = Mockito.mock(HttpServletResponse.class); Mockito.when(request.getHeaderNames()).thenReturn(Collections.enumeration(headers)); Mockito.when(request.getAttributeNames()).thenReturn(Collections.enumeration(headers)); @@ -78,72 +78,72 @@ public class PushPolicyControllerTest { Mockito.when(servletConfig.getInitParameterNames()).thenReturn(Collections.enumeration(headers)); Mockito.when(servletConfig.getInitParameter("XACML_PROPERTIES_NAME")).thenReturn("src/test/resources/xacml.pap.properties"); - commonClassDao = Mockito.mock(CommonClassDao.class); - controller = new PushPolicyController(); - controller.setCommonClassDao(commonClassDao); - logger.info("setUp: exit"); - } - - @Test - public void testPushPolicy() throws ServletException, PAPException{ - PolicyVersion versionData = new PolicyVersion(); - versionData.setPolicyName("com"+File.separator+"Config_Test"); - versionData.setActiveVersion(1); - versionData.setHigherVersion(1); - List<Object> data = new ArrayList<>(); - data.add(versionData); - when(commonClassDao.getDataById(PolicyVersion.class, "policyName", "com"+File.separator+"Config_Test")).thenReturn(data); - pap = new XACMLPapServlet(); - pap.init(servletConfig); - callPushPolicy(); - when(commonClassDao.getDataById(PolicyVersion.class, "policyName", "com"+File.separator+"Config_Test")).thenReturn(null); - callPushPolicy(); - } - - public void callPushPolicy(){ - jsonString = "{\"policyScope\":\"com\",\"filePrefix\":\"Config_\",\"policyName\":\"Test\",\"pdpGroup\":\"default\"}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - char[] charBuffer = new char[8 * 1024]; - StringBuilder builder = new StringBuilder(); - int numCharsRead; - while ((numCharsRead = br.read(charBuffer, 0, charBuffer.length)) != -1) { - builder.append(charBuffer, 0, numCharsRead); - } - when(request.getInputStream()).thenReturn(getInputStream(builder.toString().getBytes(StandardCharsets.UTF_8))); - controller.pushPolicy(request, response); - assertTrue(response != null); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - public ServletInputStream getInputStream(byte[] body) throws IOException { + commonClassDao = Mockito.mock(CommonClassDao.class); + controller = new PushPolicyController(); + controller.setCommonClassDao(commonClassDao); + logger.info("setUp: exit"); + } + + @Test + public void testPushPolicy() throws ServletException, PAPException{ + PolicyVersion versionData = new PolicyVersion(); + versionData.setPolicyName("com"+File.separator+"Config_Test"); + versionData.setActiveVersion(1); + versionData.setHigherVersion(1); + List<Object> data = new ArrayList<>(); + data.add(versionData); + when(commonClassDao.getDataById(PolicyVersion.class, "policyName", "com"+File.separator+"Config_Test")).thenReturn(data); + pap = new XACMLPapServlet(); + pap.init(servletConfig); + callPushPolicy(); + when(commonClassDao.getDataById(PolicyVersion.class, "policyName", "com"+File.separator+"Config_Test")).thenReturn(null); + callPushPolicy(); + } + + public void callPushPolicy(){ + jsonString = "{\"policyScope\":\"com\",\"filePrefix\":\"Config_\",\"policyName\":\"Test\",\"pdpGroup\":\"default\"}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + char[] charBuffer = new char[8 * 1024]; + StringBuilder builder = new StringBuilder(); + int numCharsRead; + while ((numCharsRead = br.read(charBuffer, 0, charBuffer.length)) != -1) { + builder.append(charBuffer, 0, numCharsRead); + } + when(request.getInputStream()).thenReturn(getInputStream(builder.toString().getBytes(StandardCharsets.UTF_8))); + controller.pushPolicy(request, response); + assertTrue(response != null); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + public ServletInputStream getInputStream(byte[] body) throws IOException { final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(body); ServletInputStream servletInputStream = new ServletInputStream() { public int read() throws IOException { return byteArrayInputStream.read(); } - @Override - public boolean isFinished() { - return false; - } + @Override + public boolean isFinished() { + return false; + } - @Override - public boolean isReady() { - return false; - } + @Override + public boolean isReady() { + return false; + } - @Override - public void setReadListener(ReadListener readListener) { - } + @Override + public void setReadListener(ReadListener readListener) { + } }; return servletInputStream; } - - @After - public void destroy(){ - if(pap!=null) - pap.destroy(); - } + + @After + public void destroy(){ + if(pap!=null) + pap.destroy(); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/SafePolicyControllerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/SafePolicyControllerTest.java index 7d23475a1..ae1840ebb 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/SafePolicyControllerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/SafePolicyControllerTest.java @@ -45,158 +45,158 @@ import org.onap.policy.rest.jpa.UserInfo; import org.springframework.mock.web.MockHttpServletResponse; public class SafePolicyControllerTest { - - private static Logger logger = FlexLogger.getLogger(SafePolicyControllerTest.class); - private static CommonClassDao commonClassDao; - private String jsonString = null; - private HttpServletRequest request = null; - private SafePolicyController controller = null; - private MockHttpServletResponse response = null; - private UserInfo userInfo; - private List<String> data; - - @Before - public void setUp() throws Exception { - logger.info("setUp: Entering"); - commonClassDao = Mockito.mock(CommonClassDao.class); - - data = new ArrayList<>(); - data.add("Test"); - - userInfo = new UserInfo(); - userInfo.setUserLoginId("Test"); - userInfo.setUserName("Test"); - - doNothing().when(commonClassDao).delete(new RiskType()); - doNothing().when(commonClassDao).save(new RiskType()); - - controller = new SafePolicyController(); - controller.setCommonClassDao(commonClassDao); - new DictionaryUtils(commonClassDao); - DictionaryUtils.setDictionaryUtils(new DictionaryUtils()); - mock(DictionaryUtils.class); - request = Mockito.mock(HttpServletRequest.class); - response = new MockHttpServletResponse(); - logger.info("setUp: exit"); - } - - @Test - public void testGetRiskTypeDictionaryByNameEntityData(){ - when(commonClassDao.getDataByColumn(RiskType.class, "name")).thenReturn(data); - controller.getRiskTypeDictionaryByNameEntityData(response); - try { - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("riskTypeDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetRiskTypeDictionaryEntityData(){ - when(commonClassDao.getData(RiskType.class)).thenReturn(new ArrayList<>()); - controller.getRiskTypeDictionaryEntityData(response); - try { - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("riskTypeDictionaryDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetSafePolicyWarningEntityDataByName(){ - when(commonClassDao.getDataByColumn(SafePolicyWarning.class, "name")).thenReturn(data); - controller.getSafePolicyWarningEntityDataByName(response); - try { - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("safePolicyWarningDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testGetSafePolicyWarningeEntityData(){ - when(commonClassDao.getData(SafePolicyWarning.class)).thenReturn(new ArrayList<>()); - controller.getSafePolicyWarningeEntityData(response); - try { - assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("safePolicyWarningDatas")); - } catch (Exception e) { - fail(); - logger.error(e.getMessage(),e); - } - } - - @Test - public void testSaveRiskTypeDictionary(){ - jsonString = "{\"userid\":\"demo\",\"riskTypeDictionaryData\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveRiskTypeDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("riskTypeDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testUpdateRiskTypeDictionary(){ - jsonString = "{\"userid\":\"demo\",\"riskTypeDictionaryData\":{\"description\":\"test\",\"name\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveRiskTypeDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("riskTypeDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testRemoveRiskTypeDictionary(){ - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.removeRiskTypeDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("riskTypeDictionaryDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testSaveSafePolicyWarningDictionary(){ - jsonString = "{\"userid\":\"demo\",\"safePolicyWarningData\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveSafePolicyWarningDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("safePolicyWarningDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testUpdateSafePolicyWarningDictionary(){ - jsonString = "{\"userid\":\"demo\",\"safePolicyWarningData\":{\"description\":\"test\",\"name\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.saveSafePolicyWarningDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("safePolicyWarningDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } - - @Test - public void testRemoveSafePolicyWarningDictionary(){ - jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; - try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ - when(request.getReader()).thenReturn(br); - controller.removeSafePolicyWarningDictionary(request, response); - assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("safePolicyWarningDatas")); - }catch(Exception e){ - logger.error("Exception"+ e); - } - } + + private static Logger logger = FlexLogger.getLogger(SafePolicyControllerTest.class); + private static CommonClassDao commonClassDao; + private String jsonString = null; + private HttpServletRequest request = null; + private SafePolicyController controller = null; + private MockHttpServletResponse response = null; + private UserInfo userInfo; + private List<String> data; + + @Before + public void setUp() throws Exception { + logger.info("setUp: Entering"); + commonClassDao = Mockito.mock(CommonClassDao.class); + + data = new ArrayList<>(); + data.add("Test"); + + userInfo = new UserInfo(); + userInfo.setUserLoginId("Test"); + userInfo.setUserName("Test"); + + doNothing().when(commonClassDao).delete(new RiskType()); + doNothing().when(commonClassDao).save(new RiskType()); + + controller = new SafePolicyController(); + controller.setCommonClassDao(commonClassDao); + new DictionaryUtils(commonClassDao); + DictionaryUtils.setDictionaryUtils(new DictionaryUtils()); + mock(DictionaryUtils.class); + request = Mockito.mock(HttpServletRequest.class); + response = new MockHttpServletResponse(); + logger.info("setUp: exit"); + } + + @Test + public void testGetRiskTypeDictionaryByNameEntityData(){ + when(commonClassDao.getDataByColumn(RiskType.class, "name")).thenReturn(data); + controller.getRiskTypeDictionaryByNameEntityData(response); + try { + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("riskTypeDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetRiskTypeDictionaryEntityData(){ + when(commonClassDao.getData(RiskType.class)).thenReturn(new ArrayList<>()); + controller.getRiskTypeDictionaryEntityData(response); + try { + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("riskTypeDictionaryDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetSafePolicyWarningEntityDataByName(){ + when(commonClassDao.getDataByColumn(SafePolicyWarning.class, "name")).thenReturn(data); + controller.getSafePolicyWarningEntityDataByName(response); + try { + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("safePolicyWarningDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testGetSafePolicyWarningeEntityData(){ + when(commonClassDao.getData(SafePolicyWarning.class)).thenReturn(new ArrayList<>()); + controller.getSafePolicyWarningeEntityData(response); + try { + assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("safePolicyWarningDatas")); + } catch (Exception e) { + fail(); + logger.error(e.getMessage(),e); + } + } + + @Test + public void testSaveRiskTypeDictionary(){ + jsonString = "{\"userid\":\"demo\",\"riskTypeDictionaryData\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveRiskTypeDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("riskTypeDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testUpdateRiskTypeDictionary(){ + jsonString = "{\"userid\":\"demo\",\"riskTypeDictionaryData\":{\"description\":\"test\",\"name\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveRiskTypeDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("riskTypeDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testRemoveRiskTypeDictionary(){ + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.removeRiskTypeDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("riskTypeDictionaryDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testSaveSafePolicyWarningDictionary(){ + jsonString = "{\"userid\":\"demo\",\"safePolicyWarningData\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveSafePolicyWarningDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("safePolicyWarningDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testUpdateSafePolicyWarningDictionary(){ + jsonString = "{\"userid\":\"demo\",\"safePolicyWarningData\":{\"description\":\"test\",\"name\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.saveSafePolicyWarningDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("safePolicyWarningDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } + + @Test + public void testRemoveSafePolicyWarningDictionary(){ + jsonString = "{\"userid\":\"demo\",\"data\":{\"id\":1,\"description\":\"test\",\"name\":\"Test\"}}"; + try(BufferedReader br = new BufferedReader(new StringReader(jsonString))){ + when(request.getReader()).thenReturn(br); + controller.removeSafePolicyWarningDictionary(request, response); + assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("safePolicyWarningDatas")); + }catch(Exception e){ + logger.error("Exception"+ e); + } + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/ElasticSearchPolicyUpdateTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/ElasticSearchPolicyUpdateTest.java index 2b1300cc4..da9c4e8f5 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/ElasticSearchPolicyUpdateTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/ElasticSearchPolicyUpdateTest.java @@ -40,28 +40,28 @@ import org.onap.policy.rest.jpa.ConfigurationDataEntity; import org.onap.policy.rest.jpa.PolicyEntity; public class ElasticSearchPolicyUpdateTest { - - private static Logger logger = FlexLogger.getLogger(ElasticSearchPolicyUpdateTest.class); - private Object policyContent = ""; - private XACMLPAPTest papTest; - - @Before - public void setUp() throws IOException, ServletException, SQLException{ - // Set the system property temporarily - System.setProperty("PROPERTY_FILE", "src/test/resources/policyelk.properties"); + + private static Logger logger = FlexLogger.getLogger(ElasticSearchPolicyUpdateTest.class); + private Object policyContent = ""; + private XACMLPAPTest papTest; + + @Before + public void setUp() throws IOException, ServletException, SQLException{ + // Set the system property temporarily + System.setProperty("PROPERTY_FILE", "src/test/resources/policyelk.properties"); try { - ClassLoader classLoader = getClass().getClassLoader(); - policyContent = IOUtils.toString(classLoader.getResourceAsStream("Config_SampleTest1206.1.xml")); - } catch (Exception e1) { - logger.error("Exception Occured"+e1); - } + ClassLoader classLoader = getClass().getClassLoader(); + policyContent = IOUtils.toString(classLoader.getResourceAsStream("Config_SampleTest1206.1.xml")); + } catch (Exception e1) { + logger.error("Exception Occured"+e1); + } papTest = new XACMLPAPTest(); - papTest.setDBDao(); - } - - @Test - public void testElasticSearchMainFunction() throws SQLException{ - ConfigurationDataEntity configurationEntity = new ConfigurationDataEntity(); + papTest.setDBDao(); + } + + @Test + public void testElasticSearchMainFunction() throws SQLException{ + ConfigurationDataEntity configurationEntity = new ConfigurationDataEntity(); configurationEntity.setConfigBody("Sample Test"); configurationEntity.setConfigType("OTHER"); configurationEntity.setConfigurationName("com.Config_SampleTest1206.1.txt"); @@ -70,7 +70,7 @@ public class ElasticSearchPolicyUpdateTest { configurationEntity.setModifiedDate(new Date()); - PolicyEntity entity = new PolicyEntity(); + PolicyEntity entity = new PolicyEntity(); entity.setPolicyName("Config_SampleTest.1.xml"); entity.setPolicyData(policyContent.toString()); entity.setScope("com"); @@ -84,14 +84,14 @@ public class ElasticSearchPolicyUpdateTest { dao.save(configurationEntity); dao.save(entity); dao.delete(dao.getEntityItem(PolicyEntity.class, "policyName", "Config_SampleTest.1.xml")); - ElasticSearchPolicyUpdate.main(null); - StringBuilder policyDataString = new StringBuilder(); - ElasticSearchPolicyUpdate.constructPolicyData(policyContent, policyDataString); - assertTrue(policyDataString.toString().contains("onapName")); - } - - @After - public void reset(){ - System.clearProperty("PROPERTY_FILE"); - } + ElasticSearchPolicyUpdate.main(null); + StringBuilder policyDataString = new StringBuilder(); + ElasticSearchPolicyUpdate.constructPolicyData(policyContent, policyDataString); + assertTrue(policyDataString.toString().contains("onapName")); + } + + @After + public void reset(){ + System.clearProperty("PROPERTY_FILE"); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/ElkConnectorImplTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/ElkConnectorImplTest.java index 853d75ce6..2f3d580f7 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/ElkConnectorImplTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/ElkConnectorImplTest.java @@ -39,108 +39,108 @@ import org.onap.policy.rest.adapter.PolicyRestAdapter; public class ElkConnectorImplTest { - @Test - public void isAlphaNumericTest() { - try { - Method method = ElkConnectorImpl.class.getDeclaredMethod("isAlphaNumeric", String.class); - method.setAccessible(true); - assertTrue((boolean) method.invoke(new ElkConnectorImpl(), "abc123")); - assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123*")); - assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123{}")); - assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123\n")); - assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123<")); - assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123:")); - } catch (Exception e) { - fail(); - } - } - - @Test - public void searchTest(){ - JestResult r1=null, r2=null, r3=null, r4=null; - - // Should always work if the above test passes and ELK server is up - try{ - r1 = new ElkConnectorImpl().search(PolicyIndexType.decision, "abc123"); - } catch (Exception e) { - // ELK server is down. Don't continue the test - if(e instanceof IllegalStateException){ - return; - } - fail(); - } - - // Should always work - try{ - r2 = new ElkConnectorImpl().search(PolicyIndexType.decision, "The_quick_brown_fox_jumps_over_the_lazy_dog"); - } catch (Exception e) { - fail(); - } - - // Should throw exception - try{ - r3 = new ElkConnectorImpl().search(PolicyIndexType.decision, "abc123{}"); - } catch (Exception e) { - if(! (e instanceof IllegalArgumentException)){ - fail(); - } - } - - // Should throw exception - try{ - r4 = new ElkConnectorImpl().search(PolicyIndexType.decision, "The quick brown fox jumps over the lazy dog"); - } catch (Exception e) { - if(! (e instanceof IllegalArgumentException)){ - fail(); - } - } - - assertNotNull(r1); - assertNotNull(r2); - assertNull(r3); - assertNull(r4); - } - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Test - public void testDelete() { - thrown.expect(NullPointerException.class); - - ElkConnectorImpl impl = new ElkConnectorImpl(); - PolicyRestAdapter adapter = new PolicyRestAdapter(); - impl.delete(adapter); - fail("Expected exception to be thrown"); - } - - - @Test - public void testPut() throws IOException { - thrown.expect(NullPointerException.class); - - ElkConnectorImpl impl = new ElkConnectorImpl(); - PolicyRestAdapter adapter = new PolicyRestAdapter(); - impl.put(adapter); - fail("Expected exception to be thrown"); - } - - @Test - public void testUpdate() { - thrown.expect(IllegalStateException.class); - - ElkConnectorImpl impl = new ElkConnectorImpl(); - PolicyRestAdapter adapter = new PolicyRestAdapter(); - impl.update(adapter); - fail("Expected exception to be thrown"); - } - - @Test - public void testSearchWithFilter() { - thrown.expect(IllegalStateException.class); - - ElkConnectorImpl impl = new ElkConnectorImpl(); - impl.search(PolicyIndexType.config, "search", null); - fail("Expected exception to be thrown"); - } + @Test + public void isAlphaNumericTest() { + try { + Method method = ElkConnectorImpl.class.getDeclaredMethod("isAlphaNumeric", String.class); + method.setAccessible(true); + assertTrue((boolean) method.invoke(new ElkConnectorImpl(), "abc123")); + assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123*")); + assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123{}")); + assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123\n")); + assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123<")); + assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123:")); + } catch (Exception e) { + fail(); + } + } + + @Test + public void searchTest(){ + JestResult r1=null, r2=null, r3=null, r4=null; + + // Should always work if the above test passes and ELK server is up + try{ + r1 = new ElkConnectorImpl().search(PolicyIndexType.decision, "abc123"); + } catch (Exception e) { + // ELK server is down. Don't continue the test + if(e instanceof IllegalStateException){ + return; + } + fail(); + } + + // Should always work + try{ + r2 = new ElkConnectorImpl().search(PolicyIndexType.decision, "The_quick_brown_fox_jumps_over_the_lazy_dog"); + } catch (Exception e) { + fail(); + } + + // Should throw exception + try{ + r3 = new ElkConnectorImpl().search(PolicyIndexType.decision, "abc123{}"); + } catch (Exception e) { + if(! (e instanceof IllegalArgumentException)){ + fail(); + } + } + + // Should throw exception + try{ + r4 = new ElkConnectorImpl().search(PolicyIndexType.decision, "The quick brown fox jumps over the lazy dog"); + } catch (Exception e) { + if(! (e instanceof IllegalArgumentException)){ + fail(); + } + } + + assertNotNull(r1); + assertNotNull(r2); + assertNull(r3); + assertNull(r4); + } + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + @Test + public void testDelete() { + thrown.expect(NullPointerException.class); + + ElkConnectorImpl impl = new ElkConnectorImpl(); + PolicyRestAdapter adapter = new PolicyRestAdapter(); + impl.delete(adapter); + fail("Expected exception to be thrown"); + } + + + @Test + public void testPut() throws IOException { + thrown.expect(NullPointerException.class); + + ElkConnectorImpl impl = new ElkConnectorImpl(); + PolicyRestAdapter adapter = new PolicyRestAdapter(); + impl.put(adapter); + fail("Expected exception to be thrown"); + } + + @Test + public void testUpdate() { + thrown.expect(IllegalStateException.class); + + ElkConnectorImpl impl = new ElkConnectorImpl(); + PolicyRestAdapter adapter = new PolicyRestAdapter(); + impl.update(adapter); + fail("Expected exception to be thrown"); + } + + @Test + public void testSearchWithFilter() { + thrown.expect(IllegalStateException.class); + + ElkConnectorImpl impl = new ElkConnectorImpl(); + impl.search(PolicyIndexType.config, "search", null); + fail("Expected exception to be thrown"); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PairTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PairTest.java index 68f1daa0b..0b8c86c1e 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PairTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PairTest.java @@ -25,20 +25,20 @@ import org.junit.Test; import org.onap.policy.pap.xacml.rest.elk.client.Pair; public class PairTest { - @Test - public void testPair() { - String testLeft = "left"; - String testRight = "right"; - - // Test constructor - Pair<String, String> pair = new Pair<String, String>(testLeft, testRight); - assertEquals(pair.left(), testLeft); - assertEquals(pair.right(), testRight); - - // Test setters - pair.left(testRight); - pair.right(testLeft); - assertEquals(pair.left(), testRight); - assertEquals(pair.right(), testLeft); - } + @Test + public void testPair() { + String testLeft = "left"; + String testRight = "right"; + + // Test constructor + Pair<String, String> pair = new Pair<String, String>(testLeft, testRight); + assertEquals(pair.left(), testLeft); + assertEquals(pair.right(), testRight); + + // Test setters + pair.left(testRight); + pair.right(testLeft); + assertEquals(pair.left(), testRight); + assertEquals(pair.right(), testLeft); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PolicyElasticDataTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PolicyElasticDataTest.java index a84e4a0cd..76c0ce788 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PolicyElasticDataTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PolicyElasticDataTest.java @@ -30,159 +30,159 @@ import org.onap.policy.rest.adapter.PolicyRestAdapter; import org.onap.policy.rest.adapter.YAMLParams; public class PolicyElasticDataTest { - @Test - public void testSetAndGet() { - String testKey = "testKey"; - String testVal = "testVal"; - LinkedHashMap<String, String> testMap = new LinkedHashMap<String, String>(); - testMap.put(testKey, testVal); - ArrayList<Object> testArray = new ArrayList<Object>(); - testArray.add(testVal); - List<String> testList = new ArrayList<String>(); - testList.add(testVal); - List<Object> testObjectList = new ArrayList<Object>(); - testObjectList.add(testVal); - YAMLParams testYaml = new YAMLParams(); - - PolicyRestAdapter adapter = new PolicyRestAdapter(); - adapter.setConfigPolicyType(testVal); - - PolicyElasticData data = new PolicyElasticData(adapter); - data.setScope(testVal); - assertEquals(data.getScope(), testVal); - data.setPolicyType(testVal); - assertEquals(data.getPolicyType(), testVal); - data.setConfigPolicyType(testVal); - assertEquals(data.getConfigPolicyType(), testVal); - data.setConfigBodyData(testVal); - assertEquals(data.getConfigBodyData(), testVal); - data.setPolicyName(testVal); - assertEquals(data.getPolicyName(), testVal); - data.setPolicyDescription(testVal); - assertEquals(data.getPolicyDescription(), testVal); - data.setOnapName(testVal); - assertEquals(data.getOnapName(), testVal); - data.setConfigName(testVal); - assertEquals(data.getConfigName(), testVal); - data.setConfigType(testVal); - assertEquals(data.getConfigType(), testVal); - data.setJsonBody(testVal); - assertEquals(data.getJsonBody(), testVal); - data.setServiceTypePolicyName(testMap); - assertEquals(data.getServiceTypePolicyName(), testMap); - data.setVerticaMetrics(testMap); - assertEquals(data.getVerticaMetrics(), testMap); - data.setDescription(testMap); - assertEquals(data.getDescription(), testMap); - data.setAttributeFields(testMap); - assertEquals(data.getAttributeFields(), testMap); - data.setPolicyScope(testVal); - assertEquals(data.getPolicyScope(), testVal); - data.setProviderComboBox(testVal); - assertEquals(data.getProviderComboBox(), testVal); - data.setRiskType(testVal); - assertEquals(data.getRiskType(), testVal); - data.setRiskLevel(testVal); - assertEquals(data.getRiskLevel(), testVal); - data.setGuard(testVal); - assertEquals(data.getGuard(), testVal); - data.setTtlDate(testVal); - assertEquals(data.getTtlDate(), testVal); - data.setMatching(testMap); - assertEquals(data.getMatching(), testMap); - data.setTriggerSignatures(testArray); - assertEquals(data.getTriggerSignatures(), testArray); - data.setSymptomSignatures(testArray); - assertEquals(data.getSymptomSignatures(), testArray); - data.setLogicalConnector(testVal); - assertEquals(data.getLogicalConnector(), testVal); - data.setPolicyStatus(testVal); - assertEquals(data.getPolicyStatus(), testVal); - data.setGocServerScope(testVal); - assertEquals(data.getGocServerScope(), testVal); - data.setSupressionType(testVal); - assertEquals(data.getSupressionType(), testVal); - data.setServiceType(testVal); - assertEquals(data.getServiceType(),testVal); - data.setUuid(testVal); - assertEquals(data.getUuid(), testVal); - data.setLocation(testVal); - assertEquals(data.getLocation(), testVal); - data.setPriority(testVal); - assertEquals(data.getPriority(), testVal); - data.setMsLocation(testVal); - assertEquals(data.getMsLocation(),testVal); - data.setRuleName(testVal); - assertEquals(data.getRuleName(), testVal); - data.setBrmsParamBody(testMap); - assertEquals(data.getBrmsParamBody(), testMap); - data.setBrmsController(testVal); - assertEquals(data.getBrmsController(), testVal); - data.setBrmsDependency(testList); - assertEquals(data.getBrmsDependency(), testList); - data.setRuleData(testMap); - assertEquals(data.getRuleData(), testMap); - data.setRuleListData(testMap); - assertEquals(data.getRuleListData(), testMap); - data.setDrlRuleAndUIParams(testMap); - assertEquals(data.getDrlRuleAndUIParams(), testMap); - data.setClearTimeOut(testVal); - assertEquals(data.getClearTimeOut(), testVal); - data.setTrapMaxAge(testVal); - assertEquals(data.getTrapMaxAge(), testVal); - data.setVerificationclearTimeOut(testVal); - assertEquals(data.getVerificationclearTimeOut(), testVal); - data.setDynamicLayoutMap(testMap); - assertEquals(data.getDynamicLayoutMap(), testMap); - data.setFwPolicyType(testVal); - assertEquals(data.getFwPolicyType(), testVal); - data.setFwattributes(testArray); - assertEquals(data.getFwattributes(), testArray); - data.setParentForChild(testVal); - assertEquals(data.getParentForChild(), testVal); - data.setSecurityZone(testVal); - assertEquals(data.getSecurityZone(), testVal); - data.setRuleCombiningAlgId(testVal); - assertEquals(data.getRuleCombiningAlgId(), testVal); - data.setDynamicFieldConfigAttributes(testMap); - assertEquals(data.getDynamicFieldConfigAttributes(), testMap); - data.setDynamicSettingsMap(testMap); - assertEquals(data.getDynamicSettingsMap(), testMap); - data.setDropDownMap(testMap); - assertEquals(data.getDropDownMap(), testMap); - data.setActionPerformer(testVal); - assertEquals(data.getActionPerformer(), testVal); - data.setActionAttribute(testVal); - assertEquals(data.getActionAttribute(), testVal); - data.setDynamicRuleAlgorithmLabels(testList); - assertEquals(data.getDynamicRuleAlgorithmLabels(), testList); - data.setDynamicRuleAlgorithmCombo(testList); - assertEquals(data.getDynamicRuleAlgorithmCombo(), testList); - data.setDynamicRuleAlgorithmField1(testList); - assertEquals(data.getDynamicRuleAlgorithmField1(), testList); - data.setDynamicRuleAlgorithmField2(testList); - assertEquals(data.getDynamicRuleAlgorithmField2(), testList); - data.setDynamicVariableList(testObjectList); - assertEquals(data.getDynamicVariableList(), testObjectList); - data.setDataTypeList(testList); - assertEquals(data.getDataTypeList(), testList); - data.setActionAttributeValue(testVal); - assertEquals(data.getActionAttributeValue(), testVal); - data.setRuleProvider(testVal); - assertEquals(data.getRuleProvider(), testVal); - data.setActionBody(testVal); - assertEquals(data.getActionBody(), testVal); - data.setActionDictHeader(testVal); - assertEquals(data.getActionDictHeader(), testVal); - data.setActionDictType(testVal); - assertEquals(data.getActionDictType(), testVal); - data.setActionDictUrl(testVal); - assertEquals(data.getActionDictUrl(), testVal); - data.setActionDictMethod(testVal); - assertEquals(data.getActionDictMethod(), testVal); - data.setYamlparams(testYaml); - assertEquals(data.getYamlparams(), testYaml); - data.setJsonBodyData(testVal); - assertEquals(data.getJsonBodyData(), testVal); - } + @Test + public void testSetAndGet() { + String testKey = "testKey"; + String testVal = "testVal"; + LinkedHashMap<String, String> testMap = new LinkedHashMap<String, String>(); + testMap.put(testKey, testVal); + ArrayList<Object> testArray = new ArrayList<Object>(); + testArray.add(testVal); + List<String> testList = new ArrayList<String>(); + testList.add(testVal); + List<Object> testObjectList = new ArrayList<Object>(); + testObjectList.add(testVal); + YAMLParams testYaml = new YAMLParams(); + + PolicyRestAdapter adapter = new PolicyRestAdapter(); + adapter.setConfigPolicyType(testVal); + + PolicyElasticData data = new PolicyElasticData(adapter); + data.setScope(testVal); + assertEquals(data.getScope(), testVal); + data.setPolicyType(testVal); + assertEquals(data.getPolicyType(), testVal); + data.setConfigPolicyType(testVal); + assertEquals(data.getConfigPolicyType(), testVal); + data.setConfigBodyData(testVal); + assertEquals(data.getConfigBodyData(), testVal); + data.setPolicyName(testVal); + assertEquals(data.getPolicyName(), testVal); + data.setPolicyDescription(testVal); + assertEquals(data.getPolicyDescription(), testVal); + data.setOnapName(testVal); + assertEquals(data.getOnapName(), testVal); + data.setConfigName(testVal); + assertEquals(data.getConfigName(), testVal); + data.setConfigType(testVal); + assertEquals(data.getConfigType(), testVal); + data.setJsonBody(testVal); + assertEquals(data.getJsonBody(), testVal); + data.setServiceTypePolicyName(testMap); + assertEquals(data.getServiceTypePolicyName(), testMap); + data.setVerticaMetrics(testMap); + assertEquals(data.getVerticaMetrics(), testMap); + data.setDescription(testMap); + assertEquals(data.getDescription(), testMap); + data.setAttributeFields(testMap); + assertEquals(data.getAttributeFields(), testMap); + data.setPolicyScope(testVal); + assertEquals(data.getPolicyScope(), testVal); + data.setProviderComboBox(testVal); + assertEquals(data.getProviderComboBox(), testVal); + data.setRiskType(testVal); + assertEquals(data.getRiskType(), testVal); + data.setRiskLevel(testVal); + assertEquals(data.getRiskLevel(), testVal); + data.setGuard(testVal); + assertEquals(data.getGuard(), testVal); + data.setTtlDate(testVal); + assertEquals(data.getTtlDate(), testVal); + data.setMatching(testMap); + assertEquals(data.getMatching(), testMap); + data.setTriggerSignatures(testArray); + assertEquals(data.getTriggerSignatures(), testArray); + data.setSymptomSignatures(testArray); + assertEquals(data.getSymptomSignatures(), testArray); + data.setLogicalConnector(testVal); + assertEquals(data.getLogicalConnector(), testVal); + data.setPolicyStatus(testVal); + assertEquals(data.getPolicyStatus(), testVal); + data.setGocServerScope(testVal); + assertEquals(data.getGocServerScope(), testVal); + data.setSupressionType(testVal); + assertEquals(data.getSupressionType(), testVal); + data.setServiceType(testVal); + assertEquals(data.getServiceType(),testVal); + data.setUuid(testVal); + assertEquals(data.getUuid(), testVal); + data.setLocation(testVal); + assertEquals(data.getLocation(), testVal); + data.setPriority(testVal); + assertEquals(data.getPriority(), testVal); + data.setMsLocation(testVal); + assertEquals(data.getMsLocation(),testVal); + data.setRuleName(testVal); + assertEquals(data.getRuleName(), testVal); + data.setBrmsParamBody(testMap); + assertEquals(data.getBrmsParamBody(), testMap); + data.setBrmsController(testVal); + assertEquals(data.getBrmsController(), testVal); + data.setBrmsDependency(testList); + assertEquals(data.getBrmsDependency(), testList); + data.setRuleData(testMap); + assertEquals(data.getRuleData(), testMap); + data.setRuleListData(testMap); + assertEquals(data.getRuleListData(), testMap); + data.setDrlRuleAndUIParams(testMap); + assertEquals(data.getDrlRuleAndUIParams(), testMap); + data.setClearTimeOut(testVal); + assertEquals(data.getClearTimeOut(), testVal); + data.setTrapMaxAge(testVal); + assertEquals(data.getTrapMaxAge(), testVal); + data.setVerificationclearTimeOut(testVal); + assertEquals(data.getVerificationclearTimeOut(), testVal); + data.setDynamicLayoutMap(testMap); + assertEquals(data.getDynamicLayoutMap(), testMap); + data.setFwPolicyType(testVal); + assertEquals(data.getFwPolicyType(), testVal); + data.setFwattributes(testArray); + assertEquals(data.getFwattributes(), testArray); + data.setParentForChild(testVal); + assertEquals(data.getParentForChild(), testVal); + data.setSecurityZone(testVal); + assertEquals(data.getSecurityZone(), testVal); + data.setRuleCombiningAlgId(testVal); + assertEquals(data.getRuleCombiningAlgId(), testVal); + data.setDynamicFieldConfigAttributes(testMap); + assertEquals(data.getDynamicFieldConfigAttributes(), testMap); + data.setDynamicSettingsMap(testMap); + assertEquals(data.getDynamicSettingsMap(), testMap); + data.setDropDownMap(testMap); + assertEquals(data.getDropDownMap(), testMap); + data.setActionPerformer(testVal); + assertEquals(data.getActionPerformer(), testVal); + data.setActionAttribute(testVal); + assertEquals(data.getActionAttribute(), testVal); + data.setDynamicRuleAlgorithmLabels(testList); + assertEquals(data.getDynamicRuleAlgorithmLabels(), testList); + data.setDynamicRuleAlgorithmCombo(testList); + assertEquals(data.getDynamicRuleAlgorithmCombo(), testList); + data.setDynamicRuleAlgorithmField1(testList); + assertEquals(data.getDynamicRuleAlgorithmField1(), testList); + data.setDynamicRuleAlgorithmField2(testList); + assertEquals(data.getDynamicRuleAlgorithmField2(), testList); + data.setDynamicVariableList(testObjectList); + assertEquals(data.getDynamicVariableList(), testObjectList); + data.setDataTypeList(testList); + assertEquals(data.getDataTypeList(), testList); + data.setActionAttributeValue(testVal); + assertEquals(data.getActionAttributeValue(), testVal); + data.setRuleProvider(testVal); + assertEquals(data.getRuleProvider(), testVal); + data.setActionBody(testVal); + assertEquals(data.getActionBody(), testVal); + data.setActionDictHeader(testVal); + assertEquals(data.getActionDictHeader(), testVal); + data.setActionDictType(testVal); + assertEquals(data.getActionDictType(), testVal); + data.setActionDictUrl(testVal); + assertEquals(data.getActionDictUrl(), testVal); + data.setActionDictMethod(testVal); + assertEquals(data.getActionDictMethod(), testVal); + data.setYamlparams(testYaml); + assertEquals(data.getYamlparams(), testYaml); + data.setJsonBodyData(testVal); + assertEquals(data.getJsonBodyData(), testVal); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PolicyElasticSearchControllerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PolicyElasticSearchControllerTest.java index ec86996c1..bdbe1441d 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PolicyElasticSearchControllerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PolicyElasticSearchControllerTest.java @@ -36,46 +36,46 @@ import org.mockito.Mockito; import org.onap.policy.pap.xacml.rest.elk.client.PolicyElasticSearchController; public class PolicyElasticSearchControllerTest { - - private PolicyElasticSearchController conroller; - private HttpServletRequest request = null; - private HttpServletResponse response = null; - - @Before - public void setup(){ - conroller = new PolicyElasticSearchController(); - request = Mockito.mock(HttpServletRequest.class); - response = Mockito.mock(HttpServletResponse.class); - } - - @Test - public void testSearchDictionary(){ - List<String> jsonString = new ArrayList<>(); - jsonString.add("{\"type\":\"attribute\",\"data\":{\"xacmlId\":\"Test\"}}"); - jsonString.add("{\"type\":\"onapName\",\"data\":{\"onapName\":\"Test\"}}"); - jsonString.add("{\"type\":\"actionPolicy\",\"data\":{\"attributeName\":\"Test\"}}"); - jsonString.add("{\"type\":\"brmsParam\",\"data\":{\"ruleName\":\"Test\"}}"); - jsonString.add("{\"type\":\"pepOptions\",\"data\":{\"pepName\":\"Test\"}}"); - jsonString.add("{\"type\":\"clSite\",\"data\":{\"siteName\":\"Test\"}}"); - jsonString.add("{\"type\":\"clService\",\"data\":{\"serviceName\":\"Test\"}}"); - jsonString.add("{\"type\":\"clVarbind\",\"data\":{\"varbindName\":\"Test\"}}"); - jsonString.add("{\"type\":\"clVnf\",\"data\":{\"vnftype\":\"Test\"}}"); - jsonString.add("{\"type\":\"clVSCL\",\"data\":{\"vsclaction\":\"Test\"}}"); - jsonString.add("{\"type\":\"decision\",\"data\":{\"xacmlId\":\"Test\"}}"); - jsonString.add("{\"type\":\"fwTerm\",\"data\":{\"termName\":\"Test\"}}"); - jsonString.add("{\"type\":\"msDCAEUUID\",\"data\":{\"name\":\"Test\"}}"); - jsonString.add("{\"type\":\"msLocation\",\"data\":{\"name\":\"Test\"}}"); - jsonString.add("{\"type\":\"msModels\",\"data\":{\"modelName\":\"Test\"}}"); - jsonString.add("{\"type\":\"psGroupPolicy\",\"data\":{\"name\":\"Test\"}}"); - jsonString.add("{\"type\":\"safeRisk\",\"data\":{\"name\":\"Test\"}}"); - jsonString.add("{\"type\":\"safePolicyWarning\",\"data\":{\"name\":\"Test\"}}"); - for(int i = 0; i < jsonString.size(); i++){ - try(BufferedReader br = new BufferedReader(new StringReader(jsonString.get(i)))) { - when(request.getReader()).thenReturn(br); - conroller.searchDictionary(request, response); - } catch (Exception e) { - assertEquals(NullPointerException.class, e.getClass()); - } - } - } + + private PolicyElasticSearchController conroller; + private HttpServletRequest request = null; + private HttpServletResponse response = null; + + @Before + public void setup(){ + conroller = new PolicyElasticSearchController(); + request = Mockito.mock(HttpServletRequest.class); + response = Mockito.mock(HttpServletResponse.class); + } + + @Test + public void testSearchDictionary(){ + List<String> jsonString = new ArrayList<>(); + jsonString.add("{\"type\":\"attribute\",\"data\":{\"xacmlId\":\"Test\"}}"); + jsonString.add("{\"type\":\"onapName\",\"data\":{\"onapName\":\"Test\"}}"); + jsonString.add("{\"type\":\"actionPolicy\",\"data\":{\"attributeName\":\"Test\"}}"); + jsonString.add("{\"type\":\"brmsParam\",\"data\":{\"ruleName\":\"Test\"}}"); + jsonString.add("{\"type\":\"pepOptions\",\"data\":{\"pepName\":\"Test\"}}"); + jsonString.add("{\"type\":\"clSite\",\"data\":{\"siteName\":\"Test\"}}"); + jsonString.add("{\"type\":\"clService\",\"data\":{\"serviceName\":\"Test\"}}"); + jsonString.add("{\"type\":\"clVarbind\",\"data\":{\"varbindName\":\"Test\"}}"); + jsonString.add("{\"type\":\"clVnf\",\"data\":{\"vnftype\":\"Test\"}}"); + jsonString.add("{\"type\":\"clVSCL\",\"data\":{\"vsclaction\":\"Test\"}}"); + jsonString.add("{\"type\":\"decision\",\"data\":{\"xacmlId\":\"Test\"}}"); + jsonString.add("{\"type\":\"fwTerm\",\"data\":{\"termName\":\"Test\"}}"); + jsonString.add("{\"type\":\"msDCAEUUID\",\"data\":{\"name\":\"Test\"}}"); + jsonString.add("{\"type\":\"msLocation\",\"data\":{\"name\":\"Test\"}}"); + jsonString.add("{\"type\":\"msModels\",\"data\":{\"modelName\":\"Test\"}}"); + jsonString.add("{\"type\":\"psGroupPolicy\",\"data\":{\"name\":\"Test\"}}"); + jsonString.add("{\"type\":\"safeRisk\",\"data\":{\"name\":\"Test\"}}"); + jsonString.add("{\"type\":\"safePolicyWarning\",\"data\":{\"name\":\"Test\"}}"); + for(int i = 0; i < jsonString.size(); i++){ + try(BufferedReader br = new BufferedReader(new StringReader(jsonString.get(i)))) { + when(request.getReader()).thenReturn(br); + conroller.searchDictionary(request, response); + } catch (Exception e) { + assertEquals(NullPointerException.class, e.getClass()); + } + } + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PolicyLocatorTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PolicyLocatorTest.java index b648a318a..7df295382 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PolicyLocatorTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PolicyLocatorTest.java @@ -25,19 +25,19 @@ import org.junit.Test; import org.onap.policy.pap.xacml.rest.elk.client.PolicyLocator; public class PolicyLocatorTest { - @Test - public void testLocator() { - String policyType = "type"; - String policyName = "name"; + @Test + public void testLocator() { + String policyType = "type"; + String policyName = "name"; String owner = "owner"; String scope = "scope"; String policyId = "id"; String version = "1.0"; - String testString = "[owner|scope|type|name|id|v1.0|]"; + String testString = "[owner|scope|type|name|id|v1.0|]"; - PolicyLocator locator = new PolicyLocator(policyType, policyName, owner, - scope, policyId, version); - String locatorString = locator.toString(); - assertEquals(locatorString, testString); - } + PolicyLocator locator = new PolicyLocator(policyType, policyName, owner, + scope, policyId, version); + String locatorString = locator.toString(); + assertEquals(locatorString, testString); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/handler/DeleteHandlerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/handler/DeleteHandlerTest.java index 3941593e9..84f36aa63 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/handler/DeleteHandlerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/handler/DeleteHandlerTest.java @@ -47,68 +47,68 @@ import javax.persistence.EntityManager; @RunWith(PowerMockRunner.class) public class DeleteHandlerTest { - @Test - public void testGets() { - DeleteHandler handler = new DeleteHandler(); - assertNotNull(handler); - assertEquals(handler.preSafetyCheck(null), true); - assertNull(handler.getDeletedGroup()); - } - - @Test - public void testGetInstance() { - DeleteHandler handler = DeleteHandler.getInstance(); - assertNotNull(handler); - } - - @PrepareForTest({DeleteHandler.class, XACMLPapServlet.class}) - @Test - public void testDeletes() throws Exception { - // Mock request - DeleteHandler handler = new DeleteHandler(); - MockHttpServletRequest request = new MockHttpServletRequest(); - request.setBodyContent("{\n\"PAPPolicyType\": \"StdPAPPolicy\"\n}\n"); - - // Mock servlet - PAPPolicyEngine engine = Mockito.mock(StdEngine.class); - PowerMockito.mockStatic(XACMLPapServlet.class); - when(XACMLPapServlet.getPAPEngine()).thenReturn(engine); - when(engine.getGroup(any())).thenReturn(null); - - // Mock elastic search - PolicyElasticSearchController controller = Mockito.mock(PolicyElasticSearchController.class); - PowerMockito.whenNew(PolicyElasticSearchController.class).withNoArguments().thenReturn(controller); - - // Mock entity manager - EntityManager em = Mockito.mock(EntityManager.class); - - // Test deletion from PAP - MockHttpServletResponse response = new MockHttpServletResponse(); - try { - handler.doAPIDeleteFromPAP(request, response); - } - catch (Exception ex) { - fail("Not expecting an exception: " + ex); - } - - // Test deletion from PDP - ONAPLoggingContext loggingContext = Mockito.mock(ONAPLoggingContext.class); - try { - handler.doAPIDeleteFromPDP(request, response, loggingContext); - } - catch (Exception ex) { - fail("Not expecting an exception: " + ex); - } - - // Test delete entity - PolicyEntity policyEntity = new PolicyEntity(); - policyEntity.setPolicyName("testVal"); - String result = DeleteHandler.deletePolicyEntityData(em, policyEntity); - assertEquals(result, "success"); - - // Test check entity - Connection con = null; - List<?> peResult = Collections.emptyList(); - assertEquals(DeleteHandler.checkPolicyGroupEntity(con, peResult), false); - } + @Test + public void testGets() { + DeleteHandler handler = new DeleteHandler(); + assertNotNull(handler); + assertEquals(handler.preSafetyCheck(null), true); + assertNull(handler.getDeletedGroup()); + } + + @Test + public void testGetInstance() { + DeleteHandler handler = DeleteHandler.getInstance(); + assertNotNull(handler); + } + + @PrepareForTest({DeleteHandler.class, XACMLPapServlet.class}) + @Test + public void testDeletes() throws Exception { + // Mock request + DeleteHandler handler = new DeleteHandler(); + MockHttpServletRequest request = new MockHttpServletRequest(); + request.setBodyContent("{\n\"PAPPolicyType\": \"StdPAPPolicy\"\n}\n"); + + // Mock servlet + PAPPolicyEngine engine = Mockito.mock(StdEngine.class); + PowerMockito.mockStatic(XACMLPapServlet.class); + when(XACMLPapServlet.getPAPEngine()).thenReturn(engine); + when(engine.getGroup(any())).thenReturn(null); + + // Mock elastic search + PolicyElasticSearchController controller = Mockito.mock(PolicyElasticSearchController.class); + PowerMockito.whenNew(PolicyElasticSearchController.class).withNoArguments().thenReturn(controller); + + // Mock entity manager + EntityManager em = Mockito.mock(EntityManager.class); + + // Test deletion from PAP + MockHttpServletResponse response = new MockHttpServletResponse(); + try { + handler.doAPIDeleteFromPAP(request, response); + } + catch (Exception ex) { + fail("Not expecting an exception: " + ex); + } + + // Test deletion from PDP + ONAPLoggingContext loggingContext = Mockito.mock(ONAPLoggingContext.class); + try { + handler.doAPIDeleteFromPDP(request, response, loggingContext); + } + catch (Exception ex) { + fail("Not expecting an exception: " + ex); + } + + // Test delete entity + PolicyEntity policyEntity = new PolicyEntity(); + policyEntity.setPolicyName("testVal"); + String result = DeleteHandler.deletePolicyEntityData(em, policyEntity); + assertEquals(result, "success"); + + // Test check entity + Connection con = null; + List<?> peResult = Collections.emptyList(); + assertEquals(DeleteHandler.checkPolicyGroupEntity(con, peResult), false); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/handler/PushPolicyHandlerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/handler/PushPolicyHandlerTest.java index 81fe8a7ab..6971ed706 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/handler/PushPolicyHandlerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/handler/PushPolicyHandlerTest.java @@ -42,44 +42,44 @@ import javax.persistence.Query; @RunWith(PowerMockRunner.class) public class PushPolicyHandlerTest { - @PrepareForTest({XACMLPapServlet.class}) - @Test - public void testGetsAndChecks() { - // Mock servlet, entity mgr, transaction, and query - EntityManager em = Mockito.mock(EntityManager.class); - EntityManagerFactory emf = Mockito.mock(EntityManagerFactory.class); - PowerMockito.mockStatic(XACMLPapServlet.class); - PowerMockito.when(XACMLPapServlet.getEmf()).thenReturn(emf); - Mockito.when(emf.createEntityManager()).thenReturn(em); - EntityTransaction transaction = Mockito.mock(EntityTransaction.class); - Mockito.when(em.getTransaction()).thenReturn(transaction); - Query query = Mockito.mock(Query.class); - Mockito.when(em.createQuery(Mockito.anyString())).thenReturn(query); - - // Test constructor - PushPolicyHandler handler = new PushPolicyHandler(); - assertNotNull(handler); + @PrepareForTest({XACMLPapServlet.class}) + @Test + public void testGetsAndChecks() { + // Mock servlet, entity mgr, transaction, and query + EntityManager em = Mockito.mock(EntityManager.class); + EntityManagerFactory emf = Mockito.mock(EntityManagerFactory.class); + PowerMockito.mockStatic(XACMLPapServlet.class); + PowerMockito.when(XACMLPapServlet.getEmf()).thenReturn(emf); + Mockito.when(emf.createEntityManager()).thenReturn(em); + EntityTransaction transaction = Mockito.mock(EntityTransaction.class); + Mockito.when(em.getTransaction()).thenReturn(transaction); + Query query = Mockito.mock(Query.class); + Mockito.when(em.createQuery(Mockito.anyString())).thenReturn(query); - // Test gets - MockHttpServletRequest request = new MockHttpServletRequest(); - MockHttpServletResponse response = new MockHttpServletResponse(); - handler.getActiveVersion(request, response); - assertEquals(response.getStatusCode(), HttpServletResponse.SC_OK); - request.setupAddParameter("gitPath", "testPath"); - handler.getSelectedURI(request, response); - assertEquals(response.getStatusCode(), HttpServletResponse.SC_OK); - - // Test check - StdPDPPolicy policy = new StdPDPPolicy(); - OnapPDPGroup onapPolicy = new StdPDPGroup(); - String configHome = "testVal"; - assertEquals(handler.preSafetyCheck(policy, configHome), true); - assertEquals(handler.preSafetyCheck(onapPolicy, configHome), true); - } - - @Test - public void testGetInstance() { - PushPolicyHandler handler = PushPolicyHandler.getInstance(); - assertNotNull(handler); - } + // Test constructor + PushPolicyHandler handler = new PushPolicyHandler(); + assertNotNull(handler); + + // Test gets + MockHttpServletRequest request = new MockHttpServletRequest(); + MockHttpServletResponse response = new MockHttpServletResponse(); + handler.getActiveVersion(request, response); + assertEquals(response.getStatusCode(), HttpServletResponse.SC_OK); + request.setupAddParameter("gitPath", "testPath"); + handler.getSelectedURI(request, response); + assertEquals(response.getStatusCode(), HttpServletResponse.SC_OK); + + // Test check + StdPDPPolicy policy = new StdPDPPolicy(); + OnapPDPGroup onapPolicy = new StdPDPGroup(); + String configHome = "testVal"; + assertEquals(handler.preSafetyCheck(policy, configHome), true); + assertEquals(handler.preSafetyCheck(onapPolicy, configHome), true); + } + + @Test + public void testGetInstance() { + PushPolicyHandler handler = PushPolicyHandler.getInstance(); + assertNotNull(handler); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/jpa/PolicyEntityTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/jpa/PolicyEntityTest.java index 8b4c73abd..e7de8d0c4 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/jpa/PolicyEntityTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/jpa/PolicyEntityTest.java @@ -45,18 +45,18 @@ import org.onap.policy.common.logging.flexlogger.Logger; import java.util.Properties; public class PolicyEntityTest { - - private static Logger logger = FlexLogger.getLogger(PolicyEntityTest.class); - + + private static Logger logger = FlexLogger.getLogger(PolicyEntityTest.class); + @Test public void testAllOps(){ - Properties properties = new Properties(); - properties.put(XACMLRestProperties.PROP_PAP_DB_DRIVER,"org.h2.Driver"); - properties.put(XACMLRestProperties.PROP_PAP_DB_URL, "jdbc:h2:file:./sql/xacmlTest"); - properties.put(XACMLRestProperties.PROP_PAP_DB_USER, "sa"); - properties.put(XACMLRestProperties.PROP_PAP_DB_PASSWORD, ""); - EntityManagerFactory emf = Persistence.createEntityManagerFactory("testPapPU", properties); - EntityManager em = emf.createEntityManager(); + Properties properties = new Properties(); + properties.put(XACMLRestProperties.PROP_PAP_DB_DRIVER,"org.h2.Driver"); + properties.put(XACMLRestProperties.PROP_PAP_DB_URL, "jdbc:h2:file:./sql/xacmlTest"); + properties.put(XACMLRestProperties.PROP_PAP_DB_USER, "sa"); + properties.put(XACMLRestProperties.PROP_PAP_DB_PASSWORD, ""); + EntityManagerFactory emf = Persistence.createEntityManagerFactory("testPapPU", properties); + EntityManager em = emf.createEntityManager(); // Start a transaction EntityTransaction et = em.getTransaction(); @@ -101,19 +101,19 @@ public class PolicyEntityTest { logger.debug("\n\n********PolicyEntityTest: Local PolicyEntity and Configuration objects before persist*********" - + "\npolicyId1 = " + policyId1 - + "\npolicyName1 = " + policyName1 - + "\nversion1 = " + version1 - + "\npolicyData1 = " + policyData1 - + "\nconfigDataStr1 = " + configDataStr1 - + "\nactionBodyStr1 = " + actionBodyStr1 - + "\nscope = " + p1.getScope() - + "\ncreatedBy1 = " + createdBy1 - + "\ncreatedDateStr1 = " + createdDateStr1 - + "\ndescription = " + description - + "\nmodifiedBy1 = " + modifiedBy1 - + "\nmodifiedDateStr1 = " + modifiedDateStr1 - + "\ndeleted = " + p1.isDeleted()); + + "\npolicyId1 = " + policyId1 + + "\npolicyName1 = " + policyName1 + + "\nversion1 = " + version1 + + "\npolicyData1 = " + policyData1 + + "\nconfigDataStr1 = " + configDataStr1 + + "\nactionBodyStr1 = " + actionBodyStr1 + + "\nscope = " + p1.getScope() + + "\ncreatedBy1 = " + createdBy1 + + "\ncreatedDateStr1 = " + createdDateStr1 + + "\ndescription = " + description + + "\nmodifiedBy1 = " + modifiedBy1 + + "\nmodifiedDateStr1 = " + modifiedDateStr1 + + "\ndeleted = " + p1.isDeleted()); //Set policyID p1.setPolicyName("testPID2"); @@ -171,19 +171,19 @@ public class PolicyEntityTest { modifiedDateStr1 = (modifiedDate1 != null ? modifiedDate1.toString() : "modifiedDate is null"); logger.debug("\n\n********PolicyEntityTest: Local PolicyEntity and Configuration objects after persist*********" - + "\npolicyId1 = " + policyId1 - + "\npolicyName1 = " + policyName1 - + "\nversion1 = " + version1 - + "\npolicyData1 = " + policyData1 - + "\nconfigDataStr1 = " + configDataStr1 - + "\nactionBodyStr1 = " + actionBodyStr1 - + "\nscopeId = " + p1.getScope() - + "\ncreatedBy1 = " + createdBy1 - + "\ncreatedDateStr1 = " + createdDateStr1 - + "\ndescription = " + description - + "\nmodifiedBy1 = " + modifiedBy1 - + "\nmodifiedDateStr1 = " + modifiedDateStr1 - + "\ndeleted = " + p1.isDeleted()); + + "\npolicyId1 = " + policyId1 + + "\npolicyName1 = " + policyName1 + + "\nversion1 = " + version1 + + "\npolicyData1 = " + policyData1 + + "\nconfigDataStr1 = " + configDataStr1 + + "\nactionBodyStr1 = " + actionBodyStr1 + + "\nscopeId = " + p1.getScope() + + "\ncreatedBy1 = " + createdBy1 + + "\ncreatedDateStr1 = " + createdDateStr1 + + "\ndescription = " + description + + "\nmodifiedBy1 = " + modifiedBy1 + + "\nmodifiedDateStr1 = " + modifiedDateStr1 + + "\ndeleted = " + p1.isDeleted()); //Now lets fully configure the configurationData and actionBody @@ -193,7 +193,7 @@ public class PolicyEntityTest { ActionBodyEntity a1 = new ActionBodyEntity(); //persist the configuration Data - em.persist(c1); + em.persist(c1); c1.setConfigType("OTHER"); @@ -241,28 +241,28 @@ public class PolicyEntityTest { Date cdModifiedDate = c1.getModifiedDate(); logger.debug("\n\n********PolicyEntityTest: Local Configuration object after setting values *********" - + "\nconfigurationDataId = " + configurationDataId - + "\ncdVersion = " + cdVersion - + "\ncdConfigType = " + cdConfigType - + "\ncdConfigBody = " + cdConfigBody - + "\ncdCreatedBy = " + cdCreatedBy - + "\ncdCreatedDate = " + cdCreatedDate - + "\ncdDescription = " + cdDescription - + "\ncdModifiedBy = " + cdModifiedBy - + "\ncdModifiedDate = " + cdModifiedDate - + "\ndeleted = " + c1.isDeleted()); + + "\nconfigurationDataId = " + configurationDataId + + "\ncdVersion = " + cdVersion + + "\ncdConfigType = " + cdConfigType + + "\ncdConfigBody = " + cdConfigBody + + "\ncdCreatedBy = " + cdCreatedBy + + "\ncdCreatedDate = " + cdCreatedDate + + "\ncdDescription = " + cdDescription + + "\ncdModifiedBy = " + cdModifiedBy + + "\ncdModifiedDate = " + cdModifiedDate + + "\ndeleted = " + c1.isDeleted()); logger.debug("\n\n********PolicyEntityTest: Local Action Body object after setting values *********" - + "\nactionBodyId = " + a1.getActionBodyId() - + "\nactionBodyVersion = " + a1.getVersion() - + "\nactionBody = " + a1.getActionBody() - + "\nactionBodyCeatedBy = " + a1.getCreatedBy() - + "\nactionBodyCreatedDate = " + a1.getCreatedDate() - + "\nactionBodyModifiedBy = " + a1.getModifiedBy() - + "\nactionBodyModifiedDate = " + a1.getModifiedDate() - + "\nactionBodyDeleted = " + a1.isDeleted()); + + "\nactionBodyId = " + a1.getActionBodyId() + + "\nactionBodyVersion = " + a1.getVersion() + + "\nactionBody = " + a1.getActionBody() + + "\nactionBodyCeatedBy = " + a1.getCreatedBy() + + "\nactionBodyCreatedDate = " + a1.getCreatedDate() + + "\nactionBodyModifiedBy = " + a1.getModifiedBy() + + "\nactionBodyModifiedDate = " + a1.getModifiedDate() + + "\nactionBodyDeleted = " + a1.isDeleted()); p1.setScope("mckiou.kevin.kim"); @@ -282,10 +282,10 @@ public class PolicyEntityTest { List psList = queryscope.getResultList(); PolicyEntity px = null; if(!psList.isEmpty()){ - //ignores multiple results - px = (PolicyEntity) psList.get(0); + //ignores multiple results + px = (PolicyEntity) psList.get(0); }else{ - fail("\nPolicyEntityTest: No PolicyEntity using scope DB entry found"); + fail("\nPolicyEntityTest: No PolicyEntity using scope DB entry found"); } //The scope object on the retrieved policy object should be same as the one we used to find it @@ -295,29 +295,29 @@ public class PolicyEntityTest { //Because getSingleResult() throws an unchecked exception which is an indication of a //programming error, we are not going to use it. @SuppressWarnings("rawtypes") - List resultList = query.getResultList(); + List resultList = query.getResultList(); PolicyEntity p2 = null; if(!resultList.isEmpty()){ // ignores multiple results p2 = (PolicyEntity) resultList.get(0); }else{ - fail("\nPolicyEntityTest: No PolicyEntity DB entry found"); + fail("\nPolicyEntityTest: No PolicyEntity DB entry found"); } logger.debug("\n\n********PolicyEntityTest: PolicyEntity object after retrieving from DB BEFORE assigning configurationData*********" - + "\npolicyId2 = " + p2.getPolicyId() - + "\npolicyName2 = " + p2.getPolicyName() - + "\nversion2 = " + p2.getVersion() - + "\npolicyData2 = " + p2.getPolicyData() - + "\nconfigurationData2 = " + (p2.getConfigurationData()!=null ? "configurationDataId = " + p2.getConfigurationData().getConfigurationDataId() : "configurationData is null") - + "\nactionBody2 = " + (p2.getActionBodyEntity()!=null ? "actionBodyId = " + p2.getActionBodyEntity().getActionBodyId() : "actionBody is null") - + "\nscope2 = " + p2.getScope() - + "\ncreatedBy2 = " + p2.getCreatedBy() - + "\ncreatedDate2 = " + p2.getCreatedDate() - + "\ndescription2 = " + p2.getDescription() - + "\nmodifiedBy2 = " + p2.getModifiedBy() - + "\nmodifiedDate2 = " + p2.getModifiedDate() - + "\ndeleted2 = " + p2.isDeleted()); + + "\npolicyId2 = " + p2.getPolicyId() + + "\npolicyName2 = " + p2.getPolicyName() + + "\nversion2 = " + p2.getVersion() + + "\npolicyData2 = " + p2.getPolicyData() + + "\nconfigurationData2 = " + (p2.getConfigurationData()!=null ? "configurationDataId = " + p2.getConfigurationData().getConfigurationDataId() : "configurationData is null") + + "\nactionBody2 = " + (p2.getActionBodyEntity()!=null ? "actionBodyId = " + p2.getActionBodyEntity().getActionBodyId() : "actionBody is null") + + "\nscope2 = " + p2.getScope() + + "\ncreatedBy2 = " + p2.getCreatedBy() + + "\ncreatedDate2 = " + p2.getCreatedDate() + + "\ndescription2 = " + p2.getDescription() + + "\nmodifiedBy2 = " + p2.getModifiedBy() + + "\nmodifiedDate2 = " + p2.getModifiedDate() + + "\ndeleted2 = " + p2.isDeleted()); //Confirm that the retrieved policy object is the same as the persisted object assertSame(p1,p2); @@ -328,26 +328,26 @@ public class PolicyEntityTest { query2.setParameter("cid", c1.getConfigurationDataId()); //Get the database version of the Configuration Data - resultList = query2.getResultList(); + resultList = query2.getResultList(); ConfigurationDataEntity c2 = null; if(!resultList.isEmpty()){ // ignores multiple results c2 = (ConfigurationDataEntity) resultList.get(0); }else{ - fail("\nPolicyEntityTest: No ConfigurationDataEntity DB entry found"); + fail("\nPolicyEntityTest: No ConfigurationDataEntity DB entry found"); } logger.debug("\n\n********PolicyEntityTest: Configuration object after retrieving from DB BEFORE assigning to policy*********" - + "\nconfigurationDataId2 = " + c2.getConfigurationDataId() - + "\nversion2 = " + c2.getVersion() - + "\nconfigType2 = " + c2.getConfigType() - + "\nconfigBody2 = " + c2.getConfigBody() - + "\ncreatedBy2 = " + c2.getCreatedBy() - + "\ncreatedDate2 = " + c2.getCreatedDate() - + "\ndescription2 = " + c2.getDescription() - + "\nmodifiedBy2 = " + c2.getModifiedBy() - + "\nmodifiedDate2 = " + c2.getModifiedDate() - + "\ndeleted2 = " + c2.isDeleted()); + + "\nconfigurationDataId2 = " + c2.getConfigurationDataId() + + "\nversion2 = " + c2.getVersion() + + "\nconfigType2 = " + c2.getConfigType() + + "\nconfigBody2 = " + c2.getConfigBody() + + "\ncreatedBy2 = " + c2.getCreatedBy() + + "\ncreatedDate2 = " + c2.getCreatedDate() + + "\ndescription2 = " + c2.getDescription() + + "\nmodifiedBy2 = " + c2.getModifiedBy() + + "\nmodifiedDate2 = " + c2.getModifiedDate() + + "\ndeleted2 = " + c2.isDeleted()); //Confirm the retrieved ConfigurationDataEntity object is the same as the persisted assertSame(c1,c2); @@ -361,25 +361,25 @@ public class PolicyEntityTest { querya2.setParameter("aid", a1.getActionBodyId()); //Get the database version of the Action Body - resultList = querya2.getResultList(); + resultList = querya2.getResultList(); ActionBodyEntity a2 = null; if(!resultList.isEmpty()){ // ignores multiple results a2 = (ActionBodyEntity) resultList.get(0); }else{ - fail("\nPolicyEntityTest: No ActionBodyEntity DB entry found"); + fail("\nPolicyEntityTest: No ActionBodyEntity DB entry found"); } logger.debug("\n\n********PolicyEntityTest: Local Action Body object after retrieving from DB BEFORE assigning to policy *********" - + "\nactionBodyId2 = " + a2.getActionBodyId() - + "\nactionBodyVersion2 = " + a2.getVersion() - + "\nactionBody2 = " + a2.getActionBody() - + "\nactionBodyCeatedBy2 = " + a2.getCreatedBy() - + "\nactionBodyCreatedDate2 = " + a2.getCreatedDate() - + "\nactionBodyModifiedBy2 = " + a2.getModifiedBy() - + "\nactionBodyModifiedDate2 = " + a2.getModifiedDate() - + "\nactionBodyDeleted2 = " + a2.isDeleted()); + + "\nactionBodyId2 = " + a2.getActionBodyId() + + "\nactionBodyVersion2 = " + a2.getVersion() + + "\nactionBody2 = " + a2.getActionBody() + + "\nactionBodyCeatedBy2 = " + a2.getCreatedBy() + + "\nactionBodyCreatedDate2 = " + a2.getCreatedDate() + + "\nactionBodyModifiedBy2 = " + a2.getModifiedBy() + + "\nactionBodyModifiedDate2 = " + a2.getModifiedDate() + + "\nactionBodyDeleted2 = " + a2.isDeleted()); //Confirm the retrieved ActionBodyEntity object is the same as the persisted @@ -398,67 +398,67 @@ public class PolicyEntityTest { // ignores multiple results p2 = (PolicyEntity) resultList.get(0); }else{ - fail("PolicyEntityTest: No PolicyEntity DB entry found"); + fail("PolicyEntityTest: No PolicyEntity DB entry found"); } logger.debug("\n\n********PolicyEntityTest: PolicyEntity object after retrieving from DB AFTER assigning configurationData*********" - + "\npolicyId2 = " + p2.getPolicyId() - + "\npolicyName2 = " + p2.getPolicyName() - + "\nversion2 = " + p2.getVersion() - + "\npolicyData2 = " + p2.getPolicyData() - + "\nconfigurationData2 = " + (p2.getConfigurationData()!=null ? "configurationDataId = " + p2.getConfigurationData().getConfigurationDataId() : "configurationData is null") - + "\nactionBody2 = " + (p2.getActionBodyEntity()!=null ? "actionBodyId = " + p2.getActionBodyEntity().getActionBodyId() : "actionBody is null") - + "\nscope2 = " + p2.getScope() - + "\ncreatedBy2 = " + p2.getCreatedBy() - + "\ncreatedDate2 = " + p2.getCreatedDate() - + "\ndescription2 = " + p2.getDescription() - + "\nmodifiedBy2 = " + p2.getModifiedBy() - + "\nmodifiedDate2 = " + p2.getModifiedDate() - + "\ndeleted2 = " + p2.isDeleted()); + + "\npolicyId2 = " + p2.getPolicyId() + + "\npolicyName2 = " + p2.getPolicyName() + + "\nversion2 = " + p2.getVersion() + + "\npolicyData2 = " + p2.getPolicyData() + + "\nconfigurationData2 = " + (p2.getConfigurationData()!=null ? "configurationDataId = " + p2.getConfigurationData().getConfigurationDataId() : "configurationData is null") + + "\nactionBody2 = " + (p2.getActionBodyEntity()!=null ? "actionBodyId = " + p2.getActionBodyEntity().getActionBodyId() : "actionBody is null") + + "\nscope2 = " + p2.getScope() + + "\ncreatedBy2 = " + p2.getCreatedBy() + + "\ncreatedDate2 = " + p2.getCreatedDate() + + "\ndescription2 = " + p2.getDescription() + + "\nmodifiedBy2 = " + p2.getModifiedBy() + + "\nmodifiedDate2 = " + p2.getModifiedDate() + + "\ndeleted2 = " + p2.isDeleted()); //And now the ConfigurationDataEntity object - resultList = query2.getResultList(); + resultList = query2.getResultList(); c2 = null; if(!resultList.isEmpty()){ // ignores multiple results c2 = (ConfigurationDataEntity) resultList.get(0); }else{ - fail("\nPolicyEntityTest: No ConfigurationDataEntity DB entry found"); + fail("\nPolicyEntityTest: No ConfigurationDataEntity DB entry found"); } logger.debug("\n\n********PolicyEntityTest: Configuration object after retrieving from DB AFTER assigning to policy*********" - + "\nconfigurationDataId2 = " + c2.getConfigurationDataId() - + "\nversion2 = " + c2.getVersion() - + "\nconfigType2 = " + c2.getConfigType() - + "\nconfigBody2 = " + c2.getConfigBody() - + "\ncreatedBy2 = " + c2.getCreatedBy() - + "\ncreatedDate2 = " + c2.getCreatedDate() - + "\ndescription2 = " + c2.getDescription() - + "\nmodifiedBy = " + c2.getModifiedBy() - + "\nmodifiedDate = " + c2.getModifiedDate() - + "\ndeleted2 = " + c2.isDeleted()); + + "\nconfigurationDataId2 = " + c2.getConfigurationDataId() + + "\nversion2 = " + c2.getVersion() + + "\nconfigType2 = " + c2.getConfigType() + + "\nconfigBody2 = " + c2.getConfigBody() + + "\ncreatedBy2 = " + c2.getCreatedBy() + + "\ncreatedDate2 = " + c2.getCreatedDate() + + "\ndescription2 = " + c2.getDescription() + + "\nmodifiedBy = " + c2.getModifiedBy() + + "\nmodifiedDate = " + c2.getModifiedDate() + + "\ndeleted2 = " + c2.isDeleted()); //Get the database version of the Action Body - resultList = querya2.getResultList(); + resultList = querya2.getResultList(); a2 = null; if(!resultList.isEmpty()){ // ignores multiple results a2 = (ActionBodyEntity) resultList.get(0); }else{ - fail("\nPolicyEntityTest: No ActionBodyEntity DB entry found"); + fail("\nPolicyEntityTest: No ActionBodyEntity DB entry found"); } logger.debug("\n\n********PolicyEntityTest: Local Action Body object after retrieving from DB AFTER assigning to policy *********" - + "\nactionBodyId2 = " + a2.getActionBodyId() - + "\nactionBodyVersion2 = " + a2.getVersion() - + "\nactionBody2 = " + a2.getActionBody() - + "\nactionBodyCeatedBy2 = " + a2.getCreatedBy() - + "\nactionBodyCreatedDate2 = " + a2.getCreatedDate() - + "\nactionBodyModifiedBy2 = " + a2.getModifiedBy() - + "\nactionBodyModifiedDate2 = " + a2.getModifiedDate() - + "\nactionBodyDeleted2 = " + a2.isDeleted()); + + "\nactionBodyId2 = " + a2.getActionBodyId() + + "\nactionBodyVersion2 = " + a2.getVersion() + + "\nactionBody2 = " + a2.getActionBody() + + "\nactionBodyCeatedBy2 = " + a2.getCreatedBy() + + "\nactionBodyCreatedDate2 = " + a2.getCreatedDate() + + "\nactionBodyModifiedBy2 = " + a2.getModifiedBy() + + "\nactionBodyModifiedDate2 = " + a2.getModifiedDate() + + "\nactionBodyDeleted2 = " + a2.isDeleted()); //****Now lets see if the orphanRemoval=true does anything useful*** @@ -473,30 +473,30 @@ public class PolicyEntityTest { //Attempt to retrieve the configuration data object from the db. It should not be there //Reusing the previous query - resultList = query2.getResultList(); + resultList = query2.getResultList(); c2 = null; if(resultList.isEmpty()){ - logger.debug("\n\n********PolicyEntityTest: orphanRemoval=true******" - + "\n Success!! No ConfigurationDataEntity DB entry found"); + logger.debug("\n\n********PolicyEntityTest: orphanRemoval=true******" + + "\n Success!! No ConfigurationDataEntity DB entry found"); }else{ - c2 = (ConfigurationDataEntity) resultList.get(0); - fail("\nPolicyEntityTest: ConfigurationDataEntity DB entry found - and none should exist" - + "\nconfigurationDataId = " + c2.getConfigurationDataId()); + c2 = (ConfigurationDataEntity) resultList.get(0); + fail("\nPolicyEntityTest: ConfigurationDataEntity DB entry found - and none should exist" + + "\nconfigurationDataId = " + c2.getConfigurationDataId()); } //Attempt to retrieve the actionBody data object from the db. It should not be there //Reusing the previous query - resultList = querya2.getResultList(); + resultList = querya2.getResultList(); a2 = null; if(resultList.isEmpty()){ - logger.debug("\n\n********PolicyEntityTest: orphanRemoval=true******" - + "\n Success!! No ActionBodyEntity DB entry found"); + logger.debug("\n\n********PolicyEntityTest: orphanRemoval=true******" + + "\n Success!! No ActionBodyEntity DB entry found"); }else{ - a2 = (ActionBodyEntity) resultList.get(0); - fail("\nPolicyEntityTest: ActionBodyEntity DB entry found - and none should exist" - + "\nactionBodyId = " + a2.getActionBodyId()); + a2 = (ActionBodyEntity) resultList.get(0); + fail("\nPolicyEntityTest: ActionBodyEntity DB entry found - and none should exist" + + "\nactionBodyId = " + a2.getActionBodyId()); } //Now lets put the configurationData and actionBody back into the policy object and see what appears @@ -512,86 +512,86 @@ public class PolicyEntityTest { em.flush(); //retrieve the policy object - resultList = query.getResultList(); + resultList = query.getResultList(); p2 = null; if(!resultList.isEmpty()){ // ignores multiple results p2 = (PolicyEntity) resultList.get(0); }else{ - fail("\nPolicyEntityTest: No PolicyEntity DB entry found"); + fail("\nPolicyEntityTest: No PolicyEntity DB entry found"); } //output what we policy object found logger.debug("\n\n********PolicyEntityTest: PolicyEntity object after again adding ConfigurationDataEntity and retrieving from DB*********" - + "\npolicyId2 = " + p2.getPolicyId() - + "\npolicyName2 = " + p2.getPolicyName() - + "\nversion2 = " + p2.getVersion() - + "\npolicyData2 = " + p2.getPolicyData() - + "\nconfigurationData2 = " + (p2.getConfigurationData()!=null ? "configurationDataId = " + p2.getConfigurationData().getConfigurationDataId() : "configurationData is null") - + "\nactionBody2 = " + (p2.getActionBodyEntity()!=null ? "actionBodyId = " + p2.getActionBodyEntity().getActionBodyId() : "actionBody is null") - + "\nscope2 = " + p2.getScope() - + "\ncreatedBy2 = " + p2.getCreatedBy() - + "\ncreatedDate2 = " + p2.getCreatedDate() - + "\ndescription2 = " + p2.getDescription() - + "\nmodifiedBy2 = " + p2.getModifiedBy() - + "\nmodifiedDate2 = " + p2.getModifiedDate() - + "\ndeleted2 = " + p2.isDeleted()); + + "\npolicyId2 = " + p2.getPolicyId() + + "\npolicyName2 = " + p2.getPolicyName() + + "\nversion2 = " + p2.getVersion() + + "\npolicyData2 = " + p2.getPolicyData() + + "\nconfigurationData2 = " + (p2.getConfigurationData()!=null ? "configurationDataId = " + p2.getConfigurationData().getConfigurationDataId() : "configurationData is null") + + "\nactionBody2 = " + (p2.getActionBodyEntity()!=null ? "actionBodyId = " + p2.getActionBodyEntity().getActionBodyId() : "actionBody is null") + + "\nscope2 = " + p2.getScope() + + "\ncreatedBy2 = " + p2.getCreatedBy() + + "\ncreatedDate2 = " + p2.getCreatedDate() + + "\ndescription2 = " + p2.getDescription() + + "\nmodifiedBy2 = " + p2.getModifiedBy() + + "\nmodifiedDate2 = " + p2.getModifiedDate() + + "\ndeleted2 = " + p2.isDeleted()); //now lets see if it put the configurationData c1 back into the table - resultList = query2.getResultList(); + resultList = query2.getResultList(); c2 = null; if(!resultList.isEmpty()){ // ignores multiple results c2 = (ConfigurationDataEntity) resultList.get(0); }else{ - fail("\nPolicyEntityTest - Check re-entry of configurationData into DB" - + "No ConfigurationDataEntity DB entry found"); + fail("\nPolicyEntityTest - Check re-entry of configurationData into DB" + + "No ConfigurationDataEntity DB entry found"); } //output what configurationData object we found logger.debug("\n\n********PolicyEntityTest: Configuration object after re-enter into policy object and retrieving from DB *********" - + "\nconfigurationDataId2 = " + c2.getConfigurationDataId() - + "\nversion2 = " + c2.getVersion() - + "\nconfigType2 = " + c2.getConfigType() - + "\nconfigBody2 = " + c2.getConfigBody() - + "\ncreatedBy2 = " + c2.getCreatedBy() - + "\ncreatedDate2 = " + c2.getCreatedDate() - + "\ndescription2 = " + c2.getDescription() - + "\nmodifiedBy = " + c2.getModifiedBy() - + "\nmodifiedDate = " + c2.getModifiedDate() - + "\ndeleted2 = " + c2.isDeleted()); + + "\nconfigurationDataId2 = " + c2.getConfigurationDataId() + + "\nversion2 = " + c2.getVersion() + + "\nconfigType2 = " + c2.getConfigType() + + "\nconfigBody2 = " + c2.getConfigBody() + + "\ncreatedBy2 = " + c2.getCreatedBy() + + "\ncreatedDate2 = " + c2.getCreatedDate() + + "\ndescription2 = " + c2.getDescription() + + "\nmodifiedBy = " + c2.getModifiedBy() + + "\nmodifiedDate = " + c2.getModifiedDate() + + "\ndeleted2 = " + c2.isDeleted()); //now lets see if it put the actionBody a1 back into the table //Get the database version of the Action Body - resultList = querya2.getResultList(); + resultList = querya2.getResultList(); a2 = null; if(!resultList.isEmpty()){ // ignores multiple results a2 = (ActionBodyEntity) resultList.get(0); }else{ - fail("\nPolicyEntityTest - Check re-entry of actionBody into DB" - + "No ActionBodyEntity DB entry found"); + fail("\nPolicyEntityTest - Check re-entry of actionBody into DB" + + "No ActionBodyEntity DB entry found"); } logger.debug("\n\n********PolicyEntityTest: Local Action Body object after re-enter into policy object and retrieving from DB *********" - + "\nactionBodyId2 = " + a2.getActionBodyId() - + "\nactionBodyVersion2 = " + a2.getVersion() - + "\nactionBody2 = " + a2.getActionBody() - + "\nactionBodyCeatedBy2 = " + a2.getCreatedBy() - + "\nactionBodyCreatedDate2 = " + a2.getCreatedDate() - + "\nactionBodyModifiedBy2 = " + a2.getModifiedBy() - + "\nactionBodyModifiedDate2 = " + a2.getModifiedDate() - + "\nactionBodyDeleted2 = " + a2.isDeleted()); + + "\nactionBodyId2 = " + a2.getActionBodyId() + + "\nactionBodyVersion2 = " + a2.getVersion() + + "\nactionBody2 = " + a2.getActionBody() + + "\nactionBodyCeatedBy2 = " + a2.getCreatedBy() + + "\nactionBodyCreatedDate2 = " + a2.getCreatedDate() + + "\nactionBodyModifiedBy2 = " + a2.getModifiedBy() + + "\nactionBodyModifiedDate2 = " + a2.getModifiedDate() + + "\nactionBodyDeleted2 = " + a2.isDeleted()); //I want to save all the above in the DB try{ - et.commit(); - logger.debug("\n\n***********PolicyEntityTest: et.commit Succeeded********"); + et.commit(); + logger.debug("\n\n***********PolicyEntityTest: et.commit Succeeded********"); }catch(Exception e){ - logger.debug("\n\n***********PolicyEntityTest: et.commit Failed********" - + "\nTRANSACTION ROLLBACK " - + "\n with exception: " + e); + logger.debug("\n\n***********PolicyEntityTest: et.commit Failed********" + + "\nTRANSACTION ROLLBACK " + + "\n with exception: " + e); } // Start a new transaction @@ -603,58 +603,58 @@ public class PolicyEntityTest { PolicyEntity p3 = new PolicyEntity(); em.persist(p3); - - //first let's assure that you can save with the same name but a different scope - p3.setPolicyName(p1.getPolicyName()); - p3.setScope("mckiou.kevin.kory"); - em.flush(); - logger.debug("\n\n***********PolicyEntityTest: PolicyEntity Unique test for policyName and scope********" - + "\nSuccess! PolicyEntity uniqueness constraint allowed " - + "\n policyId1 " + p1.getPolicyId() - + "\n policyName1 " + p1.getPolicyName() - + "\n scope1 = " + p1.getScope() - + "\n policyId3 " + p3.getPolicyId() - + "\n policyName3 " + p3.getPolicyName() - + "\n scope3 = " + p3.getScope()); - - //Assert that the policyIds are NOT the same to show that the automatic sequencing is working - assert(p1.getPolicyId() != p3.getPolicyId()); - - try{ - //Now set the scope the same to verify the uniqueness constraint will be enforced - p3.setScope(p1.getScope()); - - em.flush(); - logger.debug("\n\n***********PolicyEntityTest: PolicyEntity Unique test for policyName and scope********" - + "\nFailed! PolicyEntity Uniqueness constraint FAILED and DID allow " - + "\n policyId1 " + p1.getPolicyId() - + "\n policyName1 " + p1.getPolicyName() - + "\n scope1 = " + p1.getScope() - + "\n policyId3 " + p3.getPolicyId() - + "\n policyName3 " + p3.getPolicyName() - + "\n scope3 = " + p3.getScope());; + + //first let's assure that you can save with the same name but a different scope + p3.setPolicyName(p1.getPolicyName()); + p3.setScope("mckiou.kevin.kory"); + em.flush(); + logger.debug("\n\n***********PolicyEntityTest: PolicyEntity Unique test for policyName and scope********" + + "\nSuccess! PolicyEntity uniqueness constraint allowed " + + "\n policyId1 " + p1.getPolicyId() + + "\n policyName1 " + p1.getPolicyName() + + "\n scope1 = " + p1.getScope() + + "\n policyId3 " + p3.getPolicyId() + + "\n policyName3 " + p3.getPolicyName() + + "\n scope3 = " + p3.getScope()); + + //Assert that the policyIds are NOT the same to show that the automatic sequencing is working + assert(p1.getPolicyId() != p3.getPolicyId()); + + try{ + //Now set the scope the same to verify the uniqueness constraint will be enforced + p3.setScope(p1.getScope()); + + em.flush(); + logger.debug("\n\n***********PolicyEntityTest: PolicyEntity Unique test for policyName and scope********" + + "\nFailed! PolicyEntity Uniqueness constraint FAILED and DID allow " + + "\n policyId1 " + p1.getPolicyId() + + "\n policyName1 " + p1.getPolicyName() + + "\n scope1 = " + p1.getScope() + + "\n policyId3 " + p3.getPolicyId() + + "\n policyName3 " + p3.getPolicyName() + + "\n scope3 = " + p3.getScope());; } catch(Exception e){ - //Success - logger.debug("\n\n***********PolicyEntityTest: PolicyEntity Unique test for policyName and scope********" - + "\nSuccess! PolicyEntity Uniqueness constraint SUCCEEDED and did NOT allow " - + "\n policyId1 " + p1.getPolicyId() - + "\n policyName1 " + p1.getPolicyName() - + "\n scope1 = " + p1.getScope() - + "\n policyId3 " + p3.getPolicyId() - + "\n policyName3 " + p3.getPolicyName() - + "\n scope3 = " + p3.getScope() - + "\n with excpetion: " + e); + //Success + logger.debug("\n\n***********PolicyEntityTest: PolicyEntity Unique test for policyName and scope********" + + "\nSuccess! PolicyEntity Uniqueness constraint SUCCEEDED and did NOT allow " + + "\n policyId1 " + p1.getPolicyId() + + "\n policyName1 " + p1.getPolicyName() + + "\n scope1 = " + p1.getScope() + + "\n policyId3 " + p3.getPolicyId() + + "\n policyName3 " + p3.getPolicyName() + + "\n scope3 = " + p3.getScope() + + "\n with excpetion: " + e); } - + try{ - et2.commit(); - logger.debug("\n\n***********PolicyEntityTest: et2.commit Succeeded********"); + et2.commit(); + logger.debug("\n\n***********PolicyEntityTest: et2.commit Succeeded********"); }catch(Exception e){ - logger.debug("\n\n***********PolicyEntityTest: et2.commit Failed********" - + "\nTRANSACTION ROLLBACK " - + "\n with exception: " + e); + logger.debug("\n\n***********PolicyEntityTest: et2.commit Failed********" + + "\nTRANSACTION ROLLBACK " + + "\n with exception: " + e); } //****************Test the PolicyDBDaoEntity************************ @@ -685,63 +685,63 @@ public class PolicyEntityTest { //Print them to the log before flushing logger.debug("\n\n***********PolicyEntityTest: PolicyDBDaoEntity objects before flush********" - + "\n policyDBDaoUrl-1 = " + pe1.getPolicyDBDaoUrl() - + "\n description-1 = " + pe1.getDescription() - + "\n createdDate-1 = " + pe1.getCreatedDate() - + "\n modifiedDate-1 " + pe1.getModifiedDate() - + "\n*****************************************" - + "\n policyDBDaoUrl-2 = " + pe2.getPolicyDBDaoUrl() - + "\n description-2 = " + pe2.getDescription() - + "\n createdDate-2 = " + pe2.getCreatedDate() - + "\n modifiedDate-2 " + pe2.getModifiedDate() - ); + + "\n policyDBDaoUrl-1 = " + pe1.getPolicyDBDaoUrl() + + "\n description-1 = " + pe1.getDescription() + + "\n createdDate-1 = " + pe1.getCreatedDate() + + "\n modifiedDate-1 " + pe1.getModifiedDate() + + "\n*****************************************" + + "\n policyDBDaoUrl-2 = " + pe2.getPolicyDBDaoUrl() + + "\n description-2 = " + pe2.getDescription() + + "\n createdDate-2 = " + pe2.getCreatedDate() + + "\n modifiedDate-2 " + pe2.getModifiedDate() + ); //push it to the DB em.flush(); //Now let's retrieve them from the DB using the named query - resultList = em.createNamedQuery("PolicyDBDaoEntity.findAll").getResultList(); + resultList = em.createNamedQuery("PolicyDBDaoEntity.findAll").getResultList(); + + PolicyDBDaoEntity pex = null; + PolicyDBDaoEntity pey = null; - PolicyDBDaoEntity pex = null; - PolicyDBDaoEntity pey = null; - if(!resultList.isEmpty()){ - if (resultList.size() != 2){ - fail("\nPolicyEntityTest: Number of PolicyDBDaoEntity entries = " + resultList.size() + " instead of 2"); - } - for(Object policyDBDaoEntity: resultList){ - PolicyDBDaoEntity pdbdao = (PolicyDBDaoEntity)policyDBDaoEntity; - if(pdbdao.getPolicyDBDaoUrl().equals("http://123.45.2.456:2345")){ - pex = pdbdao; - }else if(pdbdao.getPolicyDBDaoUrl().equals("http://789.01.2.345:2345")){ - pey = pdbdao; - } - } - + if (resultList.size() != 2){ + fail("\nPolicyEntityTest: Number of PolicyDBDaoEntity entries = " + resultList.size() + " instead of 2"); + } + for(Object policyDBDaoEntity: resultList){ + PolicyDBDaoEntity pdbdao = (PolicyDBDaoEntity)policyDBDaoEntity; + if(pdbdao.getPolicyDBDaoUrl().equals("http://123.45.2.456:2345")){ + pex = pdbdao; + }else if(pdbdao.getPolicyDBDaoUrl().equals("http://789.01.2.345:2345")){ + pey = pdbdao; + } + } + //Print them to the log before flushing logger.debug("\n\n***********PolicyEntityTest: PolicyDBDaoEntity objects retrieved from DB********" - + "\n policyDBDaoUrl-x = " + pex.getPolicyDBDaoUrl() - + "\n description-x = " + pex.getDescription() - + "\n createdDate-x = " + pex.getCreatedDate() - + "\n modifiedDate-x " + pex.getModifiedDate() - + "\n*****************************************" - + "\n policyDBDaoUrl-y = " + pey.getPolicyDBDaoUrl() - + "\n description-y = " + pey.getDescription() - + "\n createdDate-y = " + pey.getCreatedDate() - + "\n modifiedDate-y " + pey.getModifiedDate() - ); - //Verify the retrieved objects are the same as the ones we stored in the DB - if(pex.getPolicyDBDaoUrl().equals("http://123.45.2.456:2345")){ - assertSame(pe1,pex); - assertSame(pe2,pey); - }else{ - assertSame(pe2,pex); - assertSame(pe1,pey); - } + + "\n policyDBDaoUrl-x = " + pex.getPolicyDBDaoUrl() + + "\n description-x = " + pex.getDescription() + + "\n createdDate-x = " + pex.getCreatedDate() + + "\n modifiedDate-x " + pex.getModifiedDate() + + "\n*****************************************" + + "\n policyDBDaoUrl-y = " + pey.getPolicyDBDaoUrl() + + "\n description-y = " + pey.getDescription() + + "\n createdDate-y = " + pey.getCreatedDate() + + "\n modifiedDate-y " + pey.getModifiedDate() + ); + //Verify the retrieved objects are the same as the ones we stored in the DB + if(pex.getPolicyDBDaoUrl().equals("http://123.45.2.456:2345")){ + assertSame(pe1,pex); + assertSame(pe2,pey); + }else{ + assertSame(pe2,pex); + assertSame(pe1,pey); + } }else{ - fail("\nPolicyEntityTest: No PolicyDBDaoEntity DB entry found"); + fail("\nPolicyEntityTest: No PolicyDBDaoEntity DB entry found"); } //Now let's see if we can do an update on the PolicyDBDaoEntity which we retrieved. @@ -751,32 +751,32 @@ public class PolicyEntityTest { //retrieve it Query createPolicyQuery = em.createQuery("SELECT p FROM PolicyDBDaoEntity p WHERE p.description=:desc"); - resultList = createPolicyQuery.setParameter("desc", "This is pex").getResultList(); - - PolicyDBDaoEntity pez = null; + resultList = createPolicyQuery.setParameter("desc", "This is pex").getResultList(); + + PolicyDBDaoEntity pez = null; if(!resultList.isEmpty()){ - if (resultList.size() != 1){ - fail("\nPolicyEntityTest: Update Test - Number of PolicyDBDaoEntity entries = " + resultList.size() + " instead of 1"); - } - pez = (PolicyDBDaoEntity) resultList.get(0); - + if (resultList.size() != 1){ + fail("\nPolicyEntityTest: Update Test - Number of PolicyDBDaoEntity entries = " + resultList.size() + " instead of 1"); + } + pez = (PolicyDBDaoEntity) resultList.get(0); + //Print them to the log before flushing logger.debug("\n\n***********PolicyEntityTest: Update Test - PolicyDBDaoEntity objects retrieved from DB********" - + "\n policyDBDaoUrl-x = " + pex.getPolicyDBDaoUrl() - + "\n description-x = " + pex.getDescription() - + "\n createdDate-x = " + pex.getCreatedDate() - + "\n modifiedDate-x " + pex.getModifiedDate() - + "\n*****************************************" - + "\n policyDBDaoUrl-z = " + pez.getPolicyDBDaoUrl() - + "\n description-z = " + pez.getDescription() - + "\n createdDate-z = " + pez.getCreatedDate() - + "\n modifiedDate-z " + pez.getModifiedDate() - ); - //Verify the retrieved objects are the same as the ones we stored in the DB - assertSame(pex,pez); + + "\n policyDBDaoUrl-x = " + pex.getPolicyDBDaoUrl() + + "\n description-x = " + pex.getDescription() + + "\n createdDate-x = " + pex.getCreatedDate() + + "\n modifiedDate-x " + pex.getModifiedDate() + + "\n*****************************************" + + "\n policyDBDaoUrl-z = " + pez.getPolicyDBDaoUrl() + + "\n description-z = " + pez.getDescription() + + "\n createdDate-z = " + pez.getCreatedDate() + + "\n modifiedDate-z " + pez.getModifiedDate() + ); + //Verify the retrieved objects are the same as the ones we stored in the DB + assertSame(pex,pez); }else{ - fail("\nPolicyEntityTest: Update Test - No PolicyDBDaoEntity DB updated entry found"); + fail("\nPolicyEntityTest: Update Test - No PolicyDBDaoEntity DB updated entry found"); } //Clean up the DB @@ -787,12 +787,12 @@ public class PolicyEntityTest { //Wrap up the transaction try{ - et3.commit(); - logger.debug("\n\n***********PolicyEntityTest: et3.commit Succeeded********"); + et3.commit(); + logger.debug("\n\n***********PolicyEntityTest: et3.commit Succeeded********"); }catch(Exception e){ - logger.debug("\n\n***********PolicyEntityTest: et3.commit Failed********" - + "\nTRANSACTION ROLLBACK " - + "\n with exception: " + e); + logger.debug("\n\n***********PolicyEntityTest: et3.commit Failed********" + + "\nTRANSACTION ROLLBACK " + + "\n with exception: " + e); } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/model/RemoveGroupPolicyTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/model/RemoveGroupPolicyTest.java index 34a26631f..162f4a928 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/model/RemoveGroupPolicyTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/model/RemoveGroupPolicyTest.java @@ -27,18 +27,18 @@ import org.onap.policy.xacml.std.pap.StdPDPPolicy; import com.att.research.xacml.api.pap.PDPPolicy; public class RemoveGroupPolicyTest { - @Test - public void testRemove() { - // Test constructor - StdPDPGroup group = new StdPDPGroup(); - RemoveGroupPolicy remove = new RemoveGroupPolicy(group); - assertEquals(remove.isRemoved(), false); - assertEquals(remove.getUpdatedObject(), null); - - // Test remove - PDPPolicy policy = new StdPDPPolicy(); - remove.prepareToRemove(policy); - remove.doSave(); - assertEquals(remove.isRemoved(), true); - } + @Test + public void testRemove() { + // Test constructor + StdPDPGroup group = new StdPDPGroup(); + RemoveGroupPolicy remove = new RemoveGroupPolicy(group); + assertEquals(remove.isRemoved(), false); + assertEquals(remove.getUpdatedObject(), null); + + // Test remove + PDPPolicy policy = new StdPDPPolicy(); + remove.prepareToRemove(policy); + remove.doSave(); + assertEquals(remove.isRemoved(), true); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/service/ImportServiceTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/service/ImportServiceTest.java index fed2ac973..ba400dfc0 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/service/ImportServiceTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/service/ImportServiceTest.java @@ -28,12 +28,12 @@ import com.mockrunner.mock.web.MockHttpServletRequest; import com.mockrunner.mock.web.MockHttpServletResponse; public class ImportServiceTest { - @Test - public void testNegativeCases() { - ImportService service = new ImportService(); - HttpServletRequest request = new MockHttpServletRequest(); - HttpServletResponse response = new MockHttpServletResponse(); - service.doImportMicroServicePut(request, response); - assertEquals(response.getHeader("error"), "missing"); - } + @Test + public void testNegativeCases() { + ImportService service = new ImportService(); + HttpServletRequest request = new MockHttpServletRequest(); + HttpServletResponse response = new MockHttpServletResponse(); + service.doImportMicroServicePut(request, response); + assertEquals(response.getHeader("error"), "missing"); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/service/MetricServiceTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/service/MetricServiceTest.java index 0c85fe163..8c976d9aa 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/service/MetricServiceTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/service/MetricServiceTest.java @@ -34,16 +34,16 @@ import com.mockrunner.mock.web.MockHttpServletResponse; @RunWith(PowerMockRunner.class) public class MetricServiceTest { - @PrepareForTest({XACMLPapServlet.class}) - @Test - public void testNegativeGet() { - // Mock pap servlet - PowerMockito.mockStatic(XACMLPapServlet.class); - when(XACMLPapServlet.getPAPEngine()).thenReturn(null); - when(XACMLPapServlet.getEmf()).thenReturn(null); + @PrepareForTest({XACMLPapServlet.class}) + @Test + public void testNegativeGet() { + // Mock pap servlet + PowerMockito.mockStatic(XACMLPapServlet.class); + when(XACMLPapServlet.getPAPEngine()).thenReturn(null); + when(XACMLPapServlet.getEmf()).thenReturn(null); - MockHttpServletResponse response = new MockHttpServletResponse(); - MetricService.doGetPolicyMetrics(response); - assertEquals(response.getStatusCode(), HttpServletResponse.SC_BAD_REQUEST); - } + MockHttpServletResponse response = new MockHttpServletResponse(); + MetricService.doGetPolicyMetrics(response); + assertEquals(response.getStatusCode(), HttpServletResponse.SC_BAD_REQUEST); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/restAuth/AuthenticationServiceTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/restAuth/AuthenticationServiceTest.java index 180c13f69..cbe9ff250 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/restAuth/AuthenticationServiceTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/restAuth/AuthenticationServiceTest.java @@ -26,27 +26,27 @@ import org.junit.Test; import org.onap.policy.pap.xacml.restAuth.AuthenticationService; public class AuthenticationServiceTest { - private final String testCred = "testpap:alpha123"; - private final String testCredEncoded = new String(Base64.getEncoder().encode(testCred.getBytes())); - private final String basicCred = "Basic " + testCredEncoded; - - @Test - public void testAuth() throws UnsupportedEncodingException { - String systemKey = "xacml.properties"; + private final String testCred = "testpap:alpha123"; + private final String testCredEncoded = new String(Base64.getEncoder().encode(testCred.getBytes())); + private final String basicCred = "Basic " + testCredEncoded; - // Set the system property temporarily - String oldProperty = System.getProperty(systemKey); - System.setProperty(systemKey, "xacml.pap.properties"); - - AuthenticationService service = new AuthenticationService(); - assertEquals(service.authenticate(basicCred), true); - - // Restore the original system property - if (oldProperty != null) { - System.setProperty(systemKey, oldProperty); - } - else { - System.clearProperty(systemKey); - } - } + @Test + public void testAuth() throws UnsupportedEncodingException { + String systemKey = "xacml.properties"; + + // Set the system property temporarily + String oldProperty = System.getProperty(systemKey); + System.setProperty(systemKey, "xacml.pap.properties"); + + AuthenticationService service = new AuthenticationService(); + assertEquals(service.authenticate(basicCred), true); + + // Restore the original system property + if (oldProperty != null) { + System.setProperty(systemKey, oldProperty); + } + else { + System.clearProperty(systemKey); + } + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/restAuth/PAPAuthenticationFilterTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/restAuth/PAPAuthenticationFilterTest.java index 2d72c8a4d..f1554e84c 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/restAuth/PAPAuthenticationFilterTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/restAuth/PAPAuthenticationFilterTest.java @@ -38,84 +38,84 @@ import com.mockrunner.mock.web.MockHttpServletRequest; import com.mockrunner.mock.web.MockHttpServletResponse; public class PAPAuthenticationFilterTest { - - private HttpServletRequest request = null; - private HttpServletResponse response = null; - private String oldProperty; - private String systemKey = "xacml.properties"; - private FilterChain filter; - private PAPAuthenticationFilter papFilter; - - @Before - public void setUp(){ - // Set the system property temporarily - oldProperty = System.getProperty(systemKey); - System.setProperty(systemKey, "xacml.pap.properties"); - - request = Mockito.mock(HttpServletRequest.class); - response = Mockito.mock(HttpServletResponse.class); - filter = Mockito.mock(FilterChain.class); - papFilter = new PAPAuthenticationFilter(); - } - - @Test - public void testAuth() throws IOException, ServletException { - PAPAuthenticationFilter filter = new PAPAuthenticationFilter(); - MockHttpServletRequest request = new MockHttpServletRequest(); - request.setRequestURI("/foo"); - MockHttpServletResponse response = new MockHttpServletResponse(); - FilterChain filterChain = null; - - // Negative test the filter - filter.doFilter(request, response, filterChain); - assertEquals(response.getStatusCode(), 401); - - // Test base methods - try { - filter.destroy(); - filter.init(null); - } - catch (Exception ex) { - fail("Not expecting any exceptions."); - } - } - - @Test - public void testDoFilter() { - Mockito.when(request.getRequestURI()).thenReturn("/pap/"); - Mockito.when(request.getHeader("Authorization")).thenReturn("Basic dGVzdHBhcDphbHBoYTEyMw=="); - callDoFilter(); - Mockito.when(request.getRequestURI()).thenReturn("/pap/onap/"); - callDoFilter(); - } - - public void callDoFilter(){ - try { - papFilter.doFilter(request, response, filter); - } catch (Exception e) { - assertEquals(NullPointerException.class, e.getClass()); - } - } - - @Test - public void testOnPassingInvalidParamters(){ - Mockito.when(request.getRequestURI()).thenReturn("/pap/"); - Mockito.when(request.getHeader("Authorization")).thenReturn("Basic dGVzdHBhcDphbHBoYTE789=="); - try { - papFilter.doFilter(request, response, filter); - assertEquals(0, response.getStatus()); - } catch (Exception e) { - fail(); - } - } - - @After - public void reset(){ - // Restore the original system property - if (oldProperty != null) { - System.setProperty(systemKey, oldProperty); - } else { - System.clearProperty(systemKey); - } - } + + private HttpServletRequest request = null; + private HttpServletResponse response = null; + private String oldProperty; + private String systemKey = "xacml.properties"; + private FilterChain filter; + private PAPAuthenticationFilter papFilter; + + @Before + public void setUp(){ + // Set the system property temporarily + oldProperty = System.getProperty(systemKey); + System.setProperty(systemKey, "xacml.pap.properties"); + + request = Mockito.mock(HttpServletRequest.class); + response = Mockito.mock(HttpServletResponse.class); + filter = Mockito.mock(FilterChain.class); + papFilter = new PAPAuthenticationFilter(); + } + + @Test + public void testAuth() throws IOException, ServletException { + PAPAuthenticationFilter filter = new PAPAuthenticationFilter(); + MockHttpServletRequest request = new MockHttpServletRequest(); + request.setRequestURI("/foo"); + MockHttpServletResponse response = new MockHttpServletResponse(); + FilterChain filterChain = null; + + // Negative test the filter + filter.doFilter(request, response, filterChain); + assertEquals(response.getStatusCode(), 401); + + // Test base methods + try { + filter.destroy(); + filter.init(null); + } + catch (Exception ex) { + fail("Not expecting any exceptions."); + } + } + + @Test + public void testDoFilter() { + Mockito.when(request.getRequestURI()).thenReturn("/pap/"); + Mockito.when(request.getHeader("Authorization")).thenReturn("Basic dGVzdHBhcDphbHBoYTEyMw=="); + callDoFilter(); + Mockito.when(request.getRequestURI()).thenReturn("/pap/onap/"); + callDoFilter(); + } + + public void callDoFilter(){ + try { + papFilter.doFilter(request, response, filter); + } catch (Exception e) { + assertEquals(NullPointerException.class, e.getClass()); + } + } + + @Test + public void testOnPassingInvalidParamters(){ + Mockito.when(request.getRequestURI()).thenReturn("/pap/"); + Mockito.when(request.getHeader("Authorization")).thenReturn("Basic dGVzdHBhcDphbHBoYTE789=="); + try { + papFilter.doFilter(request, response, filter); + assertEquals(0, response.getStatus()); + } catch (Exception e) { + fail(); + } + } + + @After + public void reset(){ + // Restore the original system property + if (oldProperty != null) { + System.setProperty(systemKey, oldProperty); + } else { + System.clearProperty(systemKey); + } + } } |