2 * Copyright (C) 2019 Bell Canada. All rights reserved.
4 * NOTICE: All the intellectual and technical concepts contained herein are
5 * proprietary to Bell Canada and are protected by trade secret or copyright law.
6 * Unauthorized copying of this file, via any medium is strictly prohibited.
8 package org.onap.ccsdk.cds.cdssdclistener.client;
10 import java.util.Optional;
11 import org.onap.ccsdk.cds.cdssdclistener.CdsSdcListenerConfiguration;
12 import org.onap.ccsdk.cds.cdssdclistener.dto.CdsSdcListenerDto;
13 import org.onap.ccsdk.cds.cdssdclistener.CdsSdcListenerNotificationCallback;
14 import org.onap.ccsdk.cds.cdssdclistener.exceptions.CdsSdcListenerException;
15 import org.onap.sdc.api.IDistributionClient;
16 import org.onap.sdc.api.results.IDistributionClientResult;
17 import org.onap.sdc.impl.DistributionClientFactory;
18 import org.onap.sdc.utils.DistributionActionResultEnum;
19 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory;
21 import org.springframework.beans.factory.annotation.Autowired;
22 import org.springframework.boot.context.event.ApplicationReadyEvent;
23 import org.springframework.context.annotation.ComponentScan;
24 import org.springframework.context.event.EventListener;
25 import org.springframework.stereotype.Component;
28 @ComponentScan("org.onap.ccsdk.cds.cdssdclistener.dto")
29 public class CdsSdcListenerClient {
31 private static Logger LOG = LoggerFactory.getLogger(CdsSdcListenerClient.class);
34 private CdsSdcListenerConfiguration configuration;
37 private CdsSdcListenerNotificationCallback notification;
40 private CdsSdcListenerDto listenerDto;
42 private IDistributionClient distributionClient;
45 * This method initializes the SDC Distribution client.
47 @EventListener(ApplicationReadyEvent.class)
48 public void initSdcClient() throws CdsSdcListenerException {
49 LOG.info("Initialize the SDC distribution client");
51 distributionClient = Optional.of(DistributionClientFactory.createDistributionClient())
52 .orElseThrow(() -> new CdsSdcListenerException("Could not able to create SDC Distribution client"));
54 listenerDto.setDistributionClient(distributionClient);
56 IDistributionClientResult result = distributionClient.init(configuration, notification);
58 startSdcClientBasedOnTheResult(result);
61 private void startSdcClientBasedOnTheResult(IDistributionClientResult result) throws CdsSdcListenerException {
62 if (!result.getDistributionActionResult().equals(DistributionActionResultEnum.SUCCESS)) {
63 throw new CdsSdcListenerException(
64 "SDC distribution client init failed with reason:" + result.getDistributionMessageResult());
68 result = this.distributionClient.start();
70 if (!result.getDistributionActionResult().equals(DistributionActionResultEnum.SUCCESS)) {
71 throw new CdsSdcListenerException(
72 "Startup of the SDC distribution client failed with reason: " + result.getDistributionMessageResult());
76 private void closeSdcDistributionclient() throws CdsSdcListenerException {
78 IDistributionClientResult status = this.distributionClient.stop();
80 LOG.info("Closing SDC distribution client");
81 if (status.getDistributionActionResult().equals(DistributionActionResultEnum.SUCCESS)) {
82 throw new CdsSdcListenerException(
83 "Failed to close the SDC distribution client due to : " + status.getDistributionMessageResult());