Migrate "ms/controllerblueprints" from ccsdk/apps
[ccsdk/cds.git] / ms / cds-sdc-listener / application / src / main / java / org / onap / ccsdk / cds / cdssdclistener / CdsSdcListenerClient.java
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;
9
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;
22
23 @Component
24 public class CdsSdcListenerClient {
25
26     private static Logger LOG = LoggerFactory.getLogger(CdsSdcListenerClient.class);
27
28     @Autowired
29     private CdsSdcListenerConfiguration configuration;
30
31     @Autowired
32     private CdsSdcListenerNotificationCallback notification;
33
34     @Autowired
35     private CdsSdcListenerDto listenerDto;
36
37     private IDistributionClient distributionClient;
38
39     /**
40      * This method initializes the SDC Distribution client.
41      */
42     @EventListener(ApplicationReadyEvent.class)
43     public void initSdcClient() throws CdsSdcListenerException {
44         LOG.info("Initialize the SDC distribution client");
45
46         distributionClient = Optional.of(DistributionClientFactory.createDistributionClient())
47             .orElseThrow(() -> new CdsSdcListenerException("Could not able to create SDC Distribution client"));
48
49         listenerDto.setDistributionClient(distributionClient);
50
51         IDistributionClientResult result = distributionClient.init(configuration, notification);
52
53         startSdcClientBasedOnTheResult(result);
54     }
55
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());
60         }
61
62         // Start the client.
63         result = this.distributionClient.start();
64
65         if (!result.getDistributionActionResult().equals(DistributionActionResultEnum.SUCCESS)) {
66             throw new CdsSdcListenerException(
67                 "Startup of the SDC distribution client failed with reason: " + result.getDistributionMessageResult());
68         }
69     }
70
71     private void closeSdcDistributionclient() throws CdsSdcListenerException {
72
73         IDistributionClientResult status = this.distributionClient.stop();
74
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());
79         }
80     }
81 }