summaryrefslogtreecommitdiffstats
path: root/catalog-fe/src/main/java/org/openecomp/sdc/fe/client/BackendClient.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-fe/src/main/java/org/openecomp/sdc/fe/client/BackendClient.java')
-rw-r--r--catalog-fe/src/main/java/org/openecomp/sdc/fe/client/BackendClient.java179
1 files changed, 0 insertions, 179 deletions
diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/client/BackendClient.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/client/BackendClient.java
deleted file mode 100644
index 92e497d278..0000000000
--- a/catalog-fe/src/main/java/org/openecomp/sdc/fe/client/BackendClient.java
+++ /dev/null
@@ -1,179 +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.fe.client;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
-import javax.ws.rs.container.AsyncResponse;
-import javax.ws.rs.core.Response;
-
-import org.apache.http.HttpStatus;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
-import org.apache.http.entity.InputStreamEntity;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.ssl.SSLContextBuilder;
-import org.openecomp.sdc.common.api.Constants;
-import org.openecomp.sdc.common.api.ResponseInfo;
-import org.openecomp.sdc.common.api.ResponseInfo.ResponseStatusEnum;
-import org.openecomp.sdc.fe.impl.Audit;
-import org.openecomp.sdc.fe.impl.HttpRequestInfo;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class BackendClient {
-
- private static Logger log = LoggerFactory.getLogger(BackendClient.class.getName());
-
- private HostnameVerifier hostnameVerifier = null;
-
- private CloseableHttpClient backendHttpClient;
- private String backendHost;
- private String backendContext;
-
- public BackendClient(String protocol, String backendHost, String backendContext) {
-
- this.backendContext = backendContext;
- hostnameVerifier = new HostnameVerifier() {
-
- public boolean verify(String hostname, SSLSession session) {
-
- return true;
- }
- };
-
- if (protocol == null || protocol.isEmpty() || protocol.equals(Constants.HTTP)) {
- backendHttpClient = HttpClients.createDefault();
- this.backendHost = Constants.HTTP + "://" + backendHost;
- } else {
- // NULL can be returned in case of error
- backendHttpClient = getSslClient();
- this.backendHost = Constants.HTTPS + "://" + backendHost;
- }
-
- }
-
- public HostnameVerifier getHostnameVerifier() {
- return hostnameVerifier;
- }
-
- private CloseableHttpClient getSslClient() {
-
- CloseableHttpClient httpClient = null;
- try {
-
- // SSLContextBuilder is not thread safe
- SSLContextBuilder builder = new SSLContextBuilder();
- builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());
- SSLContext sslContext = builder.build();
-
- httpClient = HttpClientBuilder.create().setSSLHostnameVerifier(hostnameVerifier).setSslcontext(sslContext)
- .build();
-
- } catch (Exception e) {
- log.error("Failed to create https client", e);
- return null;
- }
-
- return httpClient;
-
- }
-
- public ResponseInfo forwardRequestToBackend(HttpRequestInfo requestInfo, List<String> requiredHeaders,
- AsyncResponse asyncResponse) {
-
- ResponseInfo responseInfo = null;
- log.debug("forwardRequestToBackend");
- if (backendHttpClient == null) {
- responseInfo = new ResponseInfo(ResponseStatusEnum.INTERNAL_ERROR, "Failed to create https client");
- Audit.error(log, requestInfo, HttpStatus.SC_INTERNAL_SERVER_ERROR);
- asyncResponse.resume(
- Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).entity(responseInfo.toString()).build());
- return responseInfo;
- }
-
- CloseableHttpResponse response = null;
- int status = HttpStatus.SC_INTERNAL_SERVER_ERROR;
- HttpPost httpPost = new HttpPost(backendHost + backendContext);
- try {
-
- log.debug("Executing request {}", httpPost.getRequestLine());
- httpPost.setEntity(new InputStreamEntity(requestInfo.getRequestData()));
- boolean allHeadersAreSet = copyHeadersToRequest(requiredHeaders, requestInfo, httpPost);
- if (!allHeadersAreSet) {
- responseInfo = new ResponseInfo(ResponseStatusEnum.MISSING_HEADERS, "Required headers are missing");
- asyncResponse
- .resume(Response.status(HttpStatus.SC_BAD_REQUEST).entity(responseInfo.toString()).build());
- Audit.error(log, requestInfo, HttpStatus.SC_BAD_REQUEST);
- } else {
- response = backendHttpClient.execute(httpPost);
- status = response.getStatusLine().getStatusCode();
- asyncResponse.resume(Response.status(status).entity(response.getEntity()).build());
- }
- Audit.info(log, requestInfo, status);
-
- } catch (IOException e) {
- log.error("connection with backend failed with exception", e);
- responseInfo = new ResponseInfo(ResponseStatusEnum.INTERNAL_ERROR, e.getMessage());
- Audit.error(log, requestInfo, HttpStatus.SC_INTERNAL_SERVER_ERROR);
- asyncResponse.resume(
- Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).entity(responseInfo.toString()).build());
- } finally {
- try {
- if (response != null) {
- response.close();
- }
- backendHttpClient.close();
- } catch (IOException e) {
- log.error("failed to close httpClient: {}", e.getMessage());
- }
-
- }
-
- return responseInfo;
-
- }
-
- private boolean copyHeadersToRequest(List<String> requiredHeaders, HttpRequestInfo requestInfo, HttpPost httpPost) {
- boolean allHeadersAreSet = false;
- Map<String, String> originalHeaders = requestInfo.getHeaders();
- for (String headerName : requiredHeaders) {
- String headerValue = originalHeaders.get(headerName);
- if (headerValue != null) {
- httpPost.setHeader(headerName, headerValue);
- } else {
- log.error("missing required header {}", headerName);
- return allHeadersAreSet;
- }
- }
- allHeadersAreSet = true;
- return allHeadersAreSet;
- }
-
-}