aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ConfigPolicy.java98
-rw-r--r--ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicy.java5
-rw-r--r--ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/Policy.java33
-rw-r--r--ONAP-PAP-REST/src/main/resources/Decision_GuardBLPolicyTemplate.xml4
-rw-r--r--ONAP-PAP-REST/src/main/resources/Decision_GuardPolicyTemplate.xml4
-rw-r--r--ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/ConfigPolicyService.java4
-rw-r--r--ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/CreateUpdatePolicyServiceImpl.java4
-rw-r--r--ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/NotificationService.java4
-rw-r--r--ONAP-PDP-REST/xacml.pdp.properties4
-rw-r--r--POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyManagerServlet.java2
-rw-r--r--POLICY-SDK-APP/src/main/java/org/onap/policy/controller/DecisionPolicyController.java11
-rw-r--r--POLICY-SDK-APP/src/main/java/org/onap/policy/controller/PolicyValidationController.java171
-rw-r--r--PolicyEngineAPI/pom.xml4
-rw-r--r--PolicyEngineUtils/pom.xml27
-rw-r--r--PolicyEngineUtils/src/main/java/org/onap/policy/std/StdLoadedPolicy.java2
-rw-r--r--PolicyEngineUtils/src/main/java/org/onap/policy/std/StdRemovedPolicy.java2
-rw-r--r--PolicyEngineUtils/src/main/java/org/onap/policy/utils/AAFPolicyClientImpl.java8
-rw-r--r--PolicyEngineUtils/src/main/java/org/onap/policy/utils/BackUpMonitor.java85
-rw-r--r--PolicyEngineUtils/src/main/java/org/onap/policy/utils/BusConsumer.java2
-rw-r--r--PolicyEngineUtils/src/main/java/org/onap/policy/utils/BusPublisher.java5
-rw-r--r--PolicyEngineUtils/src/main/java/org/onap/policy/utils/PolicyUtils.java321
-rw-r--r--PolicyEngineUtils/src/main/java/org/onap/policy/utils/XMLErrorHandler.java47
-rw-r--r--PolicyEngineUtils/src/test/java/org/onap/policy/test/PolicyUtilsTest.java67
-rw-r--r--PolicyEngineUtils/src/test/java/org/onap/policy/test/testBackUpMonitor.java121
-rw-r--r--PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/AAFClientTest.java90
-rw-r--r--PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/BusTest.java57
-rw-r--r--PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/Handler.java (renamed from PolicyEngineUtils/src/test/java/org/onap/policy/test/Handler.java)2
-rw-r--r--PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/NotificationStoreTest.java99
-rw-r--r--PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/PEDependencyTest.java59
-rw-r--r--PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/PolicyUtilsTest.java209
-rw-r--r--PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/testBackUpMonitor.java292
-rw-r--r--PolicyEngineUtils/src/test/resources/META-INF/drop.ddl1
-rw-r--r--PolicyEngineUtils/src/test/resources/META-INF/persistencePUtest.xml35
-rw-r--r--packages/base/src/files/install/servers/pdp/bin/xacml.pdp.properties2
34 files changed, 1253 insertions, 628 deletions
diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ConfigPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ConfigPolicy.java
index 63a62d23d..adcffe939 100644
--- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ConfigPolicy.java
+++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/ConfigPolicy.java
@@ -24,18 +24,23 @@ import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
-import java.io.StringReader;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
-import java.util.Scanner;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
+import org.apache.commons.io.FilenameUtils;
+import org.onap.policy.common.logging.eelf.MessageCodes;
+import org.onap.policy.common.logging.eelf.PolicyLogger;
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
+import org.onap.policy.rest.adapter.PolicyRestAdapter;
+import org.onap.policy.utils.PolicyUtils;
+
+import com.att.research.xacml.api.pap.PAPException;
+import com.att.research.xacml.std.IdentifierImpl;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionsType;
@@ -51,21 +56,6 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
-import org.apache.commons.io.FilenameUtils;
-import org.onap.policy.common.logging.eelf.MessageCodes;
-import org.onap.policy.common.logging.eelf.PolicyLogger;
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
-import org.onap.policy.rest.adapter.PolicyRestAdapter;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-import org.xml.sax.XMLReader;
-
-import com.att.research.xacml.api.pap.PAPException;
-import com.att.research.xacml.std.IdentifierImpl;
-
public class ConfigPolicy extends Policy {
/**
@@ -148,15 +138,15 @@ public class ConfigPolicy extends Policy {
String id = policyAdapter.getConfigType();
if (id != null) {
if (id.equals(JSON_CONFIG)) {
- if (!isJSONValid(configBodyData)) {
+ if (!PolicyUtils.isJSONValid(configBodyData)) {
isValidForm = false;
}
} else if (id.equals(XML_CONFIG)) {
- if (!isXMLValid(configBodyData)) {
+ if (!PolicyUtils.isXMLValid(configBodyData)) {
isValidForm = false;
}
} else if (id.equals(PROPERTIES_CONFIG)) {
- if (!isPropValid(configBodyData)||configBodyData.equals("")) {
+ if (!PolicyUtils.isPropValid(configBodyData)||configBodyData.equals("")) {
isValidForm = false;
}
} else if (id.equals(OTHER_CONFIG)) {
@@ -169,68 +159,6 @@ public class ConfigPolicy extends Policy {
}
- // Validation for XML.
- private boolean isXMLValid(String data) {
-
- SAXParserFactory factory = SAXParserFactory.newInstance();
- factory.setValidating(false);
- factory.setNamespaceAware(true);
- try {
- SAXParser parser = factory.newSAXParser();
- XMLReader reader = parser.getXMLReader();
- reader.setErrorHandler(new XMLErrorHandler());
- reader.parse(new InputSource(new StringReader(data)));
- } catch (ParserConfigurationException | SAXException | IOException e) {
- LOGGER.debug(e);
- return false;
- }
- return true;
-
- }
-
- // Validation for Properties file.
- public boolean isPropValid(String prop) {
-
- Scanner scanner = new Scanner(prop);
- while (scanner.hasNextLine()) {
- String line = scanner.nextLine();
- line.replaceAll("\\s+", "");
- if (line.startsWith("#")) {
- continue;
- } else {
- if (line.contains("=")) {
- String[] parts = line.split("=");
- if (parts.length < 2) {
- scanner.close();
- return false;
- }
- } else {
- scanner.close();
- return false;
- }
- }
- }
- scanner.close();
- return true;
-
- }
-
- public class XMLErrorHandler implements ErrorHandler {
-
- public void warning(SAXParseException e) throws SAXException {
- System.out.println(e.getMessage());
- }
-
- public void error(SAXParseException e) throws SAXException {
- System.out.println(e.getMessage());
- }
-
- public void fatalError(SAXParseException e) throws SAXException {
- System.out.println(e.getMessage());
- }
-
- }
-
@Override
public Map<String, String> savePolicies() throws PAPException {
diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicy.java
index 6e43c967c..eae3e79a9 100644
--- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicy.java
+++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicy.java
@@ -285,7 +285,7 @@ public class DecisionPolicy extends Policy {
activeTimeRange.put("end", yamlParams.get("guardActiveEnd"));
String blackListString = yamlParams.get("blackList");
List<String> blackList = null;
- if(blackListString!=null){
+ if(blackListString!=null && !blackListString.trim().isEmpty()){
if (blackListString.contains(",")){
blackList = Arrays.asList(blackListString.split(","));
}
@@ -303,6 +303,9 @@ public class DecisionPolicy extends Policy {
templateFile = new File(classLoader.getResource(XACML_BLGUARD_TEMPLATE).getFile());
xacmlTemplatePath = templateFile.toPath();
cons.setActive_time_range(activeTimeRange);
+ if(blackList==null || blackList.isEmpty()){
+ throw new BuilderException("blackList is required");
+ }
cons.setBlacklist(blackList);
break;
default:
diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/Policy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/Policy.java
index 169e6e14e..20c76f3be 100644
--- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/Policy.java
+++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/Policy.java
@@ -20,23 +20,17 @@
package org.onap.policy.pap.xacml.rest.components;
-import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
-import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
-import javax.json.Json;
-import javax.json.JsonReader;
-
import org.apache.commons.io.FilenameUtils;
-import org.json.JSONObject;
import org.onap.policy.common.logging.eelf.MessageCodes;
import org.onap.policy.common.logging.eelf.PolicyLogger;
import org.onap.policy.common.logging.flexlogger.FlexLogger;
@@ -202,33 +196,6 @@ public abstract class Policy {
return dynamicMatch;
}
- //validation for numeric
- protected boolean isNumeric(String str){
- for (char c : str.toCharArray()){
- if (!Character.isDigit(c)) return false;
- }
- return true;
- }
-
- // Validation for json.
- protected static boolean isJSONValid(String data) {
- JsonReader jsonReader = null;
- try {
- new JSONObject(data);
- InputStream stream = new ByteArrayInputStream(data.getBytes(StandardCharsets.UTF_8));
- jsonReader = Json.createReader(stream);
- LOGGER.info("Json Value is: " + jsonReader.read().toString() );
- } catch (Exception e) {
- LOGGER.error("Exception Occured while reading json"+e);
- return false;
- }finally{
- if(jsonReader != null){
- jsonReader.close();
- }
- }
- return true;
- }
-
// the Policy Name as Unique One throws error
@SuppressWarnings("static-access")
protected Path getNextFilename(Path parent, String policyType, String polcyFileName, Integer version) {
diff --git a/ONAP-PAP-REST/src/main/resources/Decision_GuardBLPolicyTemplate.xml b/ONAP-PAP-REST/src/main/resources/Decision_GuardBLPolicyTemplate.xml
index 19e567ddd..a8e1b9480 100644
--- a/ONAP-PAP-REST/src/main/resources/Decision_GuardBLPolicyTemplate.xml
+++ b/ONAP-PAP-REST/src/main/resources/Decision_GuardBLPolicyTemplate.xml
@@ -15,11 +15,11 @@
<AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ONAPName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
</Match>
<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">
- <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">${actor}</AttributeValue>
+ <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">(?i)${actor}</AttributeValue>
<AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="actor" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
</Match>
<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">
- <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">${recipe}</AttributeValue>
+ <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">(?i)${recipe}</AttributeValue>
<AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="recipe" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
</Match>
<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">
diff --git a/ONAP-PAP-REST/src/main/resources/Decision_GuardPolicyTemplate.xml b/ONAP-PAP-REST/src/main/resources/Decision_GuardPolicyTemplate.xml
index ed5b27b7d..6dee0cb97 100644
--- a/ONAP-PAP-REST/src/main/resources/Decision_GuardPolicyTemplate.xml
+++ b/ONAP-PAP-REST/src/main/resources/Decision_GuardPolicyTemplate.xml
@@ -15,11 +15,11 @@
<AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ONAPName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
</Match>
<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">
- <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">${actor}</AttributeValue>
+ <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">(?i)${actor}</AttributeValue>
<AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="actor" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
</Match>
<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">
- <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">${recipe}</AttributeValue>
+ <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">(?i)${recipe}</AttributeValue>
<AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="recipe" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
</Match>
<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">
diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/ConfigPolicyService.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/ConfigPolicyService.java
index c8d3d74d1..690e94a5e 100644
--- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/ConfigPolicyService.java
+++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/ConfigPolicyService.java
@@ -82,12 +82,12 @@ public class ConfigPolicyService {
message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Config Name given.";
return false;
}
- message = PolicyUtils.emptyPolicyValidator(onapName);
+ message = PolicyUtils.policySpecialCharValidator(onapName);
if(!message.contains("success")){
message = XACMLErrorConstants.ERROR_DATA_ISSUE+ message;
return false;
}
- message = PolicyUtils.emptyPolicyValidator(configName);
+ message = PolicyUtils.policySpecialCharValidator(configName);
if(!message.contains("success")){
message = XACMLErrorConstants.ERROR_DATA_ISSUE+ message;
return false;
diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/CreateUpdatePolicyServiceImpl.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/CreateUpdatePolicyServiceImpl.java
index 945cdba8b..528e5cda9 100644
--- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/CreateUpdatePolicyServiceImpl.java
+++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/CreateUpdatePolicyServiceImpl.java
@@ -234,12 +234,12 @@ public class CreateUpdatePolicyServiceImpl implements CreateUpdatePolicyService
message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Name given.";
return false;
}
- message = PolicyUtils.emptyPolicyValidator(policyScope);
+ message = PolicyUtils.policySpecialCharValidator(policyScope);
if(!message.contains("success")){
message = XACMLErrorConstants.ERROR_DATA_ISSUE+ message;
return false;
}
- message = PolicyUtils.emptyPolicyValidator(policyName);
+ message = PolicyUtils.policySpecialCharValidator(policyName);
if(!message.contains("success")){
message = XACMLErrorConstants.ERROR_DATA_ISSUE+ message;
return false;
diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/NotificationService.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/NotificationService.java
index 6ca52ca40..bba51965b 100644
--- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/NotificationService.java
+++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/NotificationService.java
@@ -99,7 +99,7 @@ public class NotificationService {
dmaapServers = XACMLProperties.getProperty(XACMLRestProperties.PROP_NOTIFICATION_SERVERS);
aafLogin = XACMLProperties.getProperty("DMAAP_AAF_LOGIN");
aafPassword = XACMLProperties.getProperty("DMAAP_AAF_PASSWORD");
- interval = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_NOTIFICATION_DELAY, Integer.toString(interval)));
+ interval = Integer.parseInt(XACMLProperties.getProperty("CLIENT_INTERVAL", Integer.toString(interval)));
if(dmaapServers==null || aafLogin==null || aafPassword==null){
logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "DMaaP properties are missing from the property file ");
return;
@@ -269,7 +269,7 @@ public class NotificationService {
Date currentTime = new Date();
long timeDiff = 0;
timeDiff = currentTime.getTime()-map.getValue().getTime();
- if(timeDiff < (interval+1500)){
+ if(timeDiff > (interval+1500)){
removeTopic(map.getKey());
}
}
diff --git a/ONAP-PDP-REST/xacml.pdp.properties b/ONAP-PDP-REST/xacml.pdp.properties
index b88c93543..6cf2e945b 100644
--- a/ONAP-PDP-REST/xacml.pdp.properties
+++ b/ONAP-PDP-REST/xacml.pdp.properties
@@ -118,6 +118,10 @@ xacml.rest.pap.password=alpha123
# Delay for Notifications Don't change this. Value in milliSec.
xacml.rest.notification.delay=30
+
+# Client interval to ping notification service.
+CLIENT_INTERVAL=15000
+
# Buffer Size.
REQUEST_BUFFER_SIZE=15
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 552537900..a99d23ed5 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
@@ -1458,7 +1458,7 @@ public class PolicyManagerServlet extends HttpServlet {
validateName = name;
}
if(!name.isEmpty()){
- String validate = PolicyUtils.emptyPolicyValidator(validateName);
+ String validate = PolicyUtils.policySpecialCharValidator(validateName);
if(!validate.contains("success")){
return error(validate);
}
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/DecisionPolicyController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/DecisionPolicyController.java
index 45369ce2f..fc77c9316 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/DecisionPolicyController.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/DecisionPolicyController.java
@@ -120,6 +120,9 @@ public class DecisionPolicyController extends RestrictedBaseController {
//
AttributeValueType attributeValue = match.getAttributeValue();
String value = (String) attributeValue.getContent().get(0);
+ if(value!=null){
+ value = value.replaceAll("\\(\\?i\\)", "");
+ }
AttributeDesignatorType designator = match.getAttributeDesignator();
String attributeId = designator.getAttributeId();
// First match in the target is OnapName, so set that value.
@@ -203,13 +206,13 @@ public class DecisionPolicyController extends RestrictedBaseController {
YAMLParams yamlParams = new YAMLParams();
for(int i=0; i<attributeList.size() ; i++){
Map<String, String> map = (Map<String,String>)attributeList.get(i);
- if(map.get("key").equals("actor")){
+ if("actor".equals(map.get("key"))){
yamlParams.setActor(map.get("value"));
- }else if(map.get("key").equals("recipe")){
+ }else if("recipe".equals(map.get("key"))){
yamlParams.setRecipe(map.get("value"));
- }else if(map.get("key").equals("targets")){
+ }else if("target".equals(map.get("key"))){
yamlParams.setTargets(Arrays.asList(map.get("value").split("\\|")));
- }else if(map.get("key").equals("clname")){
+ }else if("clname".equals(map.get("key"))){
yamlParams.setClname(map.get("value"));
}
}
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/PolicyValidationController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/PolicyValidationController.java
index d1fba383f..050455a42 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/PolicyValidationController.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/PolicyValidationController.java
@@ -21,32 +21,19 @@
package org.onap.policy.controller;
-import java.io.ByteArrayInputStream;
import java.io.IOException;
-import java.io.InputStream;
import java.io.PrintWriter;
-import java.io.StringReader;
-import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
-import java.util.Scanner;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import javax.json.Json;
-import javax.json.JsonReader;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
import org.apache.commons.lang.StringUtils;
-import org.dom4j.util.XMLErrorHandler;
import org.json.JSONObject;
import org.onap.policy.common.logging.flexlogger.FlexLogger;
import org.onap.policy.common.logging.flexlogger.Logger;
@@ -63,13 +50,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
-import org.xml.sax.InputSource;
-import org.xml.sax.XMLReader;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.base.CharMatcher;
import com.google.common.base.Splitter;
import com.google.common.base.Strings;
@@ -86,14 +70,8 @@ public class PolicyValidationController extends RestrictedBaseController {
public static final String CLOSEDLOOP_PM = "ClosedLoop_PM";
public static final String ENFORCER_CONFIG_POLICY= "Enforcer Config";
public static final String MICROSERVICES="Micro Service";
- private Pattern pattern;
- private Matcher matcher;
private static Map<String, String> mapAttribute = new HashMap<>();
- private static final String EMAIL_PATTERN =
- "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
- + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
-
@Autowired
CommonClassDao commonClassDao;
@@ -107,7 +85,7 @@ public class PolicyValidationController extends RestrictedBaseController {
JsonNode root = mapper.readTree(request.getReader());
PolicyRestAdapter policyData = (PolicyRestAdapter)mapper.readValue(root.get("policyData").toString(), PolicyRestAdapter.class);
if(policyData.getPolicyName() != null){
- String policyNameValidate = emptyValidator(policyData.getPolicyName());
+ String policyNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getPolicyName());
if(!policyNameValidate.contains("success")){
responseString.append("PolicyName:" + policyNameValidate + "<br>");
valid = false;
@@ -117,7 +95,7 @@ public class PolicyValidationController extends RestrictedBaseController {
valid = false;
}
if(policyData.getPolicyDescription() != null){
- String descriptionValidate = descriptionValidator(policyData.getPolicyDescription());
+ String descriptionValidate = PolicyUtils.descriptionValidator(policyData.getPolicyDescription());
if(!descriptionValidate.contains("success")){
responseString.append("Description:" + descriptionValidate + "<br>");
valid = false;
@@ -128,7 +106,7 @@ public class PolicyValidationController extends RestrictedBaseController {
if (policyData.getConfigPolicyType().equals("Base") || policyData.getConfigPolicyType().equals(CLOSEDLOOP_POLICY)
|| policyData.getConfigPolicyType().equals(CLOSEDLOOP_PM) || policyData.getConfigPolicyType().equals(ENFORCER_CONFIG_POLICY) || policyData.getConfigPolicyType().equals(MICROSERVICES)) {
if(policyData.getOnapName() != null){
- String onapNameValidate = emptyValidator(policyData.getOnapName());
+ String onapNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getOnapName());
if(!onapNameValidate.contains("success")){
responseString.append("OnapName:" + onapNameValidate + "<br>");
valid = false;
@@ -140,7 +118,7 @@ public class PolicyValidationController extends RestrictedBaseController {
}
if(policyData.getRiskType() != null){
- String riskTypeValidate = emptyValidator(policyData.getRiskType());
+ String riskTypeValidate = PolicyUtils.policySpecialCharValidator(policyData.getRiskType());
if(!riskTypeValidate.contains("success")){
responseString.append("RiskType:" + riskTypeValidate + "<br>");
valid = false;
@@ -151,7 +129,7 @@ public class PolicyValidationController extends RestrictedBaseController {
}
if(policyData.getRiskLevel() != null){
- String validateRiskLevel = emptyValidator(policyData.getRiskLevel());
+ String validateRiskLevel = PolicyUtils.policySpecialCharValidator(policyData.getRiskLevel());
if(!validateRiskLevel.contains("success")){
responseString.append("RiskLevel:" + validateRiskLevel + "<br>");
valid = false;
@@ -162,7 +140,7 @@ public class PolicyValidationController extends RestrictedBaseController {
}
if(policyData.getGuard() != null){
- String validateGuard = emptyValidator(policyData.getGuard());
+ String validateGuard = PolicyUtils.policySpecialCharValidator(policyData.getGuard());
if(!validateGuard.contains("success")){
responseString.append("Guard:" + validateGuard + "<br>");
valid = false;
@@ -174,7 +152,7 @@ public class PolicyValidationController extends RestrictedBaseController {
if(policyData.getConfigPolicyType().equals("Base")){
if(policyData.getConfigName() != null){
- String configNameValidate = emptyValidator(policyData.getConfigName());
+ String configNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getConfigName());
if(!configNameValidate.contains("success")){
responseString.append("ConfigName:" + configNameValidate + "<br>");
valid = false;
@@ -184,7 +162,7 @@ public class PolicyValidationController extends RestrictedBaseController {
valid = false;
}
if(policyData.getConfigType() != null){
- String configTypeValidate = emptyValidator(policyData.getConfigType());
+ String configTypeValidate = PolicyUtils.policySpecialCharValidator(policyData.getConfigType());
if(!configTypeValidate.contains("success")){
responseString.append("ConfigType:" + configTypeValidate + "<br>");
valid = false;
@@ -198,17 +176,17 @@ public class PolicyValidationController extends RestrictedBaseController {
String policyType = policyData.getConfigType();
if (policyType != null) {
if (policyType.equals("JSON")) {
- if (!isJSONValid(configBodyData)) {
+ if (!PolicyUtils.isJSONValid(configBodyData)) {
responseString.append("Config Body: JSON Content is not valid" + "<br>");
valid = false;
}
} else if (policyType.equals("XML")) {
- if (!isXMLValid(configBodyData)) {
+ if (!PolicyUtils.isXMLValid(configBodyData)) {
responseString.append("Config Body: XML Content data is not valid" + "<br>");
valid = false;
}
} else if (policyType.equals("PROPERTIES")) {
- if (!isPropValid(configBodyData)||configBodyData.equals("")) {
+ if (!PolicyUtils.isPropValid(configBodyData)||configBodyData.equals("")) {
responseString.append("Config Body: Property data is not valid" + "<br>");
valid = false;
}
@@ -227,7 +205,7 @@ public class PolicyValidationController extends RestrictedBaseController {
if(policyData.getConfigPolicyType().equals("Firewall Config")){
if(policyData.getConfigName() != null){
- String configNameValidate = PolicyUtils.emptyPolicyValidator(policyData.getConfigName());
+ String configNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getConfigName());
if(!configNameValidate.contains("success")){
responseString.append("<b>ConfigName</b>:<i>" + configNameValidate + "</i><br>");
valid = false;
@@ -282,7 +260,7 @@ public class PolicyValidationController extends RestrictedBaseController {
}
}
if(pmBody.getGeoLink() != null){
- String result = PolicyUtils.emptyPolicyValidator(pmBody.getGeoLink());
+ String result = PolicyUtils.policySpecialCharValidator(pmBody.getGeoLink());
if(!result.contains("success")){
responseString.append("<b>GeoLink</b>:<i>" + result + "</i><br>");
valid = false;
@@ -293,7 +271,7 @@ public class PolicyValidationController extends RestrictedBaseController {
String key = entry.getKey();
String value = entry.getValue();
if(!key.contains("Message")){
- String attributeValidate = PolicyUtils.emptyPolicyValidator(value);
+ String attributeValidate = PolicyUtils.policySpecialCharValidator(value);
if(!attributeValidate.contains("success")){
responseString.append("<b>Attributes</b>:<i>" + key + " : value has spaces</i><br>");
valid = false;
@@ -308,7 +286,7 @@ public class PolicyValidationController extends RestrictedBaseController {
}
if(policyData.getConfigPolicyType().equals("ClosedLoop_Fault")){
if(root.get("policyData").get("jsonBodyData") != null){
- ClosedLoopFaultBody faultBody = (ClosedLoopFaultBody)mapper.readValue(root.get("policyData").get("jsonBodyData").toString(), ClosedLoopFaultBody.class);
+ ClosedLoopFaultBody faultBody = mapper.readValue(root.get("policyData").get("jsonBodyData").toString(), ClosedLoopFaultBody.class);
if(faultBody.getEmailAddress() != null){
String result = emailValidation(faultBody.getEmailAddress(), responseString.toString());
if(result != "success"){
@@ -333,11 +311,11 @@ public class PolicyValidationController extends RestrictedBaseController {
valid = false;
}
if(faultBody.getGeoLink() != null){
- String result = PolicyUtils.emptyPolicyValidatorWithSpaceAllowed(faultBody.getGeoLink());
+ String result = PolicyUtils.policySpecialCharWithSpaceValidator(faultBody.getGeoLink());
if(!result.contains("success")){
responseString.append("<b>GeoLink</b>:<i>" + result + "</i><br>");
valid = false;
- };
+ }
}
if(faultBody.getTimeInterval() == 0){
@@ -429,7 +407,7 @@ public class PolicyValidationController extends RestrictedBaseController {
}
if (policyData.getPolicyType().equals(DECISION_POLICY)){
if(policyData.getOnapName() != null){
- String onapNameValidate = emptyValidator(policyData.getOnapName());
+ String onapNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getOnapName());
if(!onapNameValidate.contains("success")){
responseString.append("OnapName:" + onapNameValidate + "<br>");
valid = false;
@@ -513,7 +491,7 @@ public class PolicyValidationController extends RestrictedBaseController {
valid = false;
}else{
for(String blackList: policyData.getYamlparams().getBlackList()){
- if(blackList==null || !("success".equals(emptyValidator(blackList)))){
+ if(blackList==null || !("success".equals(PolicyUtils.policySpecialCharValidator(blackList)))){
responseString.append(" Guard Params <b>BlackList</b> Should be valid String" + "<br>");
valid = false;
break;
@@ -527,11 +505,11 @@ public class PolicyValidationController extends RestrictedBaseController {
if(policyData.getPolicyType().equals(ACTION_POLICY)){
if(policyData.getActionPerformer() != null){
- String actionPerformer = emptyValidator(policyData.getActionPerformer());
+ String actionPerformer = PolicyUtils.policySpecialCharValidator(policyData.getActionPerformer());
if(!actionPerformer.contains("success")){
responseString.append("ActionPerformer:" + actionPerformer + "<br>");
valid = false;
- };
+ }
}else{
responseString.append("ActionPerformer: ActionPerformer Should not be empty" + "<br>");
valid = false;
@@ -561,7 +539,7 @@ public class PolicyValidationController extends RestrictedBaseController {
valid = false;
}
if(policyData.getActionAttributeValue() != null){
- String actionAttribute = emptyValidator(policyData.getActionAttributeValue());
+ String actionAttribute = PolicyUtils.policySpecialCharValidator(policyData.getActionAttributeValue());
if(!actionAttribute.contains("success")){
responseString.append("ActionAttribute:" + actionAttribute + "<br>");
valid = false;
@@ -630,49 +608,6 @@ public class PolicyValidationController extends RestrictedBaseController {
return null;
}
- protected String emptyValidator(String field){
- String error;
- if ("".equals(field) || field.contains(" ") || !field.matches("^[a-zA-Z0-9_]*$")) {
- error = "The Value in Required Field will allow only '{0-9}, {a-z}, {A-Z}, _' following set of Combinations";
- return error;
- } else {
- if(CharMatcher.ASCII.matchesAllOf((CharSequence) field)){
- error = "success";
- }else{
- error = "The Value Contains Non ASCII Characters";
- return error;
- }
- }
- return error;
- }
-
- protected String descriptionValidator(String field) {
- String error;
- if (field.contains("@CreatedBy:") || field.contains("@ModifiedBy:")) {
- error = "The value in the description shouldn't contain @CreatedBy: or @ModifiedBy:";
- return error;
- } else {
- error = "success";
- }
- return error;
- }
-
- public String validateEmailAddress(String emailAddressValue) {
- String error = "success";
- List<String> emailList = Arrays.asList(emailAddressValue.toString().split(","));
- for(int i =0 ; i < emailList.size() ; i++){
- pattern = Pattern.compile(EMAIL_PATTERN);
- matcher = pattern.matcher(emailList.get(i).trim());
- if(!matcher.matches()){
- error = "Please check the Following Email Address is not Valid .... " +emailList.get(i).toString();
- return error;
- }else{
- error = "success";
- }
- }
- return error;
- }
-
protected String emailValidation(String email, String response){
if(email != null){
String validateEmail = PolicyUtils.validateEmailAddress(email.replace("\"", ""));
@@ -713,66 +648,4 @@ public class PolicyValidationController extends RestrictedBaseController {
}
}
}
-
- // Validation for json.
- protected static boolean isJSONValid(String data) {
- JsonReader jsonReader = null;
- try {
- new JSONObject(data);
- InputStream stream = new ByteArrayInputStream(data.getBytes(StandardCharsets.UTF_8));
- jsonReader = Json.createReader(stream);
- LOGGER.info("Json Value is: " + jsonReader.read().toString() );
- } catch (Exception e) {
- LOGGER.error("Exception Occured While Validating"+e);
- return false;
- }finally{
- if(jsonReader != null){
- jsonReader.close();
- }
- }
- return true;
- }
-
- // Validation for XML.
- private boolean isXMLValid(String data) {
- SAXParserFactory factory = SAXParserFactory.newInstance();
- factory.setValidating(false);
- factory.setNamespaceAware(true);
- try {
- SAXParser parser = factory.newSAXParser();
- XMLReader reader = parser.getXMLReader();
- reader.setErrorHandler(new XMLErrorHandler());
- reader.parse(new InputSource(new StringReader(data)));
- } catch (Exception e) {
- LOGGER.error("Exception Occured While Validating"+e);
- return false;
- }
- return true;
- }
-
- // Validation for Properties file.
- public boolean isPropValid(String prop) {
- Scanner scanner = new Scanner(prop);
- while (scanner.hasNextLine()) {
- String line = scanner.nextLine();
- line = line.replaceAll("\\s+", "");
- if (line.startsWith("#")) {
- continue;
- } else {
- if (line.contains("=")) {
- String[] parts = line.split("=");
- if (parts.length < 2) {
- scanner.close();
- return false;
- }
- } else {
- scanner.close();
- return false;
- }
- }
- }
- scanner.close();
- return true;
- }
-
} \ No newline at end of file
diff --git a/PolicyEngineAPI/pom.xml b/PolicyEngineAPI/pom.xml
index e5af8d7d3..b7f1371b5 100644
--- a/PolicyEngineAPI/pom.xml
+++ b/PolicyEngineAPI/pom.xml
@@ -117,10 +117,6 @@
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
</exclusion>
- <exclusion>
- <groupId>com.att.aft</groupId>
- <artifactId>dme2</artifactId>
- </exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mockito/mockito-all -->
diff --git a/PolicyEngineUtils/pom.xml b/PolicyEngineUtils/pom.xml
index af2664305..c0837055f 100644
--- a/PolicyEngineUtils/pom.xml
+++ b/PolicyEngineUtils/pom.xml
@@ -30,12 +30,12 @@
<dependency>
<groupId>org.onap.policy.common</groupId>
<artifactId>integrity-monitor</artifactId>
- <version>${common-modules.version}</version>
+ <version>${common-modules.version}</version>
</dependency>
<dependency>
<groupId>org.onap.policy.common</groupId>
<artifactId>integrity-audit</artifactId>
- <version>${common-modules.version}</version>
+ <version>${common-modules.version}</version>
</dependency>
<dependency>
<groupId>org.onap.policy.common</groupId>
@@ -97,6 +97,12 @@
<groupId>org.drools</groupId>
<artifactId>drools-verifier</artifactId>
<version>6.3.0.Final</version>
+ <exclusions>
+ <exclusion>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>com.att.cadi</groupId>
@@ -104,20 +110,9 @@
<version>1.3.0</version>
</dependency>
<dependency>
- <groupId>com.att.aft</groupId>
- <artifactId>dme2</artifactId>
- <version>3.1.200</version>
- </dependency>
- <dependency>
- <groupId>com.att.nsa</groupId>
- <artifactId>cambriaClient</artifactId>
- <version>0.0.1</version>
- <exclusions>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </exclusion>
- </exclusions>
+ <groupId>com.att.aft</groupId>
+ <artifactId>dme2</artifactId>
+ <version>3.1.200</version>
</dependency>
<dependency>
<groupId>com.att.nsa</groupId>
diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/std/StdLoadedPolicy.java b/PolicyEngineUtils/src/main/java/org/onap/policy/std/StdLoadedPolicy.java
index c1f4fed7f..10268f658 100644
--- a/PolicyEngineUtils/src/main/java/org/onap/policy/std/StdLoadedPolicy.java
+++ b/PolicyEngineUtils/src/main/java/org/onap/policy/std/StdLoadedPolicy.java
@@ -34,7 +34,7 @@ public class StdLoadedPolicy implements LoadedPolicy{
@Override
public String getPolicyName() {
if(policyName!=null && policyName.contains(".xml")){
- return (policyName.substring(0, policyName.substring(0, policyName.lastIndexOf(".")).lastIndexOf(".")));
+ return (policyName.substring(0, policyName.substring(0, policyName.lastIndexOf('.')).lastIndexOf('.')));
}
return this.policyName;
}
diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/std/StdRemovedPolicy.java b/PolicyEngineUtils/src/main/java/org/onap/policy/std/StdRemovedPolicy.java
index bdce33a3b..5430e24ef 100644
--- a/PolicyEngineUtils/src/main/java/org/onap/policy/std/StdRemovedPolicy.java
+++ b/PolicyEngineUtils/src/main/java/org/onap/policy/std/StdRemovedPolicy.java
@@ -38,7 +38,7 @@ public class StdRemovedPolicy implements RemovedPolicy{
@Override
public String getPolicyName() {
if(policyName!=null && policyName.contains(".xml")){
- return (policyName.substring(0, policyName.substring(0, policyName.lastIndexOf(".")).lastIndexOf(".")));
+ return (policyName.substring(0, policyName.substring(0, policyName.lastIndexOf('.')).lastIndexOf('.')));
}
return this.policyName;
}
diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/utils/AAFPolicyClientImpl.java b/PolicyEngineUtils/src/main/java/org/onap/policy/utils/AAFPolicyClientImpl.java
index 0f4876051..ecb51b286 100644
--- a/PolicyEngineUtils/src/main/java/org/onap/policy/utils/AAFPolicyClientImpl.java
+++ b/PolicyEngineUtils/src/main/java/org/onap/policy/utils/AAFPolicyClientImpl.java
@@ -65,9 +65,6 @@ public class AAFPolicyClientImpl implements AAFPolicyClient{
private static Access access = null;
private AAFPolicyClientImpl(Properties properties) throws AAFPolicyException{
- if(instance == null){
- instance = this;
- }
setup(properties);
}
@@ -93,7 +90,6 @@ public class AAFPolicyClientImpl implements AAFPolicyClient{
props.setProperty("AFT_LATITUDE", properties.getProperty("AFT_LATITUDE", DEFAULT_AFT_LATITUDE));
props.setProperty("AFT_LONGITUDE", properties.getProperty("AFT_LONGITUDE", DEFAULT_AFT_LONGITUDE));
String aftEnv = TEST_AFT_ENVIRONMENT;
- //props.setProperty(Config.CADI_KEYFILE,"keyfile");
props.setProperty("aaf_id",properties.getProperty("aaf_id", "aafID"));
props.setProperty("aaf_password", properties.getProperty("aaf_password", "aafPass"));
if(properties.containsKey(Config.AAF_URL)){
@@ -203,8 +199,8 @@ public class AAFPolicyClientImpl implements AAFPolicyClient{
private static boolean setUpAAF(){
try {
aafCon = new AAFConDME2(access);
- aafLurPerm = aafCon.newLur();//new AAFLurPerm(aafCon);
- aafAuthn = aafCon.newAuthn(aafLurPerm);//new AAFAuthn(aafCon, aafLurPerm);
+ aafLurPerm = aafCon.newLur();
+ aafAuthn = aafCon.newAuthn(aafLurPerm);
return true;
} catch (Exception e) {
logger.error("Error while setting up AAF Connection " + e.getMessage() + e);
diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BackUpMonitor.java b/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BackUpMonitor.java
index d4f111637..3cdb51577 100644
--- a/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BackUpMonitor.java
+++ b/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BackUpMonitor.java
@@ -53,8 +53,11 @@ import com.github.fge.jsonpatch.diff.JsonDiff;
*/
public class BackUpMonitor {
private static final Logger LOGGER = Logger.getLogger(BackUpMonitor.class.getName());
- private static final int DEFAULT_PING = 15000; // Value is in milliseconds.
-
+ private static final int DEFAULT_PING = 500; // Value is in milliseconds.
+ private static final String PING_INTERVAL = "ping_interval";
+ private static final String MASTER = "MASTER";
+ private static final String SLAVE = "SLAVE";
+
private static BackUpMonitor instance = null;
private static String resourceName = null;
private static String resourceNodeName = null;
@@ -65,6 +68,8 @@ public class BackUpMonitor {
private static Object lock = new Object();
private static Object notificationLock = new Object();
private static BackUpHandler handler = null;
+ private static Boolean stopFlag = false;
+ private static Thread t = null;
private EntityManager em;
private EntityManagerFactory emf;
@@ -77,14 +82,11 @@ public class BackUpMonitor {
private BackUpMonitor(String resourceNodeName, String resourceName, Properties properties, BackUpHandler handler)
throws BackUpMonitorException {
- if (instance == null) {
- instance = this;
- }
- BackUpMonitor.resourceNodeName = resourceNodeName;
- BackUpMonitor.resourceName = resourceName;
- BackUpMonitor.handler = handler;
+ init(resourceName, resourceNodeName, handler);
// Create Persistence Entity
- properties.setProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, "META-INF/persistencePU.xml");
+ if(!properties.containsKey(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML)){
+ properties.setProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, "META-INF/persistencePU.xml");
+ }
emf = Persistence.createEntityManagerFactory("PolicyEngineUtils", properties);
if (emf == null) {
LOGGER.error("Unable to create Entity Manger Factory ");
@@ -94,12 +96,31 @@ public class BackUpMonitor {
// Check Database if this is Master or Slave.
checkDataBase();
-
// Start thread.
- Thread t = new Thread(new BMonitor());
+ startThread(new BMonitor());
+ }
+
+ private static void startThread(BMonitor bMonitor) {
+ t = new Thread(bMonitor);
t.start();
}
+ public static void stop() throws InterruptedException{
+ stopFlag = true;
+ if(t!=null){
+ t.interrupt();
+ t.join();
+ }
+ instance = null;
+ }
+
+ private static void init(String resourceName, String resourceNodeName, BackUpHandler handler) {
+ BackUpMonitor.resourceNodeName = resourceNodeName;
+ BackUpMonitor.resourceName = resourceName;
+ BackUpMonitor.handler = handler;
+ stopFlag = false;
+ }
+
/**
* Gets the BackUpMonitor Instance if given proper resourceName and properties. Else returns null.
*
@@ -142,17 +163,12 @@ public class BackUpMonitor {
LOGGER.error("javax.persistence.jdbc.user property is empty");
return false;
}
- if (properties.getProperty("javax.persistence.jdbc.password") == null
- || properties.getProperty("javax.persistence.jdbc.password").trim().equals("")) {
- LOGGER.error("javax.persistence.jdbc.password property is empty");
- return false;
- }
- if (properties.getProperty("ping_interval") == null
- || properties.getProperty("ping_interval").trim().equals("")) {
+ if (properties.getProperty(PING_INTERVAL) == null
+ || properties.getProperty(PING_INTERVAL).trim().equals("")) {
LOGGER.info("ping_interval property not specified. Taking default value");
} else {
try {
- pingInterval = Integer.parseInt(properties.getProperty("ping_interval").trim());
+ pingInterval = Integer.parseInt(properties.getProperty(PING_INTERVAL).trim());
} catch (NumberFormatException e) {
LOGGER.warn("Ignored invalid proeprty ping_interval. Taking default value: " + pingInterval);
pingInterval = DEFAULT_PING;
@@ -185,7 +201,7 @@ public class BackUpMonitor {
@Override
public void run() {
LOGGER.info("Starting BackUpMonitor Thread.. ");
- while (true) {
+ while (!stopFlag) {
try {
TimeUnit.MILLISECONDS.sleep(pingInterval);
checkDataBase();
@@ -198,26 +214,27 @@ public class BackUpMonitor {
// Set Master
private static BackUpMonitorEntity setMaster(BackUpMonitorEntity bMEntity) {
- bMEntity.setFlag("MASTER");
+ bMEntity.setFlag(MASTER);
setFlag(true);
return bMEntity;
}
// Set Slave
private static BackUpMonitorEntity setSlave(BackUpMonitorEntity bMEntity) {
- bMEntity.setFlag("SLAVE");
+ bMEntity.setFlag(SLAVE);
setFlag(false);
return bMEntity;
}
// Check Database and set the Flag.
private void checkDataBase() throws BackUpMonitorException {
- EntityTransaction et = em.getTransaction();
- setNotificationRecord();
- // Clear Cache.
- LOGGER.info("Clearing Cache");
- em.getEntityManagerFactory().getCache().evictAll();
+ EntityTransaction et = null;
try {
+ et = em.getTransaction();
+ setNotificationRecord();
+ // Clear Cache.
+ LOGGER.info("Clearing Cache");
+ em.getEntityManagerFactory().getCache().evictAll();
LOGGER.info("Checking Datatbase for BackUpMonitor.. ");
et.begin();
Query query = em.createQuery("select b from BackUpMonitorEntity b where b.resourceNodeName = :nn");
@@ -247,7 +264,7 @@ public class BackUpMonitor {
BackUpMonitorEntity bMEntity = (BackUpMonitorEntity) bMList.get(i);
LOGGER.info("Refreshing Entity. ");
em.refresh(bMEntity);
- if (bMEntity.getFlag().equalsIgnoreCase("MASTER")) {
+ if (bMEntity.getFlag().equalsIgnoreCase(MASTER)) {
masterEntities.add(bMEntity);
}
if (bMEntity.getResourceName().equals(resourceName)) {
@@ -256,7 +273,7 @@ public class BackUpMonitor {
}
if (selfEntity != null) {
LOGGER.info("Resource Name already Exists: " + resourceName);
- if (selfEntity.getFlag().equalsIgnoreCase("MASTER")) {
+ if (selfEntity.getFlag().equalsIgnoreCase(MASTER)) {
// Already Master Mode.
setFlag(true);
LOGGER.info(resourceName + " is on Master Mode");
@@ -306,19 +323,19 @@ public class BackUpMonitor {
// Slave.
BackUpMonitorEntity masterEntity = null;
for (BackUpMonitorEntity currentEntity : masterEntities) {
- if (currentEntity.getFlag().equalsIgnoreCase("MASTER")) {
+ if (currentEntity.getFlag().equalsIgnoreCase(MASTER)) {
if (masterEntity == null) {
masterEntity = currentEntity;
} else if (currentEntity.getTimeStamp().getTime() > masterEntity.getTimeStamp()
.getTime()) {
// False Master, Update master to slave and take currentMaster as Master.
- masterEntity.setFlag("SLAVE");
+ masterEntity.setFlag(SLAVE);
masterEntity.setTimeStamp(new Date());
em.persist(masterEntity);
em.flush();
masterEntity = currentEntity;
} else {
- currentEntity.setFlag("SLAVE");
+ currentEntity.setFlag(SLAVE);
currentEntity.setTimeStamp(new Date());
em.persist(currentEntity);
em.flush();
@@ -339,7 +356,7 @@ public class BackUpMonitor {
if (timeDiff > (pingInterval + 1500)) {
// This is down or has an issue and we need to become Master while turning the
// Master to slave.
- masterEntity.setFlag("SLAVE");
+ masterEntity.setFlag(SLAVE);
String lastNotification = null;
if (masterEntity.getNotificationRecord() != null) {
lastNotification = calculatePatch(masterEntity.getNotificationRecord());
@@ -366,7 +383,7 @@ public class BackUpMonitor {
et.commit();
} catch (Exception e) {
LOGGER.error("failed Database Operation " + e.getMessage(), e);
- if (et.isActive()) {
+ if (et!=null && et.isActive()) {
et.rollback();
}
throw new BackUpMonitorException(e);
diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BusConsumer.java b/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BusConsumer.java
index 1b31394d0..2c867a3d1 100644
--- a/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BusConsumer.java
+++ b/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BusConsumer.java
@@ -70,7 +70,7 @@ public interface BusConsumer {
public DmaapConsumerWrapper(List<String> servers, String topic,
String aafLogin, String aafPassword,
String consumerGroup, String consumerInstance,
- int fetchTimeout, int fetchLimit) throws MalformedURLException{
+ int fetchTimeout, int fetchLimit) throws MalformedURLException{
this.consumer = new MRConsumerImpl(servers, topic,
consumerGroup, consumerInstance,
diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BusPublisher.java b/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BusPublisher.java
index 3190aa035..3a12122bf 100644
--- a/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BusPublisher.java
+++ b/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BusPublisher.java
@@ -42,7 +42,7 @@ public interface BusPublisher {
* @return true if success, false otherwise
* @throws IllegalArgumentException if no message provided
*/
- public boolean send(String partitionId, String message) throws IllegalArgumentException;
+ public boolean send(String partitionId, String message);
/**
* closes the publisher
@@ -114,8 +114,7 @@ public interface BusPublisher {
* {@inheritDoc}
*/
@Override
- public boolean send(String partitionId, String message)
- throws IllegalArgumentException {
+ public boolean send(String partitionId, String message){
if (message == null)
throw new IllegalArgumentException("No message provided");
diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/utils/PolicyUtils.java b/PolicyEngineUtils/src/main/java/org/onap/policy/utils/PolicyUtils.java
index 8bc83dcb8..b74bd28cc 100644
--- a/PolicyEngineUtils/src/main/java/org/onap/policy/utils/PolicyUtils.java
+++ b/PolicyEngineUtils/src/main/java/org/onap/policy/utils/PolicyUtils.java
@@ -26,96 +26,142 @@ import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.Base64;
import java.util.List;
+import java.util.Scanner;
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
import org.drools.core.io.impl.ReaderResource;
import org.drools.verifier.Verifier;
import org.drools.verifier.VerifierError;
import org.drools.verifier.builder.VerifierBuilder;
import org.drools.verifier.builder.VerifierBuilderFactory;
import org.kie.api.io.ResourceType;
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
+import org.xml.sax.InputSource;
+import org.xml.sax.XMLReader;
+import com.att.aft.dme2.internal.gson.JsonParser;
+import com.att.aft.dme2.internal.gson.JsonSyntaxException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.base.CharMatcher;
public class PolicyUtils {
-
- public static final String EMAIL_PATTERN =
+ private static final Logger LOGGER = FlexLogger.getLogger(PolicyUtils.class);
+
+ public static final String EMAIL_PATTERN =
"^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
- private static final String PACKAGE_ERROR = "mismatched input '{' expecting one of the following tokens: '[package";
- private static final String SUCCESS = "success";
-
- private PolicyUtils(){
- // Private Constructor
- }
- public static String objectToJsonString(Object o) throws JsonProcessingException{
- ObjectMapper mapper = new ObjectMapper();
- return mapper.writeValueAsString(o);
- }
-
- public static <T> T jsonStringToObject(String jsonString, Class<T> className) throws IOException{
- ObjectMapper mapper = new ObjectMapper();
- return mapper.readValue(jsonString, className);
- }
-
- public static String decode(String encodedString) throws UnsupportedEncodingException {
- if(encodedString!=null && !encodedString.isEmpty()){
- return new String(Base64.getDecoder().decode(encodedString) ,"UTF-8");
- }else{
- return null;
- }
- }
-
- public static String[] decodeBasicEncoding(String encodedValue) throws UnsupportedEncodingException {
- if(encodedValue!=null && encodedValue.contains("Basic ")){
- String encodedUserPassword = encodedValue.replaceFirst("Basic" + " ", "");
- String usernameAndPassword = null;
- byte[] decodedBytes = Base64.getDecoder().decode(encodedUserPassword);
- usernameAndPassword = new String(decodedBytes, "UTF-8");
- StringTokenizer tokenizer = new StringTokenizer(usernameAndPassword, ":");
- String username = tokenizer.nextToken();
- String password = tokenizer.nextToken();
- return new String[]{username, password};
- }else{
- return new String[]{};
- }
- }
-
- public static String emptyPolicyValidator(String field){
+ private static final String PACKAGE_ERROR = "mismatched input '{' expecting one of the following tokens: '[package";
+ private static final String SUCCESS = "success";
+
+ private PolicyUtils(){
+ // Private Constructor
+ }
+
+ /**
+ * Converts an Object to JSON String
+ *
+ * @param o Object
+ * @return String format of Object JSON.
+ * @throws JsonProcessingException
+ */
+ public static String objectToJsonString(Object o) throws JsonProcessingException{
+ ObjectMapper mapper = new ObjectMapper();
+ return mapper.writeValueAsString(o);
+ }
+
+ /**
+ * Converts JSON string into Object
+ *
+ * @param jsonString
+ * @param className equivalent Class of the given JSON string
+ * @return T instance of the class given.
+ * @throws IOException
+ */
+ public static <T> T jsonStringToObject(String jsonString, Class<T> className) throws IOException{
+ ObjectMapper mapper = new ObjectMapper();
+ return mapper.readValue(jsonString, className);
+ }
+
+ /**
+ * Decode a base64 string
+ *
+ * @param encodedString
+ * @return String
+ * @throws UnsupportedEncodingException
+ */
+ public static String decode(String encodedString) throws UnsupportedEncodingException {
+ if(encodedString!=null && !encodedString.isEmpty()){
+ return new String(Base64.getDecoder().decode(encodedString) ,"UTF-8");
+ }else{
+ return null;
+ }
+ }
+
+ /**
+ * Decodes Basic Authentication
+ *
+ * @param encodedValue
+ * @return
+ * @throws UnsupportedEncodingException
+ */
+ public static String[] decodeBasicEncoding(String encodedValue) throws UnsupportedEncodingException {
+ if(encodedValue!=null && encodedValue.contains("Basic ")){
+ String encodedUserPassword = encodedValue.replaceFirst("Basic" + " ", "");
+ String usernameAndPassword = null;
+ byte[] decodedBytes = Base64.getDecoder().decode(encodedUserPassword);
+ usernameAndPassword = new String(decodedBytes, "UTF-8");
+ StringTokenizer tokenizer = new StringTokenizer(usernameAndPassword, ":");
+ String username = tokenizer.nextToken();
+ String password = tokenizer.nextToken();
+ return new String[]{username, password};
+ }else{
+ return new String[]{};
+ }
+ }
+
+ /**
+ * Validate a field if contains space or unacceptable policy input and return "success" if good.
+ *
+ * @param field
+ * @return
+ */
+ public static String policySpecialCharValidator(String field){
String error;
if ("".equals(field) || field.contains(" ") || !field.matches("^[a-zA-Z0-9_]*$")) {
error = "The Value in Required Field will allow only '{0-9}, {a-z}, {A-Z}, _' following set of Combinations";
- return error;
- } else {
- if(CharMatcher.ASCII.matchesAllOf((CharSequence) field)){
- error = SUCCESS;
- }else{
- error = "The Value Contains Non ASCII Characters";
- return error;
- }
+ return error;
}
- return error;
+ return SUCCESS;
}
- public static String emptyPolicyValidatorWithSpaceAllowed(String field){
+ /**
+ * Validate a field (accepts space) if it contains unacceptable policy input and return "success" if good.
+ *
+ * @param field
+ * @return
+ */
+ public static String policySpecialCharWithSpaceValidator(String field){
String error;
if ("".equals(field) || !field.matches("^[a-zA-Z0-9_ ]*$")) {
error = "The Value in Required Field will allow only '{0-9}, {a-z}, {A-Z}, _' following set of Combinations";
return error;
- } else {
- if(CharMatcher.ASCII.matchesAllOf((CharSequence) field)){
- error = SUCCESS;
- }else{
- error = "The Value Contains Non ASCII Characters";
- return error;
- }
}
- return error;
+ return SUCCESS;
}
+
+ /**
+ * Validate the XACML description tag and return "success" if good.
+ *
+ * @param field
+ * @return
+ */
public static String descriptionValidator(String field) {
String error;
if (field.contains("@CreatedBy:") || field.contains("@ModifiedBy:")) {
@@ -127,15 +173,38 @@ public class PolicyUtils {
return error;
}
+ /**
+ * Validate if string contains non ASCII characters
+ *
+ * @param value
+ * @return
+ */
+ public static boolean containsNonAsciiEmptyChars(String value) {
+ return (value == null|| value.contains(" ") || "".equals(value.trim())|| !CharMatcher.ASCII.matchesAllOf((CharSequence) value))? true:false;
+ }
+
+ /**
+ * Validate if given string is an integer.
+ *
+ * @param number
+ * @return
+ */
public static Boolean isInteger(String number){
- try{
- Integer.parseInt(number);
- }catch(NumberFormatException e){
- return false;
- }
- return true;
+ if(number==null) {
+ return false;
+ }
+ for (char c : number.toCharArray()){
+ if (!Character.isDigit(c)) return false;
+ }
+ return true;
}
+ /**
+ * Validate Email Address and return "success" if good.
+ *
+ * @param emailAddressValue
+ * @return
+ */
public static String validateEmailAddress(String emailAddressValue) {
String error = SUCCESS;
List<String> emailList = Arrays.asList(emailAddressValue.split(","));
@@ -152,8 +221,11 @@ public class PolicyUtils {
return error;
}
- /*
- * Check for "[ERR" to see if there are any errors.
+ /**
+ * Validates BRMS rule as per Policy Platform and return string contains "[ERR" if there are any errors.
+ *
+ * @param rule
+ * @return String error message
*/
public static String brmsRawValidate(String rule){
VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
@@ -161,19 +233,19 @@ public class PolicyUtils {
verifier.addResourcesToVerify(new ReaderResource(new StringReader(rule)), ResourceType.DRL);
// Check if there are any Errors in Verification.
if(!verifier.getErrors().isEmpty()){
- boolean ignore = false;
+ boolean ignore = false;
StringBuilder message = new StringBuilder("Not a Valid DRL rule");
for(VerifierError error: verifier.getErrors()){
// Ignore annotations Error Messages
if(!error.getMessage().contains("'@'") && !error.getMessage().contains(PACKAGE_ERROR)){
- ignore= true;
+ ignore= true;
message.append("\n" + error.getMessage());
}
}
- // Ignore new package names with {
+ // Ignore new package names with '{'
// More checks for message to check if its a package error.
if(ignore && !message.toString().contains("Parser returned a null Package")){
- message.append("[ERR 107]");
+ message.append("[ERR 107]");
}
return message.toString();
}
@@ -181,21 +253,90 @@ public class PolicyUtils {
}
/**
- * Given a version string consisting of integers with dots between them, convert it into an array of ints.
- *
- * @param version
- * @return
- * @throws NumberFormatException
- */
- public static int[] versionStringToArray(String version) throws NumberFormatException {
- if (version == null || version.length() == 0) {
- return new int[0];
- }
- String[] stringArray = version.split("\\.");
- int[] resultArray = new int[stringArray.length];
- for (int i = 0; i < stringArray.length; i++) {
- resultArray[i] = Integer.parseInt(stringArray[i]);
- }
- return resultArray;
- }
-}
+ * Validates if the given string is proper JSON format.
+ *
+ * @param data
+ * @return
+ */
+ public static boolean isJSONValid(String data) {
+ try{
+ JsonParser parser = new JsonParser();
+ parser.parse(data);
+ }catch(JsonSyntaxException e){
+ LOGGER.error("Exception Occurred While Validating"+e);
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Validates if the given string is proper XML format.
+ *
+ * @param data
+ * @return
+ */
+ public static boolean isXMLValid(String data) {
+ SAXParserFactory factory = SAXParserFactory.newInstance();
+ factory.setValidating(false);
+ factory.setNamespaceAware(true);
+ try {
+ SAXParser parser = factory.newSAXParser();
+ XMLReader reader = parser.getXMLReader();
+ reader.setErrorHandler(new XMLErrorHandler());
+ reader.parse(new InputSource(new StringReader(data)));
+ } catch (Exception e) {
+ LOGGER.error("Exception Occured While Validating"+e);
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Validates if given string is valid Properties format.
+ *
+ * @param prop
+ * @return
+ */
+ public static boolean isPropValid(String prop) {
+ Scanner scanner = new Scanner(prop);
+ while (scanner.hasNextLine()) {
+ String line = scanner.nextLine();
+ line = line.replaceAll("\\s+", "");
+ if (line.startsWith("#")) {
+ continue;
+ } else {
+ if (line.contains("=")) {
+ String[] parts = line.split("=");
+ if (parts.length < 2) {
+ scanner.close();
+ return false;
+ }
+ } else if(!line.trim().isEmpty()){
+ scanner.close();
+ return false;
+ }
+ }
+ }
+ scanner.close();
+ return true;
+ }
+
+ /**
+ * Given a version string consisting of integers with dots between them, convert it into an array of integers.
+ *
+ * @param version
+ * @return
+ * @throws NumberFormatException
+ */
+ public static int[] versionStringToArray(String version){
+ if (version == null || version.length() == 0) {
+ return new int[0];
+ }
+ String[] stringArray = version.split("\\.");
+ int[] resultArray = new int[stringArray.length];
+ for (int i = 0; i < stringArray.length; i++) {
+ resultArray[i] = Integer.parseInt(stringArray[i].trim());
+ }
+ return resultArray;
+ }
+} \ No newline at end of file
diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/utils/XMLErrorHandler.java b/PolicyEngineUtils/src/main/java/org/onap/policy/utils/XMLErrorHandler.java
new file mode 100644
index 000000000..3037a423c
--- /dev/null
+++ b/PolicyEngineUtils/src/main/java/org/onap/policy/utils/XMLErrorHandler.java
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineUtils
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.utils;
+
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+public class XMLErrorHandler implements ErrorHandler {
+ private static final Logger LOGGER = FlexLogger.getLogger(XMLErrorHandler.class);
+
+ @Override
+ public void warning(SAXParseException exception) throws SAXException {
+ LOGGER.debug(exception);
+ }
+
+ @Override
+ public void error(SAXParseException exception) throws SAXException {
+ LOGGER.error(exception);
+ }
+
+ @Override
+ public void fatalError(SAXParseException exception) throws SAXException {
+ LOGGER.error(exception);
+ }
+
+}
diff --git a/PolicyEngineUtils/src/test/java/org/onap/policy/test/PolicyUtilsTest.java b/PolicyEngineUtils/src/test/java/org/onap/policy/test/PolicyUtilsTest.java
deleted file mode 100644
index 50ae3feae..000000000
--- a/PolicyEngineUtils/src/test/java/org/onap/policy/test/PolicyUtilsTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * PolicyEngineUtils
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.test;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.junit.Test;
-import org.onap.policy.api.NotificationType;
-import org.onap.policy.api.PDPNotification;
-import org.onap.policy.api.UpdateType;
-import org.onap.policy.std.StdLoadedPolicy;
-import org.onap.policy.std.StdPDPNotification;
-import org.onap.policy.std.StdRemovedPolicy;
-import org.onap.policy.utils.PolicyUtils;
-
-public class PolicyUtilsTest {
-
- @Test
- public void testJsonConversions() throws Exception{
- StdPDPNotification notification = new StdPDPNotification();
- notification.setNotificationType(NotificationType.BOTH);
- Collection<StdRemovedPolicy> removedPolicies = new ArrayList<>();
- Collection<StdLoadedPolicy> loadedPolicies = new ArrayList<>();
- StdRemovedPolicy removedPolicy = new StdRemovedPolicy();
- StdLoadedPolicy updatedPolicy = new StdLoadedPolicy();
- removedPolicy.setPolicyName("Test");
- removedPolicy.setVersionNo("1");
- removedPolicies.add(removedPolicy);
- updatedPolicy.setPolicyName("Testing");
- updatedPolicy.setVersionNo("1");
- updatedPolicy.setUpdateType(UpdateType.NEW);
- Map<String, String> matches = new HashMap<>();
- matches.put("key", "value");
- updatedPolicy.setMatches(matches);
- loadedPolicies.add(updatedPolicy);
- notification.setRemovedPolicies(removedPolicies);
- notification.setLoadedPolicies(loadedPolicies);
-
- String json = PolicyUtils.objectToJsonString(notification);
- PDPNotification getBackObject = PolicyUtils.jsonStringToObject(json, StdPDPNotification.class);
- assertEquals(0,getBackObject.getNotificationType().compareTo(notification.getNotificationType()));
-
- }
-}
diff --git a/PolicyEngineUtils/src/test/java/org/onap/policy/test/testBackUpMonitor.java b/PolicyEngineUtils/src/test/java/org/onap/policy/test/testBackUpMonitor.java
deleted file mode 100644
index 4cdb81873..000000000
--- a/PolicyEngineUtils/src/test/java/org/onap/policy/test/testBackUpMonitor.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * PolicyEngineUtils
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.test;
-
-import static org.junit.Assert.assertNull;
-import java.util.Properties;
-
-import org.junit.Test;
-import org.onap.policy.utils.BackUpMonitor;
-
-
-public class testBackUpMonitor {
-
- @Test
- public void backUpMonitorTestFail() throws Exception{
- Properties properties = new Properties();
- properties.setProperty("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
- properties.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/xacml");
- properties.setProperty("javax.persistence.jdbc.user", "policy_user");
- properties.setProperty("javax.persistence.jdbc.password", "");
- //properties.setProperty("ping_interval", "500000");
- BackUpMonitor bum = BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), "brms_test" , properties, new Handler());
- assertNull(bum);
- }
-
- @Test
- public void backUpMonitorTestFailNoUser() throws Exception{
- Properties properties = new Properties();
- properties.setProperty("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
- properties.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/xacml");
- properties.setProperty("javax.persistence.jdbc.user", "");
- properties.setProperty("javax.persistence.jdbc.password", "password");
- //properties.setProperty("ping_interval", "500000");
- BackUpMonitor bum = BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), "brms_test" , properties, new Handler());
- assertNull(bum);
- }
-
- @Test
- public void backUpMonitorTestFailNoURL() throws Exception{
- Properties properties = new Properties();
- properties.setProperty("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
- properties.setProperty("javax.persistence.jdbc.url", "");
- properties.setProperty("javax.persistence.jdbc.user", "test");
- properties.setProperty("javax.persistence.jdbc.password", "password");
- //properties.setProperty("ping_interval", "500000");
- BackUpMonitor bum = BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), "brms_test" , properties, new Handler());
- assertNull(bum);
- }
-
- @Test
- public void backUpMonitorTestFailNoDriver() throws Exception{
- Properties properties = new Properties();
- properties.setProperty("javax.persistence.jdbc.driver", "");
- properties.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/xacml");
- properties.setProperty("javax.persistence.jdbc.user", "test");
- properties.setProperty("javax.persistence.jdbc.password", "password");
- //properties.setProperty("ping_interval", "500000");
- BackUpMonitor bum = BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), "brms_test" , properties, new Handler());
- assertNull(bum);
- }
-
- @Test
- public void backUpMonitorTestFailNoNode() throws Exception{
- Properties properties = new Properties();
- properties.setProperty("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
- properties.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/xacml");
- properties.setProperty("javax.persistence.jdbc.user", "test");
- properties.setProperty("javax.persistence.jdbc.password", "password");
- //properties.setProperty("ping_interval", "500000");
- BackUpMonitor bum = BackUpMonitor.getInstance(null, "brms_test" , properties, new Handler());
- assertNull(bum);
- }
-
- @Test
- public void backUpMonitorTestFailNoResource() throws Exception{
- Properties properties = new Properties();
- properties.setProperty("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
- properties.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/xacml");
- properties.setProperty("javax.persistence.jdbc.user", "test");
- properties.setProperty("javax.persistence.jdbc.password", "password");
- //properties.setProperty("ping_interval", "500000");
- BackUpMonitor bum = BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), null , properties, new Handler());
- assertNull(bum);
- }
-
- @Test
- public void backUpMonitorTestFailNoProperties() throws Exception{
- BackUpMonitor bum = BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), "brms_test" , null, new Handler());
- assertNull(bum);
- }
-
- @Test
- public void backUpMonitorTestFailNoHandler() throws Exception{
- Properties properties = new Properties();
- properties.setProperty("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
- properties.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/xacml");
- properties.setProperty("javax.persistence.jdbc.user", "test");
- properties.setProperty("javax.persistence.jdbc.password", "password");
- //properties.setProperty("ping_interval", "500000");
- BackUpMonitor bum = BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), "brms_test" , properties, null);
- assertNull(bum);
- }
-}
diff --git a/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/AAFClientTest.java b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/AAFClientTest.java
new file mode 100644
index 000000000..2fa822a33
--- /dev/null
+++ b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/AAFClientTest.java
@@ -0,0 +1,90 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineUtils
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.utils.test;
+
+import static org.junit.Assert.assertFalse;
+
+import java.util.Properties;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.utils.AAFPolicyClient;
+import org.onap.policy.utils.AAFPolicyClientImpl;
+import org.onap.policy.utils.AAFPolicyException;
+
+public class AAFClientTest {
+ AAFPolicyClient afClient;
+ String pass = "test";
+
+ @Before
+ public void setUp() throws AAFPolicyException{
+ Properties props = new Properties();
+ props.setProperty("ENVIRONMENT", "TEST");
+ props.setProperty("aafClient.impl.className", AAFPolicyClientImpl.class.getName());
+ afClient = AAFPolicyClient.getInstance(props);
+ }
+
+ @Test
+ public void invalidClientTest() throws AAFPolicyException{
+ assertFalse(afClient.checkAuth("test", pass));
+ assertFalse(afClient.checkPerm("test", pass, "policy-engine.config", "*", "*"));
+ Properties props = new Properties();
+ props.setProperty("aafClient.impl.className", AAFPolicyClientImpl.class.getName());
+ afClient = AAFPolicyClient.getInstance(props);
+ assertFalse(afClient.checkAuth("test", pass));
+ props.setProperty("ENVIRONMENT", "PROD");
+ props.setProperty("aafClient.impl.className", AAFPolicyClientImpl.class.getName());
+ afClient.updateProperties(props);
+ assertFalse(afClient.checkAuth("test", pass));
+ props.setProperty("aaf_url", "test");
+ afClient.updateProperties(props);
+ assertFalse(afClient.checkAuth("test", pass));
+ props = new Properties();
+ props.setProperty("ENVIRONMENT", "123");
+ afClient.updateProperties(props);
+ assertFalse(afClient.checkAuth("test", pass));
+ assertFalse(afClient.checkAuthPerm("test", pass, "decision", "*", "read"));
+ }
+
+ @Test(expected = AAFPolicyException.class)
+ public void invalidAAFInstance() throws AAFPolicyException{
+ Properties props = new Properties();
+ props.setProperty("aafClient.impl.className", "errorClass");
+ afClient = AAFPolicyClient.getInstance(props);
+ }
+
+ @Test(expected = AAFPolicyException.class)
+ public void testPropNullException() throws AAFPolicyException {
+ afClient.updateProperties(null);
+ }
+
+ @Test(expected = AAFPolicyException.class)
+ public void testPropEmptyException() throws AAFPolicyException {
+ afClient.updateProperties(new Properties());
+ }
+
+ @Test(expected = AAFPolicyException.class)
+ public void testAAFException() throws AAFPolicyException{
+ new AAFPolicyException();
+ new AAFPolicyException("error", new Exception());
+ throw new AAFPolicyException("error", new Exception(), false, false);
+ }
+}
diff --git a/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/BusTest.java b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/BusTest.java
new file mode 100644
index 000000000..37170f077
--- /dev/null
+++ b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/BusTest.java
@@ -0,0 +1,57 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineUtils
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.utils.test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.net.MalformedURLException;
+import java.util.Arrays;
+
+import org.junit.Test;
+import org.onap.policy.utils.BusConsumer;
+import org.onap.policy.utils.BusPublisher;
+
+import com.att.nsa.mr.client.MRClient.MRApiException;
+
+public class BusTest {
+
+ @Test
+ public void busPublisherTest(){
+ BusPublisher bus = new BusPublisher.DmaapPublisherWrapper(Arrays.asList("test"), "test", "test", "test");
+ assertTrue(bus.send("test123", "Hello World!"));
+ assertEquals("DmaapPublisherWrapper [publisher.getAuthDate()=null, publisher.getAuthKey()=null, publisher.getHost()=test, publisher.getProtocolFlag()=HTTPAAF, publisher.getUsername()=test, publisher.getPendingMessageCount()=1]",bus.toString());
+ bus.close();
+ }
+
+ @Test (expected = MRApiException.class)
+ public void busConsumerFailTest() throws MalformedURLException, MRApiException{
+ new BusConsumer.DmaapConsumerWrapper(Arrays.asList("test"), "test", "test", "test", "test", "test", 1, 1).fetch();
+ }
+
+ @Test
+ public void busConsumerTest() throws MalformedURLException, MRApiException{
+ BusConsumer bus = new BusConsumer.DmaapConsumerWrapper(Arrays.asList("test"), "test", "test", "test", "test", "test", 1, 1);
+ assertEquals(bus.toString(),"DmaapConsumerWrapper [consumer.getAuthDate()=null, consumer.getAuthKey()=null, consumer.getHost()=test:3904, consumer.getProtocolFlag()=HTTPAAF, consumer.getUsername()=test]");
+ bus.close();
+ }
+
+}
diff --git a/PolicyEngineUtils/src/test/java/org/onap/policy/test/Handler.java b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/Handler.java
index 0f71858a3..91f467b60 100644
--- a/PolicyEngineUtils/src/test/java/org/onap/policy/test/Handler.java
+++ b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/Handler.java
@@ -18,7 +18,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.test;
+package org.onap.policy.utils.test;
import org.onap.policy.api.PDPNotification;
import org.onap.policy.utils.BackUpHandler;
diff --git a/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/NotificationStoreTest.java b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/NotificationStoreTest.java
new file mode 100644
index 000000000..8ec646a0f
--- /dev/null
+++ b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/NotificationStoreTest.java
@@ -0,0 +1,99 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineUtils
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.utils.test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.Test;
+import org.onap.policy.api.NotificationType;
+import org.onap.policy.api.UpdateType;
+import org.onap.policy.std.NotificationStore;
+import org.onap.policy.std.StdLoadedPolicy;
+import org.onap.policy.std.StdPDPNotification;
+import org.onap.policy.std.StdRemovedPolicy;
+
+public class NotificationStoreTest {
+
+ @Test
+ public void notificationTest(){
+ StdPDPNotification notification = new StdPDPNotification();
+ notification.setNotificationType(NotificationType.UPDATE);
+ List<StdLoadedPolicy> loadedPolicies = new ArrayList<>();
+ StdLoadedPolicy loadedPolicy = new StdLoadedPolicy();
+ loadedPolicy.setPolicyName("com.testing");
+ loadedPolicy.setUpdateType(UpdateType.NEW);
+ loadedPolicy.setVersionNo("1");
+ Map<String, String> matches = new HashMap<>();
+ matches.put("test", "test");
+ loadedPolicy.setMatches(matches);
+ loadedPolicies.add(loadedPolicy);
+ notification.setLoadedPolicies(loadedPolicies);
+ NotificationStore.recordNotification(notification);
+ assertEquals(notification, NotificationStore.getNotificationRecord());
+ // Add new Notifications.
+ notification = new StdPDPNotification();
+ notification.setNotificationType(NotificationType.BOTH);
+ loadedPolicies = new ArrayList<>();
+ loadedPolicy = new StdLoadedPolicy();
+ loadedPolicy.setPolicyName("com.testing");
+ loadedPolicy.setUpdateType(UpdateType.UPDATE);
+ loadedPolicy.setVersionNo("2");
+ matches = new HashMap<>();
+ matches.put("test", "test");
+ loadedPolicy.setMatches(matches);
+ loadedPolicies.add(loadedPolicy);
+ notification.setLoadedPolicies(loadedPolicies);
+ List<StdRemovedPolicy> removedPolicies = new ArrayList<>();
+ StdRemovedPolicy removedPolicy = new StdRemovedPolicy();
+ removedPolicy.setPolicyName("com.testing");
+ removedPolicy.setVersionNo("1");
+ notification.setRemovedPolicies(removedPolicies);
+ NotificationStore.recordNotification(notification);
+ assertNotNull(NotificationStore.getNotificationRecord());
+ // Add new Notifications.
+ notification = new StdPDPNotification();
+ notification.setNotificationType(NotificationType.BOTH);
+ loadedPolicies = new ArrayList<>();
+ loadedPolicy = new StdLoadedPolicy();
+ loadedPolicy.setPolicyName("com.test.xml");
+ loadedPolicy.setUpdateType(UpdateType.NEW);
+ loadedPolicy.setVersionNo("2");
+ matches = new HashMap<>();
+ matches.put("test", "test");
+ loadedPolicy.setMatches(matches);
+ loadedPolicies.add(loadedPolicy);
+ notification.setLoadedPolicies(loadedPolicies);
+ removedPolicies = new ArrayList<>();
+ removedPolicy = new StdRemovedPolicy();
+ removedPolicy.setPolicyName("com.testing.xml");
+ removedPolicy.setVersionNo("2");
+ notification.setRemovedPolicies(removedPolicies);
+ NotificationStore.recordNotification(notification);
+ assertNotNull(NotificationStore.getNotificationRecord());
+ }
+
+}
diff --git a/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/PEDependencyTest.java b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/PEDependencyTest.java
new file mode 100644
index 000000000..4cc6c90f2
--- /dev/null
+++ b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/PEDependencyTest.java
@@ -0,0 +1,59 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineUtils
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.utils.test;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.maven.model.Exclusion;
+import org.junit.Test;
+import org.onap.policy.api.PEDependency;
+
+public class PEDependencyTest {
+
+ @Test
+ public void pojoTests(){
+ PEDependency pe = new PEDependency();
+ pe.setArtifactId("test");
+ pe.setGroupId("test");
+ pe.setVersion("1");
+ pe.setType("jar");
+ pe.setScope("test");
+ pe.setClassifier("pom");
+ List<Exclusion> exclusions = new ArrayList<>();
+ Exclusion e = new Exclusion();
+ e.setArtifactId("ex1");
+ e.setGroupId("eG");
+ exclusions.add(e);
+ pe.setExclusions(exclusions);
+ pe.getDependency();
+ assertEquals(exclusions, pe.getExclusions());
+ assertEquals("pom", pe.getClassifier());
+ assertEquals("test", pe.getScope());
+ assertEquals("jar", pe.getType());
+ assertEquals("1", pe.getVersion());
+ assertEquals("test", pe.getGroupId());
+ assertEquals("test", pe.getArtifactId());
+ }
+
+}
diff --git a/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/PolicyUtilsTest.java b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/PolicyUtilsTest.java
new file mode 100644
index 000000000..586ab356d
--- /dev/null
+++ b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/PolicyUtilsTest.java
@@ -0,0 +1,209 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineUtils
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.utils.test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.Base64;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Test;
+import org.onap.policy.api.NotificationType;
+import org.onap.policy.api.PDPNotification;
+import org.onap.policy.api.UpdateType;
+import org.onap.policy.std.StdLoadedPolicy;
+import org.onap.policy.std.StdPDPNotification;
+import org.onap.policy.std.StdRemovedPolicy;
+import org.onap.policy.utils.PolicyUtils;
+import org.onap.policy.utils.XMLErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+public class PolicyUtilsTest {
+
+ private static final String ERROR = "The Value in Required Field will allow only '{0-9}, {a-z}, {A-Z}, _' following set of Combinations";
+ private static final String SUCCESS = "success";
+
+ @Test
+ public void testJsonConversions() throws Exception{
+ StdPDPNotification notification = new StdPDPNotification();
+ notification.setNotificationType(NotificationType.BOTH);
+ Collection<StdRemovedPolicy> removedPolicies = new ArrayList<>();
+ Collection<StdLoadedPolicy> loadedPolicies = new ArrayList<>();
+ StdRemovedPolicy removedPolicy = new StdRemovedPolicy();
+ StdLoadedPolicy updatedPolicy = new StdLoadedPolicy();
+ removedPolicy.setPolicyName("Test");
+ removedPolicy.setVersionNo("1");
+ removedPolicies.add(removedPolicy);
+ updatedPolicy.setPolicyName("Testing");
+ updatedPolicy.setVersionNo("1");
+ updatedPolicy.setUpdateType(UpdateType.NEW);
+ Map<String, String> matches = new HashMap<>();
+ matches.put("key", "value");
+ updatedPolicy.setMatches(matches);
+ loadedPolicies.add(updatedPolicy);
+ notification.setRemovedPolicies(removedPolicies);
+ notification.setLoadedPolicies(loadedPolicies);
+
+ String json = PolicyUtils.objectToJsonString(notification);
+ PDPNotification getBackObject = PolicyUtils.jsonStringToObject(json, StdPDPNotification.class);
+ assertEquals(0,getBackObject.getNotificationType().compareTo(notification.getNotificationType()));
+
+ }
+
+ private String encodedValue(String input){
+ return new String(Base64.getEncoder().encode(input.getBytes()));
+ }
+
+ @Test
+ public void testDecode() throws Exception{
+ String value = "test";
+ assertEquals(value, PolicyUtils.decode(encodedValue(value)));
+ assertNull(PolicyUtils.decode(null));
+ assertNull(PolicyUtils.decode(""));
+ }
+
+ @Test
+ public void testBasicEncoding() throws Exception{
+ String userName = "test";
+ String key = "pass";
+ String[] decodedValue = PolicyUtils.decodeBasicEncoding("Basic "+encodedValue(userName+":"+key));
+ assertEquals(userName,decodedValue[0]);
+ assertEquals(key,decodedValue[1]);
+ assertEquals(0, PolicyUtils.decodeBasicEncoding(encodedValue(userName+":"+key)).length);
+ assertEquals(0, PolicyUtils.decodeBasicEncoding(null).length);
+ }
+
+ @Test
+ public void testSpecialCharValidator(){
+ assertEquals(ERROR, PolicyUtils.policySpecialCharValidator("$TEST_"));
+ assertEquals(ERROR, PolicyUtils.policySpecialCharValidator("$TEST _"));
+ assertEquals(ERROR, PolicyUtils.policySpecialCharValidator(""));
+ assertEquals(ERROR, PolicyUtils.policySpecialCharValidator("TæST"));
+ assertEquals(SUCCESS, PolicyUtils.policySpecialCharValidator("TEST"));
+ }
+
+ @Test
+ public void testSpecialCharWithSpaceValidator(){
+ assertEquals(ERROR, PolicyUtils.policySpecialCharWithSpaceValidator(""));
+ assertEquals(ERROR, PolicyUtils.policySpecialCharWithSpaceValidator("$TEST _"));
+ assertEquals(SUCCESS, PolicyUtils.policySpecialCharWithSpaceValidator("TE ST"));
+ }
+
+ @Test
+ public void testDescription() {
+ assertEquals(SUCCESS, PolicyUtils.descriptionValidator("Test"));
+ assertNotEquals(SUCCESS, PolicyUtils.descriptionValidator("@ModifiedBy:TesterB"));
+ assertNotEquals(SUCCESS, PolicyUtils.descriptionValidator("@CreatedBy:TesterA"));
+ }
+
+ @Test
+ public void testNonAscii(){
+ assertTrue(PolicyUtils.containsNonAsciiEmptyChars(null));
+ assertTrue(PolicyUtils.containsNonAsciiEmptyChars(""));
+ assertTrue(PolicyUtils.containsNonAsciiEmptyChars("T æST"));
+ assertTrue(PolicyUtils.containsNonAsciiEmptyChars("TæST"));
+ assertFalse(PolicyUtils.containsNonAsciiEmptyChars("TEST"));
+ }
+
+ @Test
+ public void testInteger(){
+ assertFalse(PolicyUtils.isInteger(null));
+ assertTrue(PolicyUtils.isInteger("123"));
+ assertFalse(PolicyUtils.isInteger("1a23"));
+ }
+
+ @Test
+ public void testEmailAddress(){
+ assertEquals(SUCCESS, PolicyUtils.validateEmailAddress("test@onap.org"));
+ assertNotEquals(SUCCESS, PolicyUtils.validateEmailAddress("test@onap"));
+ }
+
+ @Test
+ public void testBRMSValidate(){
+ String rule = "package com.sample;\n"
+ + "import com.sample.DroolsTest.Message;\n"
+ + "declare Params\n"
+ + "samPoll : int\n"
+ + "value : String\n"
+ + "end\n"
+ + "///This Rule will be generated by the UI.\n"
+ + "rule \"Create parameters structure\"\n"
+ + "salience 1000 \n"
+ + "when\n"
+ + "then\n"
+ + "Params params = new Params();\n"
+ + "params.setSamPoll(76);\n"
+ + "params.setValue(\"test\");\n"
+ + "insertLogical(params);\n"
+ + "end\n"
+ + "rule \"Rule 1: Check parameter structure access from when/then\"\n"
+ + "when\n"
+ + "$param: Params()\n"
+ + "Params($param.samPoll > 50)\n"
+ + "then\n"
+ + "System.out.println(\"Firing rule 1\");\n"
+ + "System.out.println($param);\n"
+ + "end\n";
+ assertEquals(PolicyUtils.brmsRawValidate(rule),"");
+ assertTrue(PolicyUtils.brmsRawValidate("error").contains("[ERR"));
+ assertFalse(PolicyUtils.brmsRawValidate("package com.att.ecomp.policy.controlloop.p_${unique};").contains("[ERR"));
+ }
+
+ @Test
+ public void testiIsJsonValid(){
+ assertTrue(PolicyUtils.isJSONValid("{\"test\":\"test\"}"));
+ String value = "{\"test\":\"test\", \"t1\": {\"test\": 12 , \"t2\":\"34\"},\"t2\":[{\"test\":\"val\"}]}";
+ assertTrue(PolicyUtils.isJSONValid(value));
+ assertFalse(PolicyUtils.isJSONValid("{\"test\":\"test"));
+ }
+
+ @Test
+ public void testIsXMLValid() throws SAXException{
+ XMLErrorHandler error = new XMLErrorHandler();
+ error.error(new SAXParseException(null, null));
+ error.warning(new SAXParseException(null, null));
+ assertTrue(PolicyUtils.isXMLValid("<test>123</test>"));
+ assertFalse(PolicyUtils.isXMLValid("<test>123</test"));
+ }
+
+ @Test
+ public void testIsPropValid(){
+ assertTrue(PolicyUtils.isPropValid("test=123\n\tval=123"));
+ assertFalse(PolicyUtils.isPropValid("test"));
+ assertFalse(PolicyUtils.isPropValid("test="));
+ assertTrue(PolicyUtils.isPropValid("#test\n\nval=123"));
+ }
+
+ @Test
+ public void testVersionStringToArray(){
+ assertTrue(PolicyUtils.versionStringToArray(null).length==0);
+ assertTrue(PolicyUtils.versionStringToArray("").length==0);
+ assertTrue(PolicyUtils.versionStringToArray("1.2.3").length==3);
+ }
+} \ No newline at end of file
diff --git a/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/testBackUpMonitor.java b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/testBackUpMonitor.java
new file mode 100644
index 000000000..afc3d0dce
--- /dev/null
+++ b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/testBackUpMonitor.java
@@ -0,0 +1,292 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineUtils
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.utils.test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
+import javax.persistence.Persistence;
+import javax.persistence.PersistenceException;
+import javax.persistence.Query;
+
+import org.eclipse.persistence.config.PersistenceUnitProperties;
+import org.junit.After;
+import org.junit.Test;
+import org.onap.policy.api.NotificationType;
+import org.onap.policy.api.UpdateType;
+import org.onap.policy.jpa.BackUpMonitorEntity;
+import org.onap.policy.std.NotificationStore;
+import org.onap.policy.std.StdLoadedPolicy;
+import org.onap.policy.std.StdPDPNotification;
+import org.onap.policy.std.StdRemovedPolicy;
+import org.onap.policy.utils.BackUpMonitor;
+import org.onap.policy.utils.BackUpMonitor.ResourceNode;
+import org.onap.policy.utils.BackUpMonitorException;
+import org.onap.policy.utils.PolicyUtils;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+
+
+public class testBackUpMonitor {
+
+ @Test (expected = PersistenceException.class)
+ public void backUpMonitorTestFail() throws Exception{
+ Properties properties = new Properties();
+ properties.setProperty("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
+ properties.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/xacml");
+ properties.setProperty("javax.persistence.jdbc.user", "policy_user");
+ properties.setProperty("javax.persistence.jdbc.password", "");
+ BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), "brms_test" , properties, new Handler());
+ }
+
+ @Test
+ public void backUpMonitorTestFailNoUser() throws Exception{
+ Properties properties = new Properties();
+ properties.setProperty("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
+ properties.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/xacml");
+ properties.setProperty("javax.persistence.jdbc.user", "");
+ properties.setProperty("javax.persistence.jdbc.password", "password");
+ BackUpMonitor bum = BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), "brms_test" , properties, new Handler());
+ assertNull(bum);
+ }
+
+ @Test
+ public void backUpMonitorTestFailNoURL() throws Exception{
+ Properties properties = new Properties();
+ properties.setProperty("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
+ properties.setProperty("javax.persistence.jdbc.url", "");
+ properties.setProperty("javax.persistence.jdbc.user", "test");
+ properties.setProperty("javax.persistence.jdbc.password", "password");
+ properties.setProperty("ping_interval", "500");
+ BackUpMonitor bum = BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), "brms_test" , properties, new Handler());
+ assertNull(bum);
+ }
+
+ @Test
+ public void backUpMonitorTestFailNoDriver() throws Exception{
+ Properties properties = new Properties();
+ properties.setProperty("javax.persistence.jdbc.driver", "");
+ properties.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/xacml");
+ properties.setProperty("javax.persistence.jdbc.user", "test");
+ properties.setProperty("javax.persistence.jdbc.password", "password");
+ properties.setProperty("ping_interval", "500");
+ BackUpMonitor bum = BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), "brms_test" , properties, new Handler());
+ assertNull(bum);
+ }
+
+ @Test
+ public void backUpMonitorTestFailNoNode() throws Exception{
+ Properties properties = new Properties();
+ properties.setProperty("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
+ properties.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/xacml");
+ properties.setProperty("javax.persistence.jdbc.user", "test");
+ properties.setProperty("javax.persistence.jdbc.password", "password");
+ properties.setProperty("ping_interval", "");
+ BackUpMonitor bum = BackUpMonitor.getInstance(null, "brms_test" , properties, new Handler());
+ assertNull(bum);
+ }
+
+ @Test
+ public void backUpMonitorTestFailNoResource() throws Exception{
+ Properties properties = new Properties();
+ properties.setProperty("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
+ properties.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/xacml");
+ properties.setProperty("javax.persistence.jdbc.user", "test");
+ properties.setProperty("javax.persistence.jdbc.password", "password");
+ BackUpMonitor bum = BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), null , properties, new Handler());
+ assertNull(bum);
+ }
+
+ @Test
+ public void backUpMonitorTestFailNoProperties() throws Exception{
+ BackUpMonitor bum = BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), "brms_test" , null, new Handler());
+ assertNull(bum);
+ }
+
+ @Test
+ public void backUpMonitorTestFailNoHandler() throws Exception{
+ Properties properties = new Properties();
+ properties.setProperty("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
+ properties.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/xacml");
+ properties.setProperty("javax.persistence.jdbc.user", "test");
+ properties.setProperty("javax.persistence.jdbc.password", "password");
+ properties.setProperty("ping_interval", "500");
+ BackUpMonitor bum = BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), "brms_test" , properties, null);
+ assertNull(bum);
+ }
+
+ @Test
+ public void backUpMonitorPingError() throws BackUpMonitorException {
+ Properties properties = new Properties();
+ properties.setProperty("javax.persistence.jdbc.driver", "org.h2.Driver");
+ properties.setProperty("javax.persistence.jdbc.url", "jdbc:h2:file:./sql/xacmlTest");
+ properties.setProperty("javax.persistence.jdbc.user", "sa");
+ properties.setProperty("javax.persistence.jdbc.password", "");
+ properties.setProperty("ping_interval", "123a");
+ properties.setProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, "META-INF/persistencePUtest.xml");
+ BackUpMonitor bum = BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), "brms_test" , properties, new Handler());
+ assertTrue(bum.getFlag());
+ }
+
+ @Test
+ public void backUpMonitorMasterTest() throws BackUpMonitorException, InterruptedException, JsonProcessingException {
+ Properties properties = new Properties();
+ // Master Check. Initial Run.
+ properties.setProperty("javax.persistence.jdbc.driver", "org.h2.Driver");
+ properties.setProperty("javax.persistence.jdbc.url", "jdbc:h2:file:./sql/xacmlTest");
+ properties.setProperty("javax.persistence.jdbc.user", "sa");
+ properties.setProperty("javax.persistence.jdbc.password", "");
+ properties.setProperty("ping_interval", "500");
+ properties.setProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, "META-INF/persistencePUtest.xml");
+ BackUpMonitor bum = BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), "brms_test" , properties, new Handler());
+ createPolicyNotification();
+ assertTrue(bum.getFlag());
+ // Start a slave check.
+ startSlave(properties);
+ updatePolicyNotification();
+ TimeUnit.MILLISECONDS.sleep(1500);
+ assertFalse(bum.getFlag());
+ // Get Back to Master test
+ TimeUnit.MILLISECONDS.sleep(2000);
+ assertTrue(bum.getFlag());
+ // No Master check.
+ changeALL(properties, "SLAVE");
+ TimeUnit.MILLISECONDS.sleep(2000);
+ assertTrue(bum.getFlag());
+ // No Master check.
+ changeALL(properties, "MASTER");
+ TimeUnit.MILLISECONDS.sleep(2000);
+ assertTrue(bum.getFlag());
+
+ }
+
+ private void updatePolicyNotification() {
+ StdPDPNotification notification = new StdPDPNotification();
+ notification.setNotificationType(NotificationType.BOTH);
+ List<StdLoadedPolicy> loadedPolicies = new ArrayList<>();
+ StdLoadedPolicy loadedPolicy = new StdLoadedPolicy();
+ loadedPolicy.setPolicyName("com.testing");
+ loadedPolicy.setUpdateType(UpdateType.UPDATE);
+ loadedPolicy.setVersionNo("2");
+ Map<String, String> matches = new HashMap<>();
+ matches.put("test", "test");
+ loadedPolicy.setMatches(matches);
+ loadedPolicies.add(loadedPolicy);
+ notification.setLoadedPolicies(loadedPolicies);
+ List<StdRemovedPolicy> removedPolicies = new ArrayList<>();
+ StdRemovedPolicy removedPolicy = new StdRemovedPolicy();
+ removedPolicy.setPolicyName("com.testing");
+ removedPolicy.setVersionNo("1");
+ notification.setRemovedPolicies(removedPolicies);
+ NotificationStore.recordNotification(notification);
+ }
+
+ private void createPolicyNotification() {
+ StdPDPNotification notification = new StdPDPNotification();
+ notification.setNotificationType(NotificationType.UPDATE);
+ List<StdLoadedPolicy> loadedPolicies = new ArrayList<>();
+ StdLoadedPolicy loadedPolicy = new StdLoadedPolicy();
+ loadedPolicy.setPolicyName("com.testing");
+ loadedPolicy.setUpdateType(UpdateType.NEW);
+ loadedPolicy.setVersionNo("1");
+ Map<String, String> matches = new HashMap<>();
+ matches.put("test", "test");
+ loadedPolicy.setMatches(matches);
+ loadedPolicies.add(loadedPolicy);
+ notification.setLoadedPolicies(loadedPolicies);
+ NotificationStore.recordNotification(notification);
+ }
+
+ private void changeALL(Properties properties, String flag) {
+ EntityManager em = Persistence.createEntityManagerFactory("PolicyEngineUtils", properties).createEntityManager();
+ EntityTransaction et = em.getTransaction();
+ et.begin();
+ Query query = em.createQuery("select b from BackUpMonitorEntity b where b.resourceNodeName = :nn");
+ query.setParameter("nn", ResourceNode.BRMS.toString());
+ for(Object bMValue: query.getResultList()){
+ BackUpMonitorEntity bmEntity = (BackUpMonitorEntity) bMValue;
+ bmEntity.setFlag(flag);
+ bmEntity.setTimeStamp(new Date());
+ }
+ em.flush();
+ et.commit();
+ }
+
+ private void startSlave(Properties properties) throws JsonProcessingException {
+ EntityManager em = Persistence.createEntityManagerFactory("PolicyEngineUtils", properties).createEntityManager();
+ EntityTransaction et = em.getTransaction();
+ et.begin();
+ Query query = em.createQuery("select b from BackUpMonitorEntity b where b.resourceNodeName = :nn");
+ query.setParameter("nn", ResourceNode.BRMS.toString());
+ List<?> bMList = query.getResultList();
+ BackUpMonitorEntity origBM = (BackUpMonitorEntity) bMList.get(0);
+ origBM.setFlag("SLAVE");
+ origBM.setTimeStamp(new Date());
+ BackUpMonitorEntity bMEntity = new BackUpMonitorEntity();
+ bMEntity.setResoruceNodeName(ResourceNode.BRMS.toString());
+ bMEntity.setResourceName("brms_test2");
+ bMEntity.setFlag("MASTER");
+ bMEntity.setTimeStamp(new Date());
+ StdPDPNotification notification = new StdPDPNotification();
+ notification.setNotificationType(NotificationType.UPDATE);
+ List<StdLoadedPolicy> loadedPolicies = new ArrayList<>();
+ StdLoadedPolicy loadedPolicy = new StdLoadedPolicy();
+ loadedPolicy.setPolicyName("com.test");
+ loadedPolicy.setUpdateType(UpdateType.NEW);
+ loadedPolicy.setVersionNo("1");
+ Map<String, String> matches = new HashMap<>();
+ matches.put("test", "test");
+ loadedPolicy.setMatches(matches);
+ loadedPolicies.add(loadedPolicy);
+ notification.setLoadedPolicies(loadedPolicies);
+ bMEntity.setNotificationRecord(PolicyUtils.objectToJsonString(notification));
+ em.persist(bMEntity);
+ em.persist(origBM);
+ em.flush();
+ et.commit();
+ }
+
+ @Test(expected = BackUpMonitorException.class)
+ public void testException() throws InterruptedException, BackUpMonitorException{
+ BackUpMonitor.stop();
+ new BackUpMonitorException();
+ new BackUpMonitorException(new Exception());
+ new BackUpMonitorException("error");
+ new BackUpMonitorException("error", new Exception());
+ throw new BackUpMonitorException("error", new Exception(), false, false);
+ }
+
+ @After
+ public void setup() throws InterruptedException{
+ BackUpMonitor.stop();
+ }
+}
diff --git a/PolicyEngineUtils/src/test/resources/META-INF/drop.ddl b/PolicyEngineUtils/src/test/resources/META-INF/drop.ddl
new file mode 100644
index 000000000..345f258b0
--- /dev/null
+++ b/PolicyEngineUtils/src/test/resources/META-INF/drop.ddl
@@ -0,0 +1 @@
+DROP TABLE IF EXISTS BackUpMonitorEntity \ No newline at end of file
diff --git a/PolicyEngineUtils/src/test/resources/META-INF/persistencePUtest.xml b/PolicyEngineUtils/src/test/resources/META-INF/persistencePUtest.xml
new file mode 100644
index 000000000..a73e6b3c5
--- /dev/null
+++ b/PolicyEngineUtils/src/test/resources/META-INF/persistencePUtest.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ============LICENSE_START=======================================================
+ PolicyEngineUtils ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ use this file except in compliance with the License. You may obtain a copy
+ of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
+ by applicable law or agreed to in writing, software distributed under the
+ License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+ OF ANY KIND, either express or implied. See the License for the specific
+ language governing permissions and limitations under the License. ============LICENSE_END========================================================= -->
+
+<persistence version="2.1"
+ xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
+ <persistence-unit name="PolicyEngineUtils"
+ transaction-type="RESOURCE_LOCAL">
+ <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+ <class>org.onap.policy.jpa.BackUpMonitorEntity</class>
+ <property name="javax.persistence.schema-generation.scripts.action"
+ value="drop-and-create" />
+ <property name="javax.persistence.schema-generation.scripts.create-target"
+ value="./src/test/resources/META-INF/generatedCreate.ddl" />
+ <property name="javax.persistence.schema-generation.scripts.drop-target"
+ value="./src/test/resources/META-INF/generatedDrop.ddl" />
+ <property name="javax.persistence.schema-generation.database.action"
+ value="drop-and-create" />
+ <property name="javax.persistence.schema-generation.create-source"
+ value="metadata-then-script" />
+ <property name="javax.persistence.schema-generation.drop-source"
+ value="script" />
+ <property name="javax.persistence.schema-generation.drop-script-source"
+ value="META-INF/drop.ddl" />
+ </persistence-unit>
+</persistence>
diff --git a/packages/base/src/files/install/servers/pdp/bin/xacml.pdp.properties b/packages/base/src/files/install/servers/pdp/bin/xacml.pdp.properties
index ac7a5bb7e..c9a73f6fa 100644
--- a/packages/base/src/files/install/servers/pdp/bin/xacml.pdp.properties
+++ b/packages/base/src/files/install/servers/pdp/bin/xacml.pdp.properties
@@ -108,6 +108,8 @@ xacml.rest.pap.userid=${{PDP_PAP_PDP_HTTP_USER_ID}}
xacml.rest.pap.password=${{PDP_PAP_PDP_HTTP_PASSWORD}}
# Delay for Notifications Don't change this. Value in milliSec.
xacml.rest.notification.delay=30
+# Client interval to ping notification service.
+CLIENT_INTERVAL=15000
# Request Buffer Size.
REQUEST_BUFFER_SIZE=5
#***Properties for IntegrityMonitor integration defined in XACMLRestProperties.java***