summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/XACMLPdpRegisterThread.java457
-rw-r--r--ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PDPServices.java123
-rw-r--r--ONAP-REST/src/main/java/org/onap/policy/rest/XACMLRest.java339
-rw-r--r--ONAP-REST/src/main/java/org/onap/policy/rest/jpa/Category.java333
-rw-r--r--POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyAdapter.java7
-rw-r--r--POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyManagerServlet.java106
-rw-r--r--POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyNotificationMail.java1
-rw-r--r--POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyRestController.java15
-rw-r--r--POLICY-SDK-APP/src/main/java/org/onap/policy/controller/PolicyController.java1283
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<String, String> 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<String, String> 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<String> 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<String> en = request.getHeaderNames();
+ logger.debug("Headers:");
+ while (en.hasMoreElements()) {
+ String element = en.nextElement();
+ Enumeration<String> 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<String, String[]> params = request.getParameterMap();
+ Set<String> 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<String> 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<String> en = request.getHeaderNames();
- logger.debug("Headers:");
- while (en.hasMoreElements()) {
- String element = en.nextElement();
- Enumeration<String> 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<String, String[]> params = request.getParameterMap();
- Set<String> 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<Attribute> 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<Attribute> getAttributes() {
- return this.attributes;
- }
-
- public void setAttributes(Set<Attribute> 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<Attribute> 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<Attribute> getAttributes() {
+ return this.attributes;
+ }
+
+ public void setAttributes(Set<Attribute> 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<String, InputStream> files = new HashMap<>();
List<FileItem> 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<Object> 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<Object> 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<String, String> dropDownMap = new HashMap<>();
- public static Map<String, String> getDropDownMap() {
- return dropDownMap;
- }
-
- public static void setDropDownMap(Map<String, String> 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<Datatype, List<FunctionDefinition>> mapDatatype2Function = null;
- private static Map<String, FunctionDefinition> 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<Datatype, List<FunctionDefinition>> functionMap = getFunctionDatatypeMap();
- for ( Entry<Datatype, List<FunctionDefinition>> entry : functionMap.entrySet()) {
- List<FunctionDefinition> functionDefinations = entry.getValue();
- for (FunctionDefinition functionDef : functionDefinations) {
- dropDownMap.put(functionDef.getShortname(),functionDef.getXacmlid());
- }
- }
-
- }
-
- public static Map<Datatype, List<FunctionDefinition>> getFunctionDatatypeMap() {
- synchronized(mapAccess) {
- if (mapDatatype2Function == null) {
- buildFunctionMaps();
- }
- }
- return mapDatatype2Function;
- }
-
- public static Map<String, FunctionDefinition> getFunctionIDMap() {
- synchronized(mapAccess) {
- if (mapID2Function == null) {
- buildFunctionMaps();
- }
- }
- return mapID2Function;
- }
-
- private static void buildFunctionMaps() {
- mapDatatype2Function = new HashMap<>();
- mapID2Function = new HashMap<>();
- List<Object> 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<FunctionDefinition>());
- }
- 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<String, Object> 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<Object> data = commonClassDao.getDataById(PolicyEntity.class, "scope:policyName", key);
- return (PolicyEntity) data.get(0);
- }
-
- public static Map<String, Roles> getUserRoles(String userId) {
- Map<String, Roles> scopes = new HashMap<>();
- List<Object> 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<String> getRolesOfUser(String userId) {
- List<String> rolesList = new ArrayList<>();
- List<Object> roles = commonClassDao.getDataById(Roles.class, "loginId", userId);
- for (Object role: roles) {
- rolesList.add(((Roles) role).getRole());
- }
- return rolesList;
- }
-
- public List<Object> 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<String, Object> 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<String, String> dropDownMap = new HashMap<>();
+ public static Map<String, String> getDropDownMap() {
+ return dropDownMap;
+ }
+
+ public static void setDropDownMap(Map<String, String> 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<Datatype, List<FunctionDefinition>> mapDatatype2Function = null;
+ private static Map<String, FunctionDefinition> 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<Datatype, List<FunctionDefinition>> functionMap = getFunctionDatatypeMap();
+ for ( Entry<Datatype, List<FunctionDefinition>> entry : functionMap.entrySet()) {
+ List<FunctionDefinition> functionDefinations = entry.getValue();
+ for (FunctionDefinition functionDef : functionDefinations) {
+ dropDownMap.put(functionDef.getShortname(),functionDef.getXacmlid());
+ }
+ }
+
+ }
+
+ public static Map<Datatype, List<FunctionDefinition>> getFunctionDatatypeMap() {
+ synchronized(mapAccess) {
+ if (mapDatatype2Function == null) {
+ buildFunctionMaps();
+ }
+ }
+ return mapDatatype2Function;
+ }
+
+ public static Map<String, FunctionDefinition> getFunctionIDMap() {
+ synchronized(mapAccess) {
+ if (mapID2Function == null) {
+ buildFunctionMaps();
+ }
+ }
+ return mapID2Function;
+ }
+
+ private static void buildFunctionMaps() {
+ mapDatatype2Function = new HashMap<>();
+ mapID2Function = new HashMap<>();
+ List<Object> 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<FunctionDefinition>());
+ }
+ 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<String, Object> 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<Object> data = commonClassDao.getDataById(PolicyEntity.class, "scope:policyName", key);
+ return (PolicyEntity) data.get(0);
+ }
+
+ public static Map<String, Roles> getUserRoles(String userId) {
+ Map<String, Roles> scopes = new HashMap<>();
+ List<Object> 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<String> getRolesOfUser(String userId) {
+ List<String> rolesList = new ArrayList<>();
+ List<Object> roles = commonClassDao.getDataById(Roles.class, "loginId", userId);
+ for (Object role: roles) {
+ rolesList.add(((Roles) role).getRole());
+ }
+ return rolesList;
+ }
+
+ public List<Object> 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<String, Object> 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<String, Object> 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<Object> 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<Object> getData(@SuppressWarnings("rawtypes") Class className){
- return commonClassDao.getData(className);
- }
-
- public PolicyVersion getPolicyEntityFromPolicyVersion(String query){
- return (PolicyVersion) commonClassDao.getEntityItem(PolicyVersion.class, "policyName", query);
- }
-
- public List<Object> 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<Object> policyEntity = commonClassDao.getDataByQuery(query, params);
- List<String> 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<Datatype, List<FunctionDefinition>> getMapDatatype2Function() {
- return mapDatatype2Function;
- }
-
- public static void setMapDatatype2Function(Map<Datatype, List<FunctionDefinition>> mapDatatype2Function) {
- PolicyController.mapDatatype2Function = mapDatatype2Function;
- }
-
- public static Map<String, FunctionDefinition> getMapID2Function() {
- return mapID2Function;
- }
-
- public static void setMapID2Function(Map<String, FunctionDefinition> 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<String, Object> 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<Object> 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<Object> getData(@SuppressWarnings("rawtypes") Class className){
+ return commonClassDao.getData(className);
+ }
+
+ public PolicyVersion getPolicyEntityFromPolicyVersion(String query){
+ return (PolicyVersion) commonClassDao.getEntityItem(PolicyVersion.class, "policyName", query);
+ }
+
+ public List<Object> 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<Object> policyEntity = commonClassDao.getDataByQuery(query, params);
+ List<String> 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<Datatype, List<FunctionDefinition>> getMapDatatype2Function() {
+ return mapDatatype2Function;
+ }
+
+ public static void setMapDatatype2Function(Map<Datatype, List<FunctionDefinition>> mapDatatype2Function) {
+ PolicyController.mapDatatype2Function = mapDatatype2Function;
+ }
+
+ public static Map<String, FunctionDefinition> getMapID2Function() {
+ return mapID2Function;
+ }
+
+ public static void setMapID2Function(Map<String, FunctionDefinition> 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;
+ }
}