Example usage for org.springframework.http.server.reactive ServerHttpResponse setStatusCode

List of usage examples for org.springframework.http.server.reactive ServerHttpResponse setStatusCode

Introduction

In this page you can find the example usage for org.springframework.http.server.reactive ServerHttpResponse setStatusCode.

Prototype

boolean setStatusCode(@Nullable HttpStatus status);

Source Link

Document

Set the HTTP status code of the response.

Usage

From source file:org.springframework.http.codec.ResourceHttpMessageWriter.java

@Override
@SuppressWarnings("unchecked")
public Mono<Void> write(Publisher<? extends Resource> inputStream, @Nullable ResolvableType actualType,
        ResolvableType elementType, @Nullable MediaType mediaType, ServerHttpRequest request,
        ServerHttpResponse response, Map<String, Object> hints) {

    HttpHeaders headers = response.getHeaders();
    headers.set(HttpHeaders.ACCEPT_RANGES, "bytes");

    List<HttpRange> ranges;
    try {/*from  w  ww.j  a va  2 s .c  om*/
        ranges = request.getHeaders().getRange();
    } catch (IllegalArgumentException ex) {
        response.setStatusCode(HttpStatus.REQUESTED_RANGE_NOT_SATISFIABLE);
        return response.setComplete();
    }

    return Mono.from(inputStream).flatMap(resource -> {

        if (ranges.isEmpty()) {
            return writeResource(resource, elementType, mediaType, response, hints);
        }

        response.setStatusCode(HttpStatus.PARTIAL_CONTENT);
        List<ResourceRegion> regions = HttpRange.toResourceRegions(ranges, resource);
        MediaType resourceMediaType = getResourceMediaType(mediaType, resource, hints);

        if (regions.size() == 1) {
            ResourceRegion region = regions.get(0);
            headers.setContentType(resourceMediaType);
            long contentLength = lengthOf(resource);
            if (contentLength != -1) {
                long start = region.getPosition();
                long end = start + region.getCount() - 1;
                end = Math.min(end, contentLength - 1);
                headers.add("Content-Range", "bytes " + start + '-' + end + '/' + contentLength);
                headers.setContentLength(end - start + 1);
            }
            return writeSingleRegion(region, response, hints);
        } else {
            String boundary = MimeTypeUtils.generateMultipartBoundaryString();
            MediaType multipartType = MediaType.parseMediaType("multipart/byteranges;boundary=" + boundary);
            headers.setContentType(multipartType);
            Map<String, Object> allHints = Hints.merge(hints, ResourceRegionEncoder.BOUNDARY_STRING_HINT,
                    boundary);
            return encodeAndWriteRegions(Flux.fromIterable(regions), resourceMediaType, response, allHints);
        }
    });
}

From source file:org.springframework.web.cors.reactive.DefaultCorsProcessor.java

/**
 * Invoked when one of the CORS checks failed.
 *///  ww  w. ja v a 2 s  . co m
protected void rejectRequest(ServerHttpResponse response) {
    response.setStatusCode(HttpStatus.FORBIDDEN);
    logger.debug("Invalid CORS request");
}

From source file:org.springframework.web.server.adapter.HttpWebHandlerAdapter.java

private Mono<Void> handleFailure(ServerHttpRequest request, ServerHttpResponse response, Throwable ex) {
    if (isDisconnectedClientError(ex)) {
        if (disconnectedClientLogger.isTraceEnabled()) {
            disconnectedClientLogger.trace("Looks like the client has gone away", ex);
        } else if (disconnectedClientLogger.isDebugEnabled()) {
            disconnectedClientLogger.debug("Looks like the client has gone away: " + ex
                    + " (For a full stack trace, set the log category '" + DISCONNECTED_CLIENT_LOG_CATEGORY
                    + "' to TRACE level.)");
        }// w w w.jav  a  2 s  .  c  o m
        return Mono.empty();
    }
    if (response.setStatusCode(HttpStatus.INTERNAL_SERVER_ERROR)) {
        logger.error("Failed to handle request [" + request.getMethod() + " " + request.getURI() + "]", ex);
        return Mono.empty();
    }
    // After the response is committed, propagate errors to the server..
    HttpStatus status = response.getStatusCode();
    logger.error("Unhandled failure: " + ex.getMessage() + ", response already set (status=" + status + ")");
    return Mono.error(ex);
}