/** * Get HTTP response status associated with this exception as {@link HttpStatus}, if available and known. * @return Optional HTTP response status */ public Optional<HttpStatus> getStatus() { return HttpStatus.of(getStatusCode()); }
@Override public ReactiveRestClient create(ClassLoader classLoader) throws RestClientCreationException { try { return new JaxrsClientReactiveRestClient(ClientBuilder.newClient()); } catch (Exception e) { throw new RestClientCreationException("Failed to create a Jaxrs ReactiveRestClient", e); } }
@Override public String getRequestURI() { StringBuilder sb = new StringBuilder(); sb.append(getBaseRequestURI().orElseThrow(() -> new HttpClientInvocationException("Missing target base URI")) .toString()); sb.append(getRequestPath().map(p -> (sb.toString().endsWith("/") && p.startsWith("/")) ? p.substring(1) : p) .orElse("")); return sb.toString(); }
} catch (UnsuccessfulResponseException e) { int httpStatusCode = e.getStatusCode(); // <1> Optional<HttpStatus> sts = e.getStatus(); // <2> ResponseEntity<?> theResponse = e.getResponse(); // <3>
@Override public void completed(Response response) { // check error status code if (onlySuccessfulStatusCode && !HttpStatus.isSuccessStatusCode(response.getStatus())) { sink.error(new UnsuccessfulResponseException(new JaxrsRawResponseEntity(response))); } else { sink.success(new JaxrsReactiveResponseEntity<>(response, responseType)); } }
/** * Get the response status as {@link HttpStatus} * @return the response HttpStatus * @throws InvalidHttpMessageException If the status code of the message does not corresponds to any of the * {@link HttpStatus} values */ default HttpStatus getStatus() { return HttpStatus.of(getStatusCode()) .orElseThrow(() -> new InvalidHttpMessageException("Unknown status code: " + getStatusCode())); }
} catch (UnsuccessfulResponseException e) { int httpStatusCode = e.getStatusCode(); // <1> Optional<HttpStatus> sts = e.getStatus(); // <2> ResponseEntity<?> theResponse = e.getResponse(); // <3>
List<RestClientFactory> restClientFactories = getRestClientFactories(fullyQualifiedClassName, cl); if (restClientFactories.isEmpty()) { throw new RestClientCreationException("No RestClientFactory available for ClassLoader [" + cl + "]" + ((fullyQualifiedClassName != null) ? " and RestClient implementation class name [" + fullyQualifiedClassName + "]" throw new RestClientCreationException("No RestClient available for ClassLoader [" + cl + "]" + ((fullyQualifiedClassName != null) ? " and RestClient implementation class name [" + fullyQualifiedClassName + "]"
if (onlySuccessfulStatusCode && !HttpStatus.isSuccessStatusCode(status.value())) { return Mono.<ReactiveResponseEntity<T>>error( new UnsuccessfulResponseException(new ClientResponseEntity<>(r, responseType)));
@Override public R authorizationBasic(String username, String password) { ObjectUtils.argumentNotNull(username, "Username must be not null"); ObjectUtils.argumentNotNull(password, "Password must be not null"); try { return header(HttpHeaders.AUTHORIZATION, HttpHeaders.SCHEME_BASIC + " " + Base64.getEncoder() .encodeToString(new String((username + ":" + password)).getBytes("ISO-8859-1"))); } catch (UnsupportedEncodingException e) { throw new HttpClientInvocationException(e); } }
@Override public <T, R> Optional<T> invokeForEntity(HttpMethod method, RequestEntity<R> requestEntity, ResponseType<T> responseType) { ResponseEntity<T> response = invoker.invoke(this, method, requestEntity, responseType, true); if (response == null) { throw new HttpClientInvocationException("The invoker [" + invoker + "] returned a null response"); } try { return response.getPayload(); } catch (Exception e) { throw new HttpClientInvocationException(e); } finally { if (responseType != null && InputStream.class != responseType.getType()) { try { response.close(); } catch (Exception e) { LOGGER.debug(() -> "Failed to close the response", e); } } } }