Merge "Add New Junit Tests For ONAP-XACML"
authorPamela Dragosh <pdragosh@research.att.com>
Fri, 22 Sep 2017 15:56:12 +0000 (15:56 +0000)
committerGerrit Code Review <gerrit@onap.org>
Fri, 22 Sep 2017 15:56:12 +0000 (15:56 +0000)
59 files changed:
BRMSGateway/config.properties
BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSHandler.java
BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSPush.java
LogParser/parserlog.properties
LogParser/src/test/java/org/onap/xacml/parser/ParseLogTest.java
LogParser/src/test/resources/test_config.properties
ONAP-PAP-REST/policyelk.properties
ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicy.java
ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/ClosedLoopDictionaryController.java
ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/FirewallDictionaryController.java
ONAP-PAP-REST/src/test/java/org/onap/policy/pap/ia/DbAuditCompareEntriesTest.java
ONAP-PAP-REST/src/test/java/org/onap/policy/pap/test/XACMLPAPTest.java
ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/FirewallConfigPolicyTest.java
ONAP-PAP-REST/xacml.pap.properties
ONAP-PDP-REST/pom.xml
ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/XACMLPdpServlet.java
ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/XACMLPdpServletTest.java
ONAP-PDP-REST/src/test/resources/META-INF/drop.ddl [new file with mode: 0644]
ONAP-PDP-REST/src/test/resources/META-INF/persistence.xml [new file with mode: 0644]
ONAP-PDP-REST/src/test/resources/fail.xacml.pdp.properties
ONAP-PDP-REST/src/test/resources/notification.xacml.pdp.properties
ONAP-PDP-REST/src/test/resources/pass.xacml.pdp.properties
ONAP-PDP-REST/src/test/resources/xacml.pdp.properties [new file with mode: 0644]
ONAP-PDP-REST/xacml.pdp.properties
ONAP-SDK-APP/src/main/webapp/WEB-INF/conf/system.properties
ONAP-SDK-APP/xacml.admin.properties
ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdEngineTest.java [new file with mode: 0644]
ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdPAPPolicyTest.java [new file with mode: 0644]
POLICY-SDK-APP/src/main/java/org/onap/policy/admin/CheckPDP.java
POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyManagerServlet.java
POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyNotificationMail.java
POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyRestController.java
POLICY-SDK-APP/src/main/java/org/onap/policy/components/HumanPolicyComponent.java
POLICY-SDK-APP/src/main/java/org/onap/policy/conf/HibernateSession.java
POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopPMController.java
POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateFirewallController.java
POLICY-SDK-APP/src/main/java/org/onap/policy/daoImp/SystemLogDbDaoImpl.java
POLICY-SDK-APP/src/main/webapp/WEB-INF/conf/system.properties
POLICY-SDK-APP/src/test/java/org/onap/policy/admin/CheckPDPTest.java [new file with mode: 0644]
POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyManagerServletTest.java
POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyNotificationMailTest.java [new file with mode: 0644]
POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyRestControllerTest.java [new file with mode: 0644]
POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyUserInfoControllerTest.java
POLICY-SDK-APP/src/test/java/org/onap/policy/daoImp/CommonClassDaoImplTest.java
POLICY-SDK-APP/src/test/resources/test.properties [new file with mode: 0644]
POLICY-SDK-APP/src/test/resources/xacml.admin.properties
PolicyEngineUtils/src/main/java/org/onap/policy/api/LoadedPolicy.java
PolicyEngineUtils/src/main/java/org/onap/policy/api/NotificationHandler.java
PolicyEngineUtils/src/main/java/org/onap/policy/api/NotificationType.java
PolicyEngineUtils/src/main/java/org/onap/policy/api/PDPNotification.java
PolicyEngineUtils/src/main/java/org/onap/policy/api/RemovedPolicy.java
PolicyEngineUtils/src/main/java/org/onap/policy/api/UpdateType.java
PolicyEngineUtils/src/main/java/org/onap/policy/jpa/BackUpMonitorEntity.java
PolicyEngineUtils/src/main/java/org/onap/policy/std/NotificationStore.java
PolicyEngineUtils/src/main/java/org/onap/policy/std/StdPDPNotification.java
PolicyEngineUtils/src/main/java/org/onap/policy/utils/BackUpMonitor.java
PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/testBackUpMonitor.java
packages/install/src/files/base.conf
pom.xml

index 762f0ff..fa5f919 100644 (file)
@@ -57,9 +57,9 @@ vDNS.artifactID= policy-vDNS-rules
 
 #Integrity Monitor values
 #database driver for Integrity Monitor
-javax.persistence.jdbc.driver=com.mysql.jdbc.Driver
+javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
 #database URL for Integrity Monitor
-javax.persistence.jdbc.url=jdbc:mysql://localhost:3306/xacml
+javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk
 #database username for Integrity Monitor
 javax.persistence.jdbc.user=policy_user
 #database password for Integrity Monitor
index 4303186..a11e8b4 100644 (file)
@@ -95,7 +95,7 @@ public class BRMSHandler implements BackUpHandler{
                                }
                        }
                }
-               Boolean failureFlag = false;
+               Boolean failureFlag;
                int i = 0;
                do{
                        failureFlag = false;
@@ -118,6 +118,7 @@ public class BRMSHandler implements BackUpHandler{
         * (non-Javadoc)
         * @see org.onap.policy.utils.BackUpHandler#runOnNotification(org.onap.policy.api.PDPNotification)
         */
+       @Override
        public void runOnNotification(PDPNotification notification){
                if(notification.getNotificationType().equals(NotificationType.REMOVE)){
                        removedPolicies(notification.getRemovedPolicies());
index c923c3c..6e8588a 100644 (file)
@@ -388,11 +388,11 @@ public class BRMSPush {
                     selectedName = responseAttributes.get(key);
                 }
                 // kmodule configurations
-                else if (key.equals("kSessionName")) {
+                else if ("kSessionName".equals(key)) {
                     kSessionName = responseAttributes.get(key);
                 }
                 // Check User Specific values.
-                if (key.equals("$controller:")) {
+                if ("$controller:".equals(key)) {
                     try {
                         PEDependency dependency = PolicyUtils.jsonStringToObject(responseAttributes.get(key),
                                 PEDependency.class);
@@ -402,7 +402,7 @@ public class BRMSPush {
                         LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while resolving Controller: " + e);
                     }
 
-                } else if (key.equals("$dependency$")) {
+                } else if ("$dependency$".equals(key)) {
                     String value = responseAttributes.get(key);
                     if (value.startsWith("[") && value.endsWith("]")) {
                         value = value.substring(1, value.length() - 1).trim();
@@ -500,7 +500,7 @@ public class BRMSPush {
         List<?> pList = query.getResultList();
         boolean createFlag = false;
         BRMSPolicyInfo brmsPolicyInfo = new BRMSPolicyInfo();
-        if (pList.size() > 0) {
+        if (!pList.isEmpty()) {
             // Already exists.
             brmsPolicyInfo = (BRMSPolicyInfo) pList.get(0);
             if (!brmsPolicyInfo.getControllerName().getControllerName().equals(controllerName)) {
@@ -514,7 +514,7 @@ public class BRMSPush {
             query.setParameter("cn", controllerName);
             List<?> bList = query.getResultList();
             BRMSGroupInfo brmsGroupInfo = new BRMSGroupInfo();
-            if (bList.size() > 0) {
+            if (!bList.isEmpty()) {
                 brmsGroupInfo = (BRMSGroupInfo) bList.get(0);
             }
             brmsPolicyInfo.setPolicyName(policyName);
@@ -528,7 +528,7 @@ public class BRMSPush {
     private void syncProject(String selectedName) {
         boolean projectExists = checkProject(selectedName);
         if (projectExists) {
-            String version = null;
+            String version;
             version = getVersion(selectedName);
             if (version == null) {
                 LOGGER.error("Error getting local version for the given Controller Name:" + selectedName
@@ -599,7 +599,6 @@ public class BRMSPush {
                 }
                 fos.close();
                 is.close();
-                f = null;
                 LOGGER.info(fileName + " Created..");
             }
         }
@@ -641,7 +640,7 @@ public class BRMSPush {
 
     private boolean checkRemoteSync(String selectedName, String version) {
         List<NexusArtifact> artifacts = getArtifactFromNexus(selectedName, version);
-        return (artifacts.size() == 0) ? false : true;
+        return artifacts.isEmpty() ? false : true;
     }
 
     private List<NexusArtifact> getArtifactFromNexus(String selectedName, String version) {
@@ -690,7 +689,7 @@ public class BRMSPush {
         if (artifact != null) {
             newVersion = incrementVersion(artifact.getVersion());
         }
-        if (newVersion.equals("0.1.0")) {
+        if ("0.1.0".equals(newVersion)) {
             createFlag = true;
         }
         setVersion(newVersion, selectedName);
@@ -736,8 +735,9 @@ public class BRMSPush {
         }
         if (!modifiedGroups.isEmpty()) {
             Boolean flag = false;
-            for (String group : modifiedGroups.keySet()) {
+            for (Map.Entry<String, String> entry : modifiedGroups.entrySet()) {
                 InvocationResult result = null;
+               String group = entry.getKey();
                 try {
                     InvocationRequest request = new DefaultInvocationRequest();
                     setVersion(group);
@@ -761,7 +761,7 @@ public class BRMSPush {
                     if (createFlag) {
                         addNotification(group, "create");
                     } else {
-                        addNotification(group, modifiedGroups.get(group));
+                        addNotification(group, entry.getValue());
                     }
                     flag = true;
                 } else {
@@ -795,7 +795,7 @@ public class BRMSPush {
             return policyMap.get(name);
         } else {
             syncGroupInfo();
-            return (policyMap.containsKey(name)) ? policyMap.get(name) : null;
+            return policyMap.containsKey(name) ? policyMap.get(name) : null;
         }
     }
 
@@ -869,7 +869,7 @@ public class BRMSPush {
             pub.send("MyPartitionKey", message);
 
             final List<?> stuck = pub.close(uebDelay, TimeUnit.SECONDS);
-            if (stuck.size() > 0) {
+            if (!stuck.isEmpty()) {
                 LOGGER.error(stuck.size() + " messages unsent");
             } else {
                 LOGGER.debug("Clean exit; Message Published on UEB : " + uebList + "for Topic: " + pubTopic);
@@ -1018,7 +1018,7 @@ public class BRMSPush {
     }
 
     private void readGroups(Properties config) throws PolicyException {
-        String[] groupNames = null;
+        String[] groupNames;
         if (!config.containsKey("groupNames") || config.getProperty("groupNames")==null){
             throw new PolicyException(XACMLErrorConstants.ERROR_DATA_ISSUE
                     + "groupNames property is missing or empty from the property file ");
@@ -1069,7 +1069,7 @@ public class BRMSPush {
         query.setParameter("cn", name);
         List<?> groupList = query.getResultList();
         BRMSGroupInfo brmsGroupInfo = null;
-        if (groupList.size() > 0) {
+        if (!groupList.isEmpty()) {
             LOGGER.info("Controller name already Existing in DB. Will be updating the DB Values" + name);
             brmsGroupInfo = (BRMSGroupInfo) groupList.get(0);
         }
@@ -1122,8 +1122,8 @@ public class BRMSPush {
         Query query = em.createQuery("select b from BRMSPolicyInfo as b where b.policyName = :pn");
         query.setParameter("pn", policyName);
         List<?> pList = query.getResultList();
-        BRMSPolicyInfo brmsPolicyInfo = new BRMSPolicyInfo();
-        if (pList.size() > 0) {
+        BRMSPolicyInfo brmsPolicyInfo;
+        if (!pList.isEmpty()) {
             // Already exists.
             brmsPolicyInfo = (BRMSPolicyInfo) pList.get(0);
             if (brmsPolicyInfo.getControllerName().getControllerName().equals(controllerName)) {
index 4a5ecdb..66ce34d 100644 (file)
 
 #Health Check Values
 RESOURCE_NAME=logparser_pap01
-javax.persistence.jdbc.driver=com.mysql.jdbc.Driver
-javax.persistence.jdbc.url=jdbc:mysql://localhost:3306/onap_sdk
+javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
+javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk
 javax.persistence.jdbc.user=policy_user
 javax.persistence.jdbc.password=policy_user
 
 #Log Parser application values
-JDBC_DRIVER=com.mysql.jdbc.Driver
-JDBC_URL=jdbc:mysql://localhost:3306/log
+JDBC_DRIVER=org.mariadb.jdbc.Driver
+JDBC_URL=jdbc:mariadb://localhost:3306/log
 JDBC_USER=policy_user
 JDBC_PASSWORD=policy_user
 SERVER=https://localhost:9091/pap/
index c12797f..1f42ac3 100644 (file)
@@ -122,8 +122,8 @@ public class ParseLogTest {
                
                config = new Properties();
                config.put("RESOURCE_NAME", "logparser_pap01");
-               config.put("JDBC_DRIVER" ,"com.mysql.jdbc.Driver");
-               config.put("JDBC_URL", "jdbc:mysql://localhost:3306/");
+               config.put("JDBC_DRIVER" ,"org.mariadb.jdbc.Driver");
+               config.put("JDBC_URL", "jdbc:mariadb://localhost:3306/");
                config.put("JDBC_USER", "root");
                config.put("JDBC_PASSWORD", "password");
                config.put("JMX_URL", "service:jmx:rmi:///jndi/rmi://localhost:9998/jmxrmi");
index 6512184..ca2b9ed 100644 (file)
@@ -20,8 +20,8 @@
 
 
 RESOURCE_NAME=logparser_pap01
-JDBC_DRIVER=com.mysql.jdbc.Driver
-JDBC_URL=jdbc:mysql://localhost:3306/
+JDBC_DRIVER=org.mariadb.jdbc.Driver
+JDBC_URL=jdbc:mariadb://localhost:3306/
 JDBC_USER=root
 JDBC_PASSWORD=password
 jmx_url=service:jmx:rmi:///jndi/rmi://localhost:9996/jmxrmi
index 386008c..d07fab9 100644 (file)
@@ -24,7 +24,7 @@ policy.elk.url=http://localhost:9200
  
  
 #Policy Database properties
-policy.database.driver=com.mysql.jdbc.Driver
-policy.database.url=jdbc:mysql://localhost:3306/onap_sdk?autoReconnect=true&useSSL=false
+policy.database.driver=org.mariadb.jdbc.Driver
+policy.database.url=jdbc:mariadb://localhost:3306/onap_sdk?autoReconnect=true&useSSL=false
 policy.database.username=policy_user
 policy.database.password=policy_user
\ No newline at end of file
index eae3e79..d870ca8 100644 (file)
@@ -63,6 +63,7 @@ import org.onap.policy.xacml.api.XACMLErrorConstants;
 import org.onap.policy.xacml.std.pip.engines.aaf.AAFEngine;
 import org.onap.policy.xacml.util.XACMLPolicyScanner;
 
+import com.att.research.xacml.api.XACML3;
 import com.att.research.xacml.api.pap.PAPException;
 import com.att.research.xacml.std.IdentifierImpl;
 
@@ -423,7 +424,6 @@ public class DecisionPolicy extends Policy {
                        // Values for AAF Provider are here for XML Creation. 
                        ConditionType condition = new ConditionType();
                        ApplyType decisionApply = new ApplyType();
-                       String selectedFunction = "boolean-equal";
                        
                        AttributeValueType value1 = new AttributeValueType();
                        value1.setDataType(BOOLEAN_DATATYPE);
@@ -439,7 +439,7 @@ public class DecisionPolicy extends Policy {
                        innerDecisionApply.setFunctionId(FUNCTION_BOOLEAN_ONE_AND_ONLY);
                        innerDecisionApply.getExpression().add(new ObjectFactory().createAttributeDesignator(value2));
                        
-                       decisionApply.setFunctionId(dropDownMap.get(selectedFunction));
+                       decisionApply.setFunctionId(XACML3.ID_FUNCTION_BOOLEAN_EQUAL.stringValue());
                        decisionApply.getExpression().add(new ObjectFactory().createAttributeValue(value1));
                        decisionApply.getExpression().add(new ObjectFactory().createApply(innerDecisionApply));
                        condition.setExpression(new ObjectFactory().createApply(decisionApply));
index d142a46..675c825 100644 (file)
@@ -35,6 +35,7 @@ import org.json.JSONObject;
 import org.onap.policy.common.logging.flexlogger.FlexLogger;
 import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.pap.xacml.rest.adapters.GridData;
+import org.onap.policy.pap.xacml.rest.daoimpl.CommonClassDaoImpl;
 import org.onap.policy.pap.xacml.rest.util.JsonMessage;
 import org.onap.policy.rest.dao.CommonClassDao;
 import org.onap.policy.rest.jpa.ClosedLoopD2Services;
@@ -1042,6 +1043,10 @@ public class ClosedLoopDictionaryController{
                }
                return null;
        }
+       
+    public static void setCommonClassDao(CommonClassDaoImpl commonClassDaoImpl) {
+        commonClassDao = commonClassDaoImpl;
+    }
 
 }
 
index 86706d1..3a4d7b7 100644 (file)
@@ -103,6 +103,11 @@ public class FirewallDictionaryController {
        public FirewallDictionaryController(CommonClassDao commonClassDao){
                FirewallDictionaryController.commonClassDao = commonClassDao;
        }
+       
+       public static void setCommonClassDao(CommonClassDao clDao){
+           commonClassDao = clDao;
+       }
+       
        /*
         * This is an empty constructor
         */
index f913c18..13255ba 100644 (file)
@@ -233,7 +233,7 @@ public class DbAuditCompareEntriesTest {
                 
                
                entry1.setFlag("flag1");
-               entry1.setResoruceNodeName("node1");
+               entry1.setResourceNodeName("node1");
                entry1.setResourceName("resourceName");
                entry1.setTimeStamp(new Date());
                
index f110c5b..0463585 100644 (file)
@@ -23,11 +23,15 @@ package org.onap.policy.pap.test;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import java.io.BufferedReader;
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Properties;
 
 import javax.servlet.ServletConfig;
@@ -43,8 +47,14 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.onap.policy.pap.xacml.rest.XACMLPapServlet;
+import org.onap.policy.pap.xacml.rest.controller.ClosedLoopDictionaryController;
+import org.onap.policy.pap.xacml.rest.controller.FirewallDictionaryController;
 import org.onap.policy.pap.xacml.rest.daoimpl.CommonClassDaoImpl;
 import org.onap.policy.pap.xacml.rest.policycontroller.PolicyCreation;
+import org.onap.policy.rest.dao.CommonClassDao;
+import org.onap.policy.rest.jpa.BRMSParamTemplate;
+import org.onap.policy.rest.jpa.PolicyEditorScopes;
+import org.onap.policy.rest.jpa.UserInfo;
 import org.onap.policy.utils.PolicyUtils;
 import org.onap.policy.xacml.std.pap.StdPAPPolicy;
 import org.springframework.mock.web.MockHttpServletResponse;
@@ -84,7 +94,7 @@ public class XACMLPAPTest {
     @Test
     public void testFirwallCreatePolicy() throws IOException, ServletException, SQLException {
         httpServletRequest = Mockito.mock(HttpServletRequest.class);
-        String json = "";
+        String json = "{\"serviceTypeId\":\"/v0/firewall/pan\",\"configName\":\"TestFwPolicyConfig\",\"deploymentOption\":{\"deployNow\":false},\"securityZoneId\":\"cloudsite:dev1a\",\"serviceGroups\":[{\"name\":\"SSH\",\"description\":\"Sshservice entry in servicelist\",\"type\":\"SERVICE\",\"transportProtocol\":\"tcp\",\"appProtocol\":null,\"ports\":\"22\"}],\"addressGroups\":[{\"name\":\"test\",\"description\":\"Destination\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/12\"}]},{\"name\":\"TestServers\",\"description\":\"SourceTestServers for firsttesting\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/23\"}]}],\"firewallRuleList\":[{\"position\":\"1\",\"ruleName\":\"FWRuleTestServerToTest\",\"fromZones\":[\"UntrustedZoneTestName\"],\"toZones\":[\"TrustedZoneTestName\"],\"negateSource\":false,\"negateDestination\":false,\"sourceList\":[{\"type\":\"REFERENCE\",\"name\":\"TestServers\"}],\"destinationList\":[{\"type\":\"REFERENCE\",\"name\":\"Test\"}],\"sourceServices\":[],\"destServices\":[{\"type\":\"REFERENCE\",\"name\":\"SSH\"}],\"action\":\"accept\",\"description\":\"FWrule for Test source to Test destination\",\"enabled\":true,\"log\":true}]}";
         Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL");
         Mockito.when(httpServletRequest.getMethod()).thenReturn("PUT");
         Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api");
@@ -102,10 +112,429 @@ public class XACMLPAPTest {
         Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
         Mockito.verify(httpServletResponse).addHeader("successMapKey", "success");
         Mockito.verify(httpServletResponse).addHeader("policyName", "test.Config_FW_test.1.xml");
+    }
+    
+    @Test
+    public void testBRMSCreatePolicy() throws IOException, ServletException, SQLException {
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL");
+        Mockito.when(httpServletRequest.getMethod()).thenReturn("PUT");
+        Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api");
+        Mockito.when(httpServletRequest.getParameter("operation")).thenReturn("create");
+        Mockito.when(httpServletRequest.getParameter("policyType")).thenReturn("Config");
+        Map<String, String> matchingAttributes = new HashMap<>();
+        Map<String, String> ruleAttributes = new HashMap<>();
+        ruleAttributes.put("templateName", "testPolicy");
+        ruleAttributes.put("samPoll", "5");
+        ruleAttributes.put("value", "test");
+        StdPAPPolicy newPAPPolicy = new StdPAPPolicy("BRMS_Param","test", "testing",
+                "BRMS_PARAM_RULE",false,"test", 
+                matchingAttributes, 0, "DROOLS", 
+                null, ruleAttributes, "5",
+                "default", "false", "", null, null);
+        MockServletInputStream mockInput = new MockServletInputStream(PolicyUtils.objectToJsonString(newPAPPolicy).getBytes());
+        Mockito.when(httpServletRequest.getInputStream()).thenReturn(mockInput);
+        
+        // set DBDao
+        setDBDao();
+        setPolicyCreation();
+        pap.service(httpServletRequest, httpServletResponse);
+        
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        Mockito.verify(httpServletResponse).addHeader("successMapKey", "success");
+        Mockito.verify(httpServletResponse).addHeader("policyName", "test.Config_BRMS_Param_test.1.xml");
+    }
+    
+    @Test
+    public void testBRMSRawCreatePolicy() throws IOException, ServletException, SQLException {
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL");
+        Mockito.when(httpServletRequest.getMethod()).thenReturn("PUT");
+        Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api");
+        Mockito.when(httpServletRequest.getParameter("operation")).thenReturn("create");
+        Mockito.when(httpServletRequest.getParameter("policyType")).thenReturn("Config");
+        Map<String, String> ruleAttributes = new HashMap<>();
+        ruleAttributes.put("value", "test");
+        StdPAPPolicy newPAPPolicy = new StdPAPPolicy("BRMS_Raw","test","testig description",
+                "BRMS_RAW_RULE",false,"test", ruleAttributes, 0, "DROOLS", 
+                "test", "4",
+                "default", "false", null,  null, null);
+        MockServletInputStream mockInput = new MockServletInputStream(PolicyUtils.objectToJsonString(newPAPPolicy).getBytes());
+        Mockito.when(httpServletRequest.getInputStream()).thenReturn(mockInput);
+        
+        // set DBDao
+        setDBDao();
+        setPolicyCreation();
+        pap.service(httpServletRequest, httpServletResponse);
+        
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        Mockito.verify(httpServletResponse).addHeader("successMapKey", "success");
+        Mockito.verify(httpServletResponse).addHeader("policyName", "test.Config_BRMS_Raw_test.1.xml");
+    }
+    
+    @Test
+    public void testClosedLoopPMCreatePolicy() throws IOException, ServletException, SQLException {
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL");
+        Mockito.when(httpServletRequest.getMethod()).thenReturn("PUT");
+        Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api");
+        Mockito.when(httpServletRequest.getParameter("operation")).thenReturn("create");
+        Mockito.when(httpServletRequest.getParameter("policyType")).thenReturn("Config");
+        String json = "{\"test\":\"java\"}";
+        StdPAPPolicy newPAPPolicy = new StdPAPPolicy("ClosedLoop_PM", "test", "testing", "onap", 
+                json, false, null, "Registration Failure(Trinity)", false, "test", 0, null,
+                "default", "true", ""); 
+        MockServletInputStream mockInput = new MockServletInputStream(PolicyUtils.objectToJsonString(newPAPPolicy).getBytes());
+        Mockito.when(httpServletRequest.getInputStream()).thenReturn(mockInput);
+        
+        // set DBDao
+        setDBDao();
+        setPolicyCreation();
+        pap.service(httpServletRequest, httpServletResponse);
+        
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        Mockito.verify(httpServletResponse).addHeader("successMapKey", "success");
+        Mockito.verify(httpServletResponse).addHeader("policyName", "test.Config_PM_test.1.xml");
+    }
+    
+    @Test
+    public void testDecisonAAFPolicy() throws IOException, ServletException, SQLException {
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL");
+        Mockito.when(httpServletRequest.getMethod()).thenReturn("PUT");
+        Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api");
+        Mockito.when(httpServletRequest.getParameter("operation")).thenReturn("create");
+        Mockito.when(httpServletRequest.getParameter("policyType")).thenReturn("Decision");
+        StdPAPPolicy newPAPPolicy = new StdPAPPolicy("test", "test rule", "ONAP", "AAF", null, null, null, 
+                null, null, null, null, null, null, false, "test", 0);
+        MockServletInputStream mockInput = new MockServletInputStream(PolicyUtils.objectToJsonString(newPAPPolicy).getBytes());
+        Mockito.when(httpServletRequest.getInputStream()).thenReturn(mockInput);
+        
+        // set DBDao
+        setDBDao();
+        pap.service(httpServletRequest, httpServletResponse);
+        
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        Mockito.verify(httpServletResponse).addHeader("successMapKey", "success");
+        Mockito.verify(httpServletResponse).addHeader("policyName", "test.Decision_test.1.xml");
+    }
+    
+    @Test
+    public void testDecisonGuardPolicy() throws IOException, ServletException, SQLException {
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL");
+        Mockito.when(httpServletRequest.getMethod()).thenReturn("PUT");
+        Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api");
+        Mockito.when(httpServletRequest.getParameter("operation")).thenReturn("create");
+        Mockito.when(httpServletRequest.getParameter("policyType")).thenReturn("Decision");
+        Map<String, String> matchingAttributes = new HashMap<>();
+        matchingAttributes.put("actor","test");
+        matchingAttributes.put("recipe","restart");
+        matchingAttributes.put("targets","test,test1");
+        matchingAttributes.put("clname","");
+        matchingAttributes.put("limit","1");
+        matchingAttributes.put("timeWindow","15");
+        matchingAttributes.put("timeUnits","minute");
+        matchingAttributes.put("guardActiveStart","05:00");
+        matchingAttributes.put("guardActiveEnd","10:00");
+        StdPAPPolicy newPAPPolicy = new StdPAPPolicy("testGuard", "test rule", "PDPD", "GUARD_YAML", matchingAttributes , null, null, 
+                null, null, null, null, null, null, false, "test", 0);
+        MockServletInputStream mockInput = new MockServletInputStream(PolicyUtils.objectToJsonString(newPAPPolicy).getBytes());
+        Mockito.when(httpServletRequest.getInputStream()).thenReturn(mockInput);
+        
+        // set DBDao
+        setDBDao();
+        pap.service(httpServletRequest, httpServletResponse);
+        
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        Mockito.verify(httpServletResponse).addHeader("successMapKey", "success");
+        Mockito.verify(httpServletResponse).addHeader("policyName", "test.Decision_testGuard.1.xml");
+    }
+    
+    @Test
+    public void testDecisonBLGuardPolicy() throws IOException, ServletException, SQLException {
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL");
+        Mockito.when(httpServletRequest.getMethod()).thenReturn("PUT");
+        Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api");
+        Mockito.when(httpServletRequest.getParameter("operation")).thenReturn("create");
+        Mockito.when(httpServletRequest.getParameter("policyType")).thenReturn("Decision");
+        Map<String, String> matchingAttributes = new HashMap<>();
+        matchingAttributes.put("actor","test");
+        matchingAttributes.put("recipe","restart");
+        matchingAttributes.put("clname","test");
+        matchingAttributes.put("guardActiveStart","05:00");
+        matchingAttributes.put("guardActiveEnd","10:00");
+        matchingAttributes.put("blackList","bl1,bl2");
+        StdPAPPolicy newPAPPolicy = new StdPAPPolicy("testblGuard", "test rule", "PDPD", "GUARD_BL_YAML", matchingAttributes , null, null, 
+                null, null, null, null, null, null, false, "test", 0);
+        MockServletInputStream mockInput = new MockServletInputStream(PolicyUtils.objectToJsonString(newPAPPolicy).getBytes());
+        Mockito.when(httpServletRequest.getInputStream()).thenReturn(mockInput);
+        
+        // set DBDao
+        setDBDao();
+        pap.service(httpServletRequest, httpServletResponse);
         
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        Mockito.verify(httpServletResponse).addHeader("successMapKey", "success");
+        Mockito.verify(httpServletResponse).addHeader("policyName", "test.Decision_testblGuard.1.xml");
     }
     
+    @Test
+    public void testConfigPolicy() throws IOException, ServletException, SQLException {
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL");
+        Mockito.when(httpServletRequest.getMethod()).thenReturn("PUT");
+        Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api");
+        Mockito.when(httpServletRequest.getParameter("operation")).thenReturn("create");
+        Mockito.when(httpServletRequest.getParameter("policyType")).thenReturn("Config");
+        Map<String, String> configAttributes = new HashMap<>();
+        configAttributes.put("value", "test");
+        StdPAPPolicy newPAPPolicy = new StdPAPPolicy("Base", "test", "test rule", "TEST", "config", configAttributes, "OTHER", 
+                "test body", false, "test",0, "5","default", "false", null);
+        MockServletInputStream mockInput = new MockServletInputStream(PolicyUtils.objectToJsonString(newPAPPolicy).getBytes());
+        Mockito.when(httpServletRequest.getInputStream()).thenReturn(mockInput);
+        
+        // set DBDao
+        setDBDao();
+        pap.service(httpServletRequest, httpServletResponse);
+        
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        Mockito.verify(httpServletResponse).addHeader("successMapKey", "success");
+        Mockito.verify(httpServletResponse).addHeader("policyName", "test.Config_test.1.xml");
+    }
+    
+    private void setPolicyCreation() {
+        CommonClassDao commonClassDao = Mockito.mock(CommonClassDao.class);
+        PolicyCreation.setCommonClassDao(commonClassDao);
+        PolicyEditorScopes editorScope = new PolicyEditorScopes();
+        UserInfo userInfo = new UserInfo();
+        userInfo.setUserName("API");
+        userInfo.setUserLoginId("API");
+        editorScope.setScopeName("test");
+        editorScope.setUserCreatedBy(userInfo);
+        editorScope.setUserModifiedBy(userInfo);
+        Mockito.when(commonClassDao.getEntityItem(PolicyEditorScopes.class, "scopeName", "test")).thenReturn(editorScope);
+        BRMSParamTemplate template = new BRMSParamTemplate();
+        template.setRuleName("testPolicy");
+        template.setUserCreatedBy(userInfo);
+        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 \"${policyName}.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";
+        template.setRule(rule );
+        Mockito.when(commonClassDao.getEntityItem(BRMSParamTemplate.class, "ruleName", "testPolicy")).thenReturn(template);
+        
+    }
     
+    @Test
+    public void testClosedLoopCreateDictionary() throws IOException, SQLException, ServletException {
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        // Check VSCLAction. 
+        String json = "{\"dictionaryFields\": {\"vsclaction\": \"testRestAPI\",\"description\": \"testing create\"}}";
+        dictionaryTestSetup(false, "VSCLAction", json);
+        // set DBDao
+        ClosedLoopDictionaryController.setCommonClassDao(new CommonClassDaoImpl());
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check VNFType
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\": {\"vnftype\": \"testrestAPI1\",\"description\": \"testing create\"}}";
+        dictionaryTestSetup(false, "VNFType", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check PEPOptions
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"pepName\":\"testRestAPI\",\"description\":\"testing create\",\"attributes\":[{\"option\":\"test1\",\"number\":\"test\"},{\"option\":\"test2\",\"number\":\"test\"}]}}";
+        dictionaryTestSetup(false, "PEPOptions", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check Varbind
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"varbindName\":\"testRestAPI\",\"varbindDescription\":\"testing\",\"varbindOID\":\"test\"}}";
+        dictionaryTestSetup(false, "Varbind", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check Service
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"serviceName\":\"testRestAPI\",\"description\":\"testing\"}}";
+        dictionaryTestSetup(false, "Service", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check Site
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"siteName\":\"testRestAPI\",\"description\":\"testing\"}}";
+        dictionaryTestSetup(false, "Site", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+    }
+
+    @Test
+    public void testFirewallCreateDictionary() throws IOException, SQLException, ServletException {
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        // Check SecurityZone. 
+        String json = "{\"dictionaryFields\":{\"zoneName\":\"testRestAPI\",\"zoneValue\":\"testing\"}}";
+        dictionaryTestSetup(false, "SecurityZone", json);
+        // set DBDao
+        FirewallDictionaryController.setCommonClassDao(new CommonClassDaoImpl());
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check Action List
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"actionName\":\"testRestAPI\",\"description\":\"test\"}}";
+        dictionaryTestSetup(false, "ActionList", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check Protocol List. 
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"protocolName\":\"testRestAPI\",\"description\":\"test\"}}";
+        dictionaryTestSetup(false, "ProtocolList", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check Zone. 
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"zoneName\":\"testRestAPI\",\"zoneValue\":\"test\"}}";
+        dictionaryTestSetup(false, "Zone", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check PrefixList. 
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"prefixListName\":\"testRestAPI\",\"prefixListValue\":\"127.0.0.1\",\"description\":\"testing\"}}";
+        dictionaryTestSetup(false, "PrefixList", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check AddressGroup. 
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"groupName\":\"testRestAPIgroup\",\"description\":\"testing\",\"attributes\":[{\"option\":\"testRestAPI\"}, {\"option\":\"testRestAPI\"}]}}";
+        dictionaryTestSetup(false, "AddressGroup", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check ServiceGroup. 
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"groupName\":\"testRestAPIServiceGroup\",\"attributes\":[{\"option\":\"testRestAPIservice\"}]}}";
+        dictionaryTestSetup(false, "ServiceGroup", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check ServiceList. 
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"serviceName\":\"testRestAPIservice\",\"serviceDescription\":\"test\",\"servicePorts\":\"8888\",\"transportProtocols\":[{\"option\":\"testRestAPI\"},{\"option\":\"testRestAPI1\"}],\"appProtocols\":[{\"option\":\"testRestAPI\"},{\"option\":\"testRestAPI1\"}]}}";
+        dictionaryTestSetup(false, "ServiceList", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check TermList. 
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"termName\":\"testRestAPIRule\",\"termDescription\":\"testing\",\"fromZoneDatas\":[{\"option\":\"testRestAPI\"}],\"toZoneDatas\":[{\"option\":\"testRestAPI1\"}],\"sourceListDatas\":[{\"option\":\"Group_testportal\"}],\"destinationListDatas\":[{\"option\":\"testRestAPI\"}],\"sourceServiceDatas\":[{\"option\":\"testRestAPIservice\"},{\"option\":\"testRestAPIservice1\"}],\"destinationServiceDatas\":[{\"option\":\"testRestAPIservice1\"},{\"option\":\"testportalservice2\"}],\"actionListDatas\":[{\"option\":\"testRestAPI\"}]}}";
+        dictionaryTestSetup(false, "TermList", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+    }
+    
+    private void dictionaryTestSetup(Boolean updateFlag, String dictionaryType, String json) throws IOException, SQLException {
+        Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL");
+        Mockito.when(httpServletRequest.getHeader("ClientScope")).thenReturn("dictionaryItem");
+        Mockito.when(httpServletRequest.getMethod()).thenReturn("PUT");
+        Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api");
+        if(updateFlag){
+            Mockito.when(httpServletRequest.getParameter("operation")).thenReturn("update");
+        }else{
+            Mockito.when(httpServletRequest.getParameter("operation")).thenReturn("create");
+        }
+        Mockito.when(httpServletRequest.getParameter("dictionaryType")).thenReturn(dictionaryType);
+        MockServletInputStream mockInput = new MockServletInputStream(json.getBytes());
+        Mockito.when(httpServletRequest.getInputStream()).thenReturn(mockInput);
+        Mockito.when(httpServletRequest.getReader()).thenReturn(new BufferedReader(new InputStreamReader(mockInput)));
+        // set DBDao
+        setDBDao();
+    }
 
     private void setDBDao() throws SQLException {
         BasicDataSource dataSource = new BasicDataSource();
index 1a97d7f..99285e7 100644 (file)
 package org.onap.policy.pap.xacml.rest.components;
 
 import static org.junit.Assert.*;
-import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.when;
 
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.util.HashMap;
 
 import java.util.Map;
@@ -124,5 +125,24 @@ public class FirewallConfigPolicyTest {
                assertTrue(response);           
                
        }
+       
+       @Test
+       public void testUpdateJson() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
+           FirewallConfigPolicy firewallConfigPolicy = new FirewallConfigPolicy();
+           Method method = firewallConfigPolicy.getClass().getDeclaredMethod("updateFirewallDictionaryData", String.class , String.class);
+           method.setAccessible(true);
+           String jsonBody= "{\"serviceTypeId\":\"/v0/firewall/pan\",\"configName\":\"TestFwPolicyConfig\",\"deploymentOption\":{\"deployNow\":false},\"securityZoneId\":\"cloudsite:dev1a\",\"serviceGroups\":[{\"name\":\"SSH\",\"description\":\"Sshservice entry in servicelist\",\"type\":\"SERVICE\",\"transportProtocol\":\"tcp\",\"appProtocol\":null,\"ports\":\"22\"}],\"addressGroups\":[{\"name\":\"test\",\"description\":\"Destination\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/12\"}]},{\"name\":\"TestServers\",\"description\":\"SourceTestServers for firsttesting\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/23\"}]}],\"firewallRuleList\":[{\"position\":\"1\",\"ruleName\":\"FWRuleTestServerToTest\",\"fromZones\":[\"UntrustedZoneTestName\"],\"toZones\":[\"TrustedZoneTestName\"],\"negateSource\":false,\"negateDestination\":false,\"sourceList\":[{\"type\":\"REFERENCE\",\"name\":\"TestServers\"}],\"destinationList\":[{\"type\":\"REFERENCE\",\"name\":\"Test\"}],\"sourceServices\":[],\"destServices\":[{\"type\":\"REFERENCE\",\"name\":\"SSH\"}],\"action\":\"accept\",\"description\":\"FWrule for Test source to Test destination\",\"enabled\":true,\"log\":true}]}";
+           String prevJsonBody = "{\"serviceTypeId\":\"/v0/firewall/pan\",\"configName\":\"TestFwPolicy1Config\",\"deploymentOption\":{\"deployNow\":false},\"securityZoneId\":\"cloudsite:dev\",\"vendorServiceId\":\"test\",\"vendorSpecificData\":{\"idMap\":[{\"Id\":\"cloudsite:dev1a\",\"vendorId\":\"deviceGroup:dev\"}]},\"serviceGroups\":[{\"name\":\"SSH\",\"description\":\"Ssh service entry in service list\",\"type\":\"SERVICE\",\"transportProtocol\":\"tcp\",\"appProtocol\":null,\"ports\":\"22\"}],\"addressGroups\":[{\"name\":\"Test\",\"description\":\"Destination Test\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/12\"}]},{\"name\":\"TestServers\",\"description\":\"Source TestServers for first testing\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/23\"}]}],\"firewallRuleList\":[{\"position\":\"1\",\"ruleName\":\"FWRuleTestServerTot\",\"fromZones\":[\"UntrustedZoneTestName\"],\"toZones\":[\"TrustedZoneTName\"],\"negateSource\":false,\"negateDestination\":false,\"sourceList\":[{\"type\":\"REFERENCE\",\"name\":\"TServers\"}],\"destinationList\":[{\"type\":\"REFERENCE\",\"name\":\"Test\"}],\"sourceServices\":[],\"destServices\":[{\"type\":\"REFERENCE\",\"name\":\"SSH\"}],\"action\":\"accept\",\"description\":\"FW rule for HOHO source to CiscoVCE destination\",\"enabled\":true,\"log\":true}]}";
+        assertFalse((Boolean) method.invoke(firewallConfigPolicy, jsonBody, prevJsonBody));
+       }
+       
+       @Test
+    public void testInsertJson() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
+        FirewallConfigPolicy firewallConfigPolicy = new FirewallConfigPolicy();
+        Method method = firewallConfigPolicy.getClass().getDeclaredMethod("insertFirewallDicionaryData", String.class);
+        method.setAccessible(true);
+        String jsonBody= "{\"serviceTypeId\":\"/v0/firewall/pan\",\"configName\":\"TestFwPolicyConfig\",\"deploymentOption\":{\"deployNow\":false},\"securityZoneId\":\"cloudsite:dev1a\",\"serviceGroups\":[{\"name\":\"SSH\",\"description\":\"Sshservice entry in servicelist\",\"type\":\"SERVICE\",\"transportProtocol\":\"tcp\",\"appProtocol\":null,\"ports\":\"22\"}],\"addressGroups\":[{\"name\":\"test\",\"description\":\"Destination\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/12\"}]},{\"name\":\"TestServers\",\"description\":\"SourceTestServers for firsttesting\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/23\"}]}],\"firewallRuleList\":[{\"position\":\"1\",\"ruleName\":\"FWRuleTestServerToTest\",\"fromZones\":[\"UntrustedZoneTestName\"],\"toZones\":[\"TrustedZoneTestName\"],\"negateSource\":false,\"negateDestination\":false,\"sourceList\":[{\"type\":\"REFERENCE\",\"name\":\"TestServers\"}],\"destinationList\":[{\"type\":\"REFERENCE\",\"name\":\"Test\"}],\"sourceServices\":[],\"destServices\":[{\"type\":\"REFERENCE\",\"name\":\"SSH\"}],\"action\":\"accept\",\"description\":\"FWrule for Test source to Test destination\",\"enabled\":true,\"log\":true}]}";
+        assertFalse((Boolean) method.invoke(firewallConfigPolicy, jsonBody));
+    }
 
 }
\ No newline at end of file
index 2517ebd..dc8300d 100644 (file)
@@ -88,8 +88,8 @@ xacml.rest.pdp.idfile=test.properties
 
 #Properties for db access
 #properties for MySql xacml database:  PLEASE DO NOT REMOVE... NEEDED FOR APIs
-javax.persistence.jdbc.driver=com.mysql.jdbc.Driver
-javax.persistence.jdbc.url=jdbc:mysql://localhost:3306/onap_sdk?failOverReadOnly=false&autoReconnect=true
+javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
+javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk?failOverReadOnly=false&autoReconnect=true
 javax.persistence.jdbc.user=policy_user
 javax.persistence.jdbc.password=policy_user
 
index a2f7f72..fb957f0 100644 (file)
                                        <groupId>javax.persistence</groupId>
                                        <artifactId>persistence-api</artifactId>
                                </exclusion>
+                               <exclusion>
+                                       <groupId>com.att.aft</groupId>
+                                       <artifactId>dme2</artifactId>
+                               </exclusion>
                        </exclusions>
                </dependency>
        </dependencies>
index 18c2017..b824312 100644 (file)
@@ -180,6 +180,14 @@ public class XACMLPdpServlet extends HttpServlet implements Runnable {
        private static volatile boolean configThreadTerminate = false;
        private transient ONAPLoggingContext baseLoggingContext = null;
        private transient IntegrityMonitor im;
+       public IntegrityMonitor getIm() {
+               return im;
+       }
+
+       public void setIm(IntegrityMonitor im) {
+               this.im = im;
+       }
+
        /**
         * Default constructor. 
         */
index 3e3f584..594b51c 100644 (file)
@@ -27,6 +27,10 @@ import java.util.List;
 import java.util.Properties;
 import java.util.Random;
 
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.EntityTransaction;
+import javax.persistence.Persistence;
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletInputStream;
 import javax.servlet.ServletOutputStream;
@@ -34,16 +38,18 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.junit.Before;
-import org.junit.runner.RunWith;
+import org.junit.Test;
 import org.mockito.Mockito;
+import org.onap.policy.common.ia.DbDAO;
+import org.onap.policy.common.ia.IntegrityAuditProperties;
 import org.onap.policy.common.im.AdministrativeStateException;
 import org.onap.policy.common.im.IntegrityMonitor;
 import org.onap.policy.common.im.StandbyStatusException;
 import org.onap.policy.common.logging.flexlogger.FlexLogger;
 import org.onap.policy.common.logging.flexlogger.Logger;
+
+import org.onap.policy.pdp.rest.XACMLPdpServletTest;
 import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
 import org.springframework.mock.web.MockHttpServletResponse;
 import org.springframework.mock.web.MockServletConfig;
 
@@ -51,8 +57,6 @@ import com.mockrunner.mock.web.MockServletInputStream;
 
 import junit.framework.TestCase;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest(IntegrityMonitor.class)        // so PowerMock can mock static method of IntegrityMonitor
 public class XACMLPdpServletTest extends TestCase{
        private static Logger LOGGER    = FlexLogger.getLogger(XACMLPdpServletTest.class);
        
@@ -65,16 +69,64 @@ public class XACMLPdpServletTest extends TestCase{
        private ServletConfig servletConfig; 
        private XACMLPdpServlet pdpServlet;
        private IntegrityMonitor im;
-
+       
+       private DbDAO dbDAO;
+       private String persistenceUnit;
+       private Properties properties;
+       private String resourceName;
+       private String dbDriver;
+       private String dbUrl;
+       private String dbUser;
+       private String dbPwd;
+       private String siteName;
+       private String nodeType;
+       private static final String DEFAULT_DB_DRIVER = "org.h2.Driver";
+       private static final String DEFAULT_DB_USER = "sa";
+       private static final String DEFAULT_DB_PWD = "";
 
         
     @Before
     public void setUp(){
+       
+       properties = new Properties();
+               properties.put(IntegrityAuditProperties.DB_DRIVER, XACMLPdpServletTest.DEFAULT_DB_DRIVER);
+               properties.put(IntegrityAuditProperties.DB_URL, "jdbc:h2:file:./sql/xacmlTest");
+               properties.put(IntegrityAuditProperties.DB_USER, XACMLPdpServletTest.DEFAULT_DB_USER);
+               properties.put(IntegrityAuditProperties.DB_PWD, XACMLPdpServletTest.DEFAULT_DB_PWD);
+               properties.put(IntegrityAuditProperties.SITE_NAME, "SiteA");
+               properties.put(IntegrityAuditProperties.NODE_TYPE, "pap");
+               //properties.put("com.sun.management.jmxremote.port", "9999");
+               dbDriver = XACMLPdpServletTest.DEFAULT_DB_DRIVER;
+               dbUrl = "jdbc:h2:file:./sql/xacmlTest";
+               dbUser = XACMLPdpServletTest.DEFAULT_DB_USER;
+               dbPwd = XACMLPdpServletTest.DEFAULT_DB_PWD;
+               siteName = "SiteA";
+               nodeType = "pdp";
+               persistenceUnit = "testPdpPU";
+               resourceName = "siteA.pdp1";
+               
+               System.setProperty("com.sun.management.jmxremote.port", "9999");
+               
+               EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnit, properties);
+               
+               EntityManager em = emf.createEntityManager();
+               // Start a transaction
+               EntityTransaction et = em.getTransaction();
+               
+               IntegrityMonitor im = null;
+               try {
+                       im = IntegrityMonitor.getInstance(resourceName, properties);
+               } catch (Exception e2) {
+                       // TODO Auto-generated catch block
+                       e2.printStackTrace();
+               }
+               //cleanDb(persistenceUnit, properties);
+               
        httpServletRequest = Mockito.mock(HttpServletRequest.class);
        Mockito.when(httpServletRequest.getMethod()).thenReturn("POST");
        Mockito.when(httpServletRequest.getHeaderNames()).thenReturn(Collections.enumeration(headers));
        Mockito.when(httpServletRequest.getAttributeNames()).thenReturn(Collections.enumeration(headers));
-       
+       Mockito.when(httpServletRequest.getRequestURI()).thenReturn("/pdp/test");
        
        mockOutput = Mockito.mock(ServletOutputStream.class);
        
@@ -90,15 +142,17 @@ public class XACMLPdpServletTest extends TestCase{
        //servletConfig
        Mockito.when(servletConfig.getInitParameterNames()).thenReturn(Collections.enumeration(headers));
        pdpServlet = new XACMLPdpServlet();
+       pdpServlet.setIm(im);
        
-       Mockito.when(servletConfig.getInitParameter("XACML_PROPERTIES_NAME")).thenReturn("xacml.pdp.properties");
+       Mockito.when(servletConfig.getInitParameter("XACML_PROPERTIES_NAME")).thenReturn("src/test/resources/xacml.pdp.properties");
        
-               System.setProperty("xacml.properties", "xacml.pdp.properties");
-               System.setProperty("xacml.rest.pdp.config", "config_testing");
-               System.setProperty("xacml.rest.pdp.webapps", "/webapps");
-               System.setProperty("xacml.rootPolicies", "test_PolicyEngine.xml");
+               System.setProperty("xacml.properties", "src/test/resources/xacml.pdp.properties");
+               System.setProperty("xacml.rest.pdp.config", "src/test/resources/config_testing");
+               System.setProperty("xacml.rest.pdp.webapps", "src/test/resources/webapps");
+               /*System.setProperty("xacml.rootPolicies", "test_PolicyEngine.xml");
                System.setProperty("xacml.referencedPolicies", "test_PolicyEngine.xml");
                System.setProperty("test_PolicyEngine.xml.file", "config_testing\\test_PolicyEngine.xml");
+               */
                System.setProperty("xacml.rest.pdp.register", "false");
                System.setProperty("com.sun.management.jmxremote.port", "9999");
                
@@ -119,8 +173,9 @@ public class XACMLPdpServletTest extends TestCase{
                }
                Mockito.doNothing().when(im).endTransaction();
     }
-       
-       public void testInit(){
+    
+       @Test
+    public void testInit(){
                LOGGER.info("XACMLPdpServletTest - testInit");
                try {   
                        pdpServlet.init(servletConfig);
@@ -133,12 +188,14 @@ public class XACMLPdpServletTest extends TestCase{
 
        }
        
+       @Test
        public void testDoGetNoTypeError(){
                LOGGER.info("XACMLPdpServletTest - testDoGetNoTypeError");
                try{
+                       
                        pdpServlet.init(servletConfig);
                        pdpServlet.doGet(httpServletRequest, httpServletResponse);
-                       Mockito.verify(httpServletResponse).sendError(HttpServletResponse.SC_BAD_REQUEST, "type not 'config' or 'hb'");
+                       Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
                        assertTrue(true);
                }catch(Exception e){
                        System.out.println("Unexpected exception in testDoGetNoTypeError");
@@ -147,6 +204,7 @@ public class XACMLPdpServletTest extends TestCase{
                }
        }
        
+       @Test
        public void testDoGetConfigType(){
                LOGGER.info("XACMLPdpServletTest - testDoGetConfigType");
                Mockito.when(httpServletRequest.getParameter("type")).thenReturn("config");     
@@ -164,14 +222,14 @@ public class XACMLPdpServletTest extends TestCase{
 
        }
        
-       
+       @Test
        public void testDoGetTypeHb(){
                LOGGER.info("XACMLPdpServletTest - testDoGetTypeHb");
                try{
                        Mockito.when(httpServletRequest.getParameter("type")).thenReturn("hb");
                        pdpServlet.init(servletConfig);
                        pdpServlet.doGet(httpServletRequest, httpServletResponse);
-                       Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_NO_CONTENT);
+                       Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
                        assertTrue(true);
                }catch(Exception e){
                        System.out.println("Unexpected exception in testDoGetTypeHb");
@@ -179,6 +237,8 @@ public class XACMLPdpServletTest extends TestCase{
                        fail();
                }
        }
+       
+       @Test
        public void testDoGetTypeStatus(){
                LOGGER.info("XACMLPdpServletTest - testDoGetTypeStatus");
                try{
@@ -194,6 +254,7 @@ public class XACMLPdpServletTest extends TestCase{
                }
        }       
        
+       @Test
        public void testDoPost(){
                LOGGER.info("XACMLPdpServletTest - testDoPost");
                try{
@@ -207,6 +268,7 @@ public class XACMLPdpServletTest extends TestCase{
                }
        }
        
+       @Test
        public void testDoPostToLong(){
                LOGGER.info("XACMLPdpServletTest - testDoPostToLong");
                try{
@@ -223,6 +285,7 @@ public class XACMLPdpServletTest extends TestCase{
                }
        }       
        
+       @Test
        public void testDoPostContentLengthNegative(){
                LOGGER.info("XACMLPdpServletTest - testDoPostToLong");
                try{
@@ -239,6 +302,7 @@ public class XACMLPdpServletTest extends TestCase{
                }
        }       
        
+       @Test
        public void testDoPostContentTypeNonValid(){
                LOGGER.info("XACMLPdpServletTest - testDoPostToLong");
                try{
@@ -255,6 +319,7 @@ public class XACMLPdpServletTest extends TestCase{
                }
        }       
        
+       @Test
        public void testDoPostContentTypeConfigurationError(){
                LOGGER.info("XACMLPdpServletTest - testDoPostToLong");
                try{
@@ -271,6 +336,7 @@ public class XACMLPdpServletTest extends TestCase{
                }
        }       
        
+       @Test
        public void testDoPutCacheEmpty(){
                LOGGER.info("XACMLPdpServletTest - testDoPutCacheEmpty");
                mockInput = Mockito.mock(ServletInputStream.class);
@@ -290,6 +356,7 @@ public class XACMLPdpServletTest extends TestCase{
                }
        }
        
+       @Test
        public void testDoPutConfigPolicies(){
                LOGGER.info("XACMLPdpServletTest - testDoPutConfigPolicies");
                byte[] b = new byte[20];
@@ -330,6 +397,7 @@ public class XACMLPdpServletTest extends TestCase{
                }
        }       
        
+       @Test
        public void testDoPutInvalidContentType(){
                LOGGER.info("XACMLPdpServletTest - testDoPutToLong");
                try{
@@ -349,6 +417,7 @@ public class XACMLPdpServletTest extends TestCase{
                }
        }               
        
+       @Test
        public void testDestroy(){
                LOGGER.info("XACMLPdpServletTest - testDestroy");
                
diff --git a/ONAP-PDP-REST/src/test/resources/META-INF/drop.ddl b/ONAP-PDP-REST/src/test/resources/META-INF/drop.ddl
new file mode 100644 (file)
index 0000000..f7138ad
--- /dev/null
@@ -0,0 +1,7 @@
+DROP TABLE IF EXISTS ConfigurationDataEntity
+DROP TABLE IF EXISTS PolicyEntity
+DROP TABLE IF EXISTS PolicyDBDaoEntity
+DROP TABLE IF EXISTS ActionBodyEntity
+DROP SEQUENCE IF EXISTS seqPolicy
+DROP SEQUENCE IF EXISTS seqConfig
+DROP SEQUENCE IF EXISTS seqActBody
diff --git a/ONAP-PDP-REST/src/test/resources/META-INF/persistence.xml b/ONAP-PDP-REST/src/test/resources/META-INF/persistence.xml
new file mode 100644 (file)
index 0000000..b44841c
--- /dev/null
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ============LICENSE_START=======================================================
+  ONAP-PAP-REST
+  ================================================================================
+  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="XACML-PAP-REST">
+               <class>org.onap.policy.rest.jpa.PolicyEntity</class>
+               <class>org.onap.policy.rest.jpa.ConfigurationDataEntity</class>         
+               <class>org.onap.policy.rest.jpa.PolicyDBDaoEntity</class>
+               <class>org.onap.policy.rest.jpa.GroupEntity</class>
+               <class>org.onap.policy.rest.jpa.PdpEntity</class>
+               <class>org.onap.policy.rest.jpa.ActionBodyEntity</class>
+               <class>org.onap.policy.rest.jpa.DatabaseLockEntity</class>
+               <class>org.onap.policy.rest.jpa.PolicyVersion</class>
+               <class>org.onap.policy.rest.jpa.PolicyScore</class>
+               <class>org.onap.policy.rest.jpa.FunctionDefinition</class>
+               <class>org.onap.policy.rest.jpa.Attribute</class>
+               <class>org.onap.policy.rest.jpa.Category</class>
+               <class>org.onap.policy.rest.jpa.ConstraintType</class>
+               <class>org.onap.policy.rest.jpa.ConstraintValue</class>
+               <class>org.onap.policy.rest.jpa.Datatype</class>
+               <class>org.onap.policy.rest.jpa.FunctionArgument</class>
+               <class>org.onap.policy.rest.jpa.UserInfo</class>
+               <class>org.onap.policy.rest.jpa.ActionPolicyDict</class>
+               <class>org.onap.policy.rest.jpa.DecisionSettings</class>
+               <class>org.onap.policy.rest.jpa.MicroServiceModels</class>
+               <class>org.onap.policy.rest.jpa.BRMSParamTemplate</class>
+               <class>org.onap.policy.rest.jpa.PolicyEditorScopes</class>
+               <!-- unique to PolicyEngineUtils - will be audited from PAP -->
+               <class>org.onap.policy.jpa.BackUpMonitorEntity</class>
+               <!-- unique to integrity-monitor - will be audited from PAP -->
+               <class>org.onap.policy.common.im.jpa.StateManagementEntity</class>
+               <class>org.onap.policy.common.im.jpa.ForwardProgressEntity</class>
+               <class>org.onap.policy.common.im.jpa.ResourceRegistrationEntity</class>
+               <!-- unique to integrity-audit - will be audited from PAP -->
+               <class>org.onap.policy.common.ia.jpa.IntegrityAuditEntity</class>
+               <exclude-unlisted-classes>false</exclude-unlisted-classes>
+               <shared-cache-mode>NONE</shared-cache-mode>
+               <properties>
+       <!--    The properties defined below are the default settings to be used when someone initially
+                               wants to start working with the XACML-PAP-ADMIN web gui. They are not intended for production
+                               use.
+                               
+                               They are setup to drop and create the tables and then load an initial set of data into the database
+                               every time the application is deployed. So if you add anything to the dictionaries or PIP
+                               configuration, they will get lost upon each deployment. It uses an H2 database engine configured
+                               for a local file so you don't have to setup you're own SQL database environment to start.
+                               
+                               Instead of modifying this file directly, please refer to the xacml.admin.properties file for
+                               customizing the application settings.
+                               
+                        -->
+       <!--     <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.create-script-source" value="META-INF/views.sql" />
+                       <property name="javax.persistence.schema-generation.drop-source" value="script"/>
+                       <property name="javax.persistence.schema-generation.drop-script-source" value="META-INF/drop.sql" />
+                       <property name="javax.persistence.sql-load-script-source" value="META-INF/data.sql" />-->
+                       
+                       
+                       
+               <!--    These properties should be set in the xacml.admin.properties file, so they can be re-used by non-JPA
+                       database functionality.  -->
+               <!--    
+                       <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
+                       <property name="javax.persistence.jdbc.url" value="jdbc:h2:file:sql/xacml"/>
+                       <property name="javax.persistence.jdbc.user" value="sa"/>
+                       <property name="javax.persistence.jdbc.password" value=""/>
+                       -->
+               </properties>
+       </persistence-unit>
+
+<persistence-unit name="auditPapPU">
+               <!-- This is the persistence unit used by IntegrityAudit to determine
+               which classes to audit.  All the PAP classes are also included in 
+               XACML-PAP-ADMIN, so they will be audited there rather than having a
+               duplicate audit run from the XACL-PAP-REST node -->
+               <!-- unique to PolicyEngineUtils - will be audited from PAP -->
+               <class>org.onap.policy.jpa.BackUpMonitorEntity</class>
+               <!-- unique to integrity-monitor - will be audited from PAP -->
+               <class>org.onap.policy.common.im.jpa.StateManagementEntity</class>
+               <class>org.onap.policy.common.im.jpa.ForwardProgressEntity</class>
+               <class>org.onap.policy.common.im.jpa.ResourceRegistrationEntity</class>
+               <!-- unique to integrity-audit - will be audited from PAP -->
+               <class>org.onap.policy.common.ia.jpa.IntegrityAuditEntity</class>
+               <exclude-unlisted-classes>true</exclude-unlisted-classes>
+               <shared-cache-mode>NONE</shared-cache-mode>
+       </persistence-unit>
+
+       <persistence-unit name="testPdpPU" transaction-type="RESOURCE_LOCAL">
+       <!-- This tests all the classes that will be audited in the XACML-PAP-REST and the XACML-PAP_ADMIN -->
+               <!-- XACML-PAP-REST -->
+        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+               <class>org.onap.policy.rest.jpa.PolicyEntity</class>
+               <class>org.onap.policy.rest.jpa.ConfigurationDataEntity</class>         
+               <class>org.onap.policy.rest.jpa.PolicyDBDaoEntity</class>
+               <class>org.onap.policy.rest.jpa.GroupEntity</class>
+               <class>org.onap.policy.rest.jpa.PdpEntity</class>
+               <class>org.onap.policy.rest.jpa.ActionBodyEntity</class>
+               <class>org.onap.policy.rest.jpa.DatabaseLockEntity</class>
+               <class>org.onap.policy.rest.jpa.PolicyVersion</class>
+               <class>org.onap.policy.rest.jpa.PolicyScore</class>
+               <class>org.onap.policy.rest.jpa.FunctionDefinition</class>
+               <class>org.onap.policy.rest.jpa.Attribute</class>
+               <class>org.onap.policy.rest.jpa.Category</class>
+               <class>org.onap.policy.rest.jpa.ConstraintType</class>
+               <class>org.onap.policy.rest.jpa.ConstraintValue</class>
+               <class>org.onap.policy.rest.jpa.Datatype</class>
+               <class>org.onap.policy.rest.jpa.FunctionArgument</class>
+               <class>org.onap.policy.rest.jpa.UserInfo</class>
+               <class>org.onap.policy.rest.jpa.ActionPolicyDict</class>
+               <class>org.onap.policy.rest.jpa.DecisionSettings</class>
+               <class>org.onap.policy.rest.jpa.MicroServiceModels</class>
+               <!-- unique to XACML-PAP-ADMIN -->
+               <class>org.onap.policy.rest.jpa.ActionList</class>
+               <class>org.onap.policy.rest.jpa.AddressGroup</class>
+               <class>org.onap.policy.rest.jpa.AttributeAssignment</class>
+               <class>org.onap.policy.rest.jpa.BRMSParamTemplate</class>
+               <class>org.onap.policy.rest.jpa.ClosedLoopD2Services</class>
+               <class>org.onap.policy.rest.jpa.ClosedLoopSite</class>
+               <class>org.onap.policy.rest.jpa.DCAEUsers</class>
+               <class>org.onap.policy.rest.jpa.DCAEuuid</class>
+               <class>org.onap.policy.rest.jpa.DescriptiveScope</class>
+               <class>org.onap.policy.rest.jpa.OnapName</class>
+               <class>org.onap.policy.rest.jpa.EnforcingType</class>
+               <class>org.onap.policy.rest.jpa.GlobalRoleSettings</class>
+               <class>org.onap.policy.rest.jpa.GroupPolicyScopeList</class>
+               <class>org.onap.policy.rest.jpa.GroupServiceList</class>
+               <class>org.onap.policy.rest.jpa.MicroServiceConfigName</class>
+               <class>org.onap.policy.rest.jpa.MicroServiceLocation</class>
+               <class>org.onap.policy.rest.jpa.Obadvice</class>
+               <class>org.onap.policy.rest.jpa.ObadviceExpression</class>
+               <class>org.onap.policy.rest.jpa.PEPOptions</class>
+               <class>org.onap.policy.rest.jpa.PIPConfigParam</class>
+               <class>org.onap.policy.rest.jpa.PIPConfiguration</class>
+               <class>org.onap.policy.rest.jpa.PIPResolver</class>
+               <class>org.onap.policy.rest.jpa.PIPResolverParam</class>
+               <class>org.onap.policy.rest.jpa.PIPType</class> 
+               <class>org.onap.policy.rest.jpa.PolicyAlgorithms</class>
+               <class>org.onap.policy.rest.jpa.PolicyManagement</class>
+               <class>org.onap.policy.rest.jpa.PolicyScopeService</class>
+               <class>org.onap.policy.rest.jpa.PolicyScopeType</class>
+               <class>org.onap.policy.rest.jpa.PolicyScopeResource</class>
+               <class>org.onap.policy.rest.jpa.PolicyScopeClosedLoop</class>
+               <class>org.onap.policy.rest.jpa.PortList</class>
+               <class>org.onap.policy.rest.jpa.PREFIXLIST</class>
+               <class>org.onap.policy.rest.jpa.ProtocolList</class>
+               <class>org.onap.policy.rest.jpa.RemoteCatalogValues</class>
+               <class>org.onap.policy.rest.jpa.PolicyRoles</class>
+               <class>org.onap.policy.rest.jpa.RuleAlgorithms</class>
+               <class>org.onap.policy.rest.jpa.SecurityZone</class>
+               <class>org.onap.policy.rest.jpa.ServiceList</class>
+               <class>org.onap.policy.rest.jpa.SystemLogDB</class>
+               <class>org.onap.policy.rest.jpa.TermList</class>
+               <class>org.onap.policy.rest.jpa.VarbindDictionary</class>
+               <class>org.onap.policy.rest.jpa.VMType</class>
+               <class>org.onap.policy.rest.jpa.VNFType</class>
+               <class>org.onap.policy.rest.jpa.VSCLAction</class>
+               <class>org.onap.policy.rest.jpa.Zone</class>
+               <!-- unique to PolicyEngineUtils -->
+               <class>org.onap.policy.jpa.BackUpMonitorEntity</class>
+               <!-- unique to integrity-monitor -->
+               <class>org.onap.policy.common.im.jpa.StateManagementEntity</class>
+               <class>org.onap.policy.common.im.jpa.ForwardProgressEntity</class>
+               <class>org.onap.policy.common.im.jpa.ResourceRegistrationEntity</class>
+               <!-- unique to integrity-audit -->
+               <class>org.onap.policy.common.ia.jpa.IntegrityAuditEntity</class>
+               
+               <exclude-unlisted-classes>false</exclude-unlisted-classes>
+               <shared-cache-mode>NONE</shared-cache-mode>             
+        <properties>
+            <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
+            <property name="javax.persistence.jdbc.url" value="jdbc:h2:file:./sql/xacmlTest"/> <!-- ;MODE=MySQL"/> -->
+            <property name="javax.persistence.jdbc.user" value="sa"/>
+            <property name="javax.persistence.jdbc.password" value=""/>
+            <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/generatedCreate.ddl"/>
+            <property name="javax.persistence.schema-generation.scripts.drop-target" value="./src/test/resources/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" />
+        </properties>
+    </persistence-unit>        
+</persistence>
index a16b422..fdc7798 100644 (file)
@@ -122,8 +122,8 @@ xacml.rest.notification.delay=30
 REQUEST_BUFFER_SIZE=15
 
 #properties for MySql xacml database:  PLEASE DO NOT REMOVE... NEEDED FOR APIs
-javax.persistence.jdbc.driver=com.mysql.jdbc.Driver
-javax.persistence.jdbc.url=jdbc:mysql://localhost:3306/xacml
+javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
+javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk
 javax.persistence.jdbc.user=policy_user
 javax.persistence.jdbc.password=policy_user
 
index 9ca1bba..2a36005 100644 (file)
@@ -122,8 +122,8 @@ xacml.rest.notification.delay=30
 REQUEST_BUFFER_SIZE=15
 
 #properties for MySql xacml database:  PLEASE DO NOT REMOVE... NEEDED FOR APIs
-javax.persistence.jdbc.driver=com.mysql.jdbc.Driver
-javax.persistence.jdbc.url=jdbc:mysql://localhost:3306/xacml
+javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
+javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk
 javax.persistence.jdbc.user=policy_user
 javax.persistence.jdbc.password=policy_user
 
index c9a1110..c3eda59 100644 (file)
@@ -122,8 +122,8 @@ xacml.rest.notification.delay=30
 REQUEST_BUFFER_SIZE=15
 
 #properties for MySql xacml database:  PLEASE DO NOT REMOVE... NEEDED FOR APIs
-javax.persistence.jdbc.driver=com.mysql.jdbc.Driver
-javax.persistence.jdbc.url=jdbc:mysql://localhost:3306/xacml
+javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
+javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk
 javax.persistence.jdbc.user=policy_user
 javax.persistence.jdbc.password=policy_user
 
diff --git a/ONAP-PDP-REST/src/test/resources/xacml.pdp.properties b/ONAP-PDP-REST/src/test/resources/xacml.pdp.properties
new file mode 100644 (file)
index 0000000..bb174b9
--- /dev/null
@@ -0,0 +1,176 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP-PDP-REST
+# ================================================================================
+# 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=========================================================
+###
+
+# Default XACML Properties File for PDP RESTful servlet
+#
+# Standard API Factories
+#
+xacml.dataTypeFactory=com.att.research.xacml.std.StdDataTypeFactory
+xacml.pdpEngineFactory=com.att.research.xacmlatt.pdp.ATTPDPEngineFactory
+xacml.pepEngineFactory=com.att.research.xacml.std.pep.StdEngineFactory
+# NOT USED SEE BELOW xacml.pipFinderFactory=org.onap.policy.xacml.std.pip.StdPIPFinderFactory
+xacml.traceEngineFactory=com.att.research.xacml.std.trace.LoggingTraceEngineFactory
+#
+# AT&T PDP Implementation Factories
+#
+xacml.att.evaluationContextFactory=com.att.research.xacmlatt.pdp.std.StdEvaluationContextFactory
+xacml.att.combiningAlgorithmFactory=com.att.research.xacmlatt.pdp.std.StdCombiningAlgorithmFactory
+xacml.att.functionDefinitionFactory=org.onap.policy.xacml.custom.OnapFunctionDefinitionFactory
+# NOT USED SEE BELOW xacml.att.policyFinderFactory=org.onap.policy.pdp.std.StdPolicyFinderFactory
+# creteUpdate Policy Implementation Class details. 
+createUpdatePolicy.impl.className=org.onap.policy.pdp.rest.api.services.CreateUpdatePolicyServiceImpl
+# AAF Implementation class details
+aafClient.impl.className=org.onap.policy.utils.AAFPolicyClientImpl
+#
+# AT&T RESTful PDP Implementation Factories
+#
+xacml.pipFinderFactory=org.onap.policy.pdp.rest.impl.XACMLPdpPIPFinderFactory
+xacml.att.policyFinderFactory=org.onap.policy.pdp.rest.XACMLPdpPolicyFinderFactory
+#
+# When set to true, this flag tells the StdPolicyFinderFactory to combined all the root policy files into
+# into one PolicySet and use the given Policy Algorithm.
+#
+xacml.att.policyFinderFactory.combineRootPolicies=urn:com:att:xacml:3.0:policy-combining-algorithm:combined-permit-overrides
+#
+# PDP RESTful API properties
+# 
+# Set this to the address where the XACML-PAP-REST servlet is running
+xacml.rest.pap.url=http://localhost:8070/pap/
+
+#if multiple paps exist, the xacml.rest.pap.url can be removed and they can be defined like this:
+#xacml.rest.pap.urls=http://localhost:9090/pap/,http://localhost:9091/pap/
+
+#
+# Give the running PDP an ID for the PAP. The url that its running as is a good choice.
+# The PAP identifies PDP's using the URL of the PDP.
+#
+xacml.rest.pdp.id=http://localhost:8082/pdp/
+
+# Give the port number used for the PDP
+
+xacml.jmx.port=0
+
+
+# Notification Properties
+# Notifcation type: websocket, ueb or dmaap... if left blank websocket is the default
+NOTIFICATION_TYPE=websocket
+NOTIFICATION_SERVERS=
+NOTIFICATION_TOPIC=
+NOTIFICATION_DELAY=
+UEB_API_KEY=
+UEB_API_SECRET=
+DMAAP_AAF_LOGIN=
+DMAAP_AAF_PASSWORD=
+
+#
+# Set the directory where the PDP holds its Policy Cache and PIP Configuration
+#
+xacml.rest.pdp.config=config
+
+xacml.rest.pdp.webapps=/home/users/PolicyEngine/webapps/ConfigPAP/
+#
+# Initialize register with PAP servlet
+#
+xacml.rest.pdp.register=true
+#
+# Sleep period in seconds between register attempts
+#
+xacml.rest.pdp.register.sleep=15
+#
+# number of attempts to register. -1 means keep trying forever.
+#
+xacml.rest.pdp.register.retries=-1
+#
+# max number of bytes in a POST of a XML/JSON request
+# old value #32767
+xacml.rest.pdp.maxcontent=99999999 
+#
+# Set UserID here
+xacml.rest.pdp.userid=testpdp
+# Set Password here
+xacml.rest.pdp.password=alpha456
+
+# id PAP
+xacml.rest.pap.userid=testpap
+#if multiple paps have different logins, they can be defined like this:
+#http\://localhost\:9090/pap/.xacml.rest.pap.userid=testpap
+
+# pass PAP
+xacml.rest.pap.password=alpha123
+#http\://localhost\:9090/pap/.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
+
+#Properties for db access
+#properties for MySql xacml database:  PLEASE DO NOT REMOVE... NEEDED FOR APIs
+javax.persistence.jdbc.driver=org.h2.Driver
+javax.persistence.jdbc.url=jdbc:h2:file:./sql/xacmlTest
+javax.persistence.jdbc.user=sa
+javax.persistence.jdbc.password=
+
+#***Properties for IntegrityMonitor integration defined in XACMLRestProperties.java***
+
+#The name of the PDP.  Must be unique across the system
+xacml.rest.pdp.resource.name=site_1.pdp_1
+
+#***Properties for IntegrityMonitor integration defined in IntegrityMonitorProperties.java***
+
+#Interval between forward progress counter updates in seconds
+fp_monitor_interval=30
+
+#Number of forward progress counter failures before failover
+failed_counter_threshold=3
+
+#Interval in seconds between test transactions if there is no other traffic
+test_trans_interval=10
+
+#Interval in seconds between updates of the forward progress counter in the DB
+write_fpc_interval=5
+
+#Name of the site
+site_name=site_1
+
+#Node type
+node_type=pdp_xacml
+
+#Dependency groups are groups of resources upon which a node operational state is dependent upon). 
+#Each group is a comma-separated list of resource names and groups are separated by a semicolon.
+#A group may contain one or more members. Resource names must match the resource names defined
+#in the respective servers' properties files
+dependency_groups=site_1.pdplp_1;site_1.astragw_1;site_1.brmsgw_1
+
+# this can be DEVL, TEST, PROD 
+ENVIRONMENT=DEVL
+xacml.rest.pep.idfile = client.properties
+
+#AAF Policy Name space
+#Not Mandatory for Open Onap
+policy.aaf.namespace = 
+policy.aaf.resource = 
+# Decision Response settings. 
+# can be either PERMIT or DENY. 
+decision.indeterminate.response=PERMIT
\ No newline at end of file
index 6cf2e94..4d12004 100644 (file)
@@ -126,8 +126,8 @@ CLIENT_INTERVAL=15000
 REQUEST_BUFFER_SIZE=15
 
 #properties for MySql xacml database:  PLEASE DO NOT REMOVE... NEEDED FOR APIs
-javax.persistence.jdbc.driver=com.mysql.jdbc.Driver
-javax.persistence.jdbc.url=jdbc:mysql://localhost:3306/onap_sdk
+javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
+javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk
 javax.persistence.jdbc.user=policy_user
 javax.persistence.jdbc.password=policy_user
 
index 304bcbd..991cb8a 100644 (file)
@@ -23,8 +23,8 @@ decryption_key                                  = AGLDdG4D04BKm2IxIWEr8o==
 # The following properties MAY require changes by partner applications.
 ##########################################################################
 #Mysql
-db.driver = com.mysql.jdbc.Driver
-db.connectionURL = jdbc:mysql://localhost:3306/onap_sdk
+db.driver = org.mariadb.jdbc.Driver
+db.connectionURL = jdbc:mariadb://localhost:3306/onap_sdk
 db.userName = policy_user
 db.password = policy_user
 db.hib.dialect = org.hibernate.dialect.MySQLDialect
index 0f285b6..333da49 100644 (file)
@@ -87,8 +87,8 @@ xacml.log.db.password=policy_user
 
 xacml.att.log.timeframe=150
 
-javax.persistence.jdbc.driver=com.mysql.jdbc.Driver
-javax.persistence.jdbc.url=jdbc:mysql://localhost:3306/onap_sdk
+javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
+javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk
 javax.persistence.jdbc.user=policy_user
 javax.persistence.jdbc.password=policy_user
 
diff --git a/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdEngineTest.java b/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdEngineTest.java
new file mode 100644 (file)
index 0000000..6600a92
--- /dev/null
@@ -0,0 +1,101 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP-XACML
+ * ================================================================================
+ * 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.xacml.test.std.pap;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Properties;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
+import org.onap.policy.xacml.api.pap.OnapPDP;
+import org.onap.policy.xacml.std.pap.StdEngine;
+
+import com.att.research.xacml.api.pap.PAPException;
+import com.att.research.xacml.std.pap.StdPDP;
+
+public class StdEngineTest {
+       
+       private static Logger logger = FlexLogger.getLogger(StdEngineTest.class);
+       private Path repository;
+       Properties properties = new Properties();
+       StdEngine stdEngine = null;
+       
+       @Before
+       public void setUp(){
+       
+               repository = Paths.get("src/test/resources/pdps");
+               try {
+                       stdEngine = new StdEngine(repository);
+               } catch (PAPException e) {
+                       logger.info(e);
+               } catch (IOException e) {
+                       logger.info(e);
+               }
+       }
+
+       @Test
+       public void testGetDefaultGroup(){
+               try {
+                       assertTrue(stdEngine.getDefaultGroup() != null);
+               } catch (PAPException e) {
+                       logger.info(e);
+               }
+       }       
+       @Test
+       public void testGetGroup(){
+               try {
+                       assertTrue(stdEngine.getGroup("1") == null);
+               } catch (PAPException e) {
+                       logger.info(e);
+               }
+               
+       }       
+       
+       @Test
+       public void testGetOnapPDPGroups(){
+               try {
+                       assertTrue(stdEngine.getOnapPDPGroups() != null);
+               } catch (PAPException e) {
+                       logger.info(e);
+               }       
+       }       
+       @Test
+       public void testGetPDP(){
+               try {
+                       assertTrue(stdEngine.getPDP("1") == null);
+               } catch (PAPException e) {
+                       logger.info(e);
+               }
+       }       
+       @Test
+       public void testGetPDPGroup(){
+               try {
+                       assertTrue(stdEngine.getPDPGroup(null) == null);
+               } catch (PAPException e) {
+                       logger.info(e);
+               }
+       }
+}
diff --git a/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdPAPPolicyTest.java b/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdPAPPolicyTest.java
new file mode 100644 (file)
index 0000000..da7476b
--- /dev/null
@@ -0,0 +1,543 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP-XACML
+ * ================================================================================
+ * 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.xacml.test.std.pap;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URL;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Properties;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
+import org.onap.policy.xacml.api.pap.OnapPDP;
+import org.onap.policy.xacml.std.pap.StdEngine;
+import org.onap.policy.xacml.std.pap.StdPAPPolicy;
+
+import com.att.research.xacml.api.pap.PAPException;
+import com.att.research.xacml.std.pap.StdPDP;
+
+public class StdPAPPolicyTest {
+       
+       private static Logger logger = FlexLogger.getLogger(StdPAPPolicyTest.class);
+       private Path repository;
+       Properties properties = new Properties();
+       StdPAPPolicy stdPAPPolicy;
+       
+       @Before
+       public void setUp(){
+       
+               repository = Paths.get("src/test/resources/pdps");
+               try {
+                       stdPAPPolicy = new StdPAPPolicy();
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }
+
+       @Test
+       public void testGetActionAttribute(){
+               try {
+                       stdPAPPolicy.setActionAttribute("test");
+                       assertTrue(stdPAPPolicy.getActionAttribute() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }       
+       @Test
+       public void testGetActionBody(){
+               try {
+                       stdPAPPolicy.setActionBody("actionBody");
+                       assertTrue(stdPAPPolicy.getActionBody() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+               
+       }       
+       
+       @Test
+       public void testGetActionDictHeader(){
+               try {
+                       stdPAPPolicy.setActionDictHeader("actionDictHeader");
+                       assertTrue(stdPAPPolicy.getActionDictHeader() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }       
+       }       
+       @Test
+       public void testGetActionDictMethod(){
+               try {
+                       stdPAPPolicy.setActionDictMethod("actionDictMethod");
+                       assertTrue(stdPAPPolicy.getActionDictMethod() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }
+       
+       @Test
+       public void testGetActionDictType(){
+               try {
+                       stdPAPPolicy.setActionDictType("actionDictType");
+                       assertTrue(stdPAPPolicy.getActionDictType() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }
+       
+       @Test
+       public void testGetActionDictUrl(){
+               try {
+                       stdPAPPolicy.setActionDictUrl("actionDictUrl");
+                       assertTrue(stdPAPPolicy.getActionDictUrl() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }       
+       @Test
+       public void testGetActionPerformer(){
+               try {
+                       stdPAPPolicy.setActionPerformer("actionPerformer");
+                       assertTrue(stdPAPPolicy.getActionPerformer() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+               
+       }       
+       
+       @Test
+       public void testGetBrmsController(){
+               try {
+                       stdPAPPolicy.setBrmsController("brmsController");
+                       assertTrue(stdPAPPolicy.getBrmsController() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }       
+       }       
+       @Test
+       public void testGetBrmsDependency(){
+               try {
+                       stdPAPPolicy.setBrmsDependency(new ArrayList());
+                       assertTrue(stdPAPPolicy.getBrmsDependency() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }
+       
+       @Test
+       public void testGetConfigBodyData(){
+               try {
+                       stdPAPPolicy.setConfigBodyData("configBodyData");
+                       assertTrue(stdPAPPolicy.getConfigBodyData() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }
+       
+
+       @Test
+       public void testGetConfigName(){
+               try {
+                       stdPAPPolicy.setConfigName("configName");
+                       assertTrue(stdPAPPolicy.getConfigName() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }       
+       @Test
+       public void testGetConfigPolicyType(){
+               try {
+                       stdPAPPolicy.setConfigPolicyType("configPolicyType");
+                       assertTrue(stdPAPPolicy.getConfigPolicyType() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+               
+       }       
+       
+       @Test
+       public void testGetConfigType(){
+               try {
+                       stdPAPPolicy.setConfigType("configType");
+                       assertTrue(stdPAPPolicy.getConfigType() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }       
+       }       
+       @Test
+       public void testGetDataTypeList(){
+               try {
+                       stdPAPPolicy.setDataTypeList(new ArrayList<String>());
+                       assertTrue(stdPAPPolicy.getDataTypeList() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }
+       
+       @Test
+       public void testGetDeleteCondition(){
+               try {
+                       stdPAPPolicy.setDeleteCondition("deleteCondition");
+                       assertTrue(stdPAPPolicy.getDeleteCondition() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }
+       
+       
+       @Test
+       public void testGetDrlRuleAndUIParams(){
+               try {
+                       stdPAPPolicy.setDrlRuleAndUIParams(new HashMap());
+                       assertTrue(stdPAPPolicy.getDrlRuleAndUIParams() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }       
+       @Test
+       public void testGetDropDownMap(){
+               try {
+                       stdPAPPolicy.setDropDownMap(new HashMap());
+                       assertTrue(stdPAPPolicy.getDropDownMap() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+               
+       }       
+       
+       @Test
+       public void testGetDynamicFieldConfigAttributes(){
+               try {
+                       assertTrue(stdPAPPolicy.getDynamicFieldConfigAttributes() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }       
+       }       
+       @Test
+       public void testGetDynamicRuleAlgorithmCombo(){
+               try {
+                       stdPAPPolicy.setDynamicRuleAlgorithmCombo(new ArrayList());
+                       assertTrue(stdPAPPolicy.getDynamicRuleAlgorithmCombo() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }
+       
+       @Test
+       public void testGetDynamicRuleAlgorithmField1(){
+               try {
+                       stdPAPPolicy.setDynamicRuleAlgorithmField1(new ArrayList());
+                       assertTrue(stdPAPPolicy.getDynamicRuleAlgorithmField1() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }       
+
+       @Test
+       public void testGetDictionary(){
+               try {
+                       stdPAPPolicy.setDictionary("dictionary");
+                       assertTrue(stdPAPPolicy.getDictionary() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }       
+       @Test
+       public void testGetDictionaryFields(){
+               try {
+                       stdPAPPolicy.setDictionaryFields("dictionaryFields");
+                       assertTrue(stdPAPPolicy.getDictionaryFields() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+               
+       }       
+       
+       @Test
+       public void testGetDictionaryType(){
+               try {
+                       stdPAPPolicy.setDictionaryType("dictionaryType");
+                       assertTrue(stdPAPPolicy.getDictionaryType() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }       
+       }       
+       @Test
+       public void testGetDomainDir(){
+               try {
+                       stdPAPPolicy.setDomainDir("domain");
+                       assertTrue(stdPAPPolicy.getDomainDir() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }
+       
+       @Test
+       public void testIsDraft(){
+               try {
+                       stdPAPPolicy.setDraft(true);
+                       assertTrue(stdPAPPolicy.isDraft() == true);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }
+       
+       @Test
+       public void testGetDynamicRuleAlgorithmLabels(){
+               try {
+                       stdPAPPolicy.setDynamicRuleAlgorithmLabels(new ArrayList());
+                       assertTrue(stdPAPPolicy.getDynamicRuleAlgorithmLabels() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }       
+       @Test
+       public void testGetDynamicSettingsMap(){
+               try {
+                       stdPAPPolicy.setDynamicSettingsMap(new HashMap());
+                       assertTrue(stdPAPPolicy.getDynamicSettingsMap() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+               
+       }       
+       
+       @Test
+       public void testGetDynamicVariableList(){
+               try {
+                       stdPAPPolicy.setDynamicVariableList(new ArrayList());
+                       assertTrue(stdPAPPolicy.getDynamicVariableList() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }       
+       }       
+       @Test
+       public void testGetGuard(){
+               try {
+                       stdPAPPolicy.setGuard("domain");
+                       assertTrue(stdPAPPolicy.getGuard() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }
+       
+       @Test
+       public void testGetHighestVersion(){
+               try {
+                       stdPAPPolicy.setHighestVersion(123);
+                       assertTrue(stdPAPPolicy.getHighestVersion() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }
+       
+       @Test
+       public void testgGtJsonBody(){
+               try {
+                       stdPAPPolicy.setJsonBody("jsonBoby");
+                       assertTrue(stdPAPPolicy.getJsonBody() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }       
+       @Test
+       public void testGetLocation(){
+               try {
+                       stdPAPPolicy.setLocation(new URI("test"));
+                       assertTrue(stdPAPPolicy.getLocation() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+               
+       }       
+       
+       @Test
+       public void testGetMsLocation(){
+               try {
+                       stdPAPPolicy.setMsLocation("MsLocation");
+                       assertTrue(stdPAPPolicy.getMsLocation() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }       
+       }       
+       @Test
+       public void testSetOldPolicyFileName(){
+               try {
+                       stdPAPPolicy.setOldPolicyFileName("domain");
+                       assertTrue(stdPAPPolicy.getOldPolicyFileName() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }
+       
+       @Test
+       public void testGetOnapName(){
+               try {
+                       stdPAPPolicy.setOnapName("onap");
+                       assertTrue(stdPAPPolicy.getOnapName() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }
+       
+       @Test
+       public void testGetPolicyDescription(){
+               try {
+                       stdPAPPolicy.setPolicyDescription("description test");
+                       assertTrue(stdPAPPolicy.getPolicyDescription() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }       
+       @Test
+       public void testGetPolicyID(){
+               try {
+                       stdPAPPolicy.setPolicyID("test");
+                       assertTrue(stdPAPPolicy.getPolicyID() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+               
+       }       
+       
+       @Test
+       public void testSetPolicyName(){
+               try {
+                       stdPAPPolicy.setPolicyName("MsLocation");
+                       assertTrue(stdPAPPolicy.getPolicyName() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }       
+       }       
+       @Test
+       public void testSetPriority(){
+               try {
+                       stdPAPPolicy.setPriority("domain");
+                       assertTrue(stdPAPPolicy.getPriority() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }
+       
+       @Test
+       public void testGetProviderComboBox(){
+               try {
+                       stdPAPPolicy.setProviderComboBox("onap");
+                       assertTrue(stdPAPPolicy.getProviderComboBox() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }
+       
+       @Test
+       public void testGetRiskLevel(){
+               try {
+                       stdPAPPolicy.setRiskLevel("test");
+                       assertTrue(stdPAPPolicy.getRiskLevel() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }       
+       @Test
+       public void testGetRiskType(){
+               try {
+                       stdPAPPolicy.setRiskType("test");
+                       assertTrue(stdPAPPolicy.getRiskType() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+               
+       }       
+       
+       @Test
+       public void testGetRuleID(){
+               try {
+                       stdPAPPolicy.setRuleID("MsLocation");
+                       assertTrue(stdPAPPolicy.getRuleID() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }       
+       }       
+       @Test
+       public void testGetServiceType(){
+               try {
+                       stdPAPPolicy.setServiceType("domain");
+                       assertTrue(stdPAPPolicy.getServiceType() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }
+       
+       @Test
+       public void testGetTTLDate(){
+               try {
+                       stdPAPPolicy.setTTLDate("09/20/17");
+                       assertTrue(stdPAPPolicy.getTTLDate() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }
+       
+
+       @Test
+       public void testGetUuid(){
+               try {
+                       stdPAPPolicy.setUuid("11212122");
+                       assertTrue(stdPAPPolicy.getUuid() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }       
+       @Test
+       public void testGetVersion(){
+               try {
+                       stdPAPPolicy.setVersion("testv01");
+                       assertTrue(stdPAPPolicy.getVersion() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+               
+       }       
+       
+       @Test
+       public void testIsEditPolicy(){
+               try {
+                       stdPAPPolicy.setEditPolicy(true);
+                       assertTrue(stdPAPPolicy.isEditPolicy() == true);
+               } catch (Exception e) {
+                       logger.info(e);
+               }       
+       }       
+       @Test
+       public void testToString(){
+               try {
+                       assertTrue(stdPAPPolicy.toString() != null);
+               } catch (Exception e) {
+                       logger.info(e);
+               }
+       }
+       
+}
\ No newline at end of file
index 3febbed..7ac9ca3 100644 (file)
@@ -34,6 +34,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Properties;
 
 import org.onap.policy.common.logging.flexlogger.FlexLogger;
@@ -49,9 +50,14 @@ public class CheckPDP {
        private static HashMap<String, String> pdpMap = null;
        private static final Logger LOGGER = FlexLogger.getLogger(CheckPDP.class);
        
-       private CheckPDP(){
+       public static Map<String, String> getPdpMap() {
+               return pdpMap;
+       }
+
+       public CheckPDP(){
                //default constructor
        }
+       
        public static boolean validateID(String id) {
                // ReadFile
                try {
index 4f42023..c94c14d 100644 (file)
@@ -92,16 +92,6 @@ public class PolicyManagerServlet extends HttpServlet {
        private static final Logger LOGGER      = FlexLogger.getLogger(PolicyManagerServlet.class);
        private static final long serialVersionUID = -8453502699403909016L;
        
-       private static boolean jUnit = false;
-
-       public static boolean isjUnit() {
-               return jUnit;
-       }
-
-       public static void setjUnit(boolean jUnit) {
-               PolicyManagerServlet.jUnit = jUnit;
-       }
-
        private enum Mode {
                LIST, RENAME, COPY, DELETE, EDITFILE, ADDFOLDER, DESCRIBEPOLICYFILE, VIEWPOLICY, ADDSUBSCOPE, SWITCHVERSION, EXPORT, SEARCHLIST
        }
@@ -542,7 +532,7 @@ public class PolicyManagerServlet extends HttpServlet {
                peParams.put("split_1", split[1]);
                peParams.put("split_0", split[0]);
                List<Object> queryData = null;
-               if(jUnit){
+               if(PolicyController.isjUnit()){
                        queryData = controller.getDataByQuery(query, null);
                }else{
                        queryData = controller.getDataByQuery(query, peParams);
@@ -684,7 +674,7 @@ public class PolicyManagerServlet extends HttpServlet {
                }
                PolicyController controller = getPolicyControllerInstance();
                List<Object> scopesList = null;
-               if(jUnit){
+               if(PolicyController.isjUnit()){
                        scopesList = controller.getDataByQuery(scopeNamequery, null);
                }else{
                        scopesList = controller.getDataByQuery(scopeNamequery, params);
@@ -709,7 +699,7 @@ public class PolicyManagerServlet extends HttpServlet {
                
                List<Object> activePolicies = null;
                List<Object> scopesList = null;
-               if(jUnit){
+               if(PolicyController.isjUnit()){
                        activePolicies = controller.getDataByQuery(query, null);
                        scopesList = controller.getDataByQuery(scopeNamequery, null);
                }else{
@@ -1422,7 +1412,7 @@ public class PolicyManagerServlet extends HttpServlet {
                        peParams.put("split_1", split[1]);
                        peParams.put("split_0", split[0]);
                        List<Object> queryData = null;
-                       if(jUnit){
+                       if(PolicyController.isjUnit()){
                                queryData = controller.getDataByQuery(query, null);
                        }else{
                                queryData = controller.getDataByQuery(query, peParams);
index a4e4762..2326a9f 100644 (file)
@@ -122,7 +122,12 @@ public class PolicyNotificationMail{
                boolean sendFlag = false;
                SimpleBindings params = new SimpleBindings();
                params.put("policyFileName", policyFileName);
-               List<Object> watchList = policyNotificationDao.getDataByQuery(query, params);
+               List<Object> watchList = null;
+               if(PolicyController.isjUnit()){
+                       watchList = policyNotificationDao.getDataByQuery(query, null);
+               }else{
+                       watchList = policyNotificationDao.getDataByQuery(query, params);
+               }
                if(watchList != null && !watchList.isEmpty()){
                        for(Object watch : watchList){
                                WatchPolicyNotificationTable list = (WatchPolicyNotificationTable) watch;
index 7234a3b..08f8030 100644 (file)
@@ -82,8 +82,24 @@ public class PolicyRestController extends RestrictedBaseController{
        private static final String modal = "model";
        private static final String importDictionary = "import_dictionary";
        
+       private static CommonClassDao commonClassDao;
+       
+       public static CommonClassDao getCommonClassDao() {
+               return commonClassDao;
+       }
+
+       public static void setCommonClassDao(CommonClassDao commonClassDao) {
+               PolicyRestController.commonClassDao = commonClassDao;
+       }
+       
        @Autowired
-       CommonClassDao commonClassDao;
+       private PolicyRestController(CommonClassDao commonClassDao){
+               PolicyRestController.commonClassDao = commonClassDao;
+       }
+       
+       public PolicyRestController(){
+               //default constructor
+       }
 
        @RequestMapping(value={"/policycreation/save_policy"}, method={RequestMethod.POST})
        public void policyCreationController(HttpServletRequest request, HttpServletResponse response) {
index a0f1ba8..7c60ecf 100644 (file)
@@ -202,7 +202,7 @@ class HtmlProcessor extends SimpleCallback {
                combiningAlgo2human.put("only-one-applicable", "to honour the result of the first successfully evaluated $placeholder$ in order");
        }       
        
-       private Map<String, AttributeIdentifiers> attributeIdentifiersMap = new HashMap<String, AttributeIdentifiers>();
+       private Map<String, AttributeIdentifiers> attributeIdentifiersMap = new HashMap<>();
        
        private final StringWriter stringWriter = new StringWriter();
        private final PrintWriter htmlOut = new PrintWriter(stringWriter);
@@ -357,7 +357,7 @@ class HtmlProcessor extends SimpleCallback {
                else
                        policySet(policySet, "li");
                
-               if (policySet.getPolicySetOrPolicyOrPolicySetIdReference().size() > 0)
+               if (!policySet.getPolicySetOrPolicyOrPolicySetIdReference().isEmpty())
                        htmlOut.println("<ol>");
 
                return super.onPreVisitPolicySet(parent, policySet);
@@ -377,7 +377,7 @@ class HtmlProcessor extends SimpleCallback {
                        LOGGER.trace("PolicySet: " + policySet.getPolicySetId() + 
                                             " Description: " + policySet.getDescription());    
                
-               if (policySet.getPolicySetOrPolicyOrPolicySetIdReference().size() > 0)
+               if (!policySet.getPolicySetOrPolicyOrPolicySetIdReference().isEmpty())
                        htmlOut.println("</ol>");
                
                htmlOut.println("<p></p>");
@@ -421,7 +421,7 @@ class HtmlProcessor extends SimpleCallback {
                }
                
                if (policySet.getPolicySetOrPolicyOrPolicySetIdReference() != null &&
-                       policySet.getPolicySetOrPolicyOrPolicySetIdReference().size() > 0) {
+                       !policySet.getPolicySetOrPolicyOrPolicySetIdReference().isEmpty()) {
                        String algoDesc = combiningAlgo2human.get(combiningAlgorithm);
                        if (algoDesc != null) {
                                algoDesc = algoDesc.replace("$placeholder$", "policy") + " (" + "<i>" + combiningAlgorithm + "</i>)";
@@ -449,7 +449,7 @@ class HtmlProcessor extends SimpleCallback {
                
                policy(policy);
                
-               if (policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().size() > 0)
+               if (!policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().isEmpty())
                        htmlOut.println("<ol type=\"i\">");
                
                return super.onPreVisitPolicy(parent, policy);
@@ -464,7 +464,7 @@ class HtmlProcessor extends SimpleCallback {
                        LOGGER.trace("PolicySet: " + policy.getPolicyId() + 
                                             "Parent PolicySet: " + parent.getPolicySetId() + " Version: " + parent.getVersion());
                
-               if (policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().size() > 0)
+               if (!policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().isEmpty())
                        htmlOut.println("</ol>");
                
                htmlOut.println("<p></p>");
@@ -506,7 +506,7 @@ class HtmlProcessor extends SimpleCallback {
                }
                
                if (policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition() != null &&
-                       policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().size() > 0) {
+                       !policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().isEmpty()) {
                        String algoDesc = combiningAlgo2human.get(combiningAlgorithm);
                        if (algoDesc != null) {
                                algoDesc = algoDesc.replace("$placeholder$", "rule") + " (<i>" + combiningAlgorithm + "</i>)";
@@ -710,7 +710,7 @@ class HtmlProcessor extends SimpleCallback {
                                                                //
                                                                StdAttribute attribute = null;
                                                                AttributeValueType value = match.getAttributeValue();
-                                                               String attributeDataType = null;
+                                                               String attributeDataType;
                                                                if (match.getAttributeDesignator() != null && value != null) {
                                                                        AttributeDesignatorType designator = match.getAttributeDesignator();
                                                                        attribute = new StdAttribute(new IdentifierImpl(designator.getCategory()),
@@ -822,11 +822,12 @@ class HtmlProcessor extends SimpleCallback {
        }
        
        private String removePrimitives(String in) {
-               in = in.replace("string-", "");
-               in = in.replace("integer-", "");
-               in = in.replace("double-", "");
-               in = in.replace("boolean-", "");
-               return in;
+               String newIn = in;
+               newIn = newIn.replace("string-", "");
+               newIn = newIn.replace("integer-", "");
+               newIn = newIn.replace("double-", "");
+               newIn = newIn.replace("boolean-", "");
+               return newIn;
        }
        
        private String stringifyCondition(ConditionType condition) {
index 353e08a..32f40b9 100644 (file)
@@ -64,4 +64,6 @@ public class HibernateSession{
                logSessionFactory = logSessionFactory1;
        }
 
+       private HibernateSession(){
+       }
 }
index f10041e..392adf0 100644 (file)
@@ -98,24 +98,24 @@ public class CreateClosedLoopPMController{
                                                                                String attributeId = designator.getAttributeId();
 
                                                                                // First match in the target is OnapName, so set that value.
-                                                                               if (attributeId.equals("ONAPName")) {
+                                                                               if ("ONAPName".equals(attributeId)) {
                                                                                        policyAdapter.setOnapName(value);
                                                                                }
-                                                                               if (attributeId.equals("RiskType")){
+                                                                               if ("RiskType".equals(attributeId)){
                                                                                        policyAdapter.setRiskType(value);
                                                                                }
-                                                                               if (attributeId.equals("RiskLevel")){
+                                                                               if ("RiskLevel".equals(attributeId)){
                                                                                        policyAdapter.setRiskLevel(value);
                                                                                }
-                                                                               if (attributeId.equals("guard")){
+                                                                               if ("guard".equals(attributeId)){
                                                                                        policyAdapter.setGuard(value);
                                                                                }
-                                                                               if (attributeId.equals("TTLDate") && !value.contains("NA")){
+                                                                               if ("TTLDate".equals(attributeId) && !value.contains("NA")){
                                                                                        PolicyController controller = new PolicyController();
                                                                                        String newDate = controller.convertDate(value);
                                                                                        policyAdapter.setTtlDate(newDate);
                                                                                }
-                                                                               if (attributeId.equals("ServiceType")){
+                                                                               if ("ServiceType".equals(attributeId)){
                                                                                        LinkedHashMap<String, String> serviceTypePolicyName1 = new LinkedHashMap<>();
                                                                                        String key = "serviceTypePolicyName";
                                                                                        serviceTypePolicyName1.put(key, value);
index ed0bf4c..9832f58 100644 (file)
@@ -90,6 +90,14 @@ public class CreateFirewallController extends RestrictedBaseController {
        
        private static CommonClassDao commonClassDao;
 
+       public static CommonClassDao getCommonClassDao() {
+               return commonClassDao;
+       }
+
+       public static void setCommonClassDao(CommonClassDao commonClassDao) {
+               CreateFirewallController.commonClassDao = commonClassDao;
+       }
+       
        private List<String> tagCollectorList;
        private String jsonBody;
        List<String> expandablePrefixIPList = new ArrayList<>();
index 49024ba..c96da50 100644 (file)
@@ -43,16 +43,6 @@ import org.onap.policy.common.logging.flexlogger.Logger;
 public class SystemLogDbDaoImpl implements SystemLogDbDao {
        private static final Logger logger = FlexLogger.getLogger(SystemLogDbDaoImpl.class);
        
-       private static boolean jUnit = false;
-       
-       public static boolean isjUnit() {
-               return jUnit;
-       }
-
-       public static void setjUnit(boolean jUnit) {
-               SystemLogDbDaoImpl.jUnit = jUnit;
-       }
-
        @SuppressWarnings("unchecked")
        @Override
        public List<SystemLogDB> getLoggingData() {
@@ -61,7 +51,7 @@ public class SystemLogDbDaoImpl implements SystemLogDbDao {
                List<SystemLogDB> system = null;
         try {
                String sqlWhere = null;
-               if(jUnit){
+               if(PolicyController.isjUnit()){
                        sqlWhere = "";
                }else{
                        sqlWhere = "date > DATE_SUB(curdate(), INTERVAL 5 DAY) ORDER BY date DESC limit "+PolicyController.getLogTableLimit()+"";
@@ -90,7 +80,7 @@ public class SystemLogDbDaoImpl implements SystemLogDbDao {
                List<SystemLogDB> system = null;
         try {
                String sqlWhere = null;
-               if(jUnit){
+               if(PolicyController.isjUnit()){
                        sqlWhere = "";
                }else{
                        sqlWhere = "date > DATE_SUB(curdate(), INTERVAL 5 DAY) and logtype = 'error' ORDER BY date DESC limit "+PolicyController.getSystemAlertTableLimit()+"";
index 43b2de7..84c5dc5 100644 (file)
@@ -23,8 +23,8 @@ decryption_key                                  = AGLDdG4D04BKm2IxIWEr8o==
 # The following properties MAY require changes by partner applications.
 ##########################################################################
 #Mysql
-db.driver = com.mysql.jdbc.Driver
-db.connectionURL = jdbc:mysql://localhost:3306/onapsdk1707
+db.driver = org.mariadb.jdbc.Driver
+db.connectionURL = jdbc:mariadb://localhost:3306/onapsdk1707
 db.userName = root
 db.password = 
 db.hib.dialect = org.hibernate.dialect.MySQLDialect
diff --git a/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/CheckPDPTest.java b/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/CheckPDPTest.java
new file mode 100644 (file)
index 0000000..47358a8
--- /dev/null
@@ -0,0 +1,42 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * 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.admin;
+
+import static org.junit.Assert.*;
+
+import java.io.File;
+
+import org.junit.Test;
+
+public class CheckPDPTest {
+
+       @Test
+       public final void testCheckPDP() {
+               try {
+                       System.setProperty("xacml.rest.pdp.idfile", new File(".").getCanonicalPath() + File.separator + "src"+ File.separator + "test" + File.separator + "resources" + File.separator + "test.properties");
+                       CheckPDP.validateID("http://localhost:8082/pdp/");
+                       assertTrue(CheckPDP.getPdpMap().containsKey("http://localhost:8082/pdp/"));
+                       assertTrue(CheckPDP.getEncoding("http://localhost:8082/pdp/").equals("dGVzdHBkcDphbHBoYTQ1Ng=="));
+               } catch (Exception e) {
+                       fail("Error occured in CheckPDP test");
+               }
+       }
+
+}
index 970b678..22cc82a 100644 (file)
@@ -64,6 +64,7 @@ public class PolicyManagerServletTest extends Mockito{
        @Before
        public void setUp() throws Exception{
                logger.info("setUp: Entering");
+               PolicyController.setjUnit(true);
                UserInfo userinfo = new UserInfo();
                userinfo.setUserLoginId("Test");
                userinfo.setUserName("Test");
@@ -146,7 +147,6 @@ public class PolicyManagerServletTest extends Mockito{
                HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class);  
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         BufferedReader reader = new BufferedReader(new StringReader("{params: { mode: 'DESCRIBEPOLICYFILE', path: 'com.Config_SampleTest1206.1.xml'}}"));
         try {
                        when(request.getReader()).thenReturn(reader);
@@ -168,7 +168,6 @@ public class PolicyManagerServletTest extends Mockito{
                HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'LIST', path: '/', onlyFolders: false}}");
         list.add("{params: { mode: 'LIST', path: '/com', onlyFolders: false}}");
@@ -197,7 +196,6 @@ public class PolicyManagerServletTest extends Mockito{
                HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'EDITFILE', path: '/com/Config_SampleTest1206.1.xml', onlyFolders: false}}");
         for(int i =0; i < list.size(); i++){
@@ -244,7 +242,6 @@ public class PolicyManagerServletTest extends Mockito{
                HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'EDITFILE', path: '/com/Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml', onlyFolders: false}}");
         for(int i =0; i < list.size(); i++){
@@ -291,7 +288,6 @@ public class PolicyManagerServletTest extends Mockito{
                HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'EDITFILE', path: '/com/Config_BRMS_Raw_TestBRMSRawPolicy.1.xml', onlyFolders: false}}");
         for(int i =0; i < list.size(); i++){
@@ -338,7 +334,6 @@ public class PolicyManagerServletTest extends Mockito{
                HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'EDITFILE', path: '/com/Config_Fault_TestClosedLoopPolicy.1.xml', onlyFolders: false}}");
         for(int i =0; i < list.size(); i++){
@@ -385,7 +380,6 @@ public class PolicyManagerServletTest extends Mockito{
                HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'EDITFILE', path: '/com/Config_PM_TestClosedLoopPMPolicy.1.xml', onlyFolders: false}}");
         for(int i =0; i < list.size(); i++){
@@ -439,7 +433,6 @@ public class PolicyManagerServletTest extends Mockito{
                HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'EDITFILE', path: '/com/Config_MS_vFirewall.1.xml', onlyFolders: false}}");
         for(int i =0; i < list.size(); i++){
@@ -487,7 +480,6 @@ public class PolicyManagerServletTest extends Mockito{
                HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'EDITFILE', path: '/com/Config_FW_TestFireWallPolicy.1.xml', onlyFolders: false}}");
         for(int i =0; i < list.size(); i++){
@@ -532,7 +524,6 @@ public class PolicyManagerServletTest extends Mockito{
                HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'EDITFILE', path: '/com/Action_TestActionPolicy.1.xml', onlyFolders: false}}");
         for(int i =0; i < list.size(); i++){
@@ -571,7 +562,6 @@ public class PolicyManagerServletTest extends Mockito{
                HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'EDITFILE', path: '/com/Decision_TestDecisionPolicyWithRuleAlgorithms.1.xml', onlyFolders: false}}");
         for(int i =0; i < list.size(); i++){
diff --git a/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyNotificationMailTest.java b/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyNotificationMailTest.java
new file mode 100644 (file)
index 0000000..2c56a8b
--- /dev/null
@@ -0,0 +1,94 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * 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.admin;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import static org.mockito.Mockito.when;
+import org.onap.policy.controller.PolicyController;
+import org.onap.policy.rest.dao.CommonClassDao;
+import org.onap.policy.rest.jpa.PolicyVersion;
+import org.onap.policy.rest.jpa.WatchPolicyNotificationTable;
+
+public class PolicyNotificationMailTest {
+
+       private PolicyVersion version;
+       private String policyName = "com/Config_Test";
+       private CommonClassDao commonClassDao;
+       private List<Object> data = null;
+       
+       @Before
+       public void setUp() throws Exception {
+               PolicyController.setjUnit(true);
+               PolicyController.setSmtpApplicationName("Test");
+               PolicyController.setSmtpEmailExtension("test.com");
+               PolicyController.setSmtpHost("test");
+               PolicyController.setSmtpPort("23");
+               PolicyController.setSmtpPassword("test");
+               PolicyController.setSmtpUsername("test");
+               
+               version = new PolicyVersion();
+               version.setPolicyName("com/Config_Test");
+               version.setModifiedBy("xyz");
+               
+               WatchPolicyNotificationTable watch = new WatchPolicyNotificationTable();
+               watch.setPolicyName("com/Config_Test");
+               data = new ArrayList<>();
+               data.add(watch);
+               
+               commonClassDao = mock(CommonClassDao.class);
+        PolicyController.setCommonClassDao(commonClassDao);
+        when(commonClassDao.getDataByQuery("from WatchPolicyNotificationTable where policyName like:policyFileName", null)).thenReturn(data);
+       }
+
+       @Test
+       public final void testJavaMailSenderImpl() {
+               PolicyNotificationMail notificationMail = new PolicyNotificationMail();
+               try{
+                       assertTrue(notificationMail.javaMailSenderImpl() != null);
+               }catch(Exception e){
+                       fail();
+               }
+       }
+
+       @Test
+       public final void testSendMail() {
+               PolicyNotificationMail notificationMail = new PolicyNotificationMail();
+               try{
+                       notificationMail.sendMail(version, policyName, "EditPolicy", commonClassDao);
+                       notificationMail.sendMail(version, policyName, "Rename", commonClassDao);
+                       notificationMail.sendMail(version, policyName, "DeleteAll", commonClassDao);
+                       notificationMail.sendMail(version, policyName, "DeleteOne", commonClassDao);
+                       notificationMail.sendMail(version, policyName, "DeleteScope", commonClassDao);
+                       notificationMail.sendMail(version, policyName, "SwitchVersion", commonClassDao);
+                       notificationMail.sendMail(version, policyName, "Move", commonClassDao);
+               }catch(Exception e){
+                       fail();
+               }
+       }
+
+}
diff --git a/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyRestControllerTest.java b/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyRestControllerTest.java
new file mode 100644 (file)
index 0000000..1bda7cd
--- /dev/null
@@ -0,0 +1,232 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * 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.admin;
+
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.onap.policy.controller.CreateFirewallController;
+import org.onap.policy.rest.dao.CommonClassDao;
+import org.onap.policy.rest.jpa.ActionList;
+import org.onap.policy.rest.jpa.AddressGroup;
+import org.onap.policy.rest.jpa.FWTagPicker;
+import org.onap.policy.rest.jpa.GroupServiceList;
+import org.onap.policy.rest.jpa.PrefixList;
+import org.onap.policy.rest.jpa.SecurityZone;
+import org.onap.policy.rest.jpa.ServiceList;
+import org.onap.policy.rest.jpa.TermList;
+import org.openecomp.portalsdk.core.domain.User;
+import org.openecomp.portalsdk.core.util.SystemProperties;
+import org.springframework.mock.web.MockHttpServletResponse;
+
+public class PolicyRestControllerTest {
+
+       private String clRequestString;
+       private String fwRequestString;
+       private String fwViewRequestString;
+       private HttpServletRequest request;
+       private MockHttpServletResponse response;
+       private static CommonClassDao commonClassDao;
+       private List<Object> prefixListData;
+       private List<Object> actionListData;
+       private List<Object> serviceListData;
+       private List<Object> addressGroupData;
+       private List<Object> securityZoneData;
+       private List<Object> serviceGroupData;
+       private List<Object> tagListData;
+       private List<Object> termListData;
+       
+       @Before
+       public void setUp() throws Exception {
+               commonClassDao = mock(CommonClassDao.class);
+               HttpSession mockSession = mock(HttpSession.class);
+               request = mock(HttpServletRequest.class);  
+               response =  new MockHttpServletResponse();
+               User user = new User();
+               user.setOrgUserId("Test");
+               Mockito.when(mockSession.getAttribute(SystemProperties.getProperty("user_attribute_name"))).thenReturn(user);
+               Mockito.when(request.getSession(false)).thenReturn(mockSession);
+               clRequestString = "{\"policyData\":{\"error\":\"\",\"inprocess\":false,\"model\":{\"name\":\"com\","
+                               + "\"subScopename\":\"\",\"path\":[],\"type\":\"dir\",\"size\":0,\"date\":\"2017-06-01T15:45:36.000Z\","
+                               + "\"version\":\"\",\"createdBy\":\"Demo\",\"modifiedBy\":\"Demo\",\"content\":\"\",\"recursive\":false},"
+                               + "\"tempModel\":{\"name\":\"com\",\"subScopename\":\"\",\"path\":[],\"type\":\"dir\",\"size\":0,\"date\":\"2017-06-01T15:45:36.000Z\","
+                               + "\"version\":\"\",\"createdBy\":\"Demo\",\"modifiedBy\":\"Demo\",\"content\":\"\",\"recursive\":false},\"$$hashKey\":\"object:1439\","
+                               + "\"policy\":{\"policyType\":\"Config\",\"configPolicyType\":\"ClosedLoop_Fault\",\"triggerTrapSignatures\":[1,1,2,3],"
+                               + "\"triggerfaultSignatures\":[1,1,2,3],\"traptriggerSignatures\":[{\"id\":\"Trap1\",\"$$hashKey\":\"object:1526\"},"
+                               + "{\"id\":\"Trap2\",\"$$hashKey\":\"object:1534\"}],\"connecttriggerSignatures\":[{\"id\":\"C1\",\"$$hashKey\":\"object:1554\","
+                               + "\"notBox\":\"NOT\",\"connectTrap1\":\"Trap1\",\"trapCount1\":\"12\",\"operatorBox\":\"AND\",\"connectTrap2\":\"Trap2\","
+                               + "\"trapCount2\":\"14\"}],\"faulttriggerSignatures\":[{\"id\":\"Fault1\",\"$$hashKey\":\"object:1566\"},{\"id\":\"Fault2\","
+                               + "\"$$hashKey\":\"object:1575\"}],\"connectVerificationSignatures\":[{\"id\":\"C1\",\"$$hashKey\":\"object:1595\","
+                               + "\"notBox\":\"NOT\",\"connectTrap1\":\"Fault1\",\"trapCount1\":\"11\",\"operatorBox\":\"AND\",\"connectTrap2\":\"Fault2\","
+                               + "\"trapCount2\":\"12\"}],\"jsonBodyData\":{\"trapMaxAge\":\"300\",\"vnfType\":\"Test\",\"closedLoopPolicyStatus\":\"Active\","
+                               + "\"vUSP\":true,\"trinity\":true,\"vDNS\":true,\"mcr\":true,\"gamma\":true,\"actions\":\"Test\",\"timeInterval\":\"11\","
+                               + "\"timeOutvPRO\":\"11\",\"timeOutRuby\":\"11\",\"retrys\":\"1\",\"agingWindow\":\"12\",\"geoLink\":\"test\","
+                               + "\"emailAddress\":\"aa@test.com\",\"pepName\":\"Test\",\"pepAction\":\"test\",\"conditions\":\"SEND\"},"
+                               + "\"policyName\":\"SampleTest\",\"policyDescription\":\"SampleTest\",\"riskType\":\"SampleRiskType\",\"riskLevel\":\"1\","
+                               + "\"guard\":\"True\",\"onapName\":\"SampleDemo\",\"ttlDate\":\"14/09/2017\",\"clearTimeOut\":\"123\",\"trapMaxAge\":\"11\","
+                               + "\"verificationclearTimeOut\":\"13\"}},\"trapData\":{\"trap1\":[{\"id\":\"A1\",\"$$hashKey\":\"object:1528\","
+                               + "\"notBox\":\"NOT\",\"trigger1\":\"Test\",\"operatorBox\":\"AND\",\"trigger2\":\"Test\"}],\"trap2\":[{\"id\":\"A1\","
+                               + "\"$$hashKey\":\"object:1536\",\"notBox\":\"NOT\",\"trigger1\":\"Test\",\"operatorBox\":\"AND\",\"trigger2\":\"Test\"},"
+                               + "{\"id\":\"A2\",\"$$hashKey\":\"object:1542\",\"notBox\":\"NOT\",\"trigger1\":\"A1\",\"operatorBox\":\"AND\",\"trigger2\":"
+                               + "\"Test\"},{\"id\":\"A3\",\"$$hashKey\":\"object:1548\",\"notBox\":\"NOT\",\"trigger1\":\"A1\",\"operatorBox\":\"OR\","
+                               + "\"trigger2\":\"A2\"}]},\"faultData\":{\"trap1\":[{\"id\":\"A1\",\"$$hashKey\":\"object:1568\",\"notBox\":\"NOT\","
+                               + "\"trigger1\":\"Test\",\"operatorBox\":\"AND\",\"trigger2\":\"Test\"}],\"trap2\":[{\"id\":\"A1\",\"$$hashKey\":\"object:1577\","
+                               + "\"notBox\":\"NOT\",\"trigger1\":\"Test\",\"operatorBox\":\"AND\",\"trigger2\":\"Test\"},{\"id\":\"A2\",\"$$hashKey\":"
+                               + "\"object:1583\",\"notBox\":\"NOT\",\"trigger1\":\"Test\",\"operatorBox\":\"OR\",\"trigger2\":\"Test\"},{\"id\":\"A3"
+                               + "\",\"$$hashKey\":\"object:1589\",\"notBox\":\"NOT\",\"trigger1\":\"A1\",\"operatorBox\":\"AND\",\"trigger2\":\"A2\"}]}}";
+               
+               
+               fwRequestString = "{\"policyData\":{\"error\":\"\",\"inprocess\":false,\"model\":{\"name\":\"com\",\"subScopename\":\"\",\"path\":[],"
+                               + "\"type\":\"dir\",\"size\":0,\"date\":\"2017-06-01T15:45:36.000Z\",\"version\":\"\",\"createdBy\":\"Demo\",\"modifiedBy\":"
+                               + "\"Demo\",\"content\":\"\",\"recursive\":false},\"tempModel\":{\"name\":\"com\",\"subScopename\":\"\",\"path\":[],\"type\":"
+                               + "\"dir\",\"size\":0,\"date\":\"2017-06-01T15:45:36.000Z\",\"version\":\"\",\"createdBy\":\"Demo\",\"modifiedBy\":\"Demo\","
+                               + "\"content\":\"\",\"recursive\":false},\"$$hashKey\":\"object:260\",\"policy\":{\"policyType\":\"Config\",\"configPolicyType"
+                               + "\":\"Firewall Config\",\"attributes\":[{\"id\":\"choice1\",\"$$hashKey\":\"object:338\",\"key\":\"Test\",\"value\":\"Test\"}],"
+                               + "\"fwattributes\":[],\"policyName\":\"SampleTest\",\"policyDescription\":\"SampleTest\",\"riskType\":\"SampleRiskType\","
+                               + "\"riskLevel\":\"1\",\"guard\":\"True\",\"configName\":\"SampleTest\",\"ttlDate\":\"14/09/2017\",\"securityZone\":\"Test\"}}}";
+               
+               fwViewRequestString = "{\"policyData\":{\"policyType\":\"Config\",\"configPolicyType\":\"Firewall Config\",\"attributes\":[{\"id\":"
+                               + "\"choice1\",\"$$hashKey\":\"object:338\",\"key\":\"Test\",\"value\":\"Test\"}],\"fwattributes\":[],\"policyName\":"
+                               + "\"SampleTest\",\"policyDescription\":\"SampleTest\",\"riskType\":\"SampleRiskType\",\"riskLevel\":\"1\",\"guard\":\"True\","
+                               + "\"configName\":\"SampleTest\",\"ttlDate\":\"14/09/2017\",\"securityZone\":\"Test\"}}";
+
+
+
+               prefixListData = new ArrayList<>();
+               PrefixList prefixList = new PrefixList();
+               prefixList.setPrefixListName("Test");
+               prefixList.setPrefixListValue("10.10.10.10/12");
+               prefixListData.add(prefixList);
+               when(commonClassDao.getData(PrefixList.class)).thenReturn(prefixListData);
+               
+               actionListData = new ArrayList<>();
+               ActionList actionList = new ActionList();
+               actionList.setActionName("Test");
+               actionListData.add(actionList);
+               when(commonClassDao.getData(ActionList.class)).thenReturn(actionListData);
+                       
+               serviceListData = new ArrayList<>();
+               ServiceList serviceList = new ServiceList();
+               serviceList.setServiceName("Test");
+               serviceList.setServiceType("SERVICE");
+               serviceList.setServiceTransProtocol("Test");
+               serviceList.setServiceAppProtocol("Test");
+               serviceList.setServicePorts("8080");
+               serviceListData.add(serviceList);
+               when(commonClassDao.getData(ServiceList.class)).thenReturn(serviceListData);
+               
+               addressGroupData = new ArrayList<>();
+               AddressGroup addressGroup = new AddressGroup();
+               addressGroup.setGroupName("Group_Test");
+               addressGroup.setServiceList("Test");
+               addressGroupData.add(addressGroup);
+               when(commonClassDao.getData(AddressGroup.class)).thenReturn(addressGroupData);
+               
+               securityZoneData = new ArrayList<>();
+               SecurityZone securityZone = new SecurityZone();
+               securityZone.setZoneName("Test");
+               securityZone.setZoneValue("Test");
+               securityZoneData.add(securityZone);
+               when(commonClassDao.getData(SecurityZone.class)).thenReturn(securityZoneData);
+               
+               serviceGroupData = new ArrayList<>();
+               GroupServiceList serviceGroup = new GroupServiceList();
+               serviceGroup.setGroupName("Group_Test");
+               serviceGroup.setServiceList("Test");
+               serviceGroupData.add(serviceGroup);
+               when(commonClassDao.getData(GroupServiceList.class)).thenReturn(serviceGroupData);
+               
+               tagListData = new ArrayList<>();
+               FWTagPicker fwPicker = new FWTagPicker();
+               fwPicker.setTagPickerName("Test");
+               fwPicker.setTagValues("Test:8080");
+               tagListData.add(fwPicker);
+               when(commonClassDao.getData(FWTagPicker.class)).thenReturn(tagListData);
+               
+               termListData = new ArrayList<>();
+               TermList termList = new TermList();
+               termList.setTermName("Test");
+               termList.setFromZones("Test");
+               termList.setToZones("Test");
+               termList.setSrcIPList("Test");
+               termList.setDestIPList("Test");
+               termList.setSrcPortList("Test");
+               termList.setDestPortList("Test");
+               termList.setAction("Test");
+               termListData.add(termList);
+               when(commonClassDao.getData(TermList.class)).thenReturn(termListData);
+               when(commonClassDao.getDataById(TermList.class, "termName", "Test")).thenReturn(termListData);
+       }
+
+       @Test
+       public final void testPolicyCreationController() {
+               PolicyRestController controller = new PolicyRestController();
+               BufferedReader reader = new BufferedReader(new StringReader(clRequestString));
+               try {
+                       Mockito.when(request.getReader()).thenReturn(reader);
+                       controller.policyCreationController(request, response); 
+               } catch (IOException e) {
+                       fail();
+               }
+               PolicyRestController controller1 = new PolicyRestController();
+               CreateFirewallController.setCommonClassDao(commonClassDao);
+               BufferedReader reader1 = new BufferedReader(new StringReader(fwRequestString));
+               try {
+                       Mockito.when(request.getReader()).thenReturn(reader1);
+                       controller1.policyCreationController(request, response);        
+               } catch (IOException e) {
+                       fail();
+               }
+               
+               CreateFirewallController fwController = new CreateFirewallController();
+               CreateFirewallController.setCommonClassDao(commonClassDao);
+               BufferedReader reader2 = new BufferedReader(new StringReader(fwViewRequestString));
+               try {
+                       Mockito.when(request.getReader()).thenReturn(reader2);
+                       fwController.setFWViewRule(request, response);  
+               } catch (IOException e) {
+                       fail();
+               }
+       }
+
+       @Test
+       public final void testDeleteElasticData() {
+               PolicyRestController controller = new PolicyRestController();
+               try {
+                       controller.deleteElasticData("Test");
+               } catch (Exception e) {
+                       fail();
+               }
+       }
+
+}
index 4931d20..f4acaeb 100644 (file)
@@ -41,12 +41,12 @@ public class PolicyUserInfoControllerTest {
        @Before
        public void setUp() throws Exception {
                HttpSession mockSession = mock(HttpSession.class);
-                request = mock(HttpServletRequest.class);  
-                response =  new MockHttpServletResponse();
-                User user = new User();
-                user.setOrgUserId("Test");
-                Mockito.when(mockSession.getAttribute(SystemProperties.getProperty("user_attribute_name"))).thenReturn(user);
-                Mockito.when(request.getSession(false)).thenReturn(mockSession);
+               request = mock(HttpServletRequest.class);  
+               response =  new MockHttpServletResponse();
+               User user = new User();
+               user.setOrgUserId("Test");
+               Mockito.when(mockSession.getAttribute(SystemProperties.getProperty("user_attribute_name"))).thenReturn(user);
+               Mockito.when(request.getSession(false)).thenReturn(mockSession);
        }
 
        @Test
index d4b0c65..63ca29d 100644 (file)
 
 package org.onap.policy.daoImp;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import java.io.File;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Properties;
@@ -39,9 +43,9 @@ import org.onap.policy.common.logging.flexlogger.FlexLogger;
 import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.conf.HibernateSession;
 import org.onap.policy.controller.PolicyController;
-import org.onap.policy.daoImp.CommonClassDaoImpl;
 import org.onap.policy.rest.jpa.OnapName;
 import org.onap.policy.rest.jpa.PolicyEntity;
+import org.onap.policy.rest.jpa.PolicyRoles;
 import org.onap.policy.rest.jpa.PolicyVersion;
 import org.onap.policy.rest.jpa.SystemLogDB;
 import org.onap.policy.rest.jpa.UserInfo;
@@ -392,11 +396,49 @@ public class CommonClassDaoImplTest{
                        fail();
                }
        }
+       
+       @Test
+       public void testCommonClassDaoImplMethods(){
+               try{
+                       UserInfo userInfo = new UserInfo();
+                       userInfo.setUserLoginId("TestID");
+                       userInfo.setUserName("Test");
+                       commonClassDao.save(userInfo);
+                       List<Object> data = commonClassDao.getDataById(UserInfo.class, "userLoginId:userName", "TestID:Test");
+                       assertTrue(data.size() == 1);
+                       UserInfo userInfoUpdate = (UserInfo) data.get(0);
+                       userInfoUpdate.setUserName("Test1");
+                       commonClassDao.update(userInfoUpdate);
+                       List<String> data1 = commonClassDao.getDataByColumn(UserInfo.class, "userLoginId");
+                       assertTrue(data1.size() == 1);
+                       UserInfo data2 = (UserInfo) commonClassDao.getEntityItem(UserInfo.class, "userLoginId:userName", "TestID:Test1");
+                       assertTrue("TestID".equals(data2.getUserLoginId()));
+                       List<Object> data3 = commonClassDao.checkDuplicateEntry("TestID:Test1", "userLoginId:userName", UserInfo.class);
+                       assertTrue(data3.size() == 1);
+                       PolicyRoles roles = new PolicyRoles();
+                       roles.setRole("admin");
+                       roles.setLoginId(userInfo);
+                       roles.setScope("test");
+                       commonClassDao.save(roles);
+                       List<PolicyRoles> roles1 = commonClassDao.getUserRoles();
+                       assertTrue(roles1.size() == 1);
+                       List<String> multipleData = new ArrayList<>();
+                       multipleData.add("TestID:Test1");
+                       List<Object> data4 = commonClassDao.getMultipleDataOnAddingConjunction(UserInfo.class, "userLoginId:userName", multipleData);
+                       assertTrue(data4.size() == 1);
+                       commonClassDao.delete(data2);
+               }catch(Exception e){
+                       logger.debug("Exception Occured"+e);
+                       fail();
+               }
+       }
+       
 
+       
        @Test
        public final void testGetLoggingData() {
                SystemLogDbDaoImpl system = new SystemLogDbDaoImpl();
-               SystemLogDbDaoImpl.setjUnit(true);
+               PolicyController.setjUnit(true);
                try{
                        assertTrue(system.getLoggingData() != null);
                }catch(Exception e){
@@ -407,7 +449,7 @@ public class CommonClassDaoImplTest{
        @Test
        public final void testGetSystemAlertData() {
                SystemLogDbDaoImpl system = new SystemLogDbDaoImpl();
-               SystemLogDbDaoImpl.setjUnit(true);
+               PolicyController.setjUnit(true);
                try{
                        assertTrue(system.getSystemAlertData() != null);
                }catch(Exception e){
diff --git a/POLICY-SDK-APP/src/test/resources/test.properties b/POLICY-SDK-APP/src/test/resources/test.properties
new file mode 100644 (file)
index 0000000..e882dfd
--- /dev/null
@@ -0,0 +1,21 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP Policy Engine
+# ================================================================================
+# 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=========================================================
+###
+
+PDP_URL=http://localhost:8082/pdp/, testpdp, alpha456;http://localhost:8081/pdp/, testpdp, alpha456
index 0f285b6..333da49 100644 (file)
@@ -87,8 +87,8 @@ xacml.log.db.password=policy_user
 
 xacml.att.log.timeframe=150
 
-javax.persistence.jdbc.driver=com.mysql.jdbc.Driver
-javax.persistence.jdbc.url=jdbc:mysql://localhost:3306/onap_sdk
+javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
+javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk
 javax.persistence.jdbc.user=policy_user
 javax.persistence.jdbc.password=policy_user
 
index 25636fb..862b654 100644 (file)
 package org.onap.policy.api;
 
 import java.util.Map;
+
 /**
  * <code>LoadedPolicy</code> defines the Policy that has been Loaded into the PDP. 
- * 
- * @version 0.2 
+ *
+ * @version 0.2
  */
 public interface LoadedPolicy {
-       /**
-        * Gets the <code>String</code> format of the Policy Name that has been Loaded into the PDP. 
-        * 
-        * @return <code>String</code> format of Policy Name
-        */
-       public String getPolicyName();
-       
-       /**
-        * Gets the <code>String</code> format of the Policy Version that has been Loaded into the PDP. 
-        * 
-        * @return <code>String</code> format of the Policy Version. 
-        */
-       public String getVersionNo();
-       
-       /**
-        * Gets the <code>Map</code> of <code>String,String</code> format of the Matches if the policy Loaded is of Config Type. 
-        * 
-        * @return the <code>Map</code> of <code>String,String</code> format of the matches in the policy. 
-        */
-       public Map<String, String> getMatches();
-       
-       /**
-        * Gets the <code>UpdateType</code> of {@link org.onap.policy.api.UpdateType} received.
-        * 
-        * @return <code>UpdateType</code> associated with this <code>PDPNotification</code>
-        */
-       public UpdateType getUpdateType();
+
+    /**
+     * Gets the <code>String</code> format of the Policy Name that has been Loaded into the PDP.
+     *
+     * @return <code>String</code> format of Policy Name
+     */
+    String getPolicyName();
+
+    /**
+     * Gets the <code>String</code> format of the Policy Version that has been Loaded into the PDP.
+     *
+     * @return <code>String</code> format of the Policy Version.
+     */
+    String getVersionNo();
+
+    /**
+     * Gets the <code>Map</code> of <code>String,String</code> format of the Matches if the policy Loaded is of Config Type.
+     *
+     * @return the <code>Map</code> of <code>String,String</code> format of the matches in the policy.
+     */
+    Map<String, String> getMatches();
+
+    /**
+     * Gets the <code>UpdateType</code> of {@link org.onap.policy.api.UpdateType} received.
+     *
+     * @return <code>UpdateType</code> associated with this <code>PDPNotification</code>
+     */
+    UpdateType getUpdateType();
 }
index 837eba9..78b79a0 100644 (file)
  */
 
 package org.onap.policy.api;
+
 /**
  * Defines the methods which need to run when an Event or Notification is received.
- *  
+ *
  * @version 0.1
  */
 @FunctionalInterface
 public interface NotificationHandler {
-       /**
-        * <code>notificationReceived</code> method will be triggered automatically whenever a Notification is received by the PEP.
-        * 
-        * @param notification <code>PDPNotification</code> of {@link org.onap.policy.api.PDPNotification} is the object that has information of the notification.
-        */
-       public void notificationReceived(PDPNotification notification);
+
+    /**
+     * <code>notificationReceived</code> method will be triggered automatically whenever a Notification is received by the PEP.
+     *
+     * @param notification <code>PDPNotification</code> of {@link org.onap.policy.api.PDPNotification}
+     * is the object that has information of the notification.
+     */
+    void notificationReceived(PDPNotification notification);
 }
index 730ad02..8b65a42 100644 (file)
@@ -23,36 +23,35 @@ package org.onap.policy.api;
 /**
  * Enumeration of the Update Type that has occurred in the <code>PDPNotification</code> of 
  * {@link org.onap.policy.api.PDPNotification}
- * 
+ *
  * @version 0.1
  */
 public enum NotificationType {
-       /**
-        * Indicates that a policy has been updated
-        */
-       UPDATE("update"),
-       /**
-        * Indicates that a policy has been removed
-        */
-       REMOVE("remove"),
-       /**
-        * Indicates that both update and removal of policy events has occurred.
-        */
-       BOTH("both")
-       ;
-       
-       private String name;
-       
-       private NotificationType(String name){
-               this.name = name;
-       }
-       
-       /**
-        * Returns the <code>String</code> format of the Type for this <code>UpdateType</code>
-        * @return the <code>String</code> Type of <code>UpdateType</code>
-        */
-       @Override
-       public String toString(){
-               return this.name;
-       }
+    /**
+     * Indicates that a policy has been updated
+     */
+    UPDATE("update"),
+    /**
+     * Indicates that a policy has been removed
+     */
+    REMOVE("remove"),
+    /**
+     * Indicates that both update and removal of policy events has occurred.
+     */
+    BOTH("both");
+
+    private String name;
+
+    NotificationType(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Returns the <code>String</code> format of the Type for this <code>UpdateType</code>
+     * @return the <code>String</code> Type of <code>UpdateType</code>
+     */
+    @Override
+    public String toString() {
+        return this.name;
+    }
 }
index a88ec06..9ab5082 100644 (file)
@@ -24,29 +24,29 @@ import java.util.Collection;
 
 /**
  * Defines the <code>Notification</code> event sent from PDP to Client PEP.  
- * 
+ *
  * @version 0.2
  */
 public interface PDPNotification {
-       /**
-        * Gets the <code>Collection</code> of {@link org.onap.policy.api.RemovedPolicy} objects received. 
-        * 
-        * @return the <code>Collection</code> which consists of <code>RemovedPolicy</code> objects.
-        */
-       public Collection<RemovedPolicy> getRemovedPolicies();
-       
-       /**
-        * Gets the <code>Collection</code> of {@link org.onap.policy.api.LoadedPolicy} objects receieved.
-        *
-        * @return the <code>Collection</code> which consists of <code>UpdatedPolicy</code> objects.
-        */
-       public Collection<LoadedPolicy> getLoadedPolicies();
-       
-       /**
-        * Gets the <code>NotificationType</code> of {@link org.onap.policy.api.NotificationType} received.
-        * 
-        * @return <code>NotificationType</code> associated with this <code>PDPNotification</code>
-        */
-       public NotificationType getNotificationType();
-       
+
+    /**
+     * Gets the <code>Collection</code> of {@link org.onap.policy.api.RemovedPolicy} objects received.
+     *
+     * @return the <code>Collection</code> which consists of <code>RemovedPolicy</code> objects.
+     */
+    Collection<RemovedPolicy> getRemovedPolicies();
+
+    /**
+     * Gets the <code>Collection</code> of {@link org.onap.policy.api.LoadedPolicy} objects receieved.
+     *
+     * @return the <code>Collection</code> which consists of <code>UpdatedPolicy</code> objects.
+     */
+    Collection<LoadedPolicy> getLoadedPolicies();
+
+    /**
+     * Gets the <code>NotificationType</code> of {@link org.onap.policy.api.NotificationType} received.
+     *
+     * @return <code>NotificationType</code> associated with this <code>PDPNotification</code>
+     */
+    NotificationType getNotificationType();
 }
index f26c149..e8125a1 100644 (file)
  */
 
 package org.onap.policy.api;
+
 /**
  * <code>RemovedPolicy</code> defines the Policy that has been removed 
- * 
+ *
  * @version 0.1
  */
 public interface RemovedPolicy {
-       /**
-        * Gets the <code>String</code> format of the Policy Name that has been removed.
-        * 
-        * @return <code>String</code> format of Policy Name
-        */
-       public String getPolicyName();
-       
-       /**
-        * Gets the <code>String</code> format of the Policy Version that has been removed.
-        * 
-        * @return <code>String</code> format of Policy Version
-        */
-       public String getVersionNo();
+
+    /**
+     * Gets the <code>String</code> format of the Policy Name that has been removed.
+     *
+     * @return <code>String</code> format of Policy Name
+     */
+    String getPolicyName();
+
+    /**
+     * Gets the <code>String</code> format of the Policy Version that has been removed.
+     *
+     * @return <code>String</code> format of Policy Version
+     */
+    String getVersionNo();
 }
index deeecdd..7f401fe 100644 (file)
@@ -23,32 +23,31 @@ package org.onap.policy.api;
 /**
  * Enumeration of the Update Type that has occurred in the <code>UpdatedPolicy</code> of 
  * {@link org.onap.policy.api.LoadedPolicy}
- * 
+ *
  * @version 0.1
  */
 public enum UpdateType {
-       /**
-        * Indicates that a policy has been updated
-        */
-       UPDATE("update"),
-       /**
-        * Indicates that a policy is new
-        */
-       NEW("new")
-       ;
-       
-       private String name;
-       
-       private UpdateType(String name){
-               this.name = name;
-       }
-       
-       /**
-        * Returns the <code>String</code> format of the Type for this <code>UpdateType</code>
-        * @return the <code>String</code> Type of <code>UpdateType</code>
-        */
-       @Override
-       public String toString(){
-               return this.name;
-       }
+    /**
+     * Indicates that a policy has been updated
+     */
+    UPDATE("update"),
+    /**
+     * Indicates that a policy is new
+     */
+    NEW("new");
+
+    private String name;
+
+    UpdateType(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Returns the <code>String</code> format of the Type for this <code>UpdateType</code>
+     * @return the <code>String</code> Type of <code>UpdateType</code>
+     */
+    @Override
+    public String toString() {
+        return this.name;
+    }
 }
index f2e7f3f..1bfffce 100644 (file)
@@ -22,7 +22,6 @@ package org.onap.policy.jpa;
 
 import java.io.Serializable;
 import java.util.Date;
-
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
@@ -38,80 +37,81 @@ import javax.persistence.TemporalType;
 
 
 @Entity
-@Table(name="BackUpMonitorEntity")
-@NamedQuery(name="BackUpMonitorEntity.findAll", query= "SELECT b FROM BackUpMonitorEntity b ")
-public class BackUpMonitorEntity implements Serializable{
-       private static final long serialVersionUID = -9190606334322230630L;
-       
-       @Id
-       @GeneratedValue(strategy = GenerationType.AUTO)
-       @Column(name="id")
-       private int id;
-       
-       @Column(name="node_name", nullable=false)
-       private String resourceNodeName;
-       
-       @Column(name="resource_name", nullable=false, unique=true)
-       private String resourceName;
-       
-       @Column(name="flag", nullable=false)
-       private String flag;
-       
-       @Lob
-       @Column(name="notification_record")
-       private String notificationRecord;
-       
-       @Temporal(TemporalType.TIMESTAMP)
-       @Column(name="last_seen")
-       private Date timeStamp;
-       
-       @PrePersist
-       public void prePersist(){
-               this.timeStamp = new Date();
-       }
-       
-       @PreUpdate
-       public void preUpdate(){
-               this.timeStamp = new Date();
-       }
-       
-       public String getResourceName(){
-               return this.resourceName;
-       }
-       
-       public String getResourceNodeName(){
-               return this.resourceNodeName;
-       }
-       
-       public String getFlag(){
-               return this.flag;
-       }
-       
-       public String getNotificationRecord(){
-               return this.notificationRecord;
-       }
-       
-       public Date getTimeStamp(){
-               return this.timeStamp;
-       }
-       
-       public void setResourceName(String resourceName){
-               this.resourceName = resourceName;
-       }
-       
-       public void setResoruceNodeName(String resourceNodeName){
-               this.resourceNodeName = resourceNodeName;
-       }
-       
-       public void setFlag(String flag){
-               this.flag = flag;
-       }
-       
-       public void setNotificationRecord(String notificationRecord){
-               this.notificationRecord = notificationRecord;
-       }
-       
-       public void setTimeStamp(Date timeStamp){
-               this.timeStamp = timeStamp;
-       }
+@Table(name = "BackUpMonitorEntity")
+@NamedQuery(name = "BackUpMonitorEntity.findAll", query = "SELECT b FROM BackUpMonitorEntity b ")
+public class BackUpMonitorEntity implements Serializable {
+
+    private static final long serialVersionUID = -9190606334322230630L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    @Column(name = "id")
+    private int id;
+
+    @Column(name = "node_name", nullable = false)
+    private String resourceNodeName;
+
+    @Column(name = "resource_name", nullable = false, unique = true)
+    private String resourceName;
+
+    @Column(name = "flag", nullable = false)
+    private String flag;
+
+    @Lob
+    @Column(name = "notification_record")
+    private String notificationRecord;
+
+    @Temporal(TemporalType.TIMESTAMP)
+    @Column(name = "last_seen")
+    private Date timeStamp;
+
+    @PrePersist
+    public void prePersist() {
+        this.timeStamp = new Date();
+    }
+
+    @PreUpdate
+    public void preUpdate() {
+        this.timeStamp = new Date();
+    }
+
+    public String getResourceName() {
+        return this.resourceName;
+    }
+
+    public String getResourceNodeName() {
+        return this.resourceNodeName;
+    }
+
+    public String getFlag() {
+        return this.flag;
+    }
+
+    public String getNotificationRecord() {
+        return this.notificationRecord;
+    }
+
+    public Date getTimeStamp() {
+        return this.timeStamp;
+    }
+
+    public void setResourceName(String resourceName) {
+        this.resourceName = resourceName;
+    }
+
+    public void setResourceNodeName(String resourceNodeName) {
+        this.resourceNodeName = resourceNodeName;
+    }
+
+    public void setFlag(String flag) {
+        this.flag = flag;
+    }
+
+    public void setNotificationRecord(String notificationRecord) {
+        this.notificationRecord = notificationRecord;
+    }
+
+    public void setTimeStamp(Date timeStamp) {
+        this.timeStamp = timeStamp;
+    }
 }
index 259a70d..8c6c958 100644 (file)
@@ -24,7 +24,6 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Iterator;
-
 import org.onap.policy.api.LoadedPolicy;
 import org.onap.policy.api.NotificationType;
 import org.onap.policy.api.PDPNotification;
@@ -38,229 +37,221 @@ import org.onap.policy.api.RemovedPolicy;
  * 
  */
 public class NotificationStore {
-       private static StdPDPNotification notificationRecord = new StdPDPNotification();
-       
-       public static StdPDPNotification getDeltaNotification(StdPDPNotification newNotification){
-               StdPDPNotification notificationDelta = new StdPDPNotification();
-               ArrayList<StdRemovedPolicy> removedDelta = new ArrayList<>();
-               ArrayList<StdLoadedPolicy> updatedDelta = new ArrayList<>();
-               Collection<StdLoadedPolicy> newUpdatedPolicies = new ArrayList<>();
-               Collection<StdRemovedPolicy> newRemovedPolicies = new ArrayList<>();
-               Collection<LoadedPolicy> oldUpdatedLostPolicies = notificationRecord.getLoadedPolicies();
-               Collection<RemovedPolicy> oldRemovedPolicies = notificationRecord.getRemovedPolicies();
-               Collection<LoadedPolicy> oldUpdatedPolicies = notificationRecord.getLoadedPolicies();
-               Boolean update = false;
-               Boolean remove = false;
-               // if the NotificationRecord is empty
-               if(notificationRecord.getRemovedPolicies()==null || notificationRecord.getLoadedPolicies()==null){
-                       if(newNotification!=null){
-                               notificationRecord = newNotification;
-                       }
-                       return notificationDelta;
-               }
-               // do the Delta operation. 
-               if(newNotification!=null){
-                       // check for old removed policies.
-                       if(!newNotification.getRemovedPolicies().isEmpty()){
-                               for(RemovedPolicy newRemovedPolicy: newNotification.getRemovedPolicies()){
-                                       //Look for policy Not in Remove
-                                       Boolean removed = true;
-                                       for(RemovedPolicy oldRemovedPolicy: notificationRecord.getRemovedPolicies()){
-                                               if(newRemovedPolicy.getPolicyName().equals(oldRemovedPolicy.getPolicyName())){
-                                                       if(newRemovedPolicy.getVersionNo().equals(oldRemovedPolicy.getVersionNo())){
-                                                               removed = false;
-                                                               // Don't want a duplicate. 
-                                                               oldRemovedPolicies.remove(oldRemovedPolicy);
-                                                       }
-                                               }
-                                       }
-                                       //We need to change our record we have an Update record of this remove.  
-                                       for(LoadedPolicy oldUpdatedPolicy: notificationRecord.getLoadedPolicies()){
-                                               if(newRemovedPolicy.getPolicyName().equals(oldUpdatedPolicy.getPolicyName())){
-                                                       if(newRemovedPolicy.getVersionNo().equals(oldUpdatedPolicy.getVersionNo())){
-                                                               oldUpdatedPolicies.remove(oldUpdatedPolicy);
-                                                               oldUpdatedLostPolicies.remove(oldUpdatedPolicy);
-                                                       }
-                                               }
-                                       }
-                                       if(removed){
-                                               remove = true;
-                                               notificationRecord.getRemovedPolicies().add(newRemovedPolicy);
-                                               removedDelta.add((StdRemovedPolicy)newRemovedPolicy);
-                                       }
-                                       // This will be converted to New Later. 
-                                       oldRemovedPolicies.add(newRemovedPolicy);
-                               }
-                       }
-                       // Check for old Updated Policies. 
-                       if(!newNotification.getLoadedPolicies().isEmpty()){
-                               for(LoadedPolicy newUpdatedPolicy: newNotification.getLoadedPolicies()){
-                                       // Look for policies which are not in Update
-                                       Boolean updated = true;
-                                       for(LoadedPolicy oldUpdatedPolicy: notificationRecord.getLoadedPolicies()){
-                                               if(newUpdatedPolicy.getPolicyName().equals(oldUpdatedPolicy.getPolicyName())){
-                                                       if(newUpdatedPolicy.getVersionNo().equals(oldUpdatedPolicy.getVersionNo())){
-                                                               updated = false;
-                                                               // Remove the policy from copy. 
-                                                               oldUpdatedLostPolicies.remove(oldUpdatedPolicy);
-                                                               // Eliminating Duplicate. 
-                                                               oldUpdatedPolicies.remove(oldUpdatedPolicy);
-                                                       }
-                                               }
-                                       }
-                                       // Change the record if the policy has been Removed earlier. 
-                                       for(RemovedPolicy oldRemovedPolicy: notificationRecord.getRemovedPolicies()){
-                                               if(oldRemovedPolicy.getPolicyName().equals(newUpdatedPolicy.getPolicyName())){
-                                                       if(oldRemovedPolicy.getVersionNo().equals(newUpdatedPolicy.getVersionNo())){
-                                                               oldRemovedPolicies.remove(oldRemovedPolicy);
-                                                       }
-                                               }
-                                       }
-                                       if(updated){
-                                               update = true;
-                                               updatedDelta.add((StdLoadedPolicy)newUpdatedPolicy);
-                                       }
-                                       // This will be converted to new Later
-                                       oldUpdatedPolicies.add(newUpdatedPolicy);
-                               }
-                               // Conversion of Update to Remove if that occurred.
-                               if(!oldUpdatedLostPolicies.isEmpty()){
-                                       for(LoadedPolicy updatedPolicy: oldUpdatedLostPolicies){
-                                               StdRemovedPolicy removedPolicy = new StdRemovedPolicy();
-                                               removedPolicy.setPolicyName(updatedPolicy.getPolicyName());
-                                               removedPolicy.setVersionNo(updatedPolicy.getVersionNo());
-                                               removedDelta.add(removedPolicy);
-                                               remove = true;
-                                       }
-                               }
-                       }
-                       // Update our Record. 
-                       if(!oldUpdatedPolicies.isEmpty()){
-                               for(LoadedPolicy updatedPolicy: oldUpdatedPolicies){
-                                       newUpdatedPolicies.add((StdLoadedPolicy)updatedPolicy);
-                               }
-                       }
-                       if(!oldRemovedPolicies.isEmpty()){
-                               for(RemovedPolicy removedPolicy: oldRemovedPolicies){
-                                       newRemovedPolicies.add((StdRemovedPolicy)removedPolicy);
-                               }
-                       }
-                       notificationRecord.setRemovedPolicies(newRemovedPolicies);
-                       notificationRecord.setLoadedPolicies(newUpdatedPolicies);
-                       // Update the notification Result. 
-                       notificationDelta.setRemovedPolicies(removedDelta);
-                       notificationDelta.setLoadedPolicies(updatedDelta);
-                       if(remove&&update){
-                               notificationDelta.setNotificationType(NotificationType.BOTH);
-                       }else if(remove){
-                               notificationDelta.setNotificationType(NotificationType.REMOVE);
-                       }else if(update){
-                               notificationDelta.setNotificationType(NotificationType.UPDATE);
-                       }
-               }
-               return notificationDelta;
-       }
-       
-       public static void recordNotification(StdPDPNotification notification){
-               if(notification!=null){
-                       if(notificationRecord.getRemovedPolicies()==null || notificationRecord.getLoadedPolicies()==null){
-                               notificationRecord = notification;
-                       }else{
-                               // Check if there is anything new and update the record. 
-                               if(notificationRecord.getLoadedPolicies()!=null || notificationRecord.getRemovedPolicies()!=null){
-                                       HashSet<StdRemovedPolicy> removedPolicies = new HashSet<>();
-                                       for(RemovedPolicy rPolicy: notificationRecord.getRemovedPolicies()){
-                                               StdRemovedPolicy sRPolicy = new StdRemovedPolicy();
-                                               sRPolicy.setPolicyName(rPolicy.getPolicyName());
-                                               sRPolicy.setVersionNo(rPolicy.getVersionNo());
-                                               removedPolicies.add(sRPolicy);
-                                       }
-                                       HashSet<StdLoadedPolicy> updatedPolicies = new HashSet<>();
-                                       for(LoadedPolicy uPolicy: notificationRecord.getLoadedPolicies()){
-                                               StdLoadedPolicy sUPolicy = new StdLoadedPolicy();
-                                               sUPolicy.setMatches(uPolicy.getMatches());
-                                               sUPolicy.setPolicyName(uPolicy.getPolicyName());
-                                               sUPolicy.setVersionNo(uPolicy.getVersionNo());
-                                               sUPolicy.setUpdateType(uPolicy.getUpdateType());
-                                               updatedPolicies.add(sUPolicy);
-                                       }
-                                       
-                                       // Checking with the new updated policies.
-                                       if(notification.getLoadedPolicies()!=null && !notification.getLoadedPolicies().isEmpty()){
-                                               for(LoadedPolicy newUpdatedPolicy: notification.getLoadedPolicies()){
-                                                       // If it was removed earlier then we need to remove from our record
-                                                       Iterator<StdRemovedPolicy> oldRemovedPolicy = removedPolicies.iterator();
-                                                       while(oldRemovedPolicy.hasNext()){
-                                                               RemovedPolicy policy = oldRemovedPolicy.next(); 
-                                                               if(newUpdatedPolicy.getPolicyName().equals(policy.getPolicyName())) {
-                                                                       if(newUpdatedPolicy.getVersionNo().equals(policy.getVersionNo())) {
-                                                                               oldRemovedPolicy.remove();
-                                                                       }
-                                                               }
-                                                       }
-                                                       // If it was previously updated need to Overwrite it to the record. 
-                                                       Iterator<StdLoadedPolicy> oldUpdatedPolicy = updatedPolicies.iterator();
-                                                       while(oldUpdatedPolicy.hasNext()){
-                                                               LoadedPolicy policy = oldUpdatedPolicy.next();
-                                                               if(newUpdatedPolicy.getPolicyName().equals(policy.getPolicyName())) {
-                                                                       if(newUpdatedPolicy.getVersionNo().equals(policy.getVersionNo())) {
-                                                                               oldUpdatedPolicy.remove();
-                                                                       }
-                                                               }
-                                                       }
-                                                       StdLoadedPolicy sUPolicy = new StdLoadedPolicy();
-                                                       sUPolicy.setMatches(newUpdatedPolicy.getMatches());
-                                                       sUPolicy.setPolicyName(newUpdatedPolicy.getPolicyName());
-                                                       sUPolicy.setVersionNo(newUpdatedPolicy.getVersionNo());
-                                                       sUPolicy.setUpdateType(newUpdatedPolicy.getUpdateType());
-                                                       updatedPolicies.add(sUPolicy);
-                                               }
-                                       }
-                                       // Checking with New Removed Policies.
-                                       if(notification.getRemovedPolicies()!=null && !notification.getRemovedPolicies().isEmpty()){
-                                               for(RemovedPolicy newRemovedPolicy : notification.getRemovedPolicies()){
-                                                       // If it was previously removed Overwrite it to the record. 
-                                                       Iterator<StdRemovedPolicy> oldRemovedPolicy = removedPolicies.iterator();
-                                                       while(oldRemovedPolicy.hasNext()){
-                                                               RemovedPolicy policy = oldRemovedPolicy.next(); 
-                                                               if(newRemovedPolicy.getPolicyName().equals(policy.getPolicyName())) {
-                                                                       if(newRemovedPolicy.getVersionNo().equals(policy.getVersionNo())) {
-                                                                               oldRemovedPolicy.remove();
-                                                                       }
-                                                               }
-                                                       }
-                                                       // If it was added earlier then we need to remove from our record. 
-                                                       Iterator<StdLoadedPolicy> oldUpdatedPolicy = updatedPolicies.iterator();
-                                                       while(oldUpdatedPolicy.hasNext()){
-                                                               LoadedPolicy policy = oldUpdatedPolicy.next();
-                                                               if(newRemovedPolicy.getPolicyName().equals(policy.getPolicyName())) {
-                                                                       if(newRemovedPolicy.getVersionNo().equals(policy.getVersionNo())) {
-                                                                               oldUpdatedPolicy.remove();
-                                                                       }
-                                                               }
-                                                       }
-                                                       StdRemovedPolicy sRPolicy = new StdRemovedPolicy();
-                                                       sRPolicy.setPolicyName(newRemovedPolicy.getPolicyName());
-                                                       sRPolicy.setVersionNo(newRemovedPolicy.getVersionNo());
-                                                       removedPolicies.add(sRPolicy);
-                                               }
-                                       }
-                                       notificationRecord.setRemovedPolicies(removedPolicies);
-                                       notificationRecord.setLoadedPolicies(updatedPolicies);
-                               }
-                               if(!notificationRecord.getLoadedPolicies().isEmpty() && !notificationRecord.getRemovedPolicies().isEmpty()){
-                                       notificationRecord.setNotificationType(NotificationType.BOTH);
-                               }else if(!notificationRecord.getLoadedPolicies().isEmpty()){
-                                       notificationRecord.setNotificationType(NotificationType.UPDATE);
-                               }else if(!notificationRecord.getRemovedPolicies().isEmpty()){
-                                       notificationRecord.setNotificationType(NotificationType.REMOVE);
-                               }
-                       }
-               }
-       }
-       
-       // This should return the current Notification Record. 
-       public static PDPNotification getNotificationRecord(){
-               return notificationRecord;
-       }
+
+    private static StdPDPNotification notificationRecord = new StdPDPNotification();
+
+    public static StdPDPNotification getDeltaNotification(StdPDPNotification newNotification) {
+        StdPDPNotification notificationDelta = new StdPDPNotification();
+        ArrayList<StdRemovedPolicy> removedDelta = new ArrayList<>();
+        ArrayList<StdLoadedPolicy> updatedDelta = new ArrayList<>();
+        Collection<StdLoadedPolicy> newUpdatedPolicies = new ArrayList<>();
+        Collection<StdRemovedPolicy> newRemovedPolicies = new ArrayList<>();
+        Collection<LoadedPolicy> oldUpdatedLostPolicies = notificationRecord.getLoadedPolicies();
+        Collection<RemovedPolicy> oldRemovedPolicies = notificationRecord.getRemovedPolicies();
+        Collection<LoadedPolicy> oldUpdatedPolicies = notificationRecord.getLoadedPolicies();
+        Boolean update = false;
+        Boolean remove = false;
+        // if the NotificationRecord is empty
+        if (notificationRecord.getRemovedPolicies() == null || notificationRecord.getLoadedPolicies() == null) {
+            if (newNotification != null) {
+                notificationRecord = newNotification;
+            }
+            return notificationDelta;
+        }
+        // do the Delta operation.
+        if (newNotification != null) {
+            // check for old removed policies.
+            if (!newNotification.getRemovedPolicies().isEmpty()) {
+                for (RemovedPolicy newRemovedPolicy : newNotification.getRemovedPolicies()) {
+                    //Look for policy Not in Remove
+                    Boolean removed = true;
+                    String policyName = newRemovedPolicy.getPolicyName();
+                    String ver = newRemovedPolicy.getVersionNo();
+                    for (RemovedPolicy oldRemovedPolicy : notificationRecord.getRemovedPolicies()) {
+                        if (policyName.equals(oldRemovedPolicy.getPolicyName())
+                            && ver.equals(oldRemovedPolicy.getVersionNo())) {
+                            removed = false;
+                            // Don't want a duplicate.
+                            oldRemovedPolicies.remove(oldRemovedPolicy);
+                        }
+                    }
+                    //We need to change our record we have an Update record of this remove.
+                    for (LoadedPolicy oldUpdatedPolicy : notificationRecord.getLoadedPolicies()) {
+                        if (policyName.equals(oldUpdatedPolicy.getPolicyName())
+                            && ver.equals(oldUpdatedPolicy.getVersionNo())) {
+                            oldUpdatedPolicies.remove(oldUpdatedPolicy);
+                            oldUpdatedLostPolicies.remove(oldUpdatedPolicy);
+                        }
+                    }
+                    if (removed) {
+                        remove = true;
+                        notificationRecord.getRemovedPolicies().add(newRemovedPolicy);
+                        removedDelta.add((StdRemovedPolicy) newRemovedPolicy);
+                    }
+                    // This will be converted to New Later.
+                    oldRemovedPolicies.add(newRemovedPolicy);
+                }
+            }
+            // Check for old Updated Policies.
+            if (!newNotification.getLoadedPolicies().isEmpty()) {
+                for (LoadedPolicy newUpdatedPolicy : newNotification.getLoadedPolicies()) {
+                    // Look for policies which are not in Update
+                    Boolean updated = true;
+                    String policyName = newUpdatedPolicy.getPolicyName();
+                    String ver = newUpdatedPolicy.getVersionNo();
+                    for (LoadedPolicy oldUpdatedPolicy : notificationRecord.getLoadedPolicies()) {
+                        if (policyName.equals(oldUpdatedPolicy.getPolicyName())
+                            && ver.equals(oldUpdatedPolicy.getVersionNo())) {
+                            updated = false;
+                            // Remove the policy from copy.
+                            oldUpdatedLostPolicies.remove(oldUpdatedPolicy);
+                            // Eliminating Duplicate.
+                            oldUpdatedPolicies.remove(oldUpdatedPolicy);
+                        }
+                    }
+                    // Change the record if the policy has been Removed earlier.
+                    for (RemovedPolicy oldRemovedPolicy : notificationRecord.getRemovedPolicies()) {
+                        if (oldRemovedPolicy.getPolicyName().equals(policyName)
+                            && oldRemovedPolicy.getVersionNo().equals(ver)) {
+                            oldRemovedPolicies.remove(oldRemovedPolicy);
+                        }
+                    }
+                    if (updated) {
+                        update = true;
+                        updatedDelta.add((StdLoadedPolicy) newUpdatedPolicy);
+                    }
+                    // This will be converted to new Later
+                    oldUpdatedPolicies.add(newUpdatedPolicy);
+                }
+                // Conversion of Update to Remove if that occurred.
+                if (!oldUpdatedLostPolicies.isEmpty()) {
+                    for (LoadedPolicy updatedPolicy : oldUpdatedLostPolicies) {
+                        StdRemovedPolicy removedPolicy = new StdRemovedPolicy();
+                        removedPolicy.setPolicyName(updatedPolicy.getPolicyName());
+                        removedPolicy.setVersionNo(updatedPolicy.getVersionNo());
+                        removedDelta.add(removedPolicy);
+                        remove = true;
+                    }
+                }
+            }
+            // Update our Record.
+            if (!oldUpdatedPolicies.isEmpty()) {
+                for (LoadedPolicy updatedPolicy : oldUpdatedPolicies) {
+                    newUpdatedPolicies.add((StdLoadedPolicy) updatedPolicy);
+                }
+            }
+            if (!oldRemovedPolicies.isEmpty()) {
+                for (RemovedPolicy removedPolicy : oldRemovedPolicies) {
+                    newRemovedPolicies.add((StdRemovedPolicy) removedPolicy);
+                }
+            }
+            notificationRecord.setRemovedPolicies(newRemovedPolicies);
+            notificationRecord.setLoadedPolicies(newUpdatedPolicies);
+            // Update the notification Result.
+            notificationDelta.setRemovedPolicies(removedDelta);
+            notificationDelta.setLoadedPolicies(updatedDelta);
+            if (remove && update) {
+                notificationDelta.setNotificationType(NotificationType.BOTH);
+            } else if (remove) {
+                notificationDelta.setNotificationType(NotificationType.REMOVE);
+            } else if (update) {
+                notificationDelta.setNotificationType(NotificationType.UPDATE);
+            }
+        }
+        return notificationDelta;
+    }
+
+    public static void recordNotification(StdPDPNotification notification) {
+        if (notification != null) {
+            if (notificationRecord.getRemovedPolicies() == null || notificationRecord.getLoadedPolicies() == null) {
+                notificationRecord = notification;
+            } else {
+                // Check if there is anything new and update the record.
+                if (notificationRecord.getLoadedPolicies() != null || notificationRecord.getRemovedPolicies() != null) {
+                    HashSet<StdRemovedPolicy> removedPolicies = new HashSet<>();
+                    for (RemovedPolicy rPolicy : notificationRecord.getRemovedPolicies()) {
+                        StdRemovedPolicy sRPolicy = new StdRemovedPolicy();
+                        sRPolicy.setPolicyName(rPolicy.getPolicyName());
+                        sRPolicy.setVersionNo(rPolicy.getVersionNo());
+                        removedPolicies.add(sRPolicy);
+                    }
+                    HashSet<StdLoadedPolicy> updatedPolicies = new HashSet<>();
+                    for (LoadedPolicy uPolicy : notificationRecord.getLoadedPolicies()) {
+                        StdLoadedPolicy sUPolicy = new StdLoadedPolicy();
+                        sUPolicy.setMatches(uPolicy.getMatches());
+                        sUPolicy.setPolicyName(uPolicy.getPolicyName());
+                        sUPolicy.setVersionNo(uPolicy.getVersionNo());
+                        sUPolicy.setUpdateType(uPolicy.getUpdateType());
+                        updatedPolicies.add(sUPolicy);
+                    }
+
+                    // Checking with the new updated policies.
+                    if (notification.getLoadedPolicies() != null && !notification.getLoadedPolicies().isEmpty()) {
+                        for (LoadedPolicy newUpdatedPolicy : notification.getLoadedPolicies()) {
+                            // If it was removed earlier then we need to remove from our record
+                            Iterator<StdRemovedPolicy> oldRemovedPolicy = removedPolicies.iterator();
+                            String policyName = newUpdatedPolicy.getPolicyName();
+                            String ver = newUpdatedPolicy.getVersionNo();
+                            while (oldRemovedPolicy.hasNext()) {
+                                RemovedPolicy policy = oldRemovedPolicy.next();
+                                if (policyName.equals(policy.getPolicyName())
+                                    && ver.equals(policy.getVersionNo())) {
+                                    oldRemovedPolicy.remove();
+                                }
+                            }
+                            // If it was previously updated need to Overwrite it to the record.
+                            updatedPolicies.removeIf(policy -> policyName.equals(policy.getPolicyName())
+                                && ver.equals(policy.getVersionNo()));
+
+                            StdLoadedPolicy sUPolicy = new StdLoadedPolicy();
+                            sUPolicy.setMatches(newUpdatedPolicy.getMatches());
+                            sUPolicy.setPolicyName(newUpdatedPolicy.getPolicyName());
+                            sUPolicy.setVersionNo(newUpdatedPolicy.getVersionNo());
+                            sUPolicy.setUpdateType(newUpdatedPolicy.getUpdateType());
+                            updatedPolicies.add(sUPolicy);
+                        }
+                    }
+                    // Checking with New Removed Policies.
+                    if (notification.getRemovedPolicies() != null && !notification.getRemovedPolicies().isEmpty()) {
+                        for (RemovedPolicy newRemovedPolicy : notification.getRemovedPolicies()) {
+                            // If it was previously removed Overwrite it to the record.
+                            Iterator<StdRemovedPolicy> oldRemovedPolicy = removedPolicies.iterator();
+                            String policyName = newRemovedPolicy.getPolicyName();
+                            String ver = newRemovedPolicy.getVersionNo();
+                            while (oldRemovedPolicy.hasNext()) {
+                                RemovedPolicy policy = oldRemovedPolicy.next();
+                                if (policyName.equals(policy.getPolicyName())
+                                    && ver.equals(policy.getVersionNo())) {
+                                    oldRemovedPolicy.remove();
+                                }
+                            }
+                            // If it was added earlier then we need to remove from our record.
+                            updatedPolicies.removeIf(policy -> policyName.equals(policy.getPolicyName())
+                                && ver.equals(policy.getVersionNo()));
+
+                            StdRemovedPolicy sRPolicy = new StdRemovedPolicy();
+                            sRPolicy.setPolicyName(policyName);
+                            sRPolicy.setVersionNo(ver);
+                            removedPolicies.add(sRPolicy);
+                        }
+                    }
+                    notificationRecord.setRemovedPolicies(removedPolicies);
+                    notificationRecord.setLoadedPolicies(updatedPolicies);
+                }
+                if (!notificationRecord.getLoadedPolicies().isEmpty() && !notificationRecord.getRemovedPolicies()
+                    .isEmpty()) {
+                    notificationRecord.setNotificationType(NotificationType.BOTH);
+                } else if (!notificationRecord.getLoadedPolicies().isEmpty()) {
+                    notificationRecord.setNotificationType(NotificationType.UPDATE);
+                } else if (!notificationRecord.getRemovedPolicies().isEmpty()) {
+                    notificationRecord.setNotificationType(NotificationType.REMOVE);
+                }
+            }
+        }
+    }
+
+    // This should return the current Notification Record.
+    public static PDPNotification getNotificationRecord() {
+        return notificationRecord;
+    }
 }
index fe78071..1640fe8 100644 (file)
@@ -22,59 +22,53 @@ package org.onap.policy.std;
 
 import java.util.Collection;
 import java.util.HashSet;
-
 import org.onap.policy.api.LoadedPolicy;
 import org.onap.policy.api.NotificationType;
 import org.onap.policy.api.PDPNotification;
 import org.onap.policy.api.RemovedPolicy;
 
-public class StdPDPNotification implements PDPNotification{
-       private Collection<StdRemovedPolicy> removedPolicies = null;
-       private Collection<StdLoadedPolicy> loadedPolicies = null;
-       private Collection<RemovedPolicy> removed = null;
-       private Collection<LoadedPolicy> updated = null;
-       private NotificationType notificationType= null;
-       
-       @Override
-       public Collection<RemovedPolicy> getRemovedPolicies() {
-               removed = new HashSet<RemovedPolicy>();
-               if(removedPolicies!=null){
-                       for(RemovedPolicy removedPolicy: removedPolicies){
-                               removed.add(removedPolicy);
-                       }
-                       return this.removed;
-               }else{
-                       return null;
-               }
-       }
+public class StdPDPNotification implements PDPNotification {
+
+    private Collection<StdRemovedPolicy> removedPolicies = null;
+    private Collection<StdLoadedPolicy> loadedPolicies = null;
+    private Collection<RemovedPolicy> removed = null;
+    private Collection<LoadedPolicy> updated = null;
+    private NotificationType notificationType = null;
+
+    @Override
+    public Collection<RemovedPolicy> getRemovedPolicies() {
+        removed = new HashSet<>();
+        if (removedPolicies != null) {
+            removed.addAll(removedPolicies);
+            return this.removed;
+        }
+        return null;
+    }
+
+    @Override
+    public Collection<LoadedPolicy> getLoadedPolicies() {
+        updated = new HashSet<>();
+        if (loadedPolicies != null) {
+            updated.addAll(loadedPolicies);
+            return updated;
+        }
+        return null;
+    }
+
+    @Override
+    public NotificationType getNotificationType() {
+        return notificationType;
+    }
 
-       @Override
-       public Collection<LoadedPolicy> getLoadedPolicies() {
-               updated = new HashSet<LoadedPolicy>();
-               if(loadedPolicies!=null){
-                       for(LoadedPolicy updatedPolicy: loadedPolicies){
-                               updated.add(updatedPolicy);
-                       }
-                       return updated;
-               }else{
-                       return null;
-               }
-       }
+    public void setNotificationType(NotificationType notificationType) {
+        this.notificationType = notificationType;
+    }
 
-       @Override
-       public NotificationType getNotificationType() {
-               return notificationType;
-       }
+    public void setLoadedPolicies(Collection<StdLoadedPolicy> loadedPolicies) {
+        this.loadedPolicies = loadedPolicies;
+    }
 
-       public void setNotificationType(NotificationType notificationType){
-               this.notificationType= notificationType;
-       }
-       
-       public void setLoadedPolicies(Collection<StdLoadedPolicy> loadedPolicies) {
-               this.loadedPolicies = loadedPolicies;
-       }
-       
-       public void setRemovedPolicies(Collection<StdRemovedPolicy> removedPolicies) {
-               this.removedPolicies = removedPolicies;
-       }
+    public void setRemovedPolicies(Collection<StdRemovedPolicy> removedPolicies) {
+        this.removedPolicies = removedPolicies;
+    }
 }
index 3cdb515..9aab2ad 100644 (file)
@@ -248,7 +248,7 @@ public class BackUpMonitor {
                 // This is New. create an entry as Master.
                 LOGGER.info("Adding resource " + resourceName + " to Database");
                 BackUpMonitorEntity bMEntity = new BackUpMonitorEntity();
-                bMEntity.setResoruceNodeName(resourceNodeName);
+                bMEntity.setResourceNodeName(resourceNodeName);
                 bMEntity.setResourceName(resourceName);
                 bMEntity = setMaster(bMEntity);
                 bMEntity.setTimeStamp(new Date());
@@ -297,7 +297,7 @@ public class BackUpMonitor {
                 } else {
                     // Resource name is null -> No resource with same name.
                     selfEntity = new BackUpMonitorEntity();
-                    selfEntity.setResoruceNodeName(resourceNodeName);
+                    selfEntity.setResourceNodeName(resourceNodeName);
                     selfEntity.setResourceName(resourceName);
                     selfEntity.setTimeStamp(new Date());
                     selfEntity = setSlave(selfEntity);
index afc3d0d..39434a7 100644 (file)
@@ -61,8 +61,8 @@ 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.driver", "org.mariadb.jdbc.Driver");
+               properties.setProperty("javax.persistence.jdbc.url", "jdbc:mariadb://localhost:3306/onap_sdk");
                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());
@@ -71,8 +71,8 @@ public class testBackUpMonitor {
        @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.driver", "org.mariadb.jdbc.Driver");
+               properties.setProperty("javax.persistence.jdbc.url", "jdbc:mariadb://localhost:3306/onap_sdk");
                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());
@@ -82,7 +82,7 @@ public class testBackUpMonitor {
        @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.driver", "org.mariadb.jdbc.Driver");
                properties.setProperty("javax.persistence.jdbc.url", "");
                properties.setProperty("javax.persistence.jdbc.user", "test");
                properties.setProperty("javax.persistence.jdbc.password", "password");
@@ -95,7 +95,7 @@ public class testBackUpMonitor {
        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.url", "jdbc:mariadb://localhost:3306/onap_sdk");
                properties.setProperty("javax.persistence.jdbc.user", "test");
                properties.setProperty("javax.persistence.jdbc.password", "password");
                properties.setProperty("ping_interval", "500");
@@ -106,8 +106,8 @@ public class testBackUpMonitor {
        @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.driver", "org.mariadb.jdbc.Driver");
+               properties.setProperty("javax.persistence.jdbc.url", "jdbc:mariadb://localhost:3306/onap_sdk");
                properties.setProperty("javax.persistence.jdbc.user", "test");
                properties.setProperty("javax.persistence.jdbc.password", "password");
                properties.setProperty("ping_interval", "");
@@ -118,8 +118,8 @@ public class testBackUpMonitor {
        @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.driver", "org.mariadb.jdbc.Driver");
+               properties.setProperty("javax.persistence.jdbc.url", "jdbc:mariadb://localhost:3306/onap_sdk");
                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());
@@ -135,8 +135,8 @@ public class testBackUpMonitor {
        @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.driver", "org.mariadb.jdbc.Driver");
+               properties.setProperty("javax.persistence.jdbc.url", "jdbc:mariadb://localhost:3306/onap_sdk");
                properties.setProperty("javax.persistence.jdbc.user", "test");
                properties.setProperty("javax.persistence.jdbc.password", "password");
                properties.setProperty("ping_interval", "500");
@@ -252,7 +252,7 @@ public class testBackUpMonitor {
            origBM.setFlag("SLAVE");
            origBM.setTimeStamp(new Date());
            BackUpMonitorEntity bMEntity = new BackUpMonitorEntity();
-        bMEntity.setResoruceNodeName(ResourceNode.BRMS.toString());
+        bMEntity.setResourceNodeName(ResourceNode.BRMS.toString());
         bMEntity.setResourceName("brms_test2");
         bMEntity.setFlag("MASTER");
         bMEntity.setTimeStamp(new Date());        
index 92c6d90..cd08d4a 100644 (file)
@@ -2,9 +2,9 @@ JAVA_HOME=/usr/lib/jvm/java-8-oracle
 POLICY_HOME=/opt/app/policy
 KEYSTORE_PASSWD=PolicyR0ck$
 
-JDBC_DRIVER=com.mysql.jdbc.Driver
-JDBC_URL=jdbc:mysql://localhost:3306/xacml
-JDBC_LOG_URL=jdbc:mysql://localhost:3306/log
+JDBC_DRIVER=org.mariadb.jdbc.Driver
+JDBC_URL=jdbc:mariadb://localhost:3306/onap_sdk
+JDBC_LOG_URL=jdbc:mariadb://localhost:3306/log
 JDBC_USER=policy_user
 JDBC_PASSWORD=
 
diff --git a/pom.xml b/pom.xml
index 96cc501..c615114 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
        <parent>
                <groupId>org.onap.oparent</groupId>
                <artifactId>oparent</artifactId>
-               <version>1.0.0-SNAPSHOT</version>
+               <version>0.1.1</version>
                <relativePath/>
        </parent>