Adding db provider parameters to pap config file 01/83501/1
authorramverma <ram.krishna.verma@est.tech>
Wed, 27 Mar 2019 16:27:36 +0000 (16:27 +0000)
committerramverma <ram.krishna.verma@est.tech>
Wed, 27 Mar 2019 16:27:36 +0000 (16:27 +0000)
Change-Id: I573a345bcf69eb40782277f211fff2b7c69c4f55
Issue-ID: POLICY-1443
Signed-off-by: ramverma <ram.krishna.verma@est.tech>
main/src/main/java/org/onap/policy/pap/main/parameters/PapParameterGroup.java
main/src/main/java/org/onap/policy/pap/main/startstop/PapActivator.java
main/src/test/java/org/onap/policy/pap/main/parameters/CommonTestData.java
main/src/test/resources/parameters/MinimumParameters.json
main/src/test/resources/parameters/PapConfigParameters.json
main/src/test/resources/parameters/PapConfigParameters_InvalidName.json

index 21dcac0..0690fad 100644 (file)
 package org.onap.policy.pap.main.parameters;
 
 import lombok.Getter;
+
 import org.onap.policy.common.parameters.ParameterGroupImpl;
 import org.onap.policy.common.parameters.annotations.NotBlank;
 import org.onap.policy.common.parameters.annotations.NotNull;
+import org.onap.policy.models.provider.PolicyModelsProviderParameters;
 
 /**
  * Class to hold all parameters needed for pap component.
@@ -37,6 +39,7 @@ import org.onap.policy.common.parameters.annotations.NotNull;
 public class PapParameterGroup extends ParameterGroupImpl {
     private RestServerParameters restServerParameters;
     private PdpParameters pdpParameters;
+    private PolicyModelsProviderParameters databaseProviderParameters;
 
     /**
      * Create the pap parameter group.
index 0d078ac..42634ee 100644 (file)
@@ -22,9 +22,9 @@
 package org.onap.policy.pap.main.startstop;
 
 import java.util.Arrays;
-import java.util.Base64;
 import java.util.Properties;
 import java.util.concurrent.atomic.AtomicReference;
+
 import org.onap.policy.common.endpoints.event.comm.TopicEndpoint;
 import org.onap.policy.common.endpoints.event.comm.TopicSource;
 import org.onap.policy.common.endpoints.listeners.MessageTypeDispatcher;
@@ -34,7 +34,6 @@ import org.onap.policy.common.utils.services.Registry;
 import org.onap.policy.common.utils.services.ServiceManagerContainer;
 import org.onap.policy.models.pdp.concepts.PdpStatus;
 import org.onap.policy.models.pdp.enums.PdpMessageType;
-import org.onap.policy.models.provider.PolicyModelsProviderParameters;
 import org.onap.policy.pap.main.PapConstants;
 import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
 import org.onap.policy.pap.main.PolicyPapRuntimeException;
@@ -48,14 +47,14 @@ import org.onap.policy.pap.main.rest.PapRestServer;
 import org.onap.policy.pap.main.rest.PapStatisticsManager;
 
 /**
- * This class wraps a distributor so that it can be activated as a complete service
- * together with all its pap and forwarding handlers.
+ * This class wraps a distributor so that it can be activated as a complete service together with all its pap and
+ * forwarding handlers.
  *
  * @author Ram Krishna Verma (ram.krishna.verma@est.tech)
  */
 public class PapActivator extends ServiceManagerContainer {
-    private static final String[] MSG_TYPE_NAMES = {"messageName"};
-    private static final String[] REQ_ID_NAMES = {"response", "responseTo"};
+    private static final String[] MSG_TYPE_NAMES = { "messageName" };
+    private static final String[] REQ_ID_NAMES = { "response", "responseTo" };
 
     private final PapParameterGroup papParameterGroup;
 
@@ -65,14 +64,14 @@ public class PapActivator extends ServiceManagerContainer {
     private PapRestServer restServer;
 
     /**
-     * Listens for messages on the topic, decodes them into a {@link PdpStatus} message,
-     * and then dispatches them to {@link #reqIdDispatcher}.
+     * Listens for messages on the topic, decodes them into a {@link PdpStatus} message, and then dispatches them to
+     * {@link #reqIdDispatcher}.
      */
     private final MessageTypeDispatcher msgDispatcher;
 
     /**
-     * Listens for {@link PdpStatus} messages and then routes them to the listener
-     * associated with the ID of the originating request.
+     * Listens for {@link PdpStatus} messages and then routes them to the listener associated with the ID of the
+     * originating request.
      */
     private final RequestIdDispatcher<PdpStatus> reqIdDispatcher;
 
@@ -82,7 +81,7 @@ public class PapActivator extends ServiceManagerContainer {
      * @param papParameterGroup the parameters for the pap service
      * @param topicProperties properties used to configure the topics
      */
-    public PapActivator(final PapParameterGroup papParameterGroup, Properties topicProperties) {
+    public PapActivator(final PapParameterGroup papParameterGroup, final Properties topicProperties) {
         super("Policy PAP");
 
         TopicEndpoint.manager.addTopicSinks(topicProperties);
@@ -93,25 +92,18 @@ public class PapActivator extends ServiceManagerContainer {
             this.msgDispatcher = new MessageTypeDispatcher(MSG_TYPE_NAMES);
             this.reqIdDispatcher = new RequestIdDispatcher<>(PdpStatus.class, REQ_ID_NAMES);
 
-        } catch (RuntimeException e) {
+        } catch (final RuntimeException e) {
             throw new PolicyPapRuntimeException(e);
         }
 
         papParameterGroup.getRestServerParameters().setName(papParameterGroup.getName());
 
-        // TODO add these to the json property file
-        PolicyModelsProviderParameters daoParams = new PolicyModelsProviderParameters();
-        daoParams.setDatabaseUrl("jdbc:h2:mem:testdb");
-        daoParams.setDatabaseUser("policy");
-        daoParams.setDatabasePassword(Base64.getEncoder().encodeToString("P01icY".getBytes()));
-        daoParams.setPersistenceUnit("ToscaConceptTest");
-
         final Object pdpUpdateLock = new Object();
-        PdpParameters pdpParams = papParameterGroup.getPdpParameters();
-        AtomicReference<Publisher> pdpPub = new AtomicReference<>();
-        AtomicReference<TimerManager> pdpUpdTimers = new AtomicReference<>();
-        AtomicReference<TimerManager> pdpStChgTimers = new AtomicReference<>();
-        AtomicReference<PolicyModelsProviderFactoryWrapper> daoFactory = new AtomicReference<>();
+        final PdpParameters pdpParams = papParameterGroup.getPdpParameters();
+        final AtomicReference<Publisher> pdpPub = new AtomicReference<>();
+        final AtomicReference<TimerManager> pdpUpdTimers = new AtomicReference<>();
+        final AtomicReference<TimerManager> pdpStChgTimers = new AtomicReference<>();
+        final AtomicReference<PolicyModelsProviderFactoryWrapper> daoFactory = new AtomicReference<>();
 
         // @formatter:off
         addAction("PAP parameters",
@@ -119,7 +111,8 @@ public class PapActivator extends ServiceManagerContainer {
             () -> ParameterService.deregister(papParameterGroup.getName()));
 
         addAction("DAO Factory",
-            () -> daoFactory.set(new PolicyModelsProviderFactoryWrapper(daoParams)),
+            () -> daoFactory.set(new PolicyModelsProviderFactoryWrapper(
+                                    papParameterGroup.getDatabaseProviderParameters())),
             () -> daoFactory.get().close());
 
         addAction("DAO Factory registration",
@@ -197,8 +190,8 @@ public class PapActivator extends ServiceManagerContainer {
      *
      * @param runner function to run in the background
      */
-    private void startThread(Runnable runner) {
-        Thread thread = new Thread(runner);
+    private void startThread(final Runnable runner) {
+        final Thread thread = new Thread(runner);
         thread.setDaemon(true);
 
         thread.start();
@@ -217,8 +210,8 @@ public class PapActivator extends ServiceManagerContainer {
      * Registers the dispatcher with the topic source(s).
      */
     private void registerMsgDispatcher() {
-        for (TopicSource source : TopicEndpoint.manager
-                        .getTopicSources(Arrays.asList(PapConstants.TOPIC_POLICY_PDP_PAP))) {
+        for (final TopicSource source : TopicEndpoint.manager
+                .getTopicSources(Arrays.asList(PapConstants.TOPIC_POLICY_PDP_PAP))) {
             source.register(msgDispatcher);
         }
     }
@@ -227,8 +220,8 @@ public class PapActivator extends ServiceManagerContainer {
      * Unregisters the dispatcher from the topic source(s).
      */
     private void unregisterMsgDispatcher() {
-        for (TopicSource source : TopicEndpoint.manager
-                        .getTopicSources(Arrays.asList(PapConstants.TOPIC_POLICY_PDP_PAP))) {
+        for (final TopicSource source : TopicEndpoint.manager
+                .getTopicSources(Arrays.asList(PapConstants.TOPIC_POLICY_PDP_PAP))) {
             source.unregister(msgDispatcher);
         }
     }
index 9d0a1ab..38d8621 100644 (file)
 
 package org.onap.policy.pap.main.parameters;
 
+import java.util.Base64;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.TreeMap;
+
 import org.onap.policy.common.parameters.ParameterGroup;
 import org.onap.policy.common.utils.coder.Coder;
 import org.onap.policy.common.utils.coder.CoderException;
 import org.onap.policy.common.utils.coder.StandardCoder;
+import org.onap.policy.models.provider.PolicyModelsProviderParameters;
 
 /**
  * Class to hold/create all parameters for test cases.
@@ -53,27 +56,29 @@ public class CommonTestData {
      * @param clazz class of object to be created from the map
      * @return a new object represented by the map
      */
-    public <T extends ParameterGroup> T toObject(Map<String, Object> source, Class<T> clazz) {
+    public <T extends ParameterGroup> T toObject(final Map<String, Object> source, final Class<T> clazz) {
         try {
             return coder.decode(coder.encode(source), clazz);
 
-        } catch (CoderException e) {
+        } catch (final CoderException e) {
             throw new RuntimeException("cannot create " + clazz.getName() + " from map", e);
         }
     }
 
     /**
      * Returns a property map for a PapParameterGroup map for test cases.
+     *
      * @param name name of the parameters
      *
      * @return a property map suitable for constructing an object
      */
-    public Map<String, Object> getPapParameterGroupMap(String name) {
-        Map<String,Object> map = new TreeMap<>();
+    public Map<String, Object> getPapParameterGroupMap(final String name) {
+        final Map<String, Object> map = new TreeMap<>();
 
         map.put("name", name);
         map.put("restServerParameters", getRestServerParametersMap(false));
         map.put("pdpParameters", getPdpParametersMap());
+        map.put("databaseProviderParameters", getPolicyModelsProviderParametersMap());
 
         return map;
     }
@@ -84,8 +89,8 @@ public class CommonTestData {
      * @param isEmpty boolean value to represent that object created should be empty or not
      * @return a property map suitable for constructing an object
      */
-    public Map<String,Object> getRestServerParametersMap(final boolean isEmpty) {
-        Map<String,Object> map = new TreeMap<>();
+    public Map<String, Object> getRestServerParametersMap(final boolean isEmpty) {
+        final Map<String, Object> map = new TreeMap<>();
         map.put("https", REST_SERVER_HTTPS);
         map.put("aaf", REST_SERVER_AAF);
 
@@ -101,10 +106,11 @@ public class CommonTestData {
 
     /**
      * Returns a property map for a PdpParameters map for test cases.
+     *
      * @return a property map suitable for constructing an object
      */
-    public Map<String,Object> getPdpParametersMap() {
-        Map<String,Object> map = new TreeMap<>();
+    public Map<String, Object> getPdpParametersMap() {
+        final Map<String, Object> map = new TreeMap<>();
 
         map.put("updateParameters", getPdpUpdateParametersMap());
         map.put("stateChangeParameters", getPdpStateChangeParametersMap());
@@ -114,26 +120,29 @@ public class CommonTestData {
 
     /**
      * Returns a property map for a PdpUpdateParameters map for test cases.
+     *
      * @return a property map suitable for constructing an object
      */
-    public Map<String,Object> getPdpUpdateParametersMap() {
+    public Map<String, Object> getPdpUpdateParametersMap() {
         return getPdpRequestParametersMap();
     }
 
     /**
      * Returns a property map for a PdpStateChangeParameters map for test cases.
+     *
      * @return a property map suitable for constructing an object
      */
-    public Map<String,Object> getPdpStateChangeParametersMap() {
+    public Map<String, Object> getPdpStateChangeParametersMap() {
         return getPdpRequestParametersMap();
     }
 
     /**
      * Returns a property map for a PdpParameters map for test cases.
+     *
      * @return a property map suitable for constructing an object
      */
-    public Map<String,Object> getPdpRequestParametersMap() {
-        Map<String, Object> map = new HashMap<>();
+    public Map<String, Object> getPdpRequestParametersMap() {
+        final Map<String, Object> map = new HashMap<>();
         map.put("maxRetryCount", "1");
         map.put("maxWaitMs", "2");
 
@@ -145,10 +154,27 @@ public class CommonTestData {
      *
      * @return a property map suitable for constructing an object
      */
-    public Map<String,Object> getPdpGroupDeploymentParametersMap() {
-        Map<String,Object> map = new TreeMap<>();
+    public Map<String, Object> getPdpGroupDeploymentParametersMap() {
+        final Map<String, Object> map = new TreeMap<>();
         map.put("waitResponseMs", "1");
 
         return map;
     }
+
+    /**
+     * Returns a property map for a PolicyModelsProviderParameters map for test cases.
+     *
+     * @return a property map suitable for constructing an object
+     */
+    public Map<String, Object> getPolicyModelsProviderParametersMap() {
+        final Map<String, Object> map = new TreeMap<>();
+        map.put("name", PolicyModelsProviderParameters.class.getSimpleName());
+        map.put("implementation", REST_SERVER_HTTPS);
+        map.put("databaseUrl", "jdbc:h2:mem:testdb");
+        map.put("databaseUser", "policy");
+        map.put("databasePassword", Base64.getEncoder().encodeToString("P01icY".getBytes()));
+        map.put("persistenceUnit", "PdpGroupTest");
+
+        return map;
+    }
 }
index b35acec..7e7d3ee 100644 (file)
             "maxRetryCount": 1,
             "maxWaitMs": 1
         }
+    },
+    "databaseProviderParameters": {
+        "name": "PolicyProviderParameterGroup",
+        "implementation": "org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl",
+        "databaseUrl": "jdbc:h2:mem:testdb",
+        "databaseUser": "policy",
+        "databasePassword": "P01icY",
+        "persistenceUnit": "PdpGroupTest"
     }
 }
index a510964..c967fdf 100644 (file)
             "maxRetryCount": 1,
             "maxWaitMs": 1
         }
+    },
+    "databaseProviderParameters": {
+        "name": "PolicyProviderParameterGroup",
+        "implementation": "org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl",
+        "databaseUrl": "jdbc:h2:mem:testdb",
+        "databaseUser": "policy",
+        "databasePassword": "P01icY",
+        "persistenceUnit": "PdpGroupTest"
     }
 }
index 7b53b88..8cb7417 100644 (file)
             "maxRetryCount": 1,
             "maxWaitMs": 1
         }
+    },
+    "databaseProviderParameters": {
+        "name": "PolicyProviderParameterGroup",
+        "implementation": "org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl",
+        "databaseUrl": "jdbc:h2:mem:testdb",
+        "databaseUser": "policy",
+        "databasePassword": "P01icY",
+        "persistenceUnit": "PdpGroupTest"
     }
 }