X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ms%2Fsdclistener%2Fapplication%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fccsdk%2Fcds%2Fsdclistener%2Fclient%2FSdcListenerClient.java;fp=ms%2Fsdclistener%2Fapplication%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fccsdk%2Fcds%2Fsdclistener%2Fclient%2FSdcListenerClient.java;h=973f950bc49fd547c2927250caf1270bdd8a4f64;hb=d5339481d3c3f24dd5faccb44dccd4addfd58499;hp=0000000000000000000000000000000000000000;hpb=f332e6ecd2c0a9f26451f977c941f03ed8ab84dc;p=ccsdk%2Fcds.git diff --git a/ms/sdclistener/application/src/main/java/org/onap/ccsdk/cds/sdclistener/client/SdcListenerClient.java b/ms/sdclistener/application/src/main/java/org/onap/ccsdk/cds/sdclistener/client/SdcListenerClient.java new file mode 100644 index 000000000..973f950bc --- /dev/null +++ b/ms/sdclistener/application/src/main/java/org/onap/ccsdk/cds/sdclistener/client/SdcListenerClient.java @@ -0,0 +1,95 @@ +/* + * Copyright © 2019 Bell Canada + * + * 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. + */ +package org.onap.ccsdk.cds.sdclistener.client; + +import java.util.Optional; +import org.onap.ccsdk.cds.sdclistener.SdcListenerConfiguration; +import org.onap.ccsdk.cds.sdclistener.dto.SdcListenerDto; +import org.onap.ccsdk.cds.sdclistener.SdcListenerNotificationCallback; +import org.onap.ccsdk.cds.sdclistener.exceptions.SdcListenerException; +import org.onap.sdc.api.IDistributionClient; +import org.onap.sdc.api.results.IDistributionClientResult; +import org.onap.sdc.impl.DistributionClientFactory; +import org.onap.sdc.utils.DistributionActionResultEnum; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +@Component +@ComponentScan("org.onap.ccsdk.cds.cdssdclistener.dto") +public class SdcListenerClient { + + private static Logger LOG = LoggerFactory.getLogger(SdcListenerClient.class); + + @Autowired + private SdcListenerConfiguration configuration; + + @Autowired + private SdcListenerNotificationCallback notification; + + @Autowired + private SdcListenerDto listenerDto; + + private IDistributionClient distributionClient; + + /** + * This method initializes the SDC Distribution client. + */ + @EventListener(ApplicationReadyEvent.class) + public void initSdcClient() throws SdcListenerException { + LOG.info("Initialize the SDC distribution client"); + + distributionClient = Optional.of(DistributionClientFactory.createDistributionClient()) + .orElseThrow(() -> new SdcListenerException("Could not able to create SDC Distribution client")); + + listenerDto.setManagedChannelForGrpc(); + + listenerDto.setDistributionClient(distributionClient); + + IDistributionClientResult result = distributionClient.init(configuration, notification); + startSdcClientBasedOnTheResult(result); + } + + private void startSdcClientBasedOnTheResult(IDistributionClientResult result) throws SdcListenerException { + if (!result.getDistributionActionResult().equals(DistributionActionResultEnum.SUCCESS)) { + throw new SdcListenerException( + "SDC distribution client init failed with reason:" + result.getDistributionMessageResult()); + } + + LOG.info("Initialization of the SDC distribution client is complete"); + + // Start the client. + result = this.distributionClient.start(); + + if (!result.getDistributionActionResult().equals(DistributionActionResultEnum.SUCCESS)) { + throw new SdcListenerException( + "Startup of the SDC distribution client failed with reason: " + result.getDistributionMessageResult()); + } + } + + private void closeSdcDistributionclient() throws SdcListenerException { + LOG.info("Closing SDC distribution client"); + IDistributionClientResult status = this.distributionClient.stop(); + if (status.getDistributionActionResult().equals(DistributionActionResultEnum.SUCCESS)) { + throw new SdcListenerException( + "Failed to close the SDC distribution client due to : " + status.getDistributionMessageResult()); + } + } +}