List of usage examples for org.springframework.http HttpStatus series
public Series series()
From source file:org.cloudfoundry.identity.uaa.login.RemoteUaaController.java
public RemoteUaaController(Environment environment, RestTemplate restTemplate) { // The default java.net client doesn't allow you to handle 4xx responses restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory() { @Override// w ww . jav a2s. c o m public HttpClient getHttpClient() { return HttpClientBuilder.create().useSystemProperties().disableCookieManagement().build(); } }); restTemplate.setErrorHandler(new DefaultResponseErrorHandler() { @Override public boolean hasError(ClientHttpResponse response) throws IOException { HttpStatus statusCode = response.getStatusCode(); return statusCode.series() == HttpStatus.Series.SERVER_ERROR; } }); this.environment = environment; defaultTemplate = restTemplate; initProperties(); }
From source file:org.springframework.boot.autoconfigure.web.reactive.error.DefaultErrorWebExceptionHandler.java
/** * Render the error information as an HTML view. * @param request the current request/*from www .ja v a 2 s.co m*/ * @return a {@code Publisher} of the HTTP response */ protected Mono<ServerResponse> renderErrorView(ServerRequest request) { boolean includeStackTrace = isIncludeStackTrace(request, MediaType.TEXT_HTML); Map<String, Object> error = getErrorAttributes(request, includeStackTrace); HttpStatus errorStatus = getHttpStatus(error); ServerResponse.BodyBuilder responseBody = ServerResponse.status(errorStatus) .contentType(MediaType.TEXT_HTML); return Flux .just("error/" + errorStatus.toString(), "error/" + SERIES_VIEWS.get(errorStatus.series()), "error/error") .flatMap((viewName) -> renderErrorView(viewName, responseBody, error)) .switchIfEmpty(this.errorProperties.getWhitelabel().isEnabled() ? renderDefaultErrorView(responseBody, error) : Mono.error(getError(request))) .next().doOnNext((response) -> logError(request, errorStatus)); }
From source file:org.springframework.cloud.gateway.filter.factory.RetryGatewayFilterFactory.java
@Override public GatewayFilter apply(RetryConfig retryConfig) { retryConfig.validate();// w w w . ja v a 2 s . co m Repeat<ServerWebExchange> statusCodeRepeat = null; if (!retryConfig.getStatuses().isEmpty() || !retryConfig.getSeries().isEmpty()) { Predicate<RepeatContext<ServerWebExchange>> repeatPredicate = context -> { ServerWebExchange exchange = context.applicationContext(); if (exceedsMaxIterations(exchange, retryConfig)) { return false; } HttpStatus statusCode = exchange.getResponse().getStatusCode(); boolean retryableStatusCode = retryConfig.getStatuses().contains(statusCode); if (!retryableStatusCode && statusCode != null) { // null status code // might mean a // network exception? // try the series retryableStatusCode = retryConfig.getSeries().stream() .anyMatch(series -> statusCode.series().equals(series)); } trace("retryableStatusCode: %b, statusCode %s, configured statuses %s, configured series %s", retryableStatusCode, statusCode, retryConfig.getStatuses(), retryConfig.getSeries()); HttpMethod httpMethod = exchange.getRequest().getMethod(); boolean retryableMethod = retryConfig.getMethods().contains(httpMethod); trace("retryableMethod: %b, httpMethod %s, configured methods %s", retryableMethod, httpMethod, retryConfig.getMethods()); return retryableMethod && retryableStatusCode; }; statusCodeRepeat = Repeat.onlyIf(repeatPredicate) .doOnRepeat(context -> reset(context.applicationContext())); } // TODO: support timeout, backoff, jitter, etc... in Builder Retry<ServerWebExchange> exceptionRetry = null; if (!retryConfig.getExceptions().isEmpty()) { Predicate<RetryContext<ServerWebExchange>> retryContextPredicate = context -> { if (exceedsMaxIterations(context.applicationContext(), retryConfig)) { return false; } for (Class<? extends Throwable> clazz : retryConfig.getExceptions()) { if (clazz.isInstance(context.exception())) { trace("exception is retryable %s, configured exceptions", context.exception().getClass().getName(), retryConfig.getExceptions()); return true; } } trace("exception is not retryable %s, configured exceptions", context.exception().getClass().getName(), retryConfig.getExceptions()); return false; }; exceptionRetry = Retry.onlyIf(retryContextPredicate) .doOnRetry(context -> reset(context.applicationContext())).retryMax(retryConfig.getRetries()); } return apply(statusCodeRepeat, exceptionRetry); }
From source file:org.springframework.cloud.gateway.filter.GatewayMetricsFilter.java
private void endTimerInner(ServerWebExchange exchange, Sample sample) { String outcome = "CUSTOM"; String status = "CUSTOM"; HttpStatus statusCode = exchange.getResponse().getStatusCode(); if (statusCode != null) { outcome = statusCode.series().name(); status = statusCode.name();/*w w w . ja v a 2 s. com*/ } else { // a non standard HTTPS status could be used. Let's be defensive here if (exchange.getResponse() instanceof AbstractServerHttpResponse) { Integer statusInt = ((AbstractServerHttpResponse) exchange.getResponse()).getStatusCodeValue(); if (statusInt != null) { status = String.valueOf(statusInt); } else { status = "NA"; } } } Route route = exchange.getAttribute(GATEWAY_ROUTE_ATTR); Tags tags = Tags.of("outcome", outcome, "status", status, "routeId", route.getId(), "routeUri", route.getUri().toString()); if (log.isTraceEnabled()) { log.trace("Stopping timer 'gateway.requests' with tags " + tags); } sample.stop(meterRegistry.timer("gateway.requests", tags)); }
From source file:org.springframework.cloud.sleuth.instrument.web.TraceFilter.java
private boolean httpStatusSuccessful(HttpServletResponse response) { if (response.getStatus() == 0) { return false; }/*from w ww . ja v a2 s. co m*/ HttpStatus.Series httpStatusSeries = HttpStatus.Series.valueOf(response.getStatus()); return httpStatusSeries == HttpStatus.Series.SUCCESSFUL || httpStatusSeries == HttpStatus.Series.REDIRECTION; }
From source file:org.springframework.social.twitter.api.impl.TwitterErrorHandler.java
@Override public void handleError(ClientHttpResponse response) throws IOException { HttpStatus statusCode = response.getStatusCode(); if (statusCode.series() == Series.SERVER_ERROR) { handleServerErrors(statusCode);/*from www .ja va 2s.c o m*/ } else if (statusCode.series() == Series.CLIENT_ERROR) { handleClientErrors(response); } // if not otherwise handled, do default handling and wrap with UncategorizedApiException try { super.handleError(response); } catch (Exception e) { throw new UncategorizedApiException("twitter", "Error consuming Twitter REST API", e); } }