diff options
author | Chengkai Yan <martin.c.yan@est.tech> | 2018-11-23 16:23:56 +0100 |
---|---|---|
committer | elinuxhenrik <henrik.b.andersson@est.tech> | 2018-12-03 13:20:42 +0100 |
commit | 693026c6b973c44ade969516be496f966e4fae86 (patch) | |
tree | 8398e3e98d79303d5d53c51eeccf3db018e2865b /datafile-dmaap-client/src/main/java | |
parent | a3c452af58c12283d76019509dd605f67f14532c (diff) |
fix bugs in jira DCAEGEN2-940 and DCAEGEN2-941
Change-Id: Id0b3e295cab0e085746b034caccbf82aca2e0d7b
Signed-off-by: Chengkai Yan <martin.c.yan@est.tech>
Issue-ID: DCAEGEN2-940
Issue-ID: DCAEGEN2-941
Diffstat (limited to 'datafile-dmaap-client/src/main/java')
8 files changed, 158 insertions, 233 deletions
diff --git a/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/FTPSClientWrapper.java b/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/FTPSClientWrapper.java index 2ccf1bab..4b7cc01a 100644 --- a/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/FTPSClientWrapper.java +++ b/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/FTPSClientWrapper.java @@ -2,17 +2,15 @@ * ============LICENSE_START====================================================================== * Copyright (C) 2018 Nordix Foundation. 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 + * 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 + * 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. + * 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======================================================================== */ @@ -75,6 +73,11 @@ public class FTPSClientWrapper implements IFTPSClient { } @Override + public void setFileType(int fileType) throws IOException { + ftpsClient.setFileType(fileType); + } + + @Override public void execPBSZ(int psbz) throws IOException { ftpsClient.execPBSZ(psbz); } @@ -93,4 +96,14 @@ public class FTPSClientWrapper implements IFTPSClient { public void setTimeout(Integer t) { this.ftpsClient.setDefaultTimeout(t); } + + @Override + public boolean isConnected() { + return ftpsClient.isConnected(); + } + + @Override + public void setBufferSize(int bufSize) { + ftpsClient.setBufferSize(bufSize); + } } diff --git a/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/FileCollectResult.java b/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/FileCollectResult.java index 9b6eacb0..fa1d4310 100644 --- a/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/FileCollectResult.java +++ b/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/FileCollectResult.java @@ -2,17 +2,15 @@ * ============LICENSE_START====================================================================== * Copyright (C) 2018 Nordix Foundation. 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 + * 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 + * 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. + * 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======================================================================== */ @@ -44,6 +42,7 @@ public class FileCollectResult { @Override public String toString() { - return "FileCollectResult: " + result + " Error data: " + getErrorData(); + return "FileCollectResult: " + + (downloadSuccessful() ? "successful!" : "unsuccessful! Error data: " + getErrorData()); } } diff --git a/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/FtpsClient.java b/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/FtpsClient.java index 8247bccb..0d055fc1 100644 --- a/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/FtpsClient.java +++ b/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/FtpsClient.java @@ -22,6 +22,7 @@ import java.io.OutputStream; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; +import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPReply; import org.onap.dcaegen2.collectors.datafile.io.FileSystemResourceWrapper; import org.onap.dcaegen2.collectors.datafile.io.FileWrapper; @@ -72,7 +73,6 @@ public class FtpsClient extends FileCollectClient { if (setUpKeyManager(ftps) && setUpTrustedCA(ftps) && setUpConnection(ftps)) { if (getFileFromxNF(ftps)) { - closeDownConnection(ftps); fileCollectResult = new FileCollectResult(); } else { fileCollectResult = new FileCollectResult(errorData); @@ -80,6 +80,7 @@ public class FtpsClient extends FileCollectClient { } else { fileCollectResult = new FileCollectResult(errorData); } + closeDownConnection(ftps); logger.trace("retryCollectFile left with result: {}", fileCollectResult); return fileCollectResult; } @@ -87,6 +88,7 @@ public class FtpsClient extends FileCollectClient { private boolean setUpKeyManager(IFTPSClient ftps) { boolean result = true; if (keyManagerSet) { + logger.trace("keyManager already set!"); return result; } try { @@ -105,6 +107,7 @@ public class FtpsClient extends FileCollectClient { private boolean setUpTrustedCA(IFTPSClient ftps) { boolean result = true; if (trustManagerSet) { + logger.trace("trustManager already set!"); return result; } try { @@ -130,32 +133,42 @@ public class FtpsClient extends FileCollectClient { private boolean setUpConnection(IFTPSClient ftps) { boolean result = true; try { + if (ftps.isConnected()) { + addError( + "Looks like previous ftp connection is still in use, will retry in 1 minute. " + fileServerData, + null); + return false; + } ftps.connect(fileServerData.serverAddress(), fileServerData.port()); logger.trace("after ftp connect"); boolean loginSuccesful = ftps.login(fileServerData.userId(), fileServerData.password()); if (!loginSuccesful) { - ftps.logout(); + closeDownConnection(ftps); addError("Unable to log in to xNF. " + fileServerData, null); - result = false; + return false; } if (loginSuccesful && FTPReply.isPositiveCompletion(ftps.getReplyCode())) { ftps.enterLocalPassiveMode(); + ftps.setFileType(FTP.BINARY_FILE_TYPE); // Set protection buffer size ftps.execPBSZ(0); // Set data channel protection to private ftps.execPROT("P"); + ftps.setBufferSize(1024 * 1024); } else { - ftps.disconnect(); + closeDownConnection(ftps); addError("Unable to connect to xNF. " + fileServerData + " xNF reply code: " + ftps.getReplyCode(), null); - result = false; + return false; } - } catch (Exception ex) { - addError("Unable to connect to xNF. Data: " + fileServerData, ex); - result = false; + } catch (Exception e) { + logger.trace("connect to ftp server failed.", e); + addError("Unable to connect to xNF. Data: " + fileServerData, e); + closeDownConnection(ftps); + return false; } - logger.trace("setUpConnection return value: {}", result); + logger.trace("setUpConnection successfully!"); return result; } @@ -169,8 +182,9 @@ public class FtpsClient extends FileCollectClient { IOutputStream outputStream = getOutputStream(); OutputStream output = outputStream.getOutputStream(outfile.getFile()); - + logger.trace("begin to retrieve from xNF."); result = ftps.retrieveFile(remoteFile, output); + logger.trace("end retrieve from xNF."); if (!result) { output.close(); logger.debug("Unable to retrieve file from xNF. Cause unknown!"); @@ -186,20 +200,26 @@ public class FtpsClient extends FileCollectClient { } catch (Exception e) { logger.trace("Unable to delete file {}.", localFile, e); } - result = false; + return false; } return result; } private void closeDownConnection(IFTPSClient ftps) { logger.trace("starting to closeDownConnection"); - try { - if (ftps != null) { - ftps.logout(); + if (ftps != null && ftps.isConnected()) { + try { + boolean logOut = ftps.logout(); + logger.trace("logOut: {}", logOut); + } catch (Exception e) { + logger.trace("Unable to logout connection.", e); + } + try { ftps.disconnect(); + logger.trace("disconnected!"); + } catch (Exception e) { + logger.trace("Unable to disconnect connection.", e); } - } catch (Exception e) { - logger.trace("Unable to logout and close connection.", e); } } diff --git a/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/IFTPSClient.java b/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/IFTPSClient.java index b1472026..1a581636 100644 --- a/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/IFTPSClient.java +++ b/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/ftp/IFTPSClient.java @@ -2,17 +2,15 @@ * ============LICENSE_START====================================================================== * Copyright (C) 2018 Nordix Foundation. 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 + * 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 + * 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. + * 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======================================================================== */ @@ -39,10 +37,16 @@ public interface IFTPSClient { public int getReplyCode(); + public void setBufferSize(int bufSize); + + public boolean isConnected(); + public void disconnect() throws IOException; public void enterLocalPassiveMode(); + public void setFileType(int fileType) throws IOException; + public void execPBSZ(int newParam) throws IOException; public void execPROT(String prot) throws IOException; diff --git a/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/service/producer/DmaapProducerReactiveHttpClient.java b/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/service/producer/DmaapProducerReactiveHttpClient.java index 380eac88..0e95b0b0 100644 --- a/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/service/producer/DmaapProducerReactiveHttpClient.java +++ b/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/service/producer/DmaapProducerReactiveHttpClient.java @@ -23,26 +23,29 @@ import java.io.IOException; import java.io.InputStream; import java.net.URI; import java.nio.charset.StandardCharsets; -import java.security.KeyManagementException; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; +import java.util.concurrent.Future; + +import javax.net.ssl.SSLContext; import org.apache.commons.codec.binary.Base64; import org.apache.commons.io.IOUtils; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.conn.ssl.NoopHostnameVerifier; +import org.apache.http.entity.ByteArrayEntity; +import org.apache.http.impl.nio.client.CloseableHttpAsyncClient; +import org.apache.http.impl.nio.client.HttpAsyncClients; +import org.apache.http.ssl.SSLContextBuilder; import org.onap.dcaegen2.collectors.datafile.config.DmaapPublisherConfiguration; import org.onap.dcaegen2.collectors.datafile.io.FileSystemResourceWrapper; import org.onap.dcaegen2.collectors.datafile.io.IFileSystemResource; import org.onap.dcaegen2.collectors.datafile.model.CommonFunctions; import org.onap.dcaegen2.collectors.datafile.model.ConsumerDmaapModel; -import org.onap.dcaegen2.collectors.datafile.web.IRestTemplate; -import org.onap.dcaegen2.collectors.datafile.web.RestTemplateWrapper; +import org.onap.dcaegen2.collectors.datafile.service.HttpUtils; +import org.onap.dcaegen2.collectors.datafile.web.PublishRedirectStrategy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpMethod; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; import org.springframework.web.util.DefaultUriBuilderFactory; import reactor.core.publisher.Flux; @@ -70,7 +73,7 @@ public class DmaapProducerReactiveHttpClient { private final String pwd; private IFileSystemResource fileResource; - private IRestTemplate restTemplate; + private CloseableHttpAsyncClient webClient; /** * Constructor DmaapProducerReactiveHttpClient. @@ -78,7 +81,6 @@ public class DmaapProducerReactiveHttpClient { * @param dmaapPublisherConfiguration - DMaaP producer configuration object */ public DmaapProducerReactiveHttpClient(DmaapPublisherConfiguration dmaapPublisherConfiguration) { - this.dmaapHostName = dmaapPublisherConfiguration.dmaapHostName(); this.dmaapPortNumber = dmaapPublisherConfiguration.dmaapPortNumber(); this.dmaapTopicName = dmaapPublisherConfiguration.dmaapTopicName(); @@ -97,54 +99,70 @@ public class DmaapProducerReactiveHttpClient { public Flux<String> getDmaapProducerResponse(ConsumerDmaapModel consumerDmaapModel) { logger.trace("Entering getDmaapProducerResponse with {}", consumerDmaapModel); try { - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.parseMediaType(dmaapContentType)); - addMetaDataToHead(consumerDmaapModel, headers); - - addUserCredentialsToHead(headers); - - IFileSystemResource fileSystemResource = getFileSystemResource(); - fileSystemResource.setPath(consumerDmaapModel.getInternalLocation()); - InputStream fileInputStream = fileSystemResource.getInputStream(); - HttpEntity<byte[]> request = addFileToRequest(fileInputStream, headers); + logger.trace("Starting to publish to DR"); + webClient = getWebClient(); + webClient.start(); - logger.trace("Starting to publish to DR"); - ResponseEntity<String> responseEntity = getRestTemplate().exchange(getUri(consumerDmaapModel.getName()), - HttpMethod.PUT, request, String.class); + HttpPut put = new HttpPut(); + prepareHead(consumerDmaapModel, put); + prepareBody(consumerDmaapModel, put); + addUserCredentialsToHead(put); - return Flux.just(responseEntity.getStatusCode().toString()); + Future<HttpResponse> future = webClient.execute(put, null); + HttpResponse response = future.get(); + logger.trace(response.toString()); + webClient.close(); + handleHttpResponse(response); + return Flux.just(response.toString()); } catch (Exception e) { logger.error("Unable to send file to DataRouter. Data: {}", consumerDmaapModel, e); return Flux.empty(); } } - private void addUserCredentialsToHead(HttpHeaders headers) { + private void handleHttpResponse(HttpResponse response) { + int statusCode = response.getStatusLine().getStatusCode(); + if (HttpUtils.isSuccessfulResponseCode(statusCode)) { + logger.trace("Publish to DR successful!"); + } else { + logger.error("Publish to DR unsuccessful, response code: " + statusCode); + } + } + + private void addUserCredentialsToHead(HttpPut put) { String plainCreds = user + ":" + pwd; byte[] plainCredsBytes = plainCreds.getBytes(StandardCharsets.ISO_8859_1); byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes); String base64Creds = new String(base64CredsBytes); logger.trace("base64Creds...: {}", base64Creds); - headers.add("Authorization", "Basic " + base64Creds); + put.addHeader("Authorization", "Basic " + base64Creds); } - private void addMetaDataToHead(ConsumerDmaapModel consumerDmaapModel, HttpHeaders headers) { - JsonElement metaData = new JsonParser().parse(CommonFunctions.createJsonBody(consumerDmaapModel)); - metaData.getAsJsonObject().remove(NAME_JSON_TAG).getAsString(); + private void prepareHead(ConsumerDmaapModel model, HttpPut put) { + put.addHeader(HttpHeaders.CONTENT_TYPE, dmaapContentType); + JsonElement metaData = new JsonParser().parse(CommonFunctions.createJsonBody(model)); + String name = metaData.getAsJsonObject().remove(NAME_JSON_TAG).getAsString(); metaData.getAsJsonObject().remove(INTERNAL_LOCATION_JSON_TAG); - headers.set(X_ATT_DR_META, metaData.toString()); - } - private HttpEntity<byte[]> addFileToRequest(InputStream inputStream, HttpHeaders headers) - throws IOException { - return new HttpEntity<>(IOUtils.toByteArray(inputStream), headers); + put.addHeader(X_ATT_DR_META, metaData.toString()); + put.setURI(getUri(name)); } - private IRestTemplate getRestTemplate() throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException { - if (restTemplate == null) { - restTemplate = new RestTemplateWrapper(); + private void prepareBody(ConsumerDmaapModel model, HttpPut put) { + String fileLocation = model.getInternalLocation(); + IFileSystemResource fileSystemResource = getFileSystemResource(); + fileSystemResource.setPath(fileLocation); + InputStream fileInputStream = null; + try { + fileInputStream = fileSystemResource.getInputStream(); + } catch (IOException e) { + logger.error("Unable to get stream from filesystem.", e); + } + try { + put.setEntity(new ByteArrayEntity(IOUtils.toByteArray(fileInputStream))); + } catch (IOException e) { + logger.error("Unable to set put request body from ByteArray.", e); } - return restTemplate; } private URI getUri(String fileName) { @@ -164,7 +182,26 @@ public class DmaapProducerReactiveHttpClient { fileResource = fileSystemResource; } - protected void setRestTemplate(IRestTemplate restTemplate) { - this.restTemplate = restTemplate; + protected CloseableHttpAsyncClient getWebClient() { + if (webClient != null) { + return webClient; + } + SSLContext sslContext = null; + try { + sslContext = new SSLContextBuilder().loadTrustMaterial(null, (certificate, authType) -> true).build(); + } catch (Exception e) { + logger.trace("Unable to get sslContext.", e); + } + //@formatter:off + return HttpAsyncClients.custom() + .setSSLContext(sslContext) + .setSSLHostnameVerifier(new NoopHostnameVerifier()) + .setRedirectStrategy(PublishRedirectStrategy.INSTANCE) + .build(); + //@formatter:on + } + + protected void setWebClient(CloseableHttpAsyncClient client) { + this.webClient = client; } } diff --git a/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/web/IRestTemplate.java b/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/web/IRestTemplate.java deleted file mode 100644 index 07e7563d..00000000 --- a/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/web/IRestTemplate.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * ============LICENSE_START====================================================================== - * Copyright (C) 2018 Nordix Foundation. 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.onap.dcaegen2.collectors.datafile.web; - -import java.net.URI; - -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpMethod; -import org.springframework.http.ResponseEntity; - -@FunctionalInterface -public interface IRestTemplate { - public ResponseEntity<String> exchange(URI url, HttpMethod method, HttpEntity<byte[]> requestEntity, - Class<String> responseType); -} diff --git a/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/web/RequestResponseLoggingInterceptor.java b/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/web/RequestResponseLoggingInterceptor.java deleted file mode 100644 index 15d459f8..00000000 --- a/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/web/RequestResponseLoggingInterceptor.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * ============LICENSE_START====================================================================== - * Copyright (C) 2018 NOKIA Intellectual Property, 2018 Nordix Foundation. 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.onap.dcaegen2.collectors.datafile.web; -import java.io.IOException; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.http.HttpRequest; -import org.springframework.http.client.ClientHttpRequestExecution; -import org.springframework.http.client.ClientHttpRequestInterceptor; -import org.springframework.http.client.ClientHttpResponse; - -public class RequestResponseLoggingInterceptor implements ClientHttpRequestInterceptor { - - private final Logger log = LoggerFactory.getLogger(this.getClass()); - - @Override - public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException { - logRequest(request, body); - ClientHttpResponse response = execution.execute(request, body); - logResponse(response); - return response; - } - - private void logRequest(HttpRequest request, byte[] body) throws IOException { - if (log.isDebugEnabled()) { - log.debug("===========================request begin================================================"); - log.debug("URI : {}", request.getURI()); - log.debug("Method : {}", request.getMethod()); - log.debug("Headers : {}", request.getHeaders()); - log.debug("Request body: {}", new String(body, "UTF-8")); - log.debug("==========================request end================================================"); - } - } - - private void logResponse(ClientHttpResponse response) throws IOException { - if (log.isDebugEnabled()) { - log.debug("============================response begin=========================================="); - log.debug("Status code : {}", response.getStatusCode()); - log.debug("Status text : {}", response.getStatusText()); - log.debug("Headers : {}", response.getHeaders()); - log.debug("=======================response end================================================="); - } - } -}
\ No newline at end of file diff --git a/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/web/RestTemplateWrapper.java b/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/web/RestTemplateWrapper.java deleted file mode 100644 index 99ead846..00000000 --- a/datafile-dmaap-client/src/main/java/org/onap/dcaegen2/collectors/datafile/web/RestTemplateWrapper.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * ============LICENSE_START====================================================================== - * Copyright (C) 2018 Nordix Foundation. 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.onap.dcaegen2.collectors.datafile.web; - -import java.net.URI; -import java.security.KeyManagementException; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.util.Collections; - -import javax.net.ssl.SSLContext; - -import org.apache.http.conn.ssl.NoopHostnameVerifier; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClients; -import org.apache.http.ssl.SSLContextBuilder; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpMethod; -import org.springframework.http.ResponseEntity; -import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; -import org.springframework.web.client.RestTemplate; - -public class RestTemplateWrapper implements IRestTemplate { - private RestTemplate restTemplate; - - public RestTemplateWrapper() throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException { - SSLContext sslContext = - new SSLContextBuilder().loadTrustMaterial(null, (certificate, authType) -> true).build(); - CloseableHttpClient httpClient = - HttpClients.custom().setSSLContext(sslContext).setSSLHostnameVerifier(new NoopHostnameVerifier()) - .setRedirectStrategy(new PublishRedirectStrategy()).build(); - - HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); - requestFactory.setHttpClient(httpClient); - - restTemplate = new RestTemplate(requestFactory); - restTemplate.setInterceptors(Collections.singletonList(new RequestResponseLoggingInterceptor())); - - } - - @Override - public ResponseEntity<String> exchange(URI url, HttpMethod method, HttpEntity<byte[]> requestEntity, - Class<String> responseType) { - return restTemplate.exchange(url, method, requestEntity, responseType); - } - -} |