2  * ============LICENSE_START=======================================================
 
   3  * BBS-RELOCATION-CPE-AUTHENTICATION-HANDLER
 
   4  * ================================================================================
 
   5  * Copyright (C) 2019 NOKIA Intellectual Property. All rights reserved.
 
   6  * ================================================================================
 
   7  * Licensed under the Apache License, Version 2.0 (the "License");
 
   8  * you may not use this file except in compliance with the License.
 
   9  * You may obtain a copy of the License at
 
  11  *      http://www.apache.org/licenses/LICENSE-2.0
 
  13  * Unless required by applicable law or agreed to in writing, software
 
  14  * distributed under the License is distributed on an "AS IS" BASIS,
 
  15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  16  * See the License for the specific language governing permissions and
 
  17  * limitations under the License.
 
  18  * ============LICENSE_END=========================================================
 
  21 package org.onap.bbs.event.processor.tasks;
 
  23 import javax.net.ssl.SSLException;
 
  25 import org.onap.bbs.event.processor.config.ApplicationConfiguration;
 
  26 import org.onap.bbs.event.processor.exceptions.EmptyDmaapResponseException;
 
  27 import org.onap.bbs.event.processor.model.CpeAuthenticationConsumerDmaapModel;
 
  28 import org.onap.bbs.event.processor.utilities.CpeAuthenticationDmaapConsumerJsonParser;
 
  29 import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.service.consumer.ConsumerReactiveHttpClientFactory;
 
  30 import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.service.consumer.DMaaPConsumerReactiveHttpClient;
 
  31 import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.service.consumer.DMaaPReactiveWebClientFactory;
 
  32 import org.slf4j.Logger;
 
  33 import org.slf4j.LoggerFactory;
 
  34 import org.springframework.beans.factory.annotation.Autowired;
 
  35 import org.springframework.stereotype.Component;
 
  37 import reactor.core.publisher.Flux;
 
  38 import reactor.core.publisher.Mono;
 
  41 public class DmaapCpeAuthenticationConsumerTaskImpl implements DmaapCpeAuthenticationConsumerTask {
 
  43     private static final Logger LOGGER = LoggerFactory.getLogger(DmaapCpeAuthenticationConsumerTaskImpl.class);
 
  44     private final ApplicationConfiguration configuration;
 
  45     private final CpeAuthenticationDmaapConsumerJsonParser cpeAuthenticationDmaapConsumerJsonParser;
 
  46     private final ConsumerReactiveHttpClientFactory httpClientFactory;
 
  49     public DmaapCpeAuthenticationConsumerTaskImpl(ApplicationConfiguration configuration) {
 
  50         this(configuration, new CpeAuthenticationDmaapConsumerJsonParser(),
 
  51                 new ConsumerReactiveHttpClientFactory(new DMaaPReactiveWebClientFactory()));
 
  54     DmaapCpeAuthenticationConsumerTaskImpl(ApplicationConfiguration configuration,
 
  55                                            CpeAuthenticationDmaapConsumerJsonParser
 
  56                                                    cpeAuthenticationDmaapConsumerJsonParser,
 
  57                                            ConsumerReactiveHttpClientFactory httpClientFactory) {
 
  58         this.configuration = configuration;
 
  59         this.cpeAuthenticationDmaapConsumerJsonParser = cpeAuthenticationDmaapConsumerJsonParser;
 
  60         this.httpClientFactory = httpClientFactory;
 
  64     public Flux<CpeAuthenticationConsumerDmaapModel> execute(String taskName) throws SSLException {
 
  65         LOGGER.debug("Executing task for CPE-Authentication with name \"{}\"", taskName);
 
  66         DMaaPConsumerReactiveHttpClient dmaaPConsumerReactiveHttpClient = resolveClient();
 
  67         Mono<String> response = dmaaPConsumerReactiveHttpClient.getDMaaPConsumerResponse();
 
  68         return cpeAuthenticationDmaapConsumerJsonParser.extractModelFromDmaap(response)
 
  69                 .switchIfEmpty(Flux.error(
 
  70                         new EmptyDmaapResponseException("CPE Authentication: Got an empty response from DMaaP")))
 
  72                     if (!(e instanceof EmptyDmaapResponseException)) {
 
  73                         LOGGER.error("DMaaP Consumption Exception: {}", e.getMessage());
 
  79     public DMaaPConsumerReactiveHttpClient resolveClient() throws SSLException {
 
  80         return httpClientFactory.create(configuration.getDmaapCpeAuthenticationConsumerConfiguration());