From a2feaf9b65cbba66181fb560b5815a62427d65cc Mon Sep 17 00:00:00 2001 From: vasraz Date: Fri, 5 May 2023 11:57:56 +0100 Subject: Support SIP TLS Signed-off-by: Vasyl Razinkov Change-Id: Icbadd04cfa87302491c59f2e4a39ef92aaafcaa3 Issue-ID: SDC-4483 --- .../sdc/be/config/ConfigurationManager.java | 9 +- .../common/http/client/api/HttpClientFactory.java | 34 ++++-- .../sdc/common/http/client/api/HttpResponse.java | 36 +----- .../sdc/common/listener/AppContextListener.java | 2 + .../ApacheClientLogRequestInterceptor.java | 63 ---------- .../ApacheClientLogResponseInterceptor.java | 51 -------- .../org/openecomp/sdc/common/util/StreamUtils.java | 132 --------------------- .../sdc/fe/config/ConfigurationManager.java | 5 +- 8 files changed, 40 insertions(+), 292 deletions(-) delete mode 100644 common-app-api/src/main/java/org/openecomp/sdc/common/log/interceptors/ApacheClientLogRequestInterceptor.java delete mode 100644 common-app-api/src/main/java/org/openecomp/sdc/common/log/interceptors/ApacheClientLogResponseInterceptor.java delete mode 100644 common-app-api/src/main/java/org/openecomp/sdc/common/util/StreamUtils.java (limited to 'common-app-api/src/main/java') diff --git a/common-app-api/src/main/java/org/openecomp/sdc/be/config/ConfigurationManager.java b/common-app-api/src/main/java/org/openecomp/sdc/be/config/ConfigurationManager.java index 7241decd62..03cbc5952a 100644 --- a/common-app-api/src/main/java/org/openecomp/sdc/be/config/ConfigurationManager.java +++ b/common-app-api/src/main/java/org/openecomp/sdc/be/config/ConfigurationManager.java @@ -20,8 +20,6 @@ package org.openecomp.sdc.be.config; import com.google.common.annotations.VisibleForTesting; -import java.util.HashMap; -import java.util.Map; import org.openecomp.sdc.be.config.validation.ArtifactConfigValidator; import org.openecomp.sdc.common.api.ArtifactTypeEnum; import org.openecomp.sdc.common.api.BasicConfiguration; @@ -31,11 +29,14 @@ import org.openecomp.sdc.common.api.FileChangeCallback; import org.openecomp.sdc.common.config.EcompErrorConfiguration; import org.openecomp.sdc.common.config.IEcompConfigurationManager; +import java.util.HashMap; +import java.util.Map; + public class ConfigurationManager implements FileChangeCallback, IEcompConfigurationManager { private static ConfigurationManager instance; final Map configurations = new HashMap<>(); - ConfigurationSource configurationSource = null; + private ConfigurationSource configurationSource; @VisibleForTesting public ConfigurationManager() { @@ -67,7 +68,7 @@ public class ConfigurationManager implements FileChangeCallback, IEcompConfigura final Object configurationObj = configurations.get(getKey(Configuration.class)); if (configurationObj instanceof Configuration) { final ArtifactConfigValidator artifactConfigValidator = new ArtifactConfigValidator((Configuration) configurationObj, - ArtifactTypeEnum.getBaseArtifacts()); + ArtifactTypeEnum.getBaseArtifacts()); artifactConfigValidator.validate(); } } diff --git a/common-app-api/src/main/java/org/openecomp/sdc/common/http/client/api/HttpClientFactory.java b/common-app-api/src/main/java/org/openecomp/sdc/common/http/client/api/HttpClientFactory.java index d45deb328b..599c43ac67 100644 --- a/common-app-api/src/main/java/org/openecomp/sdc/common/http/client/api/HttpClientFactory.java +++ b/common-app-api/src/main/java/org/openecomp/sdc/common/http/client/api/HttpClientFactory.java @@ -23,15 +23,17 @@ import org.apache.http.client.HttpRequestRetryHandler; import org.apache.http.client.UserTokenHandler; import org.apache.http.client.config.RequestConfig; import org.apache.http.conn.HttpClientConnectionManager; -import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClients; +import org.onap.config.api.JettySSLUtils; import org.openecomp.sdc.common.api.Constants; import org.openecomp.sdc.common.http.config.ClientCertificate; -import org.openecomp.sdc.common.log.wrappers.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class HttpClientFactory { - private static final Logger logger = Logger.getLogger(HttpClientFactory.class.getName()); + private static final Logger LOGGER = LoggerFactory.getLogger(HttpClientFactory.class); private static final UserTokenHandler userTokenHandler = context -> null; private final HttpConnectionMngFactory connectionMngFactory; @@ -40,13 +42,25 @@ public class HttpClientFactory { } HttpClient createClient(String protocol, HttpClientConfigImmutable config) { - logger.debug("Create {} client based on {}", protocol, config); - ClientCertificate clientCertificate = Constants.HTTPS.equals(protocol) ? config.getClientCertificate() : null; - HttpClientConnectionManager connectionManager = connectionMngFactory.getOrCreate(clientCertificate); - RequestConfig requestConfig = createClientTimeoutConfiguration(config); - CloseableHttpClient client = HttpClients.custom().setDefaultRequestConfig(requestConfig).setConnectionManager(connectionManager) - .setUserTokenHandler(userTokenHandler).setRetryHandler(resolveRetryHandler(config)).build(); - return new HttpClient(client, config); + LOGGER.debug("Create {} client based on {}", protocol, config); + final ClientCertificate clientCertificate = Constants.HTTPS.equals(protocol) ? config.getClientCertificate() : null; + final HttpClientConnectionManager connectionManager = connectionMngFactory.getOrCreate(clientCertificate); + final RequestConfig requestConfig = createClientTimeoutConfiguration(config); + + try { + final HttpClientBuilder httpClientBuilder = HttpClients.custom() + .setDefaultRequestConfig(requestConfig) + .setConnectionManager(connectionManager) + .setUserTokenHandler(userTokenHandler) + .setRetryHandler(resolveRetryHandler(config)); + if (clientCertificate != null) { + httpClientBuilder.setSSLContext(JettySSLUtils.getSslContext()); + } + return new HttpClient(httpClientBuilder.build(), config); + } catch (Exception e) { + LOGGER.error("Failed to createClient", e); + throw new RuntimeException(e); + } } private HttpRequestRetryHandler resolveRetryHandler(HttpClientConfigImmutable config) { diff --git a/common-app-api/src/main/java/org/openecomp/sdc/common/http/client/api/HttpResponse.java b/common-app-api/src/main/java/org/openecomp/sdc/common/http/client/api/HttpResponse.java index 573c97f130..bd5990eed5 100644 --- a/common-app-api/src/main/java/org/openecomp/sdc/common/http/client/api/HttpResponse.java +++ b/common-app-api/src/main/java/org/openecomp/sdc/common/http/client/api/HttpResponse.java @@ -19,8 +19,12 @@ */ package org.openecomp.sdc.common.http.client.api; +import lombok.AllArgsConstructor; +import lombok.Getter; import org.apache.commons.lang3.StringUtils; +@Getter +@AllArgsConstructor public class HttpResponse { private final T response; @@ -28,39 +32,11 @@ public class HttpResponse { private final String description; public HttpResponse(T response, int statusCode) { - this.response = response; - this.statusCode = statusCode; - this.description = StringUtils.EMPTY; - } - - public HttpResponse(T response, int statusCode, String description) { - this.response = response; - this.statusCode = statusCode; - this.description = description; - } - - public T getResponse() { - return response; - } - - public int getStatusCode() { - return statusCode; - } - - public String getDescription() { - return description; + this(response, statusCode, StringUtils.EMPTY); } @Override public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("HttpResponse [response="); - builder.append(response); - builder.append(", statusCode="); - builder.append(statusCode); - builder.append(", description="); - builder.append(description); - builder.append("]"); - return builder.toString(); + return "HttpResponse [response=" + response + ", statusCode=" + statusCode + ", description=" + description + "]"; } } diff --git a/common-app-api/src/main/java/org/openecomp/sdc/common/listener/AppContextListener.java b/common-app-api/src/main/java/org/openecomp/sdc/common/listener/AppContextListener.java index 70a94fd460..d85dab0db6 100644 --- a/common-app-api/src/main/java/org/openecomp/sdc/common/listener/AppContextListener.java +++ b/common-app-api/src/main/java/org/openecomp/sdc/common/listener/AppContextListener.java @@ -39,6 +39,7 @@ public class AppContextListener implements ServletContextListener { private static Logger log = Logger.getLogger(AppContextListener.class.getName()); + @Override public void contextInitialized(ServletContextEvent context) { log.debug("ServletContextListener initialized "); log.debug("After read values from Manifest {}", getManifestInfo(context.getServletContext())); @@ -57,6 +58,7 @@ public class AppContextListener implements ServletContextListener { ExternalConfiguration.listenForChanges(); } + @Override public void contextDestroyed(ServletContextEvent context) { log.debug("ServletContextListener destroyed"); ExternalConfiguration.stopListenForFileChanges(); diff --git a/common-app-api/src/main/java/org/openecomp/sdc/common/log/interceptors/ApacheClientLogRequestInterceptor.java b/common-app-api/src/main/java/org/openecomp/sdc/common/log/interceptors/ApacheClientLogRequestInterceptor.java deleted file mode 100644 index 82bf295762..0000000000 --- a/common-app-api/src/main/java/org/openecomp/sdc/common/log/interceptors/ApacheClientLogRequestInterceptor.java +++ /dev/null @@ -1,63 +0,0 @@ -package org.openecomp.sdc.common.log.interceptors; - -import java.io.IOException; -import java.net.URI; -import org.apache.http.HttpException; -import org.apache.http.HttpMessage; -import org.apache.http.HttpRequest; -import org.apache.http.HttpRequestInterceptor; -import org.apache.http.HttpResponse; -import org.apache.http.protocol.HttpContext; -import org.onap.logging.filter.base.AbstractMetricLogFilter; -import org.onap.logging.ref.slf4j.ONAPLogConstants; -import org.openecomp.sdc.common.log.elements.LogFieldsMdcHandler; - -public class ApacheClientLogRequestInterceptor extends AbstractMetricLogFilter implements - HttpRequestInterceptor { - - private String previousInvocationId; - - @Override - protected void addHeader(HttpMessage httpMessage, String s, String s1) { - httpMessage.addHeader(s, s1); - } - - @Override - protected String getTargetServiceName(HttpRequest httpRequest) { - return httpRequest.getRequestLine().getUri(); - } - - @Override - protected String getServiceName(HttpRequest httpRequest) { - return URI.create(httpRequest.getRequestLine().getUri()).getPath(); - } - - @Override - protected int getHttpStatusCode(HttpResponse httpResponse) { - return httpResponse.getStatusLine().getStatusCode(); - } - - @Override - protected String getResponseCode(HttpResponse httpResponse) { - return String.valueOf(httpResponse.getStatusLine().getStatusCode()); - } - - @Override - protected String getTargetEntity(HttpRequest httpRequest) { - //fallback to default value that provided by AbstractMetricLogFilter - return null; - } - - @Override - protected void additionalPre(HttpRequest httpRequest, HttpMessage httpMessage) { - String outgoingInvocationId = httpMessage.getFirstHeader(ONAPLogConstants.Headers.INVOCATION_ID).getValue(); - LogFieldsMdcHandler.getInstance().setOutgoingInvocationId(outgoingInvocationId); - LogFieldsMdcHandler.getInstance().setKeyInvocationId(previousInvocationId); - } - - @Override - public void process(HttpRequest httpRequest, HttpContext httpContext) throws HttpException, IOException { - previousInvocationId = LogFieldsMdcHandler.getInstance().getKeyInvocationId(); - super.pre(httpRequest, httpRequest); - } -} diff --git a/common-app-api/src/main/java/org/openecomp/sdc/common/log/interceptors/ApacheClientLogResponseInterceptor.java b/common-app-api/src/main/java/org/openecomp/sdc/common/log/interceptors/ApacheClientLogResponseInterceptor.java deleted file mode 100644 index 26c7c2540b..0000000000 --- a/common-app-api/src/main/java/org/openecomp/sdc/common/log/interceptors/ApacheClientLogResponseInterceptor.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.openecomp.sdc.common.log.interceptors; - -import java.io.IOException; -import java.net.URI; -import org.apache.http.HttpException; -import org.apache.http.HttpMessage; -import org.apache.http.HttpRequest; -import org.apache.http.HttpResponse; -import org.apache.http.HttpResponseInterceptor; -import org.apache.http.protocol.HttpContext; -import org.onap.logging.filter.base.AbstractMetricLogFilter; - -public class ApacheClientLogResponseInterceptor extends AbstractMetricLogFilter implements - HttpResponseInterceptor { - - @Override - protected void addHeader(HttpMessage httpMessage, String s, String s1) { - httpMessage.addHeader(s, s1); - } - - @Override - protected String getTargetServiceName(HttpRequest httpRequest) { - return httpRequest.getRequestLine().getUri(); - } - - @Override - protected String getServiceName(HttpRequest httpRequest) { - return URI.create(httpRequest.getRequestLine().getUri()).getPath(); - } - - @Override - protected int getHttpStatusCode(HttpResponse httpResponse) { - return httpResponse.getStatusLine().getStatusCode(); - } - - @Override - protected String getResponseCode(HttpResponse httpResponse) { - return String.valueOf(httpResponse.getStatusLine().getStatusCode()); - } - - @Override - protected String getTargetEntity(HttpRequest httpRequest) { - //fallback to default value that provided by AbstractMetricLogFilter - return null; - } - - @Override - public void process(HttpResponse httpResponse, HttpContext httpContext) throws HttpException, IOException { - super.post(null, httpResponse); - } -} diff --git a/common-app-api/src/main/java/org/openecomp/sdc/common/util/StreamUtils.java b/common-app-api/src/main/java/org/openecomp/sdc/common/util/StreamUtils.java deleted file mode 100644 index 37769fbaef..0000000000 --- a/common-app-api/src/main/java/org/openecomp/sdc/common/util/StreamUtils.java +++ /dev/null @@ -1,132 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ -package org.openecomp.sdc.common.util; - -import java.util.ArrayList; -import java.util.List; -import java.util.Spliterator; -import java.util.Spliterators.AbstractSpliterator; -import java.util.function.Consumer; -import java.util.function.Predicate; -import java.util.stream.Stream; -import java.util.stream.StreamSupport; - -/** - * Utility Class For Actions On Streams - * - * @author mshitrit - */ -public final class StreamUtils { - - private StreamUtils() { - throw new UnsupportedOperationException(); - } - - /** - * Breaks the stream when the predicate is not met.
Does not evaluate elements after the stream breaks.
This method evaluates the - * stream.
- * - * @param stream - * @param predicate - * @return - */ - public static Stream takeWhilePlusOneNoEval(Stream stream, Predicate predicate) { - List results = new ArrayList<>(); - Consumer listAdder = results::add; - stream.map(e -> { - listAdder.accept(e); - return e; - }).filter(e -> !predicate.test(e)).findFirst(); - return results.stream(); - } - - public static Stream takeWhile(Stream stream, Predicate predicate) { - return StreamSupport.stream(takeWhile(stream.spliterator(), predicate), false); - } - - public static Stream takeWhilePlusOne(Stream stream, Predicate predicate) { - return StreamSupport.stream(takeWhile(stream.spliterator(), new StopAfterFailPredicate<>(predicate)), false); - } - - private static Spliterator takeWhile(Spliterator splitr, Predicate predicate) { - return new MySplitIterator<>(splitr, predicate); - } - - public static class MySplitIterator extends AbstractSpliterator implements Spliterator { - - boolean stillGoing = true; - private Spliterator innerItr; - private Predicate innerPred; - - private MySplitIterator(Spliterator splitItr, Predicate pred) { - super(splitItr.estimateSize(), 0); - innerItr = splitItr; - innerPred = pred; - } - - @Override - public boolean tryAdvance(Consumer action) { - boolean canAdvance = true; - if (stillGoing) { - stillGoing = innerItr.tryAdvance(createConsumerWrapper(action)); - } else { - canAdvance = false; - } - return canAdvance; - } - - private Consumer createConsumerWrapper(Consumer action) { - return new Consumer() { - @Override - public void accept(T t) { - stillGoing = innerPred.test(t); - if (stillGoing) { - action.accept(t); - } - } - }; - } - } - - public static class StopAfterFailPredicate implements Predicate { - - boolean hasNotFailed; - Predicate innerPredicate; - - private StopAfterFailPredicate(Predicate pred) { - hasNotFailed = true; - innerPredicate = pred; - } - - ; - - @Override - public boolean test(T t) { - boolean isPassed; - if (hasNotFailed) { - isPassed = true; - hasNotFailed = innerPredicate.test(t); - } else { - isPassed = false; - } - return isPassed; - } - } -} diff --git a/common-app-api/src/main/java/org/openecomp/sdc/fe/config/ConfigurationManager.java b/common-app-api/src/main/java/org/openecomp/sdc/fe/config/ConfigurationManager.java index 0d5cf62cb1..798bacf9a3 100644 --- a/common-app-api/src/main/java/org/openecomp/sdc/fe/config/ConfigurationManager.java +++ b/common-app-api/src/main/java/org/openecomp/sdc/fe/config/ConfigurationManager.java @@ -34,8 +34,8 @@ public class ConfigurationManager implements FileChangeCallback, IEcompConfigura private static final Logger log = Logger.getLogger(ConfigurationManager.class.getName()); private static ConfigurationManager instance; - ConfigurationSource configurationSource = null; - Map configurations = new HashMap<>(); + private final ConfigurationSource configurationSource; + private final Map configurations = new HashMap<>(); public ConfigurationManager(ConfigurationSource configurationSource) { super(); @@ -101,6 +101,7 @@ public class ConfigurationManager implements FileChangeCallback, IEcompConfigura return (Configuration) configurations.get(getKey(Configuration.class)); } + @Override public void reconfigure(BasicConfiguration obj) { // -- cgit 1.2.3-korg