6f888dd0b659d1e3f447724607e206002e6ee006
[ccsdk/cds.git] /
1 /*
2  * Copyright (C) 2019 Bell Canada. All rights reserved.
3  *
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.
7  */
8 package org.onap.ccsdk.cds.cdssdclistener.client;
9
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;
26
27 @Component
28 @ComponentScan("org.onap.ccsdk.cds.cdssdclistener.dto")
29 public class CdsSdcListenerClient {
30
31     private static Logger LOG = LoggerFactory.getLogger(CdsSdcListenerClient.class);
32
33     @Autowired
34     private CdsSdcListenerConfiguration configuration;
35
36     @Autowired
37     private CdsSdcListenerNotificationCallback notification;
38
39     @Autowired
40     private CdsSdcListenerDto listenerDto;
41
42     private IDistributionClient distributionClient;
43
44     /**
45      * This method initializes the SDC Distribution client.
46      */
47     @EventListener(ApplicationReadyEvent.class)
48     public void initSdcClient() throws CdsSdcListenerException {
49         LOG.info("Initialize the SDC distribution client");
50
51         distributionClient = Optional.of(DistributionClientFactory.createDistributionClient())
52             .orElseThrow(() -> new CdsSdcListenerException("Could not able to create SDC Distribution client"));
53
54         listenerDto.setDistributionClient(distributionClient);
55
56         IDistributionClientResult result = distributionClient.init(configuration, notification);
57
58         startSdcClientBasedOnTheResult(result);
59     }
60
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());
65         }
66
67         // Start the client.
68         result = this.distributionClient.start();
69
70         if (!result.getDistributionActionResult().equals(DistributionActionResultEnum.SUCCESS)) {
71             throw new CdsSdcListenerException(
72                 "Startup of the SDC distribution client failed with reason: " + result.getDistributionMessageResult());
73         }
74     }
75
76     private void closeSdcDistributionclient() throws CdsSdcListenerException {
77
78         IDistributionClientResult status = this.distributionClient.stop();
79
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());
84         }
85     }
86 }