Example usage for org.springframework.http HttpStatus series

List of usage examples for org.springframework.http HttpStatus series

Introduction

In this page you can find the example usage for org.springframework.http HttpStatus series.

Prototype

public Series series() 

Source Link

Document

Return the HTTP status series of this status code.

Usage

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);
    }
}