/*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
+ *  Modifications Copyright (C) 2021 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.
 package org.onap.policy.distribution.forwarding;
 
 import java.util.Collection;
+import org.onap.policy.common.endpoints.http.client.HttpClientConfigException;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaEntity;
 
 /**
      *
      * @param parameterGroupName the name of the parameter group which contains the configuration
      *        for the policy forwarder
+     * @throws HttpClientConfigException if an exception occurs
      */
-    void configure(String parameterGroupName);
+    void configure(String parameterGroupName) throws HttpClientConfigException;
 
     /**
      * Forward the given policies.
 
             "parameterClassName": "org.onap.policy.distribution.forwarding.lifecycle.api.LifecycleApiForwarderParameters",
             "parameters": {
                 "apiParameters": {
-                    "hostName": "policy-api",
+                    "clientName": "policy-api",
+                    "hostname": "policy-api",
                     "port": 6969,
+                    "useHttps": true,
                     "userName": "healthcheck",
                     "password": "zb!XztG34"
                 },
                 "papParameters": {
-                    "hostName": "policy-pap",
+                    "clientName": "policy-pap",
+                    "hostname": "policy-pap",
                     "port": 6969,
+                    "useHttps": true,
                     "userName": "healthcheck",
                     "password": "zb!XztG34"
                 },
-                "isHttps": true,
                 "deployPolicies": true
             }
         }
     }
-}
\ No newline at end of file
+}
 
             "parameterClassName": "org.onap.policy.distribution.forwarding.lifecycle.api.LifecycleApiForwarderParameters",
             "parameters": {
                 "apiParameters": {
-                    "hostName": "policy-api",
+                    "clientName": "policy-api",
+                    "hostname": "policy-api",
                     "port": 6969,
+                    "useHttps": true,
                     "userName": "healthcheck",
                     "password": "zb!XztG34"
                 },
                 "papParameters": {
-                    "hostName": "policy-pap",
+                    "clientName": "policy-pap",
+                    "hostname": "policy-pap",
                     "port": 6969,
+                    "useHttps": true,
                     "userName": "healthcheck",
                     "password": "zb!XztG34"
                 },
-                "isHttps": true,
                 "deployPolicies": true
             }
         }
 
 package org.onap.policy.distribution.forwarding.lifecycle.api;
 
 import lombok.Getter;
+import org.onap.policy.common.endpoints.parameters.RestClientParameters;
 import org.onap.policy.common.parameters.annotations.NotBlank;
 import org.onap.policy.common.parameters.annotations.NotNull;
 import org.onap.policy.common.parameters.annotations.Valid;
 public class LifecycleApiForwarderParameters extends PolicyForwarderConfigurationParameterGroup {
     public static final String POLICY_FORWARDER_PLUGIN_CLASS = LifecycleApiPolicyForwarder.class.getName();
 
-    private @Valid LifecycleApiParameters apiParameters;
-    private @Valid LifecycleApiParameters papParameters;
-    private boolean isHttps;
-    private boolean allowSelfSignedCerts;
+    private @Valid RestClientParameters apiParameters;
+    private @Valid RestClientParameters papParameters;
     private boolean deployPolicies = true;
 
     public LifecycleApiForwarderParameters() {
 
+++ /dev/null
-/*-
- * ============LICENSE_START=======================================================
- *  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.
- * 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.distribution.forwarding.lifecycle.api;
-
-import lombok.Getter;
-import org.onap.policy.common.parameters.annotations.Min;
-import org.onap.policy.common.parameters.annotations.NotBlank;
-import org.onap.policy.common.parameters.annotations.NotNull;
-import org.onap.policy.distribution.main.parameters.PolicyForwarderConfigurationParameterGroup;
-
-/**
- * Holds the parameters for the {@link LifecycleApiPolicyForwarder}.
- *
- * @author Ram Krishna Verma (ram.krishna.verma@est.tech)
- */
-@Getter
-@NotNull
-@NotBlank
-public class LifecycleApiParameters extends PolicyForwarderConfigurationParameterGroup {
-
-    private String hostName;
-    @Min(value = 1)
-    private int port;
-    private String userName;
-    private String password;
-
-    public LifecycleApiParameters() {
-        super(LifecycleApiParameters.class.getSimpleName());
-    }
-}
 
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
-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.http.client.HttpClientConfigException;
 import org.onap.policy.common.endpoints.http.client.HttpClientFactoryInstance;
     private static final String DEPLOY_POLICY_URI = "/policy/pap/v1/pdps/policies";
     private static final String CREATE_POLICY_TYPE_URI = "/policy/api/v1/policytypes/";
     private static final Logger LOGGER = LoggerFactory.getLogger(LifecycleApiPolicyForwarder.class);
+
     private LifecycleApiForwarderParameters forwarderParameters;
+    private HttpClient apiClient;
+    private HttpClient papClient;
 
     /**
      * {@inheritDoc}.
      */
     @Override
-    public void configure(final String parameterGroupName) {
+    public void configure(final String parameterGroupName) throws HttpClientConfigException {
         forwarderParameters = ParameterService.get(parameterGroupName);
+
+        apiClient = HttpClientFactoryInstance.getClientFactory().build(forwarderParameters.getApiParameters());
+        papClient = HttpClientFactoryInstance.getClientFactory().build(forwarderParameters.getPapParameters());
     }
 
     /**
 
     private Response invokeHttpClient(final Entity<?> entity, final String path, final boolean wantApi)
             throws PolicyForwardingException {
-        Response response = null;
-        try {
-            response = getHttpClient(wantApi).post(path, entity, Map.of(HttpHeaders.ACCEPT,
-                    MediaType.APPLICATION_JSON, HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON));
-            if (response.getStatus() / 100 != 2) {
-                LOGGER.error(
-                        "Invocation of path {} failed for entity {}. Response status: {}, Response status info: {}",
-                        path, entity, response.getStatus(), response.getStatusInfo());
-                throw new PolicyForwardingException("Failed creating the entity - " + entity);
-            }
-        } catch (final HttpClientConfigException exception) {
-            throw new PolicyForwardingException("Invocation of path " + path + " failed for entity " + entity,
-                    exception);
+        Response response = getHttpClient(wantApi).post(path, entity, Map.of(HttpHeaders.ACCEPT,
+                        MediaType.APPLICATION_JSON, HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON));
+        if (response.getStatus() / 100 != 2) {
+            LOGGER.error(
+                    "Invocation of path {} failed for entity {}. Response status: {}, Response status info: {}",
+                    path, entity, response.getStatus(), response.getStatusInfo());
+            throw new PolicyForwardingException("Failed creating the entity - " + entity);
         }
         return response;
     }
 
-    private HttpClient getHttpClient(final boolean wantApi) throws HttpClientConfigException {
-        final boolean https = forwarderParameters.isHttps();
-        final LifecycleApiParameters parameters =
-                (wantApi ? forwarderParameters.getApiParameters() : forwarderParameters.getPapParameters());
-        final BusTopicParams params = BusTopicParams.builder().clientName("Policy Distribution").useHttps(https)
-                .hostname(parameters.getHostName()).port(parameters.getPort()).userName(parameters.getUserName())
-                .password(parameters.getPassword()).allowSelfSignedCerts(forwarderParameters.isAllowSelfSignedCerts())
-                .build();
-        return HttpClientFactoryInstance.getClientFactory().build(params);
+    private HttpClient getHttpClient(final boolean wantApi) {
+        return (wantApi ? apiClient : papClient);
     }
 }
 
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2019 Nordix Foundation.
+ *  Modifications Copyright (C) 2021 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.
 
 package org.onap.policy.distribution.forwarding.lifecycle.api;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
         assertEquals(LifecycleApiForwarderParameters.class.getSimpleName(),
                 configurationParameters.getName());
-        assertFalse(configurationParameters.isHttps());
         assertTrue(configurationParameters.isDeployPolicies());
-        assertEquals(POLICY_API_HOST_NAME, configurationParameters.getApiParameters().getHostName());
+        assertEquals(POLICY_API_HOST_NAME, configurationParameters.getApiParameters().getHostname());
         assertEquals(POLICY_API_PORT, configurationParameters.getApiParameters().getPort());
+        assertFalse(configurationParameters.getApiParameters().isUseHttps());
         assertEquals(POLICY_API_USER, configurationParameters.getApiParameters().getUserName());
         assertEquals(POLICY_API_PASSWORD, configurationParameters.getApiParameters().getPassword());
-        assertEquals(POLICY_PAP_HOST_NAME, configurationParameters.getPapParameters().getHostName());
+        assertEquals(POLICY_PAP_HOST_NAME, configurationParameters.getPapParameters().getHostname());
         assertEquals(POLICY_PAP_PORT, configurationParameters.getPapParameters().getPort());
+        assertFalse(configurationParameters.getPapParameters().isUseHttps());
         assertEquals(POLICY_PAP_USER, configurationParameters.getPapParameters().getUserName());
         assertEquals(POLICY_PAP_PASSWORD, configurationParameters.getPapParameters().getPassword());
 
+        assertThat(configurationParameters.validate().getResult()).isNull();
         assertEquals(ValidationStatus.CLEAN, configurationParameters.validate().getStatus());
     }
 
 
+++ /dev/null
-{
-    "hostname":"10.10.10.10",
-    "port":"1234",
-    "ignoreConflicts": false,
-    "forceUpdate": true
-}
\ No newline at end of file
 
+++ /dev/null
-{
-    "hostname":"",
-    "port":"-1",
-    "ignoreConflicts": false,
-    "forceUpdate": true
-}
 
 {
   "apiParameters": {
-    "hostName": "0.0.0.0",
+    "clientName": "policy-api",
+    "hostname": "0.0.0.0",
     "port": 6969,
+    "useHttps": false,
     "userName": "healthcheck",
     "password": "zb!XztG34"
   },
   "papParameters": {
-    "hostName": "0.0.0.0",
+    "clientName": "policy-pap",
+    "hostname": "0.0.0.0",
     "port": 6969,
+    "useHttps": false,
     "userName": "healthcheck",
     "password": "zb!XztG34"
   },
-  "isHttps": false,
   "deployPolicies": true
-}
\ No newline at end of file
+}
 
 {
   "apiParameters": {
-    "hostName": "",
+    "clientName": "policy-api",
+    "hostname": "",
     "port": -1,
+    "useHttps": false,
     "userName": "healthcheck",
     "password": "zb!XztG34"
   },
   "papParameters": {
-    "hostName": "",
+    "clientName": "policy-pap",
+    "hostname": "",
     "port": -2,
+    "useHttps": false,
     "userName": "healthcheck",
     "password": "zb!XztG34"
   },
-  "isHttps": false,
   "deployPolicies": true
-}
\ No newline at end of file
+}
 
+++ /dev/null
-{
-    "useHttps": true,
-    "hostname": "10.10.10.10",
-    "port": 1234,
-    "userName": "myUser",
-    "password": "myPassword",
-    "clientAuth": "myClientAuth",
-    "isManaged": false,
-    "pdpGroup": "myPdpGroup"
-}
\ No newline at end of file
 
+++ /dev/null
-{
-    "useHttps": true,
-    "hostname": "",
-    "port": -2,
-    "userName": "",
-    "password": "",
-    "clientAuth": "myClientAuth",
-    "isManaged": false,
-    "pdpGroup": "default"
-}
\ No newline at end of file
 
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Map;
+import org.onap.policy.common.endpoints.http.client.HttpClientConfigException;
 import org.onap.policy.common.parameters.ParameterService;
 import org.onap.policy.distribution.forwarding.PolicyForwarder;
 import org.onap.policy.distribution.forwarding.parameters.PolicyForwarderParameters;
                 policyForwarders.add(policyForwarder);
             } catch (final ClassNotFoundException | InstantiationException | IllegalAccessException
                     | IllegalArgumentException | InvocationTargetException | NoSuchMethodException
-                    | SecurityException exp) {
+                    | SecurityException | HttpClientConfigException exp) {
                 throw new PluginInitializationException(exp.getMessage(), exp.getCause());
             }
         }
 
             "parameterClassName": "org.onap.policy.distribution.forwarding.lifecycle.api.LifecycleApiForwarderParameters",
             "parameters": {
                 "apiParameters": {
-                    "hostName": "policy-api",
+                    "clientName": "policy-api",
+                    "hostname": "policy-api",
                     "port": 6969,
+                    "useHttps": true,
                     "userName": "healthcheck",
                     "password": "zb!XztG34"
                 },
                 "papParameters": {
-                    "hostName": "policy-pap",
+                    "clientName": "policy-pap",
+                    "hostname": "policy-pap",
                     "port": 7000,
+                    "useHttps": true,
                     "userName": "healthcheck",
                     "password": "zb!XztG34"
                 },
-                "isHttps": true,
                 "deployPolicies": true
             }
         }