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;
10 import java.util.Optional;
11 import org.onap.ccsdk.cds.cdssdclistener.exceptions.CdsSdcListenerException;
12 import org.onap.sdc.api.IDistributionClient;
13 import org.onap.sdc.api.results.IDistributionClientResult;
14 import org.onap.sdc.impl.DistributionClientFactory;
15 import org.onap.sdc.utils.DistributionActionResultEnum;
16 import org.slf4j.Logger;
17 import org.slf4j.LoggerFactory;
18 import org.springframework.beans.factory.annotation.Autowired;
19 import org.springframework.boot.context.event.ApplicationReadyEvent;
20 import org.springframework.context.event.EventListener;
21 import org.springframework.stereotype.Component;
24 public class CdsSdcListenerClient {
26 private static Logger LOG = LoggerFactory.getLogger(CdsSdcListenerClient.class);
29 private CdsSdcListenerConfiguration configuration;
32 private CdsSdcListenerNotificationCallback notification;
35 private CdsSdcListenerDto listenerDto;
37 private IDistributionClient distributionClient;
40 * This method initializes the SDC Distribution client.
42 @EventListener(ApplicationReadyEvent.class)
43 public void initSdcClient() throws CdsSdcListenerException {
44 LOG.info("Initialize the SDC distribution client");
46 distributionClient = Optional.of(DistributionClientFactory.createDistributionClient())
47 .orElseThrow(() -> new CdsSdcListenerException("Could not able to create SDC Distribution client"));
49 listenerDto.setDistributionClient(distributionClient);
51 IDistributionClientResult result = distributionClient.init(configuration, notification);
53 startSdcClientBasedOnTheResult(result);
56 private void startSdcClientBasedOnTheResult(IDistributionClientResult result) throws CdsSdcListenerException {
57 if (!result.getDistributionActionResult().equals(DistributionActionResultEnum.SUCCESS)) {
58 throw new CdsSdcListenerException(
59 "SDC distribution client init failed with reason:" + result.getDistributionMessageResult());
63 result = this.distributionClient.start();
65 if (!result.getDistributionActionResult().equals(DistributionActionResultEnum.SUCCESS)) {
66 throw new CdsSdcListenerException(
67 "Startup of the SDC distribution client failed with reason: " + result.getDistributionMessageResult());
71 private void closeSdcDistributionclient() throws CdsSdcListenerException {
73 IDistributionClientResult status = this.distributionClient.stop();
75 LOG.info("Closing SDC distribution client");
76 if (status.getDistributionActionResult().equals(DistributionActionResultEnum.SUCCESS)) {
77 throw new CdsSdcListenerException(
78 "Failed to close the SDC distribution client due to : " + status.getDistributionMessageResult());