Remove topic.properties and incorporate into overall config file for xacml 13/90913/1
authora.sreekumar <ajith.sreekumar@est.tech>
Thu, 4 Jul 2019 14:14:39 +0000 (14:14 +0000)
committera.sreekumar <ajith.sreekumar@est.tech>
Thu, 4 Jul 2019 14:14:39 +0000 (14:14 +0000)
Change-Id: I3be6248db65041f5d9b7acfcf0fcd2f49d9d70f8
Issue-ID: POLICY-1744
Signed-off-by: a.sreekumar <ajith.sreekumar@est.tech>
19 files changed:
main/src/main/java/org/onap/policy/pdpx/main/parameters/RestServerBuilder.java [deleted file]
main/src/main/java/org/onap/policy/pdpx/main/parameters/RestServerParameters.java [deleted file]
main/src/main/java/org/onap/policy/pdpx/main/parameters/XacmlPdpParameterGroup.java
main/src/main/java/org/onap/policy/pdpx/main/rest/XacmlPdpRestServer.java
main/src/main/java/org/onap/policy/pdpx/main/startstop/Main.java
main/src/test/java/org/onap/policy/pdpx/main/CommonRest.java
main/src/test/java/org/onap/policy/pdpx/main/parameters/CommonTestData.java
main/src/test/java/org/onap/policy/pdpx/main/parameters/TestXacmlPdpParameterGroup.java
main/src/test/java/org/onap/policy/pdpx/main/rest/TestDecision.java
main/src/test/java/org/onap/policy/pdpx/main/startstop/TestMain.java
main/src/test/java/org/onap/policy/pdpx/main/startstop/TestXacmlPdpActivator.java
main/src/test/resources/parameters/MinimumParameters.json
main/src/test/resources/parameters/NoParameters.json
main/src/test/resources/parameters/XacmlPdpConfigParameters.json
main/src/test/resources/parameters/XacmlPdpConfigParameters_Std.json
main/src/test/resources/parameters/topic.properties [deleted file]
packages/policy-xacmlpdp-docker/src/main/docker/policy-pdpx.sh
packages/policy-xacmlpdp-tarball/src/main/resources/etc/defaultConfig.json
packages/policy-xacmlpdp-tarball/src/main/resources/etc/topic.properties [deleted file]

diff --git a/main/src/main/java/org/onap/policy/pdpx/main/parameters/RestServerBuilder.java b/main/src/main/java/org/onap/policy/pdpx/main/parameters/RestServerBuilder.java
deleted file mode 100644 (file)
index 6c729f2..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.pdpx.main.parameters;
-
-public class RestServerBuilder {
-    private String host;
-    private int port;
-    private String userName;
-    private String password;
-    private boolean https;
-    private boolean aaf;
-
-    public String getHost() {
-        return host;
-    }
-
-    public int getPort() {
-        return port;
-    }
-
-    public String getUserName() {
-        return userName;
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    public boolean isHttps() {
-        return https;
-    }
-
-    public boolean isAaf() {
-        return aaf;
-    }
-
-    public RestServerBuilder setHost(String host) {
-        this.host = host;
-        return this;
-    }
-
-    public RestServerBuilder setPort(int port) {
-        this.port = port;
-        return this;
-    }
-
-    public RestServerBuilder setUserName(String userName) {
-        this.userName = userName;
-        return this;
-    }
-
-    public RestServerBuilder setPassword(String password) {
-        this.password = password;
-        return this;
-    }
-
-    public RestServerBuilder setHttps(boolean https) {
-        this.https = https;
-        return this;
-    }
-
-    public RestServerBuilder setAaf(boolean aaf) {
-        this.aaf = aaf;
-        return this;
-    }
-}
diff --git a/main/src/main/java/org/onap/policy/pdpx/main/parameters/RestServerParameters.java b/main/src/main/java/org/onap/policy/pdpx/main/parameters/RestServerParameters.java
deleted file mode 100644 (file)
index c452c75..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.pdpx.main.parameters;
-
-import org.onap.policy.common.parameters.GroupValidationResult;
-import org.onap.policy.common.parameters.ParameterGroup;
-import org.onap.policy.common.parameters.ValidationStatus;
-import org.onap.policy.common.utils.validation.ParameterValidationUtils;
-
-/**
- * Class to hold all parameters needed for xacml pdp rest server.
- *
- */
-public class RestServerParameters implements ParameterGroup {
-    private String name;
-    private String host;
-    private int port;
-    private String userName;
-    private String password;
-    private boolean https;
-    private boolean aaf;
-
-    /**
-     * Constructor for instantiating RestServerParameters.
-     *
-     * @param builder the RestServer builder
-     */
-    public RestServerParameters(final RestServerBuilder builder) {
-        super();
-        this.host = builder.getHost();
-        this.port = builder.getPort();
-        this.userName = builder.getUserName();
-        this.password = builder.getPassword();
-        this.https = builder.isHttps();
-        this.aaf = builder.isAaf();
-    }
-
-    /**
-     * Return the name of this RestServerParameters instance.
-     *
-     * @return name the name of this RestServerParameters
-     */
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Return the host of this RestServerParameters instance.
-     *
-     * @return the host
-     */
-    public String getHost() {
-        return host;
-    }
-
-    /**
-     * Return the port of this RestServerParameters instance.
-     *
-     * @return the port
-     */
-    public int getPort() {
-        return port;
-    }
-
-    /**
-     * Return the user name of this RestServerParameters instance.
-     *
-     * @return the userName
-     */
-    public String getUserName() {
-        return userName;
-    }
-
-    /**
-     * Return the password of this RestServerParameters instance.
-     *
-     * @return the password
-     */
-    public String getPassword() {
-        return password;
-    }
-
-    /**
-     * Return the https flag of this RestServerParameters instance.
-     *
-     * @return the https flag
-     */
-    public boolean isHttps() {
-        return https;
-    }
-
-    /**
-     * Return the aaf flag of this RestServerParameters instance.
-     *
-     * @return the aaf flag
-     */
-    public boolean isAaf() {
-        return aaf;
-    }
-
-    /**
-     * Set the name of this RestServerParameters instance.
-     *
-     * @param name the name to set
-     */
-    @Override
-    public void setName(final String name) {
-        this.name = name;
-    }
-
-    /**
-     * Validate the rest server parameters.
-     *
-     * @return the result of the validation
-     */
-    @Override
-    public GroupValidationResult validate() {
-        final GroupValidationResult validationResult = new GroupValidationResult(this);
-        if (!ParameterValidationUtils.validateStringParameter(host)) {
-            validationResult.setResult("host", ValidationStatus.INVALID,
-                    "must be a non-blank string containing hostname/ipaddress of the xacml pdp rest server");
-        }
-        if (!ParameterValidationUtils.validateStringParameter(userName)) {
-            validationResult.setResult("userName", ValidationStatus.INVALID,
-                    "must be a non-blank string containing userName for xacml pdp rest server credentials");
-        }
-        if (!ParameterValidationUtils.validateStringParameter(password)) {
-            validationResult.setResult("password", ValidationStatus.INVALID,
-                    "must be a non-blank string containing password for xacml pdp rest server credentials");
-        }
-        if (!ParameterValidationUtils.validateIntParameter(port)) {
-            validationResult.setResult("port", ValidationStatus.INVALID,
-                    "must be a positive integer containing port of the xacml pdp rest server");
-        }
-        return validationResult;
-    }
-}
index e442a08..167a2c4 100644 (file)
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,6 +21,8 @@
 
 package org.onap.policy.pdpx.main.parameters;
 
+import org.onap.policy.common.endpoints.parameters.RestServerParameters;
+import org.onap.policy.common.endpoints.parameters.TopicParameterGroup;
 import org.onap.policy.common.parameters.GroupValidationResult;
 import org.onap.policy.common.parameters.ParameterGroup;
 import org.onap.policy.common.parameters.ValidationStatus;
@@ -31,9 +34,11 @@ import org.onap.policy.common.utils.validation.ParameterValidationUtils;
  */
 public class XacmlPdpParameterGroup implements ParameterGroup {
     private static final String PARAM_REST_SERVER = "restServerParameters";
+    private static final String PARAM_TOPIC_PARAMETER_GROUP = "topicParameterGroup";
     private static final String PARAM_APPLICATION_PATH = "applicationPath";
     private String name;
     private RestServerParameters restServerParameters;
+    private TopicParameterGroup topicParameterGroup;
     private String applicationPath;
 
     /**
@@ -42,9 +47,10 @@ public class XacmlPdpParameterGroup implements ParameterGroup {
      * @param name the parameter group name
      */
     public XacmlPdpParameterGroup(final String name, final RestServerParameters restServerParameters,
-            final String applicationPath) {
+            final TopicParameterGroup topicParameterGroup, final String applicationPath) {
         this.name = name;
         this.restServerParameters = restServerParameters;
+        this.topicParameterGroup = topicParameterGroup;
         this.applicationPath = applicationPath;
     }
 
@@ -77,6 +83,15 @@ public class XacmlPdpParameterGroup implements ParameterGroup {
         return restServerParameters;
     }
 
+    /**
+     * Return the topicParameterGroup of this parameter group instance.
+     *
+     * @return the topicParameterGroup
+     */
+    public TopicParameterGroup getTopicParameterGroup() {
+        return topicParameterGroup;
+    }
+
     /**
      * Returns the path where applications will store their data.
      *
@@ -103,6 +118,12 @@ public class XacmlPdpParameterGroup implements ParameterGroup {
         } else {
             validationResult.setResult(PARAM_REST_SERVER, restServerParameters.validate());
         }
+        if (topicParameterGroup == null) {
+            validationResult.setResult(PARAM_TOPIC_PARAMETER_GROUP, ValidationStatus.INVALID,
+                    "must have topicParameterGroup to configure xacml pdp topic sink and source");
+        } else {
+            validationResult.setResult(PARAM_TOPIC_PARAMETER_GROUP, topicParameterGroup.validate());
+        }
         //
         // Validate the application path directory
         //
index 4b89cb1..a844152 100644 (file)
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,8 +26,8 @@ import java.util.List;
 import java.util.Properties;
 import org.onap.policy.common.capabilities.Startable;
 import org.onap.policy.common.endpoints.http.server.HttpServletServer;
+import org.onap.policy.common.endpoints.parameters.RestServerParameters;
 import org.onap.policy.common.gson.GsonMessageBodyHandler;
-import org.onap.policy.pdpx.main.parameters.RestServerParameters;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
index 020bfcb..62b811d 100644 (file)
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 package org.onap.policy.pdpx.main.startstop;
 
-import java.io.FileInputStream;
 import java.util.Arrays;
 import java.util.Properties;
 import lombok.Getter;
+import org.onap.policy.common.endpoints.utils.ParameterUtils;
 import org.onap.policy.pdpx.main.PolicyXacmlPdpException;
 import org.onap.policy.pdpx.main.parameters.XacmlPdpParameterGroup;
 import org.onap.policy.pdpx.main.parameters.XacmlPdpParameterHandler;
@@ -71,15 +72,7 @@ public class Main {
         XacmlPdpParameterGroup parameterGroup = new XacmlPdpParameterHandler().getParameters(arguments);
 
         // Read the properties
-        Properties props = new Properties();
-        try {
-            String propFile = arguments.getFullPropertyFilePath();
-            try (FileInputStream stream = new FileInputStream(propFile)) {
-                props.load(stream);
-            }
-        } catch (final Exception e) {
-            throw new PolicyXacmlPdpException("cannot load property file", e);
-        }
+        Properties props = ParameterUtils.getTopicProperties(parameterGroup.getTopicParameterGroup());
 
         // Now, create the activator for the policy xacml pdp service
         activator = new XacmlPdpActivator(parameterGroup, props);
index 0c84419..a32bc6f 100644 (file)
@@ -3,6 +3,7 @@
  * ONAP
  * ================================================================================
  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -116,7 +117,7 @@ public class CommonRest {
 
         writeJsonConfig();
 
-        final String[] xacmlPdpConfigParameters = {"-c", CommonRest.CONFIG_FILE, "-p", "parameters/topic.properties"};
+        final String[] xacmlPdpConfigParameters = {"-c", CommonRest.CONFIG_FILE};
         main = new Main(xacmlPdpConfigParameters);
 
         if (!NetworkUtil.isTcpPortOpen("localhost", port, 20, 1000L)) {
index 1bf2294..24bf48f 100644 (file)
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 package org.onap.policy.pdpx.main.parameters;
 
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+import org.onap.policy.common.endpoints.parameters.TopicParameters;
+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;
+
 /**
  * Class to hold/create all parameters for test cases.
  *
@@ -33,25 +44,90 @@ public class CommonTestData {
     private static final boolean REST_SERVER_HTTPS = false;
     private static final boolean REST_SERVER_AAF = false;
     public static final String PDPX_GROUP_NAME = "XacmlPdpGroup";
+    public static final List<TopicParameters> TOPIC_PARAMS = Arrays.asList(getTopicParams());
+
+    public static final Coder coder = new StandardCoder();
+
+    /**
+     * Returns topic parameters for test cases.
+     *
+     * @return topic parameters
+     */
+    public static TopicParameters getTopicParams() {
+        final TopicParameters topicParams = new TopicParameters();
+        topicParams.setTopic("POLICY-PDP-PAP");
+        topicParams.setTopicCommInfrastructure("dmaap");
+        topicParams.setServers(Arrays.asList("message-router"));
+        return topicParams;
+    }
 
     /**
-     * Returns an instance of RestServerParameters for test cases.
+     * Returns a property map for a RestServerParameters map for test cases.
      *
      * @param isEmpty boolean value to represent that object created should be empty or not
-     * @return the restServerParameters object
+     * @return a property map suitable for constructing an object
      */
-    public RestServerParameters getRestServerParameters(final boolean isEmpty) {
-        final RestServerBuilder builder;
+    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);
+
         if (!isEmpty) {
-            builder = new RestServerBuilder().setHost(REST_SERVER_HOST).setPort(REST_SERVER_PORT)
-                    .setUserName(REST_SERVER_USER).setPassword(REST_SERVER_PASSWORD).setHttps(REST_SERVER_HTTPS)
-                    .setAaf(REST_SERVER_AAF);
-        } else {
-            builder = new RestServerBuilder().setHost(null).setPort(0).setUserName(null).setPassword(null)
-                    .setHttps(REST_SERVER_HTTPS).setAaf(REST_SERVER_AAF);
+            map.put("host", REST_SERVER_HOST);
+            map.put("port", REST_SERVER_PORT);
+            map.put("userName", REST_SERVER_USER);
+            map.put("password", REST_SERVER_PASSWORD);
         }
-        final RestServerParameters restServerParameters = new RestServerParameters(builder);
-        return restServerParameters;
+
+        return map;
+    }
+
+    /**
+     * Returns a property map for a RestServerParameters map for test cases.
+     *
+     * @param port the port for RestServer
+     * @return a property map suitable for constructing an object
+     */
+    public Map<String, Object> getRestServerParametersMap(final int port) {
+        final Map<String, Object> map = new TreeMap<>();
+        map.put("https", REST_SERVER_HTTPS);
+        map.put("aaf", REST_SERVER_AAF);
+        map.put("host", REST_SERVER_HOST);
+        map.put("port", port);
+        map.put("userName", REST_SERVER_USER);
+        map.put("password", REST_SERVER_PASSWORD);
+
+        return map;
     }
 
+    /**
+     * Converts the contents of a map to a parameter class.
+     *
+     * @param source property map
+     * @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(final Map<String, Object> source, final Class<T> clazz) {
+        try {
+            return coder.decode(coder.encode(source), clazz);
+
+        } catch (final CoderException e) {
+            throw new RuntimeException("cannot create " + clazz.getName() + " from map", e);
+        }
+    }
+
+    /**
+     * Returns a property map for a TopicParameters map for test cases.
+     *
+     * @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> getTopicParametersMap(final boolean isEmpty) {
+        final Map<String, Object> map = new TreeMap<>();
+        if (!isEmpty) {
+            map.put("topicSources", TOPIC_PARAMS);
+            map.put("topicSinks", TOPIC_PARAMS);
+        }
+        return map;
+    }
 }
index 2bf6fd8..1484edf 100644 (file)
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -27,11 +28,12 @@ import static org.junit.Assert.assertTrue;
 
 import java.io.File;
 import java.io.IOException;
-
 import org.junit.Before;
 import org.junit.ClassRule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
+import org.onap.policy.common.endpoints.parameters.RestServerParameters;
+import org.onap.policy.common.endpoints.parameters.TopicParameterGroup;
 import org.onap.policy.common.parameters.GroupValidationResult;
 
 /**
@@ -41,6 +43,7 @@ import org.onap.policy.common.parameters.GroupValidationResult;
 public class TestXacmlPdpParameterGroup {
     CommonTestData commonTestData = new CommonTestData();
     private static File applicationPath;
+    private static CommonTestData testData = new CommonTestData();
 
     @ClassRule
     public static final TemporaryFolder applicationFolder = new TemporaryFolder();
@@ -52,11 +55,13 @@ public class TestXacmlPdpParameterGroup {
 
     @Test
     public void testXacmlPdpParameterGroup() throws IOException {
-        final RestServerParameters restServerParameters = commonTestData.getRestServerParameters(false);
+        final RestServerParameters restServerParameters =
+            testData.toObject(testData.getRestServerParametersMap(false), RestServerParameters.class);
+        final TopicParameterGroup topicParameterGroup =
+            testData.toObject(testData.getTopicParametersMap(false), TopicParameterGroup.class);
         final XacmlPdpParameterGroup pdpxParameters =
                 new XacmlPdpParameterGroup(CommonTestData.PDPX_GROUP_NAME,
-                        restServerParameters,
-                        applicationPath.getAbsolutePath());
+                        restServerParameters, topicParameterGroup, applicationPath.getAbsolutePath());
         final GroupValidationResult validationResult = pdpxParameters.validate();
         assertTrue(validationResult.isValid());
         assertEquals(restServerParameters.getHost(), pdpxParameters.getRestServerParameters().getHost());
@@ -70,9 +75,12 @@ public class TestXacmlPdpParameterGroup {
 
     @Test
     public void testXacmlPdpParameterGroup_NullName() {
-        final RestServerParameters restServerParameters = commonTestData.getRestServerParameters(false);
+        final RestServerParameters restServerParameters =
+            testData.toObject(testData.getRestServerParametersMap(false), RestServerParameters.class);
+        final TopicParameterGroup topicParameterGroup =
+            testData.toObject(testData.getTopicParametersMap(false), TopicParameterGroup.class);
         final XacmlPdpParameterGroup pdpxParameters = new XacmlPdpParameterGroup(null, restServerParameters,
-                applicationPath.getAbsolutePath());
+            topicParameterGroup, applicationPath.getAbsolutePath());
         final GroupValidationResult validationResult = pdpxParameters.validate();
         assertFalse(validationResult.isValid());
         assertEquals(null, pdpxParameters.getName());
@@ -82,10 +90,12 @@ public class TestXacmlPdpParameterGroup {
 
     @Test
     public void testXacmlPdpParameterGroup_EmptyName() {
-        final RestServerParameters restServerParameters = commonTestData.getRestServerParameters(false);
-
+        final RestServerParameters restServerParameters =
+            testData.toObject(testData.getRestServerParametersMap(false), RestServerParameters.class);
+        final TopicParameterGroup topicParameterGroup =
+            testData.toObject(testData.getTopicParametersMap(false), TopicParameterGroup.class);
         final XacmlPdpParameterGroup pdpxParameters = new XacmlPdpParameterGroup("", restServerParameters,
-                applicationPath.getAbsolutePath());
+            topicParameterGroup, applicationPath.getAbsolutePath());
         final GroupValidationResult validationResult = pdpxParameters.validate();
         assertFalse(validationResult.isValid());
         assertEquals("", pdpxParameters.getName());
@@ -95,15 +105,33 @@ public class TestXacmlPdpParameterGroup {
 
     @Test
     public void testXacmlPdpParameterGroup_EmptyRestServerParameters() {
-        final RestServerParameters restServerParameters = commonTestData.getRestServerParameters(true);
+        final RestServerParameters restServerParameters =
+            testData.toObject(testData.getRestServerParametersMap(true), RestServerParameters.class);
+        final TopicParameterGroup topicParameterGroup =
+            testData.toObject(testData.getTopicParametersMap(false), TopicParameterGroup.class);
+        final XacmlPdpParameterGroup pdpxParameters =
+                new XacmlPdpParameterGroup(CommonTestData.PDPX_GROUP_NAME, restServerParameters,
+                    topicParameterGroup, applicationPath.getAbsolutePath());
+        final GroupValidationResult validationResult = pdpxParameters.validate();
+        assertFalse(validationResult.isValid());
+        assertTrue(validationResult.getResult()
+                .contains("\"org.onap.policy.common.endpoints.parameters.RestServerParameters\" INVALID, "
+                        + "parameter group has status INVALID"));
+    }
 
+    @Test
+    public void testXacmlPdpParameterGroup_EmptyTopicParameterGroup() {
+        final RestServerParameters restServerParameters =
+            testData.toObject(testData.getRestServerParametersMap(false), RestServerParameters.class);
+        final TopicParameterGroup topicParameterGroup =
+            testData.toObject(testData.getTopicParametersMap(true), TopicParameterGroup.class);
         final XacmlPdpParameterGroup pdpxParameters =
                 new XacmlPdpParameterGroup(CommonTestData.PDPX_GROUP_NAME, restServerParameters,
-                        applicationPath.getAbsolutePath());
+                    topicParameterGroup, applicationPath.getAbsolutePath());
         final GroupValidationResult validationResult = pdpxParameters.validate();
         assertFalse(validationResult.isValid());
         assertTrue(validationResult.getResult()
-                .contains("\"org.onap.policy.pdpx.main.parameters.RestServerParameters\" INVALID, "
+                .contains("\"org.onap.policy.common.endpoints.parameters.TopicParameterGroup\" INVALID, "
                         + "parameter group has status INVALID"));
     }
 }
index 5f7eb78..b173204 100644 (file)
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,7 +26,6 @@ import static org.junit.Assert.assertEquals;
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
-
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
@@ -37,12 +37,10 @@ import java.security.NoSuchAlgorithmException;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
-
 import javax.ws.rs.client.Entity;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status;
-
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.ClassRule;
@@ -50,14 +48,15 @@ import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams;
 import org.onap.policy.common.endpoints.http.client.HttpClient;
+import org.onap.policy.common.endpoints.parameters.RestServerParameters;
+import org.onap.policy.common.endpoints.parameters.TopicParameterGroup;
 import org.onap.policy.common.gson.GsonMessageBodyHandler;
 import org.onap.policy.common.utils.network.NetworkUtil;
 import org.onap.policy.models.decisions.concepts.DecisionRequest;
 import org.onap.policy.models.decisions.concepts.DecisionResponse;
 import org.onap.policy.models.errors.concepts.ErrorResponse;
 import org.onap.policy.pdpx.main.PolicyXacmlPdpException;
-import org.onap.policy.pdpx.main.parameters.RestServerBuilder;
-import org.onap.policy.pdpx.main.parameters.RestServerParameters;
+import org.onap.policy.pdpx.main.parameters.CommonTestData;
 import org.onap.policy.pdpx.main.parameters.XacmlPdpParameterGroup;
 import org.onap.policy.pdpx.main.startstop.Main;
 import org.slf4j.Logger;
@@ -70,6 +69,7 @@ public class TestDecision {
     private static int port;
     private static Main main;
     private static HttpClient client;
+    private static CommonTestData testData = new CommonTestData();
 
     @ClassRule
     public static final TemporaryFolder appsFolder = new TemporaryFolder();
@@ -97,9 +97,12 @@ public class TestDecision {
         //
         // Get the parameters file correct.
         //
-        RestServerParameters rest = new RestServerParameters(new RestServerBuilder()
-                .setHost("0.0.0.0").setPort(port).setUserName("healthcheck").setPassword("zb!XztG34"));
-        XacmlPdpParameterGroup params = new XacmlPdpParameterGroup("XacmlPdpGroup", rest, apps.getAbsolutePath());
+        RestServerParameters rest =
+            testData.toObject(testData.getRestServerParametersMap(port), RestServerParameters.class);
+        TopicParameterGroup topicParameterGroup =
+            testData.toObject(testData.getTopicParametersMap(false), TopicParameterGroup.class);
+        XacmlPdpParameterGroup params =
+            new XacmlPdpParameterGroup("XacmlPdpGroup", rest, topicParameterGroup, apps.getAbsolutePath());
         final Gson gson = new GsonBuilder().create();
         File fileParams = appsFolder.newFile("params.json");
         String jsonParams = gson.toJson(params);
@@ -169,8 +172,7 @@ public class TestDecision {
     }
 
     private static Main startXacmlPdpService(File params) throws PolicyXacmlPdpException {
-        final String[] XacmlPdpConfigParameters = {"-c", params.getAbsolutePath(), "-p",
-            "parameters/topic.properties"};
+        final String[] XacmlPdpConfigParameters = {"-c", params.getAbsolutePath()};
         return new Main(XacmlPdpConfigParameters);
     }
 
index e8448ab..8b6889d 100644 (file)
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -67,7 +68,7 @@ public class TestMain extends CommonRest {
 
     @Test
     public void testMain() throws PolicyXacmlPdpException {
-        final String[] xacmlPdpConfigParameters = {"-c", CONFIG_FILE, "-p", "parameters/topic.properties"};
+        final String[] xacmlPdpConfigParameters = {"-c", CONFIG_FILE};
         main = new Main(xacmlPdpConfigParameters);
         main.shutdown();
         main = null;
index b60f458..7e7dee2 100644 (file)
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,12 +26,12 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 
-import java.io.FileInputStream;
 import java.util.Properties;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
+import org.onap.policy.common.endpoints.utils.ParameterUtils;
 import org.onap.policy.pdpx.main.CommonRest;
 import org.onap.policy.pdpx.main.PolicyXacmlPdpException;
 import org.onap.policy.pdpx.main.parameters.CommonTestData;
@@ -55,16 +56,11 @@ public class TestXacmlPdpActivator extends CommonRest {
     public static void setUpBeforeClass() throws Exception {
         CommonRest.setUpBeforeClass();
 
-        final String[] xacmlPdpConfigParameters =
-            {"-c", CommonRest.CONFIG_FILE, "-p", "parameters/topic.properties"};
+        final String[] xacmlPdpConfigParameters = {"-c", CommonRest.CONFIG_FILE};
         final XacmlPdpCommandLineArguments arguments = new XacmlPdpCommandLineArguments(xacmlPdpConfigParameters);
         parGroup = new XacmlPdpParameterHandler().getParameters(arguments);
 
-        props = new Properties();
-        String propFile = arguments.getFullPropertyFilePath();
-        try (FileInputStream stream = new FileInputStream(propFile)) {
-            props.load(stream);
-        }
+        props = ParameterUtils.getTopicProperties(parGroup.getTopicParameterGroup());
 
         // don't want the common "main" running
         CommonRest.stopMain();
index ab52cc8..6ae2aa9 100644 (file)
@@ -6,5 +6,17 @@
         "userName": "healthcheck",
         "password": "zb!XztG34"
     },
-    "applicationPath": "apps.test"
+    "applicationPath": "apps.test",
+        "topicParameterGroup": {
+        "topicSources" : [{
+            "topic" : "POLICY-PDP-PAP",
+            "servers" : [ "anyserver" ],
+            "topicCommInfrastructure" : "noop"
+        }],
+        "topicSinks" : [{
+            "topic" : "POLICY-PDP-PAP",
+            "servers" : [ "anyserver" ],
+            "topicCommInfrastructure" : "noop"
+        }]
+    }
 }
index bbe1ee1..953f70e 100644 (file)
@@ -4,5 +4,17 @@
         "port": 6969,
         "userName": "healthcheck",
         "password": "zb!XztG34"
+    },
+    "topicParameterGroup": {
+        "topicSources" : [{
+            "topic" : "POLICY-PDP-PAP",
+            "servers" : [ "anyserver" ],
+            "topicCommInfrastructure" : "noop"
+        }],
+        "topicSinks" : [{
+            "topic" : "POLICY-PDP-PAP",
+            "servers" : [ "anyserver" ],
+            "topicCommInfrastructure" : "noop"
+        }]
     }
 }
\ No newline at end of file
index 58eba71..e5ab198 100644 (file)
@@ -6,5 +6,17 @@
         "userName": "healthcheck",
         "password": "zb!XztG34"
     },
-    "applicationPath": "src/test/resources/apps"
+    "applicationPath": "src/test/resources/apps",
+    "topicParameterGroup": {
+        "topicSources" : [{
+            "topic" : "POLICY-PDP-PAP",
+            "servers" : [ "anyserver" ],
+            "topicCommInfrastructure" : "noop"
+        }],
+        "topicSinks" : [{
+            "topic" : "POLICY-PDP-PAP",
+            "servers" : [ "anyserver" ],
+            "topicCommInfrastructure" : "noop"
+        }]
+    }
 }
index 5b6586a..2d1f7cd 100644 (file)
@@ -7,5 +7,17 @@
         "password":"zb!XztG34",
         "https":true
     },
-    "applicationPath": "src/test/resources/apps"
+    "applicationPath": "src/test/resources/apps",
+    "topicParameterGroup": {
+        "topicSources" : [{
+            "topic" : "POLICY-PDP-PAP",
+            "servers" : [ "anyserver" ],
+            "topicCommInfrastructure" : "noop"
+        }],
+        "topicSinks" : [{
+            "topic" : "POLICY-PDP-PAP",
+            "servers" : [ "anyserver" ],
+            "topicCommInfrastructure" : "noop"
+        }]
+    }
 }
\ No newline at end of file
diff --git a/main/src/test/resources/parameters/topic.properties b/main/src/test/resources/parameters/topic.properties
deleted file mode 100644 (file)
index 11c17da..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-# ============LICENSE_START=======================================================
-# ONAP PAP
-# ================================================================================
-# Copyright (C) 2019 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=========================================================
-
-noop.sink.topics=POLICY-PDP-PAP
-noop.sink.topics.POLICY-PDP-PAP.servers=anyserver
-noop.source.topics=POLICY-PDP-PAP
-noop.source.topics.POLICY-PDP-PAP.servers=anyserver
index 5ffe202..4c58294 100644 (file)
@@ -32,22 +32,11 @@ else
     CONFIG_FILE=${CONFIG_FILE}
 fi
 
-if [ "$#" -ge 2 ]; then
-    PROP_FILE=$2
-else
-    PROP_FILE=${PROP_FILE}
-fi
-
 if [ -z "$CONFIG_FILE" ]
   then
     CONFIG_FILE="${POLICY_HOME}/etc/defaultConfig.json"
 fi
 
-if [ -z "$PROP_FILE" ]
-  then
-    PROP_FILE="${POLICY_HOME}/etc/topic.properties"
-fi
-
 if [[ -f ${POLICY_HOME}/etc/mounted/xacml.properties ]]; then
     cp -f "${POLICY_HOME}"/etc/mounted/xacml.properties  "${POLICY_HOME}"/apps/guard/
 fi
@@ -56,6 +45,5 @@ fi
 ${POLICY_HOME}/mysql/bin/create-guard-table.sh
 
 echo "Policy Xacml PDP config file: $CONFIG_FILE"
-echo "Policy Xacml PDP topic properties file: $PROP_FILE"
 
-$JAVA_HOME/bin/java -cp "${POLICY_HOME}/etc:${POLICY_HOME}/lib/*" -Djavax.net.ssl.keyStore="$KEYSTORE" -Djavax.net.ssl.keyStorePassword="$KEYSTORE_PASSWD" -Djavax.net.ssl.trustStore="$TRUSTSTORE" -Djavax.net.ssl.trustStorePassword="$TRUSTSTORE_PASSWD" org.onap.policy.pdpx.main.startstop.Main -c $CONFIG_FILE -p $PROP_FILE
\ No newline at end of file
+$JAVA_HOME/bin/java -cp "${POLICY_HOME}/etc:${POLICY_HOME}/lib/*" -Djavax.net.ssl.keyStore="$KEYSTORE" -Djavax.net.ssl.keyStorePassword="$KEYSTORE_PASSWD" -Djavax.net.ssl.trustStore="$TRUSTSTORE" -Djavax.net.ssl.trustStorePassword="$TRUSTSTORE_PASSWD" org.onap.policy.pdpx.main.startstop.Main -c $CONFIG_FILE
\ No newline at end of file
index cc13e5b..cc56bd1 100644 (file)
@@ -8,5 +8,17 @@
         "https": true,
         "aaf": false
     },
-    "applicationPath": "/opt/app/policy/pdpx/apps"
+    "applicationPath": "/opt/app/policy/pdpx/apps",
+    "topicParameterGroup": {
+        "topicSources" : [{
+            "topic" : "POLICY-PDP-PAP",
+            "servers" : [ "message-router" ],
+            "topicCommInfrastructure" : "dmaap"
+        }],
+        "topicSinks" : [{
+            "topic" : "POLICY-PDP-PAP",
+            "servers" : [ "message-router" ],
+            "topicCommInfrastructure" : "dmaap"
+        }]
+    }
 }
diff --git a/packages/policy-xacmlpdp-tarball/src/main/resources/etc/topic.properties b/packages/policy-xacmlpdp-tarball/src/main/resources/etc/topic.properties
deleted file mode 100644 (file)
index 5d36bdb..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-# ============LICENSE_START=======================================================
-# ONAP PAP
-# ================================================================================
-# Copyright (C) 2019 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=========================================================
-
-dmaap.sink.topics=POLICY-PDP-PAP
-dmaap.sink.topics.POLICY-PDP-PAP.servers=message-router
-dmaap.source.topics=POLICY-PDP-PAP
-dmaap.source.topics.POLICY-PDP-PAP.servers=message-router