From 69da977930bf2ec5a7665f0144e698118c3e0f1b Mon Sep 17 00:00:00 2001 From: wasala Date: Tue, 22 May 2018 12:44:26 +0200 Subject: Refactor DmaapConsumeClient Java Optional with functional chain of execution Change-Id: Ida7a3ba1c676a8c4edfbfe71522042a67b79daf8 Issue-ID: DCAEGEN2-396 Signed-off-by: wasala --- .../ExtendedDmaapConsumerHttpClientImpl.java | 75 +++++++++------------- 1 file changed, 32 insertions(+), 43 deletions(-) diff --git a/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/consumer/ExtendedDmaapConsumerHttpClientImpl.java b/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/consumer/ExtendedDmaapConsumerHttpClientImpl.java index 2b46f51b..3bae6989 100644 --- a/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/consumer/ExtendedDmaapConsumerHttpClientImpl.java +++ b/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/prh/service/consumer/ExtendedDmaapConsumerHttpClientImpl.java @@ -20,6 +20,10 @@ package org.onap.dcaegen2.services.prh.service.consumer; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Optional; import org.apache.http.HttpEntity; import org.apache.http.client.ResponseHandler; import org.apache.http.client.methods.HttpGet; @@ -33,11 +37,6 @@ import org.onap.dcaegen2.services.prh.service.HttpUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Optional; - public class ExtendedDmaapConsumerHttpClientImpl { @@ -66,60 +65,50 @@ public class ExtendedDmaapConsumerHttpClientImpl { public Optional getHttpConsumerResponse() { - Optional extendedDetails = Optional.empty(); - Optional request = createRequest(); - try { - extendedDetails = closeableHttpClient.execute(request.get(), dmaapConsumerResponseHandler()); - } catch (IOException | NullPointerException e) { - logger.error("Exception while executing HTTP request: {}", e); + return createRequest() + .flatMap(this::executeHttpClient); + } catch (NullPointerException | URISyntaxException e) { + logger.warn("Exception while executing HTTP request: ", e); } - - return extendedDetails; + return Optional.empty(); } - private static HttpRequestBase createHttpRequest(URI extendedURI) { - if (isExtendedURINotNull(extendedURI)) { - return new HttpGet(extendedURI); + private Optional executeHttpClient(HttpRequestBase httpRequestBase) { + try { + return closeableHttpClient.execute(httpRequestBase, getDmaapConsumerResponseHandler()); + } catch (IOException e) { + logger.warn("Exception while executing HTTP request: ", e); } - - return null; + return Optional.empty(); } - private static Boolean isExtendedURINotNull(URI extendedURI) { - return extendedURI != null; + private Optional createRequest() throws URISyntaxException { + return "application/json".equals(dmaapContentType) + ? createDmaapConsumerExtendedURI().map(this::createHttpRequest) + : Optional.empty(); } - private Optional createRequest() { - - Optional request = Optional.empty(); - final URI extendedURI = createDmaapConsumerExtendedURI(); - - if ("application/json".equals(dmaapContentType)) { - request = Optional.ofNullable(createHttpRequest(extendedURI)); - request.get().addHeader("Content-type", dmaapContentType); - } - - return request; + private HttpRequestBase createHttpRequest(URI extendedURI) { + HttpRequestBase httpRequestBase = new HttpGet(extendedURI); + httpRequestBase.addHeader("Content-type", dmaapContentType); + return httpRequestBase; } + private String createRequestPath() { return dmaapTopicName + "/" + consumerGroup + "/" + consumerId; } - private URI createDmaapConsumerExtendedURI() { - try { - return new URIBuilder() - .setScheme(dmaapProtocol) - .setHost(dmaapHostName) - .setPort(dmaapPortNumber) - .setPath(createRequestPath()).build(); - } catch (URISyntaxException e) { - throw new RuntimeException("Exception while building extended URI: {}", e); - } + private Optional createDmaapConsumerExtendedURI() throws URISyntaxException { + return Optional.ofNullable(new URIBuilder() + .setScheme(dmaapProtocol) + .setHost(dmaapHostName) + .setPort(dmaapPortNumber) + .setPath(createRequestPath()).build()); } - private ResponseHandler> dmaapConsumerResponseHandler() { + private ResponseHandler> getDmaapConsumerResponseHandler() { return httpResponse -> { final int responseCode = httpResponse.getStatusLine().getStatusCode(); logger.info("Status code of operation: {}", responseCode); @@ -131,7 +120,7 @@ public class ExtendedDmaapConsumerHttpClientImpl { return Optional.of(dmaapResponse); } else { String dmaapResponse = responseEntity != null ? EntityUtils.toString(responseEntity) : ""; - logger.error("HTTP response not successful : {}", dmaapResponse); + logger.warn("HTTP response not successful : {}", dmaapResponse); return Optional.of(String.valueOf(responseCode)); } }; -- cgit 1.2.3-korg