X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=common%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fso%2Frest%2Fservice%2FHttpRestServiceProviderImpl.java;h=a627e82802665d81cc8a598e4d2fc409cb047ab4;hb=ac9387ceb0d2a4f1e1dd85be4e6d7818ab83363d;hp=032df84a98ab8dcbcb1f62ab3e629b949c89da27;hpb=314bba3a72c1b1122668950005a2e754f8c5c5cc;p=so.git diff --git a/common/src/main/java/org/onap/so/rest/service/HttpRestServiceProviderImpl.java b/common/src/main/java/org/onap/so/rest/service/HttpRestServiceProviderImpl.java index 032df84a98..a627e82802 100644 --- a/common/src/main/java/org/onap/so/rest/service/HttpRestServiceProviderImpl.java +++ b/common/src/main/java/org/onap/so/rest/service/HttpRestServiceProviderImpl.java @@ -20,6 +20,7 @@ package org.onap.so.rest.service; +import com.google.common.base.Optional; import org.onap.so.configuration.rest.BasicHttpHeadersProvider; import org.onap.so.configuration.rest.HttpHeadersProvider; import org.onap.so.rest.exceptions.InvalidRestRequestException; @@ -35,11 +36,9 @@ import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; -import com.google.common.base.Optional; - /** * A Service to perform HTTP requests - * + * * @author waqas.ikram@est.tech */ public class HttpRestServiceProviderImpl implements HttpRestServiceProvider { @@ -61,49 +60,45 @@ public class HttpRestServiceProviderImpl implements HttpRestServiceProvider { @Override public Optional get(final String url, final Class clazz) { final ResponseEntity response = getHttpResponse(url, clazz); - if (!response.getStatusCode().equals(HttpStatus.OK)) { - final String message = - "Unable to invoke HTTP GET using URL: " + url + ", Response Code: " + response.getStatusCode(); - LOGGER.error(message); - return Optional.absent(); - } - - if (response.hasBody()) { - return Optional.of(response.getBody()); - } - return Optional.absent(); + return createOptional(response, url, HttpMethod.GET); } @Override public ResponseEntity getHttpResponse(final String url, final Class clazz) { - LOGGER.trace("Will invoke HTTP GET using URL: {}", url); - try { - final HttpEntity request = new HttpEntity<>(getHttpHeaders()); - return restTemplate.exchange(url, HttpMethod.GET, request, clazz); - - } catch (final HttpClientErrorException httpClientErrorException) { - final String message = "Unable to invoke HTTP GET using url: " + url + ", Response: " - + httpClientErrorException.getRawStatusCode(); - LOGGER.error(message, httpClientErrorException); - final int rawStatusCode = httpClientErrorException.getRawStatusCode(); - if (rawStatusCode == HttpStatus.BAD_REQUEST.value() || rawStatusCode == HttpStatus.NOT_FOUND.value()) { - throw new InvalidRestRequestException("No result found for given url: " + url); - } - throw new RestProcessingException("Unable to invoke HTTP GET using URL: " + url); - - } catch (final RestClientException restClientException) { - LOGGER.error("Unable to invoke HTTP GET using url: {}", url, restClientException); - throw new RestProcessingException("Unable to invoke HTTP GET using URL: " + url, restClientException); - } + final HttpEntity request = new HttpEntity<>(getHttpHeaders()); + return invokeHttpRequest(request, HttpMethod.GET, url, clazz); } @Override public Optional post(final Object object, final String url, final Class clazz) { final ResponseEntity response = postHttpRequest(object, url, clazz); - if (!response.getStatusCode().equals(HttpStatus.OK)) { - final String message = - "Unable to invoke HTTP GET using URL: " + url + ", Response Code: " + response.getStatusCode(); + return createOptional(response, url, HttpMethod.POST); + } + + @Override + public ResponseEntity postHttpRequest(final Object object, final String url, final Class clazz) { + final HttpEntity request = new HttpEntity<>(object, getHttpHeaders()); + return invokeHttpRequest(request, HttpMethod.POST, url, clazz); + } + + @Override + public Optional put(final Object object, final String url, final Class clazz) { + final ResponseEntity response = putHttpRequest(object, url, clazz); + return createOptional(response, url, HttpMethod.PUT); + } + + @Override + public ResponseEntity putHttpRequest(final Object object, final String url, final Class clazz) { + final HttpEntity request = new HttpEntity<>(object, getHttpHeaders()); + return invokeHttpRequest(request, HttpMethod.PUT, url, clazz); + } + + private Optional createOptional(final ResponseEntity response, final String url, + final HttpMethod httpMethod) { + if (!response.getStatusCode().equals(HttpStatus.OK) && !response.getStatusCode().equals(HttpStatus.CREATED)) { + final String message = "Unable to invoke HTTP " + httpMethod + " using URL: " + url + ", Response Code: " + + response.getStatusCode(); LOGGER.error(message); return Optional.absent(); } @@ -115,26 +110,39 @@ public class HttpRestServiceProviderImpl implements HttpRestServiceProvider { return Optional.absent(); } - - @Override - public ResponseEntity postHttpRequest(final Object object, final String url, final Class clazz) { + private ResponseEntity invokeHttpRequest(final HttpEntity request, final HttpMethod httpMethod, + final String url, final Class clazz) { + LOGGER.trace("Will invoke HTTP {} using URL: {}", httpMethod, url); try { - final HttpEntity request = new HttpEntity<>(object, getHttpHeaders()); - return restTemplate.exchange(url, HttpMethod.POST, request, clazz); + return restTemplate.exchange(url, httpMethod, request, clazz); } catch (final HttpClientErrorException httpClientErrorException) { - final String message = "Unable to invoke HTTP POST using url: " + url + ", Response: " + final String message = "Unable to invoke HTTP " + httpMethod + " using url: " + url + ", Response: " + httpClientErrorException.getRawStatusCode(); LOGGER.error(message, httpClientErrorException); final int rawStatusCode = httpClientErrorException.getRawStatusCode(); if (rawStatusCode == HttpStatus.BAD_REQUEST.value() || rawStatusCode == HttpStatus.NOT_FOUND.value()) { throw new InvalidRestRequestException("No result found for given url: " + url); } - throw new RestProcessingException("Unable to invoke HTTP GET using URL: " + url); + throw new RestProcessingException("Unable to invoke HTTP " + httpMethod + " using URL: " + url); } catch (final RestClientException restClientException) { LOGGER.error("Unable to invoke HTTP POST using url: {}", url, restClientException); - throw new RestProcessingException("Unable to invoke HTTP GET using URL: " + url, restClientException); + throw new RestProcessingException("Unable to invoke HTTP " + httpMethod + " using URL: " + url, + restClientException); + } + } + + @Override + public ResponseEntity deleteHttpRequest(final String url, final Class clazz) { + try { + final HttpEntity request = new HttpEntity<>(getHttpHeaders()); + return restTemplate.exchange(url, HttpMethod.DELETE, request, clazz); + + } catch (final RestClientException restClientException) { + LOGGER.error("Unable to invoke HTTP DELETE using url: " + url, restClientException); + throw new InvalidRestRequestException("Unable to invoke HTTP DELETE using URL: " + url, + restClientException); } }