From 87ef46b7f3004e78b89c5a5c60d1160b332abbb2 Mon Sep 17 00:00:00 2001 From: Krishnajinka Date: Wed, 25 Jul 2018 15:05:28 +0900 Subject: [PATCH] Fix issues reported by sonar Fix issues related to unused method variables, extract constants, not nest more than 3 control stmts, use try with res in policy engine project. Rework for comments Issue-ID: POLICY-1008 Change-Id: If0953de9e802110df14862707f3b525652cdf112 Signed-off-by: Krishnajinka --- .../policy/pdp/rest/XACMLPdpRegisterThread.java | 457 +++---- .../policy/pdp/rest/api/services/PDPServices.java | 123 +- .../main/java/org/onap/policy/rest/XACMLRest.java | 339 +++--- .../java/org/onap/policy/rest/jpa/Category.java | 333 ++--- .../java/org/onap/policy/admin/PolicyAdapter.java | 7 - .../onap/policy/admin/PolicyManagerServlet.java | 106 +- .../onap/policy/admin/PolicyNotificationMail.java | 1 + .../onap/policy/admin/PolicyRestController.java | 15 +- .../onap/policy/controller/PolicyController.java | 1283 ++++++++++---------- 9 files changed, 1323 insertions(+), 1341 deletions(-) diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/XACMLPdpRegisterThread.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/XACMLPdpRegisterThread.java index 49400d615..b33c4bd16 100644 --- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/XACMLPdpRegisterThread.java +++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/XACMLPdpRegisterThread.java @@ -3,6 +3,7 @@ * ONAP-PDP-REST * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Modified Copyright (C) 2018 Samsung Electronics Co., Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -46,240 +47,240 @@ import org.onap.policy.common.logging.eelf.PolicyLogger; import org.onap.policy.common.logging.flexlogger.*; public class XACMLPdpRegisterThread implements Runnable { - private static final Logger LOGGER = FlexLogger.getLogger(XACMLPdpRegisterThread.class); - private static final Logger auditLogger = FlexLogger.getLogger("auditLogger"); - private ONAPLoggingContext baseLoggingContext = null; - + private static final Logger LOGGER = FlexLogger.getLogger(XACMLPdpRegisterThread.class); + private static final Logger auditLogger = FlexLogger.getLogger("auditLogger"); + private ONAPLoggingContext baseLoggingContext = null; - public volatile boolean isRunning = false; - - public XACMLPdpRegisterThread(ONAPLoggingContext baseLoggingContext) { - this.baseLoggingContext = baseLoggingContext; - } - public synchronized boolean isRunning() { - return this.isRunning; - } - - public synchronized void terminate() { - this.isRunning = false; - } - - /** - * - * This is our thread that runs on startup to tell the PAP server we are up-and-running. - * - */ - @Override - public void run() { - synchronized(this) { - this.isRunning = true; - } - // get a new logging context for the thread - ONAPLoggingContext loggingContext = new ONAPLoggingContext(baseLoggingContext); - loggingContext.setServiceName("PDP:PAP.register"); - //are we registered with at least one - boolean registered = false; - boolean interrupted = false; - /* - int seconds; - try { - seconds = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_REGISTER_SLEEP)); - } catch (NumberFormatException e) { - LOGGER.error( XACMLErrorConstants.ERROR_SYSTEM_ERROR +"REGISTER_SLEEP: ", e); - seconds = 5; - } - if (seconds < 5) { - seconds = 5; - } - int retries; - try { - retries = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_REGISTER_RETRIES)); - } catch (NumberFormatException e) { - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR +" REGISTER_SLEEP: ", e); - retries = -1; - } - */ - PapUrlResolver papUrls = PapUrlResolver.getInstance(); - //while (! registered && ! interrupted && this.isRunning()) { - String tempRootPoliciesProperty = XACMLProperties.getProperty(XACMLProperties.PROP_ROOTPOLICIES); - String tempReferencedPoliciesProperty = XACMLProperties.getProperty(XACMLProperties.PROP_REFERENCEDPOLICIES); - Properties tempPipConfigProperties = new Properties(); - try(InputStream pipFile = Files.newInputStream(XACMLPdpLoader.getPIPConfig())){ - tempPipConfigProperties.load(pipFile); - } catch(Exception e){ - LOGGER.error("Failed to open PIP property file", e); - } - while(papUrls.hasMoreUrls()){ - String papID = papUrls.getUserId(); - String papPass = papUrls.getPass(); - Base64.Encoder encoder = Base64.getEncoder(); - String encoding = encoder.encodeToString((papID+":"+papPass).getBytes(StandardCharsets.UTF_8)); - HttpURLConnection connection = null; - try { - // get a new transaction (request) ID and update the logging context. - // each time through the outer loop is considered a new transaction. - // each time through the inner loop (which handles redirects) is a - // continuation of the same transaction. - UUID requestID = UUID.randomUUID(); - loggingContext.setRequestID(requestID.toString()); - //PolicyLogger.info("Request Id generated in XACMLPdpRegisterThread under XACML-PDP-REST"); - loggingContext.transactionStarted(); - // - // Get the list of PAP Servlet URLs from the property file - // - //String papUrlList = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL); - //String[] papUrls = papUrlList.split(","); - //PapUrlResolver.setPapUrls(papUrls); - URL url = new URL(papUrls.getUrl()); - LOGGER.info("Registering with " + url.toString()); - //PolicyLogger.info("new transaction (request) ID and update to logging context in XACMLPdpRegisterThread"); - boolean finished = false; - while (! finished) { - // - // Open up the connection - // - connection = (HttpURLConnection)url.openConnection(); - // - // Setup our method and headers - // - connection.setRequestMethod("POST"); - connection.setRequestProperty("Authorization", "Basic " + encoding); - connection.setRequestProperty("Accept", "text/x-java-properties"); - connection.setRequestProperty("Content-Type", "text/x-java-properties"); - connection.setRequestProperty(XACMLRestProperties.PROP_PDP_HTTP_HEADER_ID, XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_ID)); - connection.setRequestProperty(XACMLRestProperties.PROP_PDP_HTTP_HEADER_JMX_PORT, XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_JMX_PORT)); - connection.setRequestProperty("X-ECOMP-RequestID", requestID.toString()); - connection.setUseCaches(false); - // - // 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. - // - connection.setInstanceFollowRedirects(false); - connection.setDoOutput(true); - connection.setDoInput(true); - try { - // - // Send our current policy configuration - // - String lists = XACMLProperties.PROP_ROOTPOLICIES + "=" + tempRootPoliciesProperty; - lists = lists + "\n" + XACMLProperties.PROP_REFERENCEDPOLICIES + "=" + tempReferencedPoliciesProperty + "\n"; - try (InputStream listsInputStream = new ByteArrayInputStream(lists.getBytes()); - OutputStream os = connection.getOutputStream()) { - IOUtils.copy(listsInputStream, os); + public volatile boolean isRunning = false; - // - // Send our current PIP configuration - // - //IOUtils.copy(pipInputStream, os); - tempPipConfigProperties.store(os, ""); - } - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"Failed to send property file", e); - } - // - // Do the connect - // - connection.connect(); - if (connection.getResponseCode() == 204) { - LOGGER.info("Success. We are configured correctly."); - loggingContext.transactionEnded(); - PolicyLogger.audit("Success. We are configured correctly."); - papUrls.registered(); - finished = true; - registered = true; - } else if (connection.getResponseCode() == 200) { - LOGGER.info("Success. We have a new configuration."); - loggingContext.transactionEnded(); - PolicyLogger.audit("Success. We have a new configuration."); - papUrls.registered(); - Properties properties = new Properties(); - properties.load(connection.getInputStream()); - LOGGER.info("New properties: " + properties.toString()); - // - // Queue it - // - // The incoming properties does NOT include urls - Properties returnedPolicyProperties = XACMLProperties.getPolicyProperties(properties, false); - tempRootPoliciesProperty = new String(returnedPolicyProperties.getProperty(XACMLProperties.PROP_ROOTPOLICIES)); - tempReferencedPoliciesProperty = new String(returnedPolicyProperties.getProperty(XACMLProperties.PROP_REFERENCEDPOLICIES)); - Properties returnedPipProperties = XACMLProperties.getPipProperties(properties); - Properties threadSafeReturnedPipProperties = new Properties(); - ByteArrayOutputStream threadSafeReturnedPipPropertiesOs = new ByteArrayOutputStream(); - returnedPipProperties.store(threadSafeReturnedPipPropertiesOs, ""); - InputStream threadSafeReturnedPipPropertiesIs = new ByteArrayInputStream(threadSafeReturnedPipPropertiesOs.toByteArray()); - threadSafeReturnedPipProperties.load(threadSafeReturnedPipPropertiesIs); - tempPipConfigProperties = threadSafeReturnedPipProperties; + public XACMLPdpRegisterThread(ONAPLoggingContext baseLoggingContext) { + this.baseLoggingContext = baseLoggingContext; + } - PutRequest req = new PutRequest(returnedPolicyProperties,returnedPipProperties); - XACMLPdpServlet.queue.offer(req); - // - // We are now registered - // - finished = true; - registered=true; - } else if (connection.getResponseCode() >= 300 && connection.getResponseCode() <= 399) { - // - // Re-direction - // - String newLocation = connection.getHeaderField("Location"); - if (newLocation == null || newLocation.isEmpty()) { - LOGGER.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"Did not receive a valid re-direction location"); - loggingContext.transactionEnded(); - auditLogger.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"Did not receive a valid re-direction location"); - PolicyLogger.audit("Transaction Failed - See Error.log"); - finished = true; - } else { - LOGGER.info("New Location: " + newLocation); - url = new URL(newLocation); - } - } else { - LOGGER.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Failed: " + connection.getResponseCode() + " message: " + connection.getResponseMessage()); - loggingContext.transactionEnded(); - auditLogger.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Failed: " + connection.getResponseCode() + " message: " + connection.getResponseMessage()); - PolicyLogger.audit("Transaction Failed - See Error.log"); - finished = true; - papUrls.failed(); - } - } - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - papUrls.failed(); - } finally { - // cleanup the connection - if (connection != null) { - try { - // For some reason trying to get the inputStream from the connection - // throws an exception rather than returning null when the InputStream does not exist. - InputStream is = null; - try { - is = connection.getInputStream(); - } catch (Exception e1) { - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Failed to get Input Stream: " + e1); - } - if (is != null) { - is.close(); - } + public synchronized boolean isRunning() { + return this.isRunning; + } - } catch (IOException ex) { - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Failed to close connection: " + ex, ex); - } - connection.disconnect(); - } - } + public synchronized void terminate() { + this.isRunning = false; + } - papUrls.getNext(); - } - synchronized(this) { - this.isRunning = false; - } - LOGGER.info("Thread exiting...(registered=" + registered + ", interrupted=" + interrupted + ", isRunning=" + this.isRunning() + ", retries=" + "0" + ")"); - } + /** + * + * This is our thread that runs on startup to tell the PAP server we are up-and-running. + * + */ + @Override + public void run() { + synchronized(this) { + this.isRunning = true; + } + // get a new logging context for the thread + ONAPLoggingContext loggingContext = new ONAPLoggingContext(baseLoggingContext); + loggingContext.setServiceName("PDP:PAP.register"); + //are we registered with at least one + boolean registered = false; + boolean interrupted = false; + /* + int seconds; + try { + seconds = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_REGISTER_SLEEP)); + } catch (NumberFormatException e) { + LOGGER.error( XACMLErrorConstants.ERROR_SYSTEM_ERROR +"REGISTER_SLEEP: ", e); + seconds = 5; + } + if (seconds < 5) { + seconds = 5; + } + int retries; + try { + retries = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_REGISTER_RETRIES)); + } catch (NumberFormatException e) { + LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR +" REGISTER_SLEEP: ", e); + retries = -1; + } + */ + PapUrlResolver papUrls = PapUrlResolver.getInstance(); + //while (! registered && ! interrupted && this.isRunning()) { + String tempRootPoliciesProperty = XACMLProperties.getProperty(XACMLProperties.PROP_ROOTPOLICIES); + String tempReferencedPoliciesProperty = XACMLProperties.getProperty(XACMLProperties.PROP_REFERENCEDPOLICIES); + Properties tempPipConfigProperties = new Properties(); + try(InputStream pipFile = Files.newInputStream(XACMLPdpLoader.getPIPConfig())){ + tempPipConfigProperties.load(pipFile); + } catch(Exception e){ + LOGGER.error("Failed to open PIP property file", e); + } + while(papUrls.hasMoreUrls()){ + String papID = papUrls.getUserId(); + String papPass = papUrls.getPass(); + Base64.Encoder encoder = Base64.getEncoder(); + String encoding = encoder.encodeToString((papID+":"+papPass).getBytes(StandardCharsets.UTF_8)); + HttpURLConnection connection = null; + try { + // get a new transaction (request) ID and update the logging context. + // each time through the outer loop is considered a new transaction. + // each time through the inner loop (which handles redirects) is a + // continuation of the same transaction. + UUID requestID = UUID.randomUUID(); + loggingContext.setRequestID(requestID.toString()); + //PolicyLogger.info("Request Id generated in XACMLPdpRegisterThread under XACML-PDP-REST"); + loggingContext.transactionStarted(); + // + // Get the list of PAP Servlet URLs from the property file + // + //String papUrlList = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL); + //String[] papUrls = papUrlList.split(","); + //PapUrlResolver.setPapUrls(papUrls); + URL url = new URL(papUrls.getUrl()); + LOGGER.info("Registering with " + url.toString()); + //PolicyLogger.info("new transaction (request) ID and update to logging context in XACMLPdpRegisterThread"); + boolean finished = false; + while (! finished) { + // + // Open up the connection + // + connection = (HttpURLConnection)url.openConnection(); + // + // Setup our method and headers + // + connection.setRequestMethod("POST"); + connection.setRequestProperty("Authorization", "Basic " + encoding); + connection.setRequestProperty("Accept", "text/x-java-properties"); + connection.setRequestProperty("Content-Type", "text/x-java-properties"); + connection.setRequestProperty(XACMLRestProperties.PROP_PDP_HTTP_HEADER_ID, XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_ID)); + connection.setRequestProperty(XACMLRestProperties.PROP_PDP_HTTP_HEADER_JMX_PORT, XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_JMX_PORT)); + connection.setRequestProperty("X-ECOMP-RequestID", requestID.toString()); + connection.setUseCaches(false); + // + // 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. + // + connection.setInstanceFollowRedirects(false); + connection.setDoOutput(true); + connection.setDoInput(true); + try { + // + // Send our current policy configuration + // + String lists = XACMLProperties.PROP_ROOTPOLICIES + "=" + tempRootPoliciesProperty; + lists = lists + "\n" + XACMLProperties.PROP_REFERENCEDPOLICIES + "=" + tempReferencedPoliciesProperty + "\n"; + try (InputStream listsInputStream = new ByteArrayInputStream(lists.getBytes()); + OutputStream os = connection.getOutputStream()) { + IOUtils.copy(listsInputStream, os); + + // + // Send our current PIP configuration + // + //IOUtils.copy(pipInputStream, os); + tempPipConfigProperties.store(os, ""); + } + } catch (Exception e) { + LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"Failed to send property file", e); + } + // + // Do the connect + // + connection.connect(); + if (connection.getResponseCode() == 204) { + LOGGER.info("Success. We are configured correctly."); + loggingContext.transactionEnded(); + PolicyLogger.audit("Success. We are configured correctly."); + papUrls.registered(); + finished = true; + registered = true; + } else if (connection.getResponseCode() == 200) { + LOGGER.info("Success. We have a new configuration."); + loggingContext.transactionEnded(); + PolicyLogger.audit("Success. We have a new configuration."); + papUrls.registered(); + Properties properties = new Properties(); + properties.load(connection.getInputStream()); + LOGGER.info("New properties: " + properties.toString()); + // + // Queue it + // + // The incoming properties does NOT include urls + Properties returnedPolicyProperties = XACMLProperties.getPolicyProperties(properties, false); + tempRootPoliciesProperty = returnedPolicyProperties.getProperty(XACMLProperties.PROP_ROOTPOLICIES); + tempReferencedPoliciesProperty = returnedPolicyProperties.getProperty(XACMLProperties.PROP_REFERENCEDPOLICIES); + Properties returnedPipProperties = XACMLProperties.getPipProperties(properties); + Properties threadSafeReturnedPipProperties = new Properties(); + ByteArrayOutputStream threadSafeReturnedPipPropertiesOs = new ByteArrayOutputStream(); + returnedPipProperties.store(threadSafeReturnedPipPropertiesOs, ""); + InputStream threadSafeReturnedPipPropertiesIs = new ByteArrayInputStream(threadSafeReturnedPipPropertiesOs.toByteArray()); + threadSafeReturnedPipProperties.load(threadSafeReturnedPipPropertiesIs); + tempPipConfigProperties = threadSafeReturnedPipProperties; + + PutRequest req = new PutRequest(returnedPolicyProperties,returnedPipProperties); + XACMLPdpServlet.queue.offer(req); + // + // We are now registered + // + finished = true; + registered=true; + } else if (connection.getResponseCode() >= 300 && connection.getResponseCode() <= 399) { + // + // Re-direction + // + String newLocation = connection.getHeaderField("Location"); + if (newLocation == null || newLocation.isEmpty()) { + LOGGER.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"Did not receive a valid re-direction location"); + loggingContext.transactionEnded(); + auditLogger.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"Did not receive a valid re-direction location"); + PolicyLogger.audit("Transaction Failed - See Error.log"); + finished = true; + } else { + LOGGER.info("New Location: " + newLocation); + url = new URL(newLocation); + } + } else { + LOGGER.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Failed: " + connection.getResponseCode() + " message: " + connection.getResponseMessage()); + loggingContext.transactionEnded(); + auditLogger.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Failed: " + connection.getResponseCode() + " message: " + connection.getResponseMessage()); + PolicyLogger.audit("Transaction Failed - See Error.log"); + finished = true; + papUrls.failed(); + } + } + } catch (Exception e) { + LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e); + loggingContext.transactionEnded(); + PolicyLogger.audit("Transaction Failed - See Error.log"); + papUrls.failed(); + } finally { + // cleanup the connection + if (connection != null) { + try { + // For some reason trying to get the inputStream from the connection + // throws an exception rather than returning null when the InputStream does not exist. + InputStream is = null; + try { + is = connection.getInputStream(); + } catch (Exception e1) { + LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Failed to get Input Stream: " + e1); + } + if (is != null) { + is.close(); + } + + } catch (IOException ex) { + LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Failed to close connection: " + ex, ex); + } + connection.disconnect(); + } + } + + papUrls.getNext(); + } + synchronized(this) { + this.isRunning = false; + } + LOGGER.info("Thread exiting...(registered=" + registered + ", interrupted=" + interrupted + ", isRunning=" + this.isRunning() + ", retries=" + "0" + ")"); + } } diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PDPServices.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PDPServices.java index 936e497f4..6dae064a7 100644 --- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PDPServices.java +++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PDPServices.java @@ -341,83 +341,66 @@ public class PDPServices { if(pdpConfigLocation.contains("/")){ pdpConfigLocation = pdpConfigLocation.replace("/", File.separator); } - InputStream inputStream = null; - JsonReader jsonReader = null; - try { - inputStream = new FileInputStream(new File(pdpConfigLocation)); - try { - if (pdpConfigLocation.endsWith("json")) { - pdpResponse.setType(PolicyType.JSON); - jsonReader = Json.createReader(inputStream); + + try(InputStream inputStream = new FileInputStream(new File(pdpConfigLocation))) { + if (pdpConfigLocation.endsWith("json")) { + pdpResponse.setType(PolicyType.JSON); + try(JsonReader jsonReader = Json.createReader(inputStream);) { pdpResponse.setConfig(jsonReader.readObject().toString()); - jsonReader.close(); - } else if (pdpConfigLocation.endsWith("xml")) { - pdpResponse.setType(PolicyType.XML); - DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); - dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); - dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); - DocumentBuilder db = null; - try { - db = dbf.newDocumentBuilder(); - Document document = db.parse(inputStream); - DOMSource domSource = new DOMSource(document); - StringWriter writer = new StringWriter(); - StreamResult result = new StreamResult(writer); - TransformerFactory tf = TransformerFactory.newInstance(); - Transformer transformer; - transformer = tf.newTransformer(); - transformer.transform(domSource, result); - pdpResponse.setConfig(writer.toString()); - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_SCHEMA_INVALID+ e); - throw new PDPException(XACMLErrorConstants.ERROR_SCHEMA_INVALID+ "Unable to parse the XML config", e); - } - } else if (pdpConfigLocation.endsWith("properties")) { - pdpResponse.setType(PolicyType.PROPERTIES); - Properties configProp = new Properties(); - configProp.load(inputStream); - Map propVal = new HashMap<>(); - for(String name: configProp.stringPropertyNames()) { - propVal.put(name, configProp.getProperty(name)); - } - pdpResponse.setProperty(propVal); - } else if (pdpConfigLocation.endsWith("txt")) { - pdpResponse.setType(PolicyType.OTHER); - String other = IOUtils.toString(inputStream); - IOUtils.closeQuietly(inputStream); - pdpResponse.setConfig(other); - } else { - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Config Not Found"); - pdpResponse.setPolicyConfigStatus(PolicyConfigStatus.CONFIG_NOT_FOUND); - pdpResponse.setPolicyConfigMessage("Illegal form of Configuration Type Found."); - inputStream.close(); - return pdpResponse; } - LOGGER.info("config Retrieved " + pdpConfigLocation); - pdpResponse.setStatus("Config Retrieved! ", - PolicyResponseStatus.NO_ACTION_REQUIRED, - PolicyConfigStatus.CONFIG_RETRIEVED); - return pdpResponse; - } catch (IOException | ParserConfigurationException e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e); - throw new PDPException(XACMLErrorConstants.ERROR_PROCESS_FLOW + - "Cannot open a connection to the configURL", e); - } finally { - if(jsonReader != null) { - try { - jsonReader.close(); - } catch (Exception e) { - LOGGER.error("Exception Occured while closing the JsonReader"+e); - } + } else if (pdpConfigLocation.endsWith("xml")) { + pdpResponse.setType(PolicyType.XML); + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); + DocumentBuilder db = null; + try { + db = dbf.newDocumentBuilder(); + Document document = db.parse(inputStream); + DOMSource domSource = new DOMSource(document); + StringWriter writer = new StringWriter(); + StreamResult result = new StreamResult(writer); + TransformerFactory tf = TransformerFactory.newInstance(); + Transformer transformer; + transformer = tf.newTransformer(); + transformer.transform(domSource, result); + pdpResponse.setConfig(writer.toString()); + } catch (Exception e) { + LOGGER.error(XACMLErrorConstants.ERROR_SCHEMA_INVALID+ e); + throw new PDPException(XACMLErrorConstants.ERROR_SCHEMA_INVALID+ "Unable to parse the XML config", e); } + } else if (pdpConfigLocation.endsWith("properties")) { + pdpResponse.setType(PolicyType.PROPERTIES); + Properties configProp = new Properties(); + configProp.load(inputStream); + Map propVal = new HashMap<>(); + for(String name: configProp.stringPropertyNames()) { + propVal.put(name, configProp.getProperty(name)); + } + pdpResponse.setProperty(propVal); + } else if (pdpConfigLocation.endsWith("txt")) { + pdpResponse.setType(PolicyType.OTHER); + String other = IOUtils.toString(inputStream); + IOUtils.closeQuietly(inputStream); + pdpResponse.setConfig(other); + } else { + LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Config Not Found"); + pdpResponse.setPolicyConfigStatus(PolicyConfigStatus.CONFIG_NOT_FOUND); + pdpResponse.setPolicyConfigMessage("Illegal form of Configuration Type Found."); + return pdpResponse; } + LOGGER.info("config Retrieved " + pdpConfigLocation); + pdpResponse.setStatus("Config Retrieved! ", + PolicyResponseStatus.NO_ACTION_REQUIRED, + PolicyConfigStatus.CONFIG_RETRIEVED); + return pdpResponse; } catch (FileNotFoundException e) { LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e); throw new PDPException(XACMLErrorConstants.ERROR_DATA_ISSUE + "Error in ConfigURL", e); - }finally{ - if(inputStream != null){ - inputStream.close(); - } + } catch (IOException | ParserConfigurationException e) { + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e); + throw new PDPException(XACMLErrorConstants.ERROR_PROCESS_FLOW + + "Cannot open a connection to the configURL", e); } } diff --git a/ONAP-REST/src/main/java/org/onap/policy/rest/XACMLRest.java b/ONAP-REST/src/main/java/org/onap/policy/rest/XACMLRest.java index 0912515e0..7cced5667 100644 --- a/ONAP-REST/src/main/java/org/onap/policy/rest/XACMLRest.java +++ b/ONAP-REST/src/main/java/org/onap/policy/rest/XACMLRest.java @@ -3,6 +3,7 @@ * ONAP-REST * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Modified Copyright (C) 2018 Samsung Electronics Co., Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -44,174 +45,176 @@ import com.att.research.xacml.util.XACMLProperties; * */ public class XACMLRest { - private static final Log logger = LogFactory.getLog(XACMLRest.class); - private static Properties restProperties = new Properties(); + private static final Log logger = LogFactory.getLog(XACMLRest.class); + private static Properties restProperties = new Properties(); - private XACMLRest(){ - // Empty constructor + private XACMLRest(){ + // Empty constructor + } + /** + * This must be called during servlet initialization. It sets up the xacml.?.properties + * file as a system property. If the System property is already set, then it does not + * do anything. This allows the developer to specify their own xacml.properties file to be + * used. They can 1) modify the default properties that comes with the project, or 2) change + * the WebInitParam annotation, or 3) specify an alternative path in the web.xml, or 4) set + * the Java System property to point to their xacml.properties file. + * + * The recommended way of overriding the default xacml.properties file is using a Java System + * property: + * + * -Dxacml.properties=/opt/app/xacml/etc/xacml.admin.properties + * + * This way one does not change any actual code or files in the project and can leave the + * defaults alone. + * + * @param config - The servlet config file passed from the javax servlet init() function + */ + public static void xacmlInit(ServletConfig config) { + // + // Get the XACML Properties File parameter first + // + String propFile = config.getInitParameter("XACML_PROPERTIES_NAME"); + if (propFile != null) { + // + // Look for system override + // + String xacmlPropertiesName = System.getProperty(XACMLProperties.XACML_PROPERTIES_NAME); + logger.info("\n\n" + xacmlPropertiesName + "\n" + XACMLProperties.XACML_PROPERTIES_NAME); + if (xacmlPropertiesName == null) { + // + // Set it to our servlet default + // + if (logger.isDebugEnabled()) { + logger.debug("Using Servlet Config Property for XACML_PROPERTIES_NAME:" + propFile); + } + System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME, propFile); + } else { + if (logger.isDebugEnabled()) { + logger.debug("Using System Property for XACML_PROPERTIES_NAME:" + xacmlPropertiesName); + } + } + } + // + // Setup the remaining properties + // + Enumeration params = config.getInitParameterNames(); + while (params.hasMoreElements()) { + String param = params.nextElement(); + if (! "XACML_PROPERTIES_NAME".equals(param)) { + String value = config.getInitParameter(param); + PolicyLogger.info(param + "=" + config.getInitParameter(param)); + restProperties.setProperty(param, value); + } + } + } + + /** + * Reset's the XACMLProperties internal properties object so we start + * in a fresh environment. Then adds back in our Servlet init properties that were + * passed in the javax Servlet init() call. + * + * This function is primarily used when a new configuration is passed in and the + * PDP servlet needs to load a new PDP engine instance. + * + * @param pipProperties - PIP configuration properties + * @param policyProperties - Policy configuration properties + */ + public static void loadXacmlProperties(Properties policyProperties, Properties pipProperties) { + try { + // + // Start fresh + // + XACMLProperties.reloadProperties(); + // + // Now load our init properties + // + XACMLProperties.getProperties().putAll(XACMLRest.restProperties); + // + // Load our policy properties + // + if (policyProperties != null) { + XACMLProperties.getProperties().putAll(policyProperties); + } + // + // Load our pip config properties + // + if (pipProperties != null) { + XACMLProperties.getProperties().putAll(pipProperties); + } + } catch (IOException e) { + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "Failed to put init properties into Xacml properties"); + } + // + // Dump them + // + if (logger.isDebugEnabled()) { + try { + logger.debug(XACMLProperties.getProperties().toString()); + } catch (IOException e) { + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "Cannot dump properties"); + } + } + } + + /** + * Helper routine to dump the HTTP servlet request being serviced. Primarily for debugging. + * + * @param request - Servlet request (from a POST/GET/PUT/etc.) + */ + public static void dumpRequest(HttpServletRequest request) { + if (!logger.isDebugEnabled()) { + return; + } + + // special-case for receiving heartbeat - don't need to repeatedly output all of the information in multiple lines + if ("GET".equals(request.getMethod()) && "hb".equals(request.getParameter("type")) ) { + PolicyLogger.debug("GET type=hb : heartbeat received"); + return; + } + logger.debug(request.getMethod() + ":" + request.getRemoteAddr() + " " + request.getRemoteHost() + " " + request.getRemotePort()); + logger.debug(request.getLocalAddr() + " " + request.getLocalName() + " " + request.getLocalPort()); + Enumeration en = request.getHeaderNames(); + logger.debug("Headers:"); + while (en.hasMoreElements()) { + String element = en.nextElement(); + Enumeration values = request.getHeaders(element); + while (values.hasMoreElements()) { + String value = values.nextElement(); + logger.debug(element + ":" + value); + } + } + logger.debug("Attributes:"); + en = request.getAttributeNames(); + while (en.hasMoreElements()) { + String element = en.nextElement(); + logger.debug(element + ":" + request.getAttribute(element)); + } + logger.debug("ContextPath: " + request.getContextPath()); + if ("PUT".equals(request.getMethod()) || "POST".equals(request.getMethod())) { + // POST and PUT are allowed to have parameters in the content, but in our usage the parameters are always in the Query string. + // More importantly, there are cases where the POST and PUT content is NOT parameters (e.g. it might contain a Policy file). + // Unfortunately the request.getParameterMap method reads the content to see if there are any parameters, + // and once the content is read it cannot be read again. + // Thus for PUT and POST we must avoid reading the content here so that the main code can read it. + logger.debug("Query String:" + request.getQueryString()); + try { + if (request.getInputStream() == null) { + logger.debug("Content: No content inputStream"); + } else { + logger.debug("Content available: " + request.getInputStream().available()); + } + } catch (Exception e) { + logger.debug("Content: inputStream exception: " + e.getMessage() + "; (May not be relevant)" +e); + } + } else { + logger.debug("Parameters:"); + Map params = request.getParameterMap(); + Set keys = params.keySet(); + for (String key : keys) { + String[] values = params.get(key); + logger.debug(key + "(" + values.length + "): " + (values.length > 0 ? values[0] : "")); + } + } + logger.debug("Request URL:" + request.getRequestURL()); } - /** - * This must be called during servlet initialization. It sets up the xacml.?.properties - * file as a system property. If the System property is already set, then it does not - * do anything. This allows the developer to specify their own xacml.properties file to be - * used. They can 1) modify the default properties that comes with the project, or 2) change - * the WebInitParam annotation, or 3) specify an alternative path in the web.xml, or 4) set - * the Java System property to point to their xacml.properties file. - * - * The recommended way of overriding the default xacml.properties file is using a Java System - * property: - * - * -Dxacml.properties=/opt/app/xacml/etc/xacml.admin.properties - * - * This way one does not change any actual code or files in the project and can leave the - * defaults alone. - * - * @param config - The servlet config file passed from the javax servlet init() function - */ - public static void xacmlInit(ServletConfig config) { - // - // Get the XACML Properties File parameter first - // - String propFile = config.getInitParameter("XACML_PROPERTIES_NAME"); - if (propFile != null) { - // - // Look for system override - // - String xacmlPropertiesName = System.getProperty(XACMLProperties.XACML_PROPERTIES_NAME); - logger.info("\n\n" + xacmlPropertiesName + "\n" + XACMLProperties.XACML_PROPERTIES_NAME); - if (xacmlPropertiesName == null) { - // - // Set it to our servlet default - // - if (logger.isDebugEnabled()) { - logger.debug("Using Servlet Config Property for XACML_PROPERTIES_NAME:" + propFile); - } - System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME, propFile); - } else { - if (logger.isDebugEnabled()) { - logger.debug("Using System Property for XACML_PROPERTIES_NAME:" + xacmlPropertiesName); - } - } - } - // - // Setup the remaining properties - // - Enumeration params = config.getInitParameterNames(); - while (params.hasMoreElements()) { - String param = params.nextElement(); - if (! "XACML_PROPERTIES_NAME".equals(param)) { - String value = config.getInitParameter(param); - PolicyLogger.info(param + "=" + config.getInitParameter(param)); - restProperties.setProperty(param, value); - } - } - } - - /** - * Reset's the XACMLProperties internal properties object so we start - * in a fresh environment. Then adds back in our Servlet init properties that were - * passed in the javax Servlet init() call. - * - * This function is primarily used when a new configuration is passed in and the - * PDP servlet needs to load a new PDP engine instance. - * - * @param pipProperties - PIP configuration properties - * @param policyProperties - Policy configuration properties - */ - public static void loadXacmlProperties(Properties policyProperties, Properties pipProperties) { - try { - // - // Start fresh - // - XACMLProperties.reloadProperties(); - // - // Now load our init properties - // - XACMLProperties.getProperties().putAll(XACMLRest.restProperties); - // - // Load our policy properties - // - if (policyProperties != null) { - XACMLProperties.getProperties().putAll(policyProperties); - } - // - // Load our pip config properties - // - if (pipProperties != null) { - XACMLProperties.getProperties().putAll(pipProperties); - } - } catch (IOException e) { - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "Failed to put init properties into Xacml properties"); - } - // - // Dump them - // - if (logger.isDebugEnabled()) { - try { - logger.debug(XACMLProperties.getProperties().toString()); - } catch (IOException e) { - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "Cannot dump properties"); - } - } - } - - /** - * Helper routine to dump the HTTP servlet request being serviced. Primarily for debugging. - * - * @param request - Servlet request (from a POST/GET/PUT/etc.) - */ - public static void dumpRequest(HttpServletRequest request) { - if (logger.isDebugEnabled()) { - // special-case for receiving heartbeat - don't need to repeatedly output all of the information in multiple lines - if ("GET".equals(request.getMethod()) && "hb".equals(request.getParameter("type")) ) { - PolicyLogger.debug("GET type=hb : heartbeat received"); - return; - } - logger.debug(request.getMethod() + ":" + request.getRemoteAddr() + " " + request.getRemoteHost() + " " + request.getRemotePort()); - logger.debug(request.getLocalAddr() + " " + request.getLocalName() + " " + request.getLocalPort()); - Enumeration en = request.getHeaderNames(); - logger.debug("Headers:"); - while (en.hasMoreElements()) { - String element = en.nextElement(); - Enumeration values = request.getHeaders(element); - while (values.hasMoreElements()) { - String value = values.nextElement(); - logger.debug(element + ":" + value); - } - } - logger.debug("Attributes:"); - en = request.getAttributeNames(); - while (en.hasMoreElements()) { - String element = en.nextElement(); - logger.debug(element + ":" + request.getAttribute(element)); - } - logger.debug("ContextPath: " + request.getContextPath()); - if ("PUT".equals(request.getMethod()) || "POST".equals(request.getMethod())) { - // POST and PUT are allowed to have parameters in the content, but in our usage the parameters are always in the Query string. - // More importantly, there are cases where the POST and PUT content is NOT parameters (e.g. it might contain a Policy file). - // Unfortunately the request.getParameterMap method reads the content to see if there are any parameters, - // and once the content is read it cannot be read again. - // Thus for PUT and POST we must avoid reading the content here so that the main code can read it. - logger.debug("Query String:" + request.getQueryString()); - try { - if (request.getInputStream() == null) { - logger.debug("Content: No content inputStream"); - } else { - logger.debug("Content available: " + request.getInputStream().available()); - } - } catch (Exception e) { - logger.debug("Content: inputStream exception: " + e.getMessage() + "; (May not be relevant)" +e); - } - } else { - logger.debug("Parameters:"); - Map params = request.getParameterMap(); - Set keys = params.keySet(); - for (String key : keys) { - String[] values = params.get(key); - logger.debug(key + "(" + values.length + "): " + (values.length > 0 ? values[0] : "")); - } - } - logger.debug("Request URL:" + request.getRequestURL()); - } - } } diff --git a/ONAP-REST/src/main/java/org/onap/policy/rest/jpa/Category.java b/ONAP-REST/src/main/java/org/onap/policy/rest/jpa/Category.java index 275b03e5a..f3874a480 100644 --- a/ONAP-REST/src/main/java/org/onap/policy/rest/jpa/Category.java +++ b/ONAP-REST/src/main/java/org/onap/policy/rest/jpa/Category.java @@ -3,6 +3,7 @@ * ONAP-REST * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Modified Copyright (C) 2018 Samsung Electronics Co., Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -48,171 +49,171 @@ import com.fasterxml.jackson.annotation.JsonBackReference; @Table(name="Category") @NamedQuery(name="Category.findAll", query="SELECT c FROM Category c") public class Category implements Serializable { - private static final long serialVersionUID = 1L; - - public static final char STANDARD = 'S'; - public static final char CUSTOM = 'C'; - - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - @Column(name="id") - private int id; - - @Column(name="grouping", nullable=false, length=64) - private String grouping; - - @Column(name="is_standard", nullable=false) - private char isStandard; - - @Column(name="xacml_id", nullable=false, unique=true, length=255) - private String xacmlId; - - @Column(name="short_name", nullable=false, length=64) - private String shortName; - - //bi-directional many-to-one association to Attribute - @OneToMany(mappedBy="categoryBean") - @JsonBackReference - private Set attributes = new HashSet<>(); - - public Category() { - this.xacmlId = XACML3.ID_SUBJECT_CATEGORY_ACCESS_SUBJECT.stringValue(); - this.grouping = "subject"; - this.isStandard = Category.STANDARD; - this.shortName = "subject"; - } - - public Category(Identifier cat, String grouping, char isStandard) { - if (cat != null) { - this.xacmlId = cat.stringValue(); - } - this.isStandard = isStandard; - if (grouping != null) { - this.grouping = grouping; - } else { - this.grouping = Category.extractGrouping(this.xacmlId); - } - } - - public Category(Identifier cat, String grouping) { - this(cat, grouping, Category.STANDARD); - } - - public Category(Identifier cat, char standard) { - this(cat, null, standard); - } - - public Category(Identifier cat) { - this(cat, Category.STANDARD); - } - - public int getId() { - return this.id; - } - - public void setId(int id) { - this.id = id; - } - - public String getGrouping() { - return this.grouping; - } - - public void setGrouping(String grouping) { - this.grouping = grouping; - } - - public char getIsStandard() { - return this.isStandard; - } - - public void setIsStandard(char isStandard) { - this.isStandard = isStandard; - } - - public String getXacmlId() { - return this.xacmlId; - } - - public void setXacmlId(String xacmlId) { - this.xacmlId = xacmlId; - } - - public String getShortName() { - return this.shortName; - } - - public void setShortName(String shortName) { - this.shortName = shortName; - } - - public Set getAttributes() { - return this.attributes; - } - - public void setAttributes(Set attributes) { - this.attributes = attributes; - } - - public Attribute addAttribute(Attribute attribute) { - getAttributes().add(attribute); - attribute.setCategoryBean(this); - - return attribute; - } - - public Attribute removeAttribute(Attribute attribute) { - getAttributes().remove(attribute); - attribute.setCategoryBean(null); - - return attribute; - } - - @Transient - public boolean isStandard() { - return this.isStandard == Category.STANDARD; - } - - @Transient - public boolean isCustom() { - return this.isStandard == Category.CUSTOM; - } - - @Transient - public static String extractGrouping(String xacmlId) { - if (xacmlId == null) { - return null; - } - if (xacmlId.matches(".*:attribute\\-category:.*")) { - String[] parts = xacmlId.split("[:]"); - if (parts != null && parts.length > 0) { - return parts[parts.length - 1]; - } - } else if (xacmlId.matches(".*:[a-zA-Z]+[\\-]category:.*")) { - String[] parts = xacmlId.split("[:]"); - if (parts != null && parts.length > 0) { - for (String part : parts) { - int index = part.indexOf("-category"); - if (index > 0) { - return part.substring(0, index); - } - } - } - } - return null; - } - - @Transient - public Identifier getIdentifer() { - return new IdentifierImpl(this.xacmlId); - } - - @Transient - @Override - public String toString() { - return "Category [id=" + id + ", grouping=" + grouping - + ", isStandard=" + isStandard + ", xacmlId=" + xacmlId - + ", attributes=" + attributes + "]"; - } + private static final long serialVersionUID = 1L; + + public static final char STANDARD = 'S'; + public static final char CUSTOM = 'C'; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name="id") + private int id; + + @Column(name="grouping", nullable=false, length=64) + private String grouping; + + @Column(name="is_standard", nullable=false) + private char isStandard; + + @Column(name="xacml_id", nullable=false, unique=true, length=255) + private String xacmlId; + + @Column(name="short_name", nullable=false, length=64) + private String shortName; + + //bi-directional many-to-one association to Attribute + @OneToMany(mappedBy="categoryBean") + @JsonBackReference + private Set attributes = new HashSet<>(); + + public Category() { + this.xacmlId = XACML3.ID_SUBJECT_CATEGORY_ACCESS_SUBJECT.stringValue(); + this.grouping = "subject"; + this.isStandard = Category.STANDARD; + this.shortName = "subject"; + } + + public Category(Identifier cat, String grouping, char isStandard) { + if (cat != null) { + this.xacmlId = cat.stringValue(); + } + this.isStandard = isStandard; + if (grouping != null) { + this.grouping = grouping; + } else { + this.grouping = Category.extractGrouping(this.xacmlId); + } + } + + public Category(Identifier cat, String grouping) { + this(cat, grouping, Category.STANDARD); + } + + public Category(Identifier cat, char standard) { + this(cat, null, standard); + } + + public Category(Identifier cat) { + this(cat, Category.STANDARD); + } + + public int getId() { + return this.id; + } + + public void setId(int id) { + this.id = id; + } + + public String getGrouping() { + return this.grouping; + } + + public void setGrouping(String grouping) { + this.grouping = grouping; + } + + public char getIsStandard() { + return this.isStandard; + } + + public void setIsStandard(char isStandard) { + this.isStandard = isStandard; + } + + public String getXacmlId() { + return this.xacmlId; + } + + public void setXacmlId(String xacmlId) { + this.xacmlId = xacmlId; + } + + public String getShortName() { + return this.shortName; + } + + public void setShortName(String shortName) { + this.shortName = shortName; + } + + public Set getAttributes() { + return this.attributes; + } + + public void setAttributes(Set attributes) { + this.attributes = attributes; + } + + public Attribute addAttribute(Attribute attribute) { + getAttributes().add(attribute); + attribute.setCategoryBean(this); + + return attribute; + } + + public Attribute removeAttribute(Attribute attribute) { + getAttributes().remove(attribute); + attribute.setCategoryBean(null); + + return attribute; + } + + @Transient + public boolean isStandard() { + return this.isStandard == Category.STANDARD; + } + + @Transient + public boolean isCustom() { + return this.isStandard == Category.CUSTOM; + } + + @Transient + public static String extractGrouping(String xacmlId) { + if (xacmlId == null) { + return null; + } + String[] parts = xacmlId.split("[:]"); + if (xacmlId.matches(".*:attribute\\-category:.*")) { + if (parts.length > 0) { + return parts[parts.length - 1]; + } + } else if (xacmlId.matches(".*:[a-zA-Z]+[\\-]category:.*")) { + if (parts.length <= 0) { + return null; + } + for (String part : parts) { + int index = part.indexOf("-category"); + if (index > 0) { + return part.substring(0, index); + } + } + } + return null; + } + + @Transient + public Identifier getIdentifer() { + return new IdentifierImpl(this.xacmlId); + } + + @Transient + @Override + public String toString() { + return "Category [id=" + id + ", grouping=" + grouping + + ", isStandard=" + isStandard + ", xacmlId=" + xacmlId + + ", attributes=" + attributes + "]"; + } } diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyAdapter.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyAdapter.java index 8a3d27890..be660c803 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyAdapter.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyAdapter.java @@ -43,9 +43,6 @@ public class PolicyAdapter { private static final Logger LOGGER = FlexLogger.getLogger(PolicyAdapter.class); public void configure(PolicyRestAdapter policyAdapter, PolicyEntity entity) { - if(extendedOptions(policyAdapter, entity)){ - return; - } String policyNameValue = policyAdapter.getPolicyName().substring(0, policyAdapter.getPolicyName().indexOf('_')); String configPolicyName = getConfigPolicyName(policyAdapter); policyAdapter.setPolicyType(policyNameValue); @@ -116,10 +113,6 @@ public class PolicyAdapter { } } - private boolean extendedOptions(PolicyRestAdapter policyAdapter, PolicyEntity entity) { - return false; - } - public static PolicyAdapter getInstance() { try { Class policyAdapter = Class.forName(XACMLProperties.getProperty("policyAdapter.impl.className", PolicyAdapter.class.getName())); diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyManagerServlet.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyManagerServlet.java index d94274242..de83b045b 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyManagerServlet.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyManagerServlet.java @@ -93,6 +93,13 @@ import com.fasterxml.jackson.databind.ObjectMapper; public class PolicyManagerServlet extends HttpServlet { private static final Logger LOGGER = FlexLogger.getLogger(PolicyManagerServlet.class); private static final long serialVersionUID = -8453502699403909016L; + private static final String VERSION = "version";; + private static final String NAME = "name"; + private static final String DATE = "date"; + private static final String SIZE = "size"; + private static final String TYPE = "type"; + private static final String CREATED_BY = "createdBy"; + private static final String MODIFIED_BY = "modifiedBy"; private enum Mode { LIST, RENAME, COPY, DELETE, EDITFILE, ADDFOLDER, DESCRIBEPOLICYFILE, VIEWPOLICY, ADDSUBSCOPE, SWITCHVERSION, EXPORT, SEARCHLIST @@ -207,7 +214,6 @@ public class PolicyManagerServlet extends HttpServlet { //Policy Import Functionality private void uploadFile(HttpServletRequest request, HttpServletResponse response) throws ServletException { try { - String newFile; Map files = new HashMap<>(); List items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); @@ -385,13 +391,13 @@ public class PolicyManagerServlet extends HttpServlet { for(int i =0; i < policyData.size(); i++){ PolicyVersion policy = (PolicyVersion) policyData.get(i); JSONObject el = new JSONObject(); - el.put("name", policy.getPolicyName().replace(File.separator, "/")); - el.put("date", policy.getModifiedDate()); - el.put("version", policy.getActiveVersion()); - el.put("size", ""); - el.put("type", "file"); - el.put("createdBy", getUserName(policy.getCreatedBy())); - el.put("modifiedBy", getUserName(policy.getModifiedBy())); + el.put(NAME, policy.getPolicyName().replace(File.separator, "/")); + el.put(DATE, policy.getModifiedDate()); + el.put(VERSION, policy.getActiveVersion()); + el.put(SIZE, ""); + el.put(TYPE, "file"); + el.put(CREATED_BY, getUserName(policy.getCreatedBy())); + el.put(MODIFIED_BY, getUserName(policy.getModifiedBy())); resultList.add(el); } } @@ -403,18 +409,18 @@ public class PolicyManagerServlet extends HttpServlet { String policyVersionQuery = "From PolicyVersion where policy_name = :policyName and active_version = :version and id >0"; SimpleBindings pvParams = new SimpleBindings(); pvParams.put("policyName", policyName); - pvParams.put("version", version); + pvParams.put(VERSION, version); List activeData = controller.getDataByQuery(policyVersionQuery, pvParams); if(!activeData.isEmpty()){ PolicyVersion policy = (PolicyVersion) activeData.get(0); JSONObject el = new JSONObject(); - el.put("name", policy.getPolicyName().replace(File.separator, "/")); - el.put("date", policy.getModifiedDate()); - el.put("version", policy.getActiveVersion()); - el.put("size", ""); - el.put("type", "file"); - el.put("createdBy", getUserName(policy.getCreatedBy())); - el.put("modifiedBy", getUserName(policy.getModifiedBy())); + el.put(NAME, policy.getPolicyName().replace(File.separator, "/")); + el.put(DATE, policy.getModifiedDate()); + el.put(VERSION, policy.getActiveVersion()); + el.put(SIZE, ""); + el.put(TYPE, "file"); + el.put(CREATED_BY, getUserName(policy.getCreatedBy())); + el.put(MODIFIED_BY, getUserName(policy.getModifiedBy())); resultList.add(el); } } @@ -602,12 +608,12 @@ public class PolicyManagerServlet extends HttpServlet { PolicyEditorScopes scope = (PolicyEditorScopes) list; if(!(scope.getScopeName().contains(File.separator))){ JSONObject el = new JSONObject(); - el.put("name", scope.getScopeName()); - el.put("date", scope.getModifiedDate()); - el.put("size", ""); - el.put("type", "dir"); - el.put("createdBy", scope.getUserCreatedBy().getUserName()); - el.put("modifiedBy", scope.getUserModifiedBy().getUserName()); + el.put(NAME, scope.getScopeName()); + el.put(DATE, scope.getModifiedDate()); + el.put(SIZE, ""); + el.put(TYPE, "dir"); + el.put(CREATED_BY, scope.getUserCreatedBy().getUserName()); + el.put(MODIFIED_BY, scope.getUserModifiedBy().getUserName()); resultList.add(el); } } @@ -617,12 +623,12 @@ public class PolicyManagerServlet extends HttpServlet { List scopesList = queryPolicyEditorScopes(scope.toString()); if(!scopesList.isEmpty()){ PolicyEditorScopes scopeById = (PolicyEditorScopes) scopesList.get(0); - el.put("name", scopeById.getScopeName()); - el.put("date", scopeById.getModifiedDate()); - el.put("size", ""); - el.put("type", "dir"); - el.put("createdBy", scopeById.getUserCreatedBy().getUserName()); - el.put("modifiedBy", scopeById.getUserModifiedBy().getUserName()); + el.put(NAME, scopeById.getScopeName()); + el.put(DATE, scopeById.getModifiedDate()); + el.put(SIZE, ""); + el.put(TYPE, "dir"); + el.put(CREATED_BY, scopeById.getUserCreatedBy().getUserName()); + el.put(MODIFIED_BY, scopeById.getUserModifiedBy().getUserName()); resultList.add(el); } } @@ -703,12 +709,12 @@ public class PolicyManagerServlet extends HttpServlet { } if(scopeName.equalsIgnoreCase(checkScope)){ JSONObject el = new JSONObject(); - el.put("name", scope); - el.put("date", scopeById.getModifiedDate()); - el.put("size", ""); - el.put("type", "dir"); - el.put("createdBy", scopeById.getUserCreatedBy().getUserName()); - el.put("modifiedBy", scopeById.getUserModifiedBy().getUserName()); + el.put(NAME, scope); + el.put(DATE, scopeById.getModifiedDate()); + el.put(SIZE, ""); + el.put(TYPE, "dir"); + el.put(CREATED_BY, scopeById.getUserCreatedBy().getUserName()); + el.put(MODIFIED_BY, scopeById.getUserModifiedBy().getUserName()); resultList.add(el); } } @@ -725,24 +731,24 @@ public class PolicyManagerServlet extends HttpServlet { } if(scopeNameValue.equals(scopeNameCheck)){ JSONObject el = new JSONObject(); - el.put("name", policy.getPolicyName().substring(policy.getPolicyName().lastIndexOf(File.separator)+1)); - el.put("date", policy.getModifiedDate()); - el.put("version", policy.getActiveVersion()); - el.put("size", ""); - el.put("type", "file"); - el.put("createdBy", getUserName(policy.getCreatedBy())); - el.put("modifiedBy", getUserName(policy.getModifiedBy())); + el.put(NAME, policy.getPolicyName().substring(policy.getPolicyName().lastIndexOf(File.separator)+1)); + el.put(DATE, policy.getModifiedDate()); + el.put(VERSION, policy.getActiveVersion()); + el.put(SIZE, ""); + el.put(TYPE, "file"); + el.put(CREATED_BY, getUserName(policy.getCreatedBy())); + el.put(MODIFIED_BY, getUserName(policy.getModifiedBy())); resultList.add(el); } }else if(!scopes.isEmpty() && scopes.contains(scopeNameValue)){ JSONObject el = new JSONObject(); - el.put("name", policy.getPolicyName().substring(policy.getPolicyName().lastIndexOf(File.separator)+1)); - el.put("date", policy.getModifiedDate()); - el.put("version", policy.getActiveVersion()); - el.put("size", ""); - el.put("type", "file"); - el.put("createdBy", getUserName(policy.getCreatedBy())); - el.put("modifiedBy", getUserName(policy.getModifiedBy())); + el.put(NAME, policy.getPolicyName().substring(policy.getPolicyName().lastIndexOf(File.separator)+1)); + el.put(DATE, policy.getModifiedDate()); + el.put(VERSION, policy.getActiveVersion()); + el.put(SIZE, ""); + el.put(TYPE, "file"); + el.put(CREATED_BY, getUserName(policy.getCreatedBy())); + el.put(MODIFIED_BY, getUserName(policy.getModifiedBy())); resultList.add(el); } } @@ -1496,10 +1502,10 @@ public class PolicyManagerServlet extends HttpServlet { name = params.getString("path").replace("/", File.separator) + File.separator +params.getString("subScopename"); } }else{ - name = params.getString("name"); + name = params.getString(NAME); } }catch(Exception e){ - name = params.getString("name"); + name = params.getString(NAME); LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Exception Occured While Adding Scope"+e); } String validateName; diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyNotificationMail.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyNotificationMail.java index d2c5a3ba7..c791910ad 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyNotificationMail.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyNotificationMail.java @@ -3,6 +3,7 @@ * ONAP Policy Engine * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Modified Copyright (C) 2018 Samsung Electronics Co., Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyRestController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyRestController.java index b908c75d9..2a52335e5 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyRestController.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyRestController.java @@ -298,15 +298,12 @@ public class PolicyRestController extends RestrictedBaseController{ Object obj = mapper1.treeToValue(root, Object.class); String json = mapper1.writeValueAsString(obj); - Object content = new ByteArrayInputStream(json.getBytes()); - - if (content instanceof InputStream) { - // send current configuration - try (OutputStream os = connection.getOutputStream()) { - int count = IOUtils.copy((InputStream) content, os); - if (policyLogger.isDebugEnabled()) { - policyLogger.debug("copied to output, bytes=" + count); - } + // send current configuration + try(InputStream content = new ByteArrayInputStream(json.getBytes()); + OutputStream os = connection.getOutputStream()) { + int count = IOUtils.copy(content, os); + if (policyLogger.isDebugEnabled()) { + policyLogger.debug("copied to output, bytes=" + count); } } }else{ diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/PolicyController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/PolicyController.java index ae473f34f..2200eae99 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/PolicyController.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/PolicyController.java @@ -3,6 +3,7 @@ * ONAP Policy Engine * ================================================================================ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Modified Copyright (C) 2018 Samsung Electronics Co., Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -71,663 +72,659 @@ import com.fasterxml.jackson.databind.ObjectMapper; @Controller @RequestMapping("/") public class PolicyController extends RestrictedBaseController { - private static final Logger policyLogger = FlexLogger.getLogger(PolicyController.class); - - private static CommonClassDao commonClassDao; - // - // The PAP Engine - // - private static PAPPolicyEngine papEngine; - - private static String logTableLimit; - private static String systemAlertTableLimit; - protected static Map dropDownMap = new HashMap<>(); - public static Map getDropDownMap() { - return dropDownMap; - } - - public static void setDropDownMap(Map dropDownMap) { - PolicyController.dropDownMap = dropDownMap; - } - - public static String getDomain() { - return XACMLProperties.getProperty(XACMLRestProperties.PROP_ADMIN_DOMAIN, "urn"); - } - - private static final Object mapAccess = new Object(); - private static Map> mapDatatype2Function = null; - private static Map mapID2Function = null; - - //Constant variables used across Policy-sdk - private static final String policyData = "policyData"; - private static final String characterEncoding = "UTF-8"; - private static final String contentType = "application/json"; - private static final String file = "file"; - - //Smtp Java Mail Properties - private static String smtpHost = null; - private static String smtpPort = null; - private static String smtpUsername = null; - private static String smtpPassword = null; - private static String smtpApplicationName = null; - private static String smtpEmailExtension = null; - //log db Properties - private static String logdbDriver = null; - private static String logdbUrl = null; - private static String logdbUserName = null; - private static String logdbPassword = null; - private static String logdbDialect = null; - //Xacml db properties - private static String xacmldbUrl = null; - private static String xacmldbUserName = null; - private static String xacmldbPassword = null; - - //AutoPush feature. - private static String autoPushAvailable; - private static String autoPushDSClosedLoop; - private static String autoPushDSFirewall; - private static String autoPushDSMicroservice; - private static String autoPushPDPGroup; - - //papURL - private static String papUrl; - - //MicroService Model Properties - private static String msOnapName; - private static String msPolicyName; - - //WebApp directories - private static String configHome; - private static String actionHome; - - //File upload size - private static long fileSizeLimit; - - private static boolean jUnit = false; - - - public static boolean isjUnit() { - return jUnit; - } - - public static void setjUnit(boolean jUnit) { - PolicyController.jUnit = jUnit; - } - - @Autowired - private PolicyController(CommonClassDao commonClassDao){ - PolicyController.commonClassDao = commonClassDao; - } - - public PolicyController() { - // Empty constructor - } - - @PostConstruct - public void init(){ - Properties prop = new Properties(); - InputStream input = null; - try { - if(jUnit){ - File file = new File(new File(".").getCanonicalPath() + File.separator + "src"+ File.separator + "test" + File.separator + "resources" + File.separator + "JSONConfig.json"); - input = new FileInputStream(file); - }else{ - input = new FileInputStream("xacml.admin.properties"); - } - // load a properties file - prop.load(input); - //file upload size limit property - setFileSizeLimit(prop.getProperty("file.size.limit")); - //pap url - setPapUrl(prop.getProperty("xacml.rest.pap.url")); - // get the property values - setSmtpHost(prop.getProperty("onap.smtp.host")); - setSmtpPort(prop.getProperty("onap.smtp.port")); - setSmtpUsername(prop.getProperty("onap.smtp.userName")); - setSmtpPassword(prop.getProperty("onap.smtp.password")); - setSmtpApplicationName(prop.getProperty("onap.application.name")); - setSmtpEmailExtension(prop.getProperty("onap.smtp.emailExtension")); - //Log Database Properties - setLogdbDriver(prop.getProperty("xacml.log.db.driver")); - setLogdbUrl(prop.getProperty("xacml.log.db.url")); - setLogdbUserName(prop.getProperty("xacml.log.db.user")); - setLogdbPassword(prop.getProperty("xacml.log.db.password")); - setLogdbDialect(prop.getProperty("onap.dialect")); - //Xacml Database Properties - setXacmldbUrl(prop.getProperty("javax.persistence.jdbc.url")); - setXacmldbUserName(prop.getProperty("javax.persistence.jdbc.user")); - setXacmldbPassword(prop.getProperty("javax.persistence.jdbc.password")); - //AutoPuh - setAutoPushAvailable(prop.getProperty("xacml.automatic.push")); - setAutoPushDSClosedLoop(prop.getProperty("xacml.autopush.closedloop")); - setAutoPushDSFirewall(prop.getProperty("xacml.autopush.firewall")); - setAutoPushDSMicroservice(prop.getProperty("xacml.autopush.microservice")); - setAutoPushPDPGroup(prop.getProperty("xacml.autopush.pdpGroup")); - //Micro Service Properties - setMsOnapName(prop.getProperty("xacml.policy.msOnapName")); - if(getMsOnapName() == null){ - setMsOnapName(prop.getProperty("xacml.policy.msEcompName")); - } - policyLogger.info("getMsOnapName => " + getMsOnapName()); - setMsPolicyName(prop.getProperty("xacml.policy.msPolicyName")); - policyLogger.info("setMsPolicyName => " + getMsPolicyName()); - //WebApp directories - setConfigHome(prop.getProperty("xacml.rest.config.webapps") + "Config"); - setActionHome(prop.getProperty("xacml.rest.config.webapps") + "Action"); - //Get the Property Values for Dashboard tab Limit - try{ - setLogTableLimit(prop.getProperty("xacml.onap.dashboard.logTableLimit")); - setSystemAlertTableLimit(prop.getProperty("xacml.onap.dashboard.systemAlertTableLimit")); - }catch(Exception e){ - policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Dashboard tab Property fields are missing" +e); - setLogTableLimit("5000"); - setSystemAlertTableLimit("2000"); - } - System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME, "xacml.admin.properties"); - } catch (IOException ex) { - policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Exception Occured while reading the Smtp properties from xacml.admin.properties file" +ex); - } finally { - if (input != null) { - try { - input.close(); - } catch (IOException e) { - policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Exception Occured while Closing the xacml.admin.properties file" +e); - } - } - } - - //Initialize the FunctionDefinition table at Server Start up - Map> functionMap = getFunctionDatatypeMap(); - for ( Entry> entry : functionMap.entrySet()) { - List functionDefinations = entry.getValue(); - for (FunctionDefinition functionDef : functionDefinations) { - dropDownMap.put(functionDef.getShortname(),functionDef.getXacmlid()); - } - } - - } - - public static Map> getFunctionDatatypeMap() { - synchronized(mapAccess) { - if (mapDatatype2Function == null) { - buildFunctionMaps(); - } - } - return mapDatatype2Function; - } - - public static Map getFunctionIDMap() { - synchronized(mapAccess) { - if (mapID2Function == null) { - buildFunctionMaps(); - } - } - return mapID2Function; - } - - private static void buildFunctionMaps() { - mapDatatype2Function = new HashMap<>(); - mapID2Function = new HashMap<>(); - List functiondefinitions = commonClassDao.getData(FunctionDefinition.class); - for (int i = 0; i < functiondefinitions.size(); i ++) { - FunctionDefinition value = (FunctionDefinition) functiondefinitions.get(i); - mapID2Function.put(value.getXacmlid(), value); - if (!mapDatatype2Function.containsKey(value.getDatatypeBean())) { - mapDatatype2Function.put(value.getDatatypeBean(), new ArrayList()); - } - mapDatatype2Function.get(value.getDatatypeBean()).add(value); - } - } - - @RequestMapping(value={"/get_FunctionDefinitionDataByName"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getFunctionDefinitionData(HttpServletRequest request, HttpServletResponse response){ - try{ - Map model = new HashMap<>(); - ObjectMapper mapper = new ObjectMapper(); - model.put("functionDefinitionDatas", mapper.writeValueAsString(commonClassDao.getDataByColumn(FunctionDefinition.class, "shortname"))); - JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model)); - JSONObject j = new JSONObject(msg); - response.getWriter().write(j.toString()); - } - catch (Exception e){ - policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE +"Error while retriving the Function Definition data"+e); - } - } - - public PolicyEntity getPolicyEntityData(String scope, String policyName){ - String key = scope + ":" + policyName; - List data = commonClassDao.getDataById(PolicyEntity.class, "scope:policyName", key); - return (PolicyEntity) data.get(0); - } - - public static Map getUserRoles(String userId) { - Map scopes = new HashMap<>(); - List roles = commonClassDao.getDataById(Roles.class, "loginId", userId); - if (roles != null && !roles.isEmpty()) { - for (Object role : roles) { - scopes.put(((Roles) role).getScope(), (Roles) role); - } - } - return scopes; - } - - public List getRolesOfUser(String userId) { - List rolesList = new ArrayList<>(); - List roles = commonClassDao.getDataById(Roles.class, "loginId", userId); - for (Object role: roles) { - rolesList.add(((Roles) role).getRole()); - } - return rolesList; - } - - public List getRoles(String userId) { - return commonClassDao.getDataById(Roles.class, "loginId", userId); - } - - //Get List of User Roles - @RequestMapping(value={"/get_UserRolesData"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) - public void getUserRolesEntityData(HttpServletRequest request, HttpServletResponse response){ - try{ - String userId = UserUtils.getUserSession(request).getOrgUserId(); - Map model = new HashMap<>(); - ObjectMapper mapper = new ObjectMapper(); - model.put("userRolesDatas", mapper.writeValueAsString(getRolesOfUser(userId))); - JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model)); - JSONObject j = new JSONObject(msg); - response.getWriter().write(j.toString()); - } - catch (Exception e){ - policyLogger.error("Exception Occured"+e); - } - } - - //Policy tabs Model and View + private static final Logger policyLogger = FlexLogger.getLogger(PolicyController.class); + + private static CommonClassDao commonClassDao; + // + // The PAP Engine + // + private static PAPPolicyEngine papEngine; + + private static String logTableLimit; + private static String systemAlertTableLimit; + protected static Map dropDownMap = new HashMap<>(); + public static Map getDropDownMap() { + return dropDownMap; + } + + public static void setDropDownMap(Map dropDownMap) { + PolicyController.dropDownMap = dropDownMap; + } + + public static String getDomain() { + return XACMLProperties.getProperty(XACMLRestProperties.PROP_ADMIN_DOMAIN, "urn"); + } + + private static final Object mapAccess = new Object(); + private static Map> mapDatatype2Function = null; + private static Map mapID2Function = null; + + //Constant variables used across Policy-sdk + private static final String policyData = "policyData"; + private static final String characterEncoding = "UTF-8"; + private static final String contentType = "application/json"; + private static final String file = "file"; + + //Smtp Java Mail Properties + private static String smtpHost = null; + private static String smtpPort = null; + private static String smtpUsername = null; + private static String smtpPassword = null; + private static String smtpApplicationName = null; + private static String smtpEmailExtension = null; + //log db Properties + private static String logdbDriver = null; + private static String logdbUrl = null; + private static String logdbUserName = null; + private static String logdbPassword = null; + private static String logdbDialect = null; + //Xacml db properties + private static String xacmldbUrl = null; + private static String xacmldbUserName = null; + private static String xacmldbPassword = null; + + //AutoPush feature. + private static String autoPushAvailable; + private static String autoPushDSClosedLoop; + private static String autoPushDSFirewall; + private static String autoPushDSMicroservice; + private static String autoPushPDPGroup; + + //papURL + private static String papUrl; + + //MicroService Model Properties + private static String msOnapName; + private static String msPolicyName; + + //WebApp directories + private static String configHome; + private static String actionHome; + + //File upload size + private static long fileSizeLimit; + + private static boolean jUnit = false; + + + public static boolean isjUnit() { + return jUnit; + } + + public static void setjUnit(boolean jUnit) { + PolicyController.jUnit = jUnit; + } + + @Autowired + private PolicyController(CommonClassDao commonClassDao){ + PolicyController.commonClassDao = commonClassDao; + } + + public PolicyController() { + // Empty constructor + } + + @PostConstruct + public void init(){ + Properties prop = new Properties(); + + try { + String fileName; + if(jUnit){ + fileName = new File(".").getCanonicalPath() + File.separator + "src"+ File.separator + "test" + File.separator + "resources" + File.separator + "JSONConfig.json"; + } else { + fileName = "xacml.admin.properties"; + } + + try(InputStream input = new FileInputStream(fileName)) { + // load a properties file + prop.load(input); + } + + //file upload size limit property + setFileSizeLimit(prop.getProperty("file.size.limit")); + //pap url + setPapUrl(prop.getProperty("xacml.rest.pap.url")); + // get the property values + setSmtpHost(prop.getProperty("onap.smtp.host")); + setSmtpPort(prop.getProperty("onap.smtp.port")); + setSmtpUsername(prop.getProperty("onap.smtp.userName")); + setSmtpPassword(prop.getProperty("onap.smtp.password")); + setSmtpApplicationName(prop.getProperty("onap.application.name")); + setSmtpEmailExtension(prop.getProperty("onap.smtp.emailExtension")); + //Log Database Properties + setLogdbDriver(prop.getProperty("xacml.log.db.driver")); + setLogdbUrl(prop.getProperty("xacml.log.db.url")); + setLogdbUserName(prop.getProperty("xacml.log.db.user")); + setLogdbPassword(prop.getProperty("xacml.log.db.password")); + setLogdbDialect(prop.getProperty("onap.dialect")); + //Xacml Database Properties + setXacmldbUrl(prop.getProperty("javax.persistence.jdbc.url")); + setXacmldbUserName(prop.getProperty("javax.persistence.jdbc.user")); + setXacmldbPassword(prop.getProperty("javax.persistence.jdbc.password")); + //AutoPuh + setAutoPushAvailable(prop.getProperty("xacml.automatic.push")); + setAutoPushDSClosedLoop(prop.getProperty("xacml.autopush.closedloop")); + setAutoPushDSFirewall(prop.getProperty("xacml.autopush.firewall")); + setAutoPushDSMicroservice(prop.getProperty("xacml.autopush.microservice")); + setAutoPushPDPGroup(prop.getProperty("xacml.autopush.pdpGroup")); + //Micro Service Properties + setMsOnapName(prop.getProperty("xacml.policy.msOnapName")); + if(getMsOnapName() == null){ + setMsOnapName(prop.getProperty("xacml.policy.msEcompName")); + } + policyLogger.info("getMsOnapName => " + getMsOnapName()); + setMsPolicyName(prop.getProperty("xacml.policy.msPolicyName")); + policyLogger.info("setMsPolicyName => " + getMsPolicyName()); + //WebApp directories + setConfigHome(prop.getProperty("xacml.rest.config.webapps") + "Config"); + setActionHome(prop.getProperty("xacml.rest.config.webapps") + "Action"); + //Get the Property Values for Dashboard tab Limit + try{ + setLogTableLimit(prop.getProperty("xacml.onap.dashboard.logTableLimit")); + setSystemAlertTableLimit(prop.getProperty("xacml.onap.dashboard.systemAlertTableLimit")); + }catch(Exception e){ + policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Dashboard tab Property fields are missing" +e); + setLogTableLimit("5000"); + setSystemAlertTableLimit("2000"); + } + System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME, "xacml.admin.properties"); + } catch (IOException ex) { + policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Exception Occured while reading the Smtp properties from xacml.admin.properties file" +ex); + } + + //Initialize the FunctionDefinition table at Server Start up + Map> functionMap = getFunctionDatatypeMap(); + for ( Entry> entry : functionMap.entrySet()) { + List functionDefinations = entry.getValue(); + for (FunctionDefinition functionDef : functionDefinations) { + dropDownMap.put(functionDef.getShortname(),functionDef.getXacmlid()); + } + } + + } + + public static Map> getFunctionDatatypeMap() { + synchronized(mapAccess) { + if (mapDatatype2Function == null) { + buildFunctionMaps(); + } + } + return mapDatatype2Function; + } + + public static Map getFunctionIDMap() { + synchronized(mapAccess) { + if (mapID2Function == null) { + buildFunctionMaps(); + } + } + return mapID2Function; + } + + private static void buildFunctionMaps() { + mapDatatype2Function = new HashMap<>(); + mapID2Function = new HashMap<>(); + List functiondefinitions = commonClassDao.getData(FunctionDefinition.class); + for (int i = 0; i < functiondefinitions.size(); i ++) { + FunctionDefinition value = (FunctionDefinition) functiondefinitions.get(i); + mapID2Function.put(value.getXacmlid(), value); + if (!mapDatatype2Function.containsKey(value.getDatatypeBean())) { + mapDatatype2Function.put(value.getDatatypeBean(), new ArrayList()); + } + mapDatatype2Function.get(value.getDatatypeBean()).add(value); + } + } + + @RequestMapping(value={"/get_FunctionDefinitionDataByName"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getFunctionDefinitionData(HttpServletRequest request, HttpServletResponse response){ + try{ + Map model = new HashMap<>(); + ObjectMapper mapper = new ObjectMapper(); + model.put("functionDefinitionDatas", mapper.writeValueAsString(commonClassDao.getDataByColumn(FunctionDefinition.class, "shortname"))); + JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model)); + JSONObject j = new JSONObject(msg); + response.getWriter().write(j.toString()); + } + catch (Exception e){ + policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE +"Error while retriving the Function Definition data"+e); + } + } + + public PolicyEntity getPolicyEntityData(String scope, String policyName){ + String key = scope + ":" + policyName; + List data = commonClassDao.getDataById(PolicyEntity.class, "scope:policyName", key); + return (PolicyEntity) data.get(0); + } + + public static Map getUserRoles(String userId) { + Map scopes = new HashMap<>(); + List roles = commonClassDao.getDataById(Roles.class, "loginId", userId); + if (roles != null && !roles.isEmpty()) { + for (Object role : roles) { + scopes.put(((Roles) role).getScope(), (Roles) role); + } + } + return scopes; + } + + public List getRolesOfUser(String userId) { + List rolesList = new ArrayList<>(); + List roles = commonClassDao.getDataById(Roles.class, "loginId", userId); + for (Object role: roles) { + rolesList.add(((Roles) role).getRole()); + } + return rolesList; + } + + public List getRoles(String userId) { + return commonClassDao.getDataById(Roles.class, "loginId", userId); + } + + //Get List of User Roles + @RequestMapping(value={"/get_UserRolesData"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE) + public void getUserRolesEntityData(HttpServletRequest request, HttpServletResponse response){ + try{ + String userId = UserUtils.getUserSession(request).getOrgUserId(); + Map model = new HashMap<>(); + ObjectMapper mapper = new ObjectMapper(); + model.put("userRolesDatas", mapper.writeValueAsString(getRolesOfUser(userId))); + JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model)); + JSONObject j = new JSONObject(msg); + response.getWriter().write(j.toString()); + } + catch (Exception e){ + policyLogger.error("Exception Occured"+e); + } + } + + //Policy tabs Model and View @RequestMapping(value= {"/policy", "/policy/Editor" } , method = RequestMethod.GET) - public ModelAndView view(HttpServletRequest request){ - String myRequestURL = request.getRequestURL().toString(); - try { - // - // Set the URL for the RESTful PAP Engine - // - setPapEngine((PAPPolicyEngine) new RESTfulPAPEngine(myRequestURL)); - new PDPGroupContainer((PAPPolicyEngine) new RESTfulPAPEngine(myRequestURL)); - } catch (Exception e) { - policyLogger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR+"Exception Occured while loading PAP"+e); - } - Map model = new HashMap<>(); - return new ModelAndView("policy_Editor","model", model); - } - - public PAPPolicyEngine getPapEngine() { - return papEngine; - } - - public static void setPapEngine(PAPPolicyEngine papEngine) { - PolicyController.papEngine = papEngine; - } - - public String getUserName(String createdBy) { - String loginId = createdBy; - List data = commonClassDao.getDataById(UserInfo.class, "loginId", loginId); - return data.get(0).toString(); - } - - public static boolean getActivePolicy(String query) { - if(!commonClassDao.getDataByQuery(query, new SimpleBindings()).isEmpty()){ - return true; - }else{ - return false; - } - } - - public void executeQuery(String query) { - commonClassDao.updateQuery(query); - } - - public void saveData(Object cloneEntity) { - commonClassDao.save(cloneEntity); - } - - public void updateData(Object entity) { - commonClassDao.update(entity); - } - - public void deleteData(Object entity) { - commonClassDao.delete(entity); - } - - public List getData(@SuppressWarnings("rawtypes") Class className){ - return commonClassDao.getData(className); - } - - public PolicyVersion getPolicyEntityFromPolicyVersion(String query){ - return (PolicyVersion) commonClassDao.getEntityItem(PolicyVersion.class, "policyName", query); - } - - public List getDataByQuery(String query, SimpleBindings params){ - return commonClassDao.getDataByQuery(query, params); - } - - - @SuppressWarnings("rawtypes") - public Object getEntityItem(Class className, String columname, String key){ - return commonClassDao.getEntityItem(className, columname, key); - } - - - public void watchPolicyFunction(PolicyVersion entity, String policyName, String mode){ - PolicyNotificationMail email = new PolicyNotificationMail(); - try { - email.sendMail(entity, policyName, mode, commonClassDao); - } catch (MessagingException e) { - policyLogger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Excepton Occured while Renaming/Deleting a Policy or Scope" + e); - } - } - - //Switch Version - public JSONObject switchVersionPolicyContent(String policyName) { - String dbCheckName = policyName.replace("/", "."); - if(dbCheckName.contains("Config_")){ - dbCheckName = dbCheckName.replace(".Config_", ":Config_"); - }else if(dbCheckName.contains("Action_")){ - dbCheckName = dbCheckName.replace(".Action_", ":Action_"); - }else if(dbCheckName.contains("Decision_")){ - dbCheckName = dbCheckName.replace(".Decision_", ":Decision_"); - } - String[] splitDBCheckName = dbCheckName.split(":"); - String query = "FROM PolicyEntity where policyName like :splitDBCheckName1 and scope = :splitDBCheckName0"; - SimpleBindings params = new SimpleBindings(); - params.put("splitDBCheckName1", splitDBCheckName[1] + "%"); - params.put("splitDBCheckName0", splitDBCheckName[0]); - List policyEntity = commonClassDao.getDataByQuery(query, params); - List av = new ArrayList<>(); - for(Object entity : policyEntity){ - PolicyEntity pEntity = (PolicyEntity) entity; - String removeExtension = pEntity.getPolicyName().replace(".xml", ""); - String version = removeExtension.substring(removeExtension.lastIndexOf('.')+1); - av.add(version); - } - if(policyName.contains("/")){ - policyName = policyName.replace("/", File.separator); - } - PolicyVersion entity = (PolicyVersion) commonClassDao.getEntityItem(PolicyVersion.class, "policyName", policyName); - JSONObject el = new JSONObject(); - el.put("activeVersion", entity.getActiveVersion()); - el.put("availableVersions", av); - el.put("highestVersion", entity.getHigherVersion()); - return el; - } - - public static String getLogTableLimit() { - return logTableLimit; - } - - public static void setLogTableLimit(String logTableLimit) { - PolicyController.logTableLimit = logTableLimit; - } - - public static String getSystemAlertTableLimit() { - return systemAlertTableLimit; - } - - public static void setSystemAlertTableLimit(String systemAlertTableLimit) { - PolicyController.systemAlertTableLimit = systemAlertTableLimit; - } - - public static CommonClassDao getCommonClassDao() { - return commonClassDao; - } - - public static void setCommonClassDao(CommonClassDao commonClassDao) { - PolicyController.commonClassDao = commonClassDao; - } - - public static Map> getMapDatatype2Function() { - return mapDatatype2Function; - } - - public static void setMapDatatype2Function(Map> mapDatatype2Function) { - PolicyController.mapDatatype2Function = mapDatatype2Function; - } - - public static Map getMapID2Function() { - return mapID2Function; - } - - public static void setMapID2Function(Map mapID2Function) { - PolicyController.mapID2Function = mapID2Function; - } - - public static String getSmtpHost() { - return smtpHost; - } - - public static void setSmtpHost(String smtpHost) { - PolicyController.smtpHost = smtpHost; - } - - public static String getSmtpPort() { - return smtpPort; - } - - public static void setSmtpPort(String smtpPort) { - PolicyController.smtpPort = smtpPort; - } - - public static String getSmtpUsername() { - return smtpUsername; - } - - public static void setSmtpUsername(String smtpUsername) { - PolicyController.smtpUsername = smtpUsername; - } - - public static String getSmtpPassword() { - return smtpPassword; - } - - public static void setSmtpPassword(String smtpPassword) { - PolicyController.smtpPassword = smtpPassword; - } - - public static String getSmtpApplicationName() { - return smtpApplicationName; - } - - public static void setSmtpApplicationName(String smtpApplicationName) { - PolicyController.smtpApplicationName = smtpApplicationName; - } - - public static String getSmtpEmailExtension() { - return smtpEmailExtension; - } - - public static void setSmtpEmailExtension(String smtpEmailExtension) { - PolicyController.smtpEmailExtension = smtpEmailExtension; - } - - public static String getLogdbDriver() { - return logdbDriver; - } - - public static void setLogdbDriver(String logdbDriver) { - PolicyController.logdbDriver = logdbDriver; - } + public ModelAndView view(HttpServletRequest request){ + String myRequestURL = request.getRequestURL().toString(); + try { + // + // Set the URL for the RESTful PAP Engine + // + setPapEngine((PAPPolicyEngine) new RESTfulPAPEngine(myRequestURL)); + new PDPGroupContainer((PAPPolicyEngine) new RESTfulPAPEngine(myRequestURL)); + } catch (Exception e) { + policyLogger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR+"Exception Occured while loading PAP"+e); + } + Map model = new HashMap<>(); + return new ModelAndView("policy_Editor","model", model); + } + + public PAPPolicyEngine getPapEngine() { + return papEngine; + } + + public static void setPapEngine(PAPPolicyEngine papEngine) { + PolicyController.papEngine = papEngine; + } + + public String getUserName(String createdBy) { + String loginId = createdBy; + List data = commonClassDao.getDataById(UserInfo.class, "loginId", loginId); + return data.get(0).toString(); + } + + public static boolean getActivePolicy(String query) { + if(!commonClassDao.getDataByQuery(query, new SimpleBindings()).isEmpty()){ + return true; + }else{ + return false; + } + } + + public void executeQuery(String query) { + commonClassDao.updateQuery(query); + } + + public void saveData(Object cloneEntity) { + commonClassDao.save(cloneEntity); + } + + public void updateData(Object entity) { + commonClassDao.update(entity); + } + + public void deleteData(Object entity) { + commonClassDao.delete(entity); + } + + public List getData(@SuppressWarnings("rawtypes") Class className){ + return commonClassDao.getData(className); + } + + public PolicyVersion getPolicyEntityFromPolicyVersion(String query){ + return (PolicyVersion) commonClassDao.getEntityItem(PolicyVersion.class, "policyName", query); + } + + public List getDataByQuery(String query, SimpleBindings params){ + return commonClassDao.getDataByQuery(query, params); + } + + + @SuppressWarnings("rawtypes") + public Object getEntityItem(Class className, String columname, String key){ + return commonClassDao.getEntityItem(className, columname, key); + } + + + public void watchPolicyFunction(PolicyVersion entity, String policyName, String mode){ + PolicyNotificationMail email = new PolicyNotificationMail(); + try { + email.sendMail(entity, policyName, mode, commonClassDao); + } catch (MessagingException e) { + policyLogger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Excepton Occured while Renaming/Deleting a Policy or Scope" + e); + } + } + + //Switch Version + public JSONObject switchVersionPolicyContent(String policyName) { + String dbCheckName = policyName.replace("/", "."); + if(dbCheckName.contains("Config_")){ + dbCheckName = dbCheckName.replace(".Config_", ":Config_"); + }else if(dbCheckName.contains("Action_")){ + dbCheckName = dbCheckName.replace(".Action_", ":Action_"); + }else if(dbCheckName.contains("Decision_")){ + dbCheckName = dbCheckName.replace(".Decision_", ":Decision_"); + } + String[] splitDBCheckName = dbCheckName.split(":"); + String query = "FROM PolicyEntity where policyName like :splitDBCheckName1 and scope = :splitDBCheckName0"; + SimpleBindings params = new SimpleBindings(); + params.put("splitDBCheckName1", splitDBCheckName[1] + "%"); + params.put("splitDBCheckName0", splitDBCheckName[0]); + List policyEntity = commonClassDao.getDataByQuery(query, params); + List av = new ArrayList<>(); + for(Object entity : policyEntity){ + PolicyEntity pEntity = (PolicyEntity) entity; + String removeExtension = pEntity.getPolicyName().replace(".xml", ""); + String version = removeExtension.substring(removeExtension.lastIndexOf('.')+1); + av.add(version); + } + if(policyName.contains("/")){ + policyName = policyName.replace("/", File.separator); + } + PolicyVersion entity = (PolicyVersion) commonClassDao.getEntityItem(PolicyVersion.class, "policyName", policyName); + JSONObject el = new JSONObject(); + el.put("activeVersion", entity.getActiveVersion()); + el.put("availableVersions", av); + el.put("highestVersion", entity.getHigherVersion()); + return el; + } + + public static String getLogTableLimit() { + return logTableLimit; + } + + public static void setLogTableLimit(String logTableLimit) { + PolicyController.logTableLimit = logTableLimit; + } + + public static String getSystemAlertTableLimit() { + return systemAlertTableLimit; + } + + public static void setSystemAlertTableLimit(String systemAlertTableLimit) { + PolicyController.systemAlertTableLimit = systemAlertTableLimit; + } + + public static CommonClassDao getCommonClassDao() { + return commonClassDao; + } + + public static void setCommonClassDao(CommonClassDao commonClassDao) { + PolicyController.commonClassDao = commonClassDao; + } + + public static Map> getMapDatatype2Function() { + return mapDatatype2Function; + } + + public static void setMapDatatype2Function(Map> mapDatatype2Function) { + PolicyController.mapDatatype2Function = mapDatatype2Function; + } + + public static Map getMapID2Function() { + return mapID2Function; + } + + public static void setMapID2Function(Map mapID2Function) { + PolicyController.mapID2Function = mapID2Function; + } + + public static String getSmtpHost() { + return smtpHost; + } + + public static void setSmtpHost(String smtpHost) { + PolicyController.smtpHost = smtpHost; + } + + public static String getSmtpPort() { + return smtpPort; + } + + public static void setSmtpPort(String smtpPort) { + PolicyController.smtpPort = smtpPort; + } + + public static String getSmtpUsername() { + return smtpUsername; + } + + public static void setSmtpUsername(String smtpUsername) { + PolicyController.smtpUsername = smtpUsername; + } + + public static String getSmtpPassword() { + return smtpPassword; + } + + public static void setSmtpPassword(String smtpPassword) { + PolicyController.smtpPassword = smtpPassword; + } + + public static String getSmtpApplicationName() { + return smtpApplicationName; + } + + public static void setSmtpApplicationName(String smtpApplicationName) { + PolicyController.smtpApplicationName = smtpApplicationName; + } + + public static String getSmtpEmailExtension() { + return smtpEmailExtension; + } + + public static void setSmtpEmailExtension(String smtpEmailExtension) { + PolicyController.smtpEmailExtension = smtpEmailExtension; + } + + public static String getLogdbDriver() { + return logdbDriver; + } + + public static void setLogdbDriver(String logdbDriver) { + PolicyController.logdbDriver = logdbDriver; + } - public static String getLogdbUrl() { - return logdbUrl; - } + public static String getLogdbUrl() { + return logdbUrl; + } - public static void setLogdbUrl(String logdbUrl) { - PolicyController.logdbUrl = logdbUrl; - } + public static void setLogdbUrl(String logdbUrl) { + PolicyController.logdbUrl = logdbUrl; + } - public static String getLogdbUserName() { - return logdbUserName; - } + public static String getLogdbUserName() { + return logdbUserName; + } - public static void setLogdbUserName(String logdbUserName) { - PolicyController.logdbUserName = logdbUserName; - } + public static void setLogdbUserName(String logdbUserName) { + PolicyController.logdbUserName = logdbUserName; + } - public static String getLogdbPassword() { - return logdbPassword; - } + public static String getLogdbPassword() { + return logdbPassword; + } - public static void setLogdbPassword(String logdbPassword) { - PolicyController.logdbPassword = logdbPassword; - } + public static void setLogdbPassword(String logdbPassword) { + PolicyController.logdbPassword = logdbPassword; + } - public static String getLogdbDialect() { - return logdbDialect; - } + public static String getLogdbDialect() { + return logdbDialect; + } - public static void setLogdbDialect(String logdbDialect) { - PolicyController.logdbDialect = logdbDialect; - } + public static void setLogdbDialect(String logdbDialect) { + PolicyController.logdbDialect = logdbDialect; + } - public static String getXacmldbUrl() { - return xacmldbUrl; - } + public static String getXacmldbUrl() { + return xacmldbUrl; + } - public static void setXacmldbUrl(String xacmldbUrl) { - PolicyController.xacmldbUrl = xacmldbUrl; - } + public static void setXacmldbUrl(String xacmldbUrl) { + PolicyController.xacmldbUrl = xacmldbUrl; + } - public static String getXacmldbUserName() { - return xacmldbUserName; - } + public static String getXacmldbUserName() { + return xacmldbUserName; + } - public static void setXacmldbUserName(String xacmldbUserName) { - PolicyController.xacmldbUserName = xacmldbUserName; - } + public static void setXacmldbUserName(String xacmldbUserName) { + PolicyController.xacmldbUserName = xacmldbUserName; + } - public static String getXacmldbPassword() { - return xacmldbPassword; - } + public static String getXacmldbPassword() { + return xacmldbPassword; + } - public static void setXacmldbPassword(String xacmldbPassword) { - PolicyController.xacmldbPassword = xacmldbPassword; - } + public static void setXacmldbPassword(String xacmldbPassword) { + PolicyController.xacmldbPassword = xacmldbPassword; + } - public static String getAutoPushAvailable() { - return autoPushAvailable; - } - - public static void setAutoPushAvailable(String autoPushAvailable) { - PolicyController.autoPushAvailable = autoPushAvailable; - } - - public static String getAutoPushDSClosedLoop() { - return autoPushDSClosedLoop; - } - - public static void setAutoPushDSClosedLoop(String autoPushDSClosedLoop) { - PolicyController.autoPushDSClosedLoop = autoPushDSClosedLoop; - } - - public static String getAutoPushDSFirewall() { - return autoPushDSFirewall; - } - - public static void setAutoPushDSFirewall(String autoPushDSFirewall) { - PolicyController.autoPushDSFirewall = autoPushDSFirewall; - } - - public static String getAutoPushDSMicroservice() { - return autoPushDSMicroservice; - } - - public static void setAutoPushDSMicroservice(String autoPushDSMicroservice) { - PolicyController.autoPushDSMicroservice = autoPushDSMicroservice; - } - - public static String getAutoPushPDPGroup() { - return autoPushPDPGroup; - } - - public static void setAutoPushPDPGroup(String autoPushPDPGroup) { - PolicyController.autoPushPDPGroup = autoPushPDPGroup; - } - - public static String getPapUrl() { - return papUrl; - } - - public static void setPapUrl(String papUrl) { - PolicyController.papUrl = papUrl; - } - - public static String getMsOnapName() { - return msOnapName; - } - - public static void setMsOnapName(String msOnapName) { - PolicyController.msOnapName = msOnapName; - } - - public static String getMsPolicyName() { - return msPolicyName; - } - - public static void setMsPolicyName(String msPolicyName) { - PolicyController.msPolicyName = msPolicyName; - } - - public static String getConfigHome() { - return configHome; - } - - public static void setConfigHome(String configHome) { - PolicyController.configHome = configHome; - } - - public static String getActionHome() { - return actionHome; - } - - public static void setActionHome(String actionHome) { - PolicyController.actionHome = actionHome; - } - - public static Object getMapaccess() { - return mapAccess; - } - - public static String getPolicydata() { - return policyData; - } - - public static String getCharacterencoding() { - return characterEncoding; - } - - public static String getContenttype() { - return contentType; - } - - public static String getFile() { - return file; - } - - public static void setFileSizeLimit(String uploadSize) { - //Default size limit is 30MB - if (uploadSize == null || uploadSize.isEmpty()) { - fileSizeLimit = 30000000; - } - else { - fileSizeLimit = Long.parseLong(uploadSize); - } - } - - public static long getFileSizeLimit() { - return fileSizeLimit; - } - public String convertDate(String dateTTL) { - String formateDate = null; - if(dateTTL.contains("-")){ - formateDate = dateTTL.replace("-", "/"); - } - return formateDate; - } + public static String getAutoPushAvailable() { + return autoPushAvailable; + } + + public static void setAutoPushAvailable(String autoPushAvailable) { + PolicyController.autoPushAvailable = autoPushAvailable; + } + + public static String getAutoPushDSClosedLoop() { + return autoPushDSClosedLoop; + } + + public static void setAutoPushDSClosedLoop(String autoPushDSClosedLoop) { + PolicyController.autoPushDSClosedLoop = autoPushDSClosedLoop; + } + + public static String getAutoPushDSFirewall() { + return autoPushDSFirewall; + } + + public static void setAutoPushDSFirewall(String autoPushDSFirewall) { + PolicyController.autoPushDSFirewall = autoPushDSFirewall; + } + + public static String getAutoPushDSMicroservice() { + return autoPushDSMicroservice; + } + + public static void setAutoPushDSMicroservice(String autoPushDSMicroservice) { + PolicyController.autoPushDSMicroservice = autoPushDSMicroservice; + } + + public static String getAutoPushPDPGroup() { + return autoPushPDPGroup; + } + + public static void setAutoPushPDPGroup(String autoPushPDPGroup) { + PolicyController.autoPushPDPGroup = autoPushPDPGroup; + } + + public static String getPapUrl() { + return papUrl; + } + + public static void setPapUrl(String papUrl) { + PolicyController.papUrl = papUrl; + } + + public static String getMsOnapName() { + return msOnapName; + } + + public static void setMsOnapName(String msOnapName) { + PolicyController.msOnapName = msOnapName; + } + + public static String getMsPolicyName() { + return msPolicyName; + } + + public static void setMsPolicyName(String msPolicyName) { + PolicyController.msPolicyName = msPolicyName; + } + + public static String getConfigHome() { + return configHome; + } + + public static void setConfigHome(String configHome) { + PolicyController.configHome = configHome; + } + + public static String getActionHome() { + return actionHome; + } + + public static void setActionHome(String actionHome) { + PolicyController.actionHome = actionHome; + } + + public static Object getMapaccess() { + return mapAccess; + } + + public static String getPolicydata() { + return policyData; + } + + public static String getCharacterencoding() { + return characterEncoding; + } + + public static String getContenttype() { + return contentType; + } + + public static String getFile() { + return file; + } + + public static void setFileSizeLimit(String uploadSize) { + //Default size limit is 30MB + if (uploadSize == null || uploadSize.isEmpty()) { + fileSizeLimit = 30000000; + } + else { + fileSizeLimit = Long.parseLong(uploadSize); + } + } + + public static long getFileSizeLimit() { + return fileSizeLimit; + } + public String convertDate(String dateTTL) { + String formateDate = null; + if(dateTTL.contains("-")){ + formateDate = dateTTL.replace("-", "/"); + } + return formateDate; + } } -- 2.16.6