Search in sources :

Example 1 with BufferingGetableResourceEntity

use of io.milton.http.entity.BufferingGetableResourceEntity in project lobcder by skoulouzis.

the class DefaultHttp11ResponseHandler method respondContent.

@Override
public void respondContent(Resource resource, Response response, Request request, Map<String, String> params) throws NotAuthorizedException, BadRequestException, NotFoundException {
    log.debug("respondContent: " + resource.getClass());
    Auth auth = request.getAuthorization();
    setRespondContentCommonHeaders(response, resource, auth);
    if (resource instanceof GetableResource) {
        GetableResource gr = (GetableResource) resource;
        String acc = request.getAcceptHeader();
        String ct = gr.getContentType(acc);
        if (ct != null) {
            ct = pickBestContentType(ct);
            response.setContentTypeHeader(ct);
        }
        cacheControlHelper.setCacheControl(gr, response, request.getAuthorization());
        Long contentLength = gr.getContentLength();
        Boolean doBuffering = null;
        if (resource instanceof BufferingControlResource) {
            BufferingControlResource bcr = (BufferingControlResource) resource;
            doBuffering = bcr.isBufferingRequired();
        }
        if (doBuffering == null) {
            if (buffering == null || buffering == BUFFERING.whenNeeded) {
                // if no content length then we buffer content to find content length
                doBuffering = (contentLength == null);
            } else {
                // if not null or whenNeeded then buffering is explicitly enabled or disabled
                doBuffering = (buffering == BUFFERING.always);
            }
        }
        if (!doBuffering) {
            log.trace("sending content with known content length: " + contentLength);
            if (contentLength != null) {
                response.setContentLengthHeader(contentLength);
            }
            response.setEntity(new GetableResourceEntity(gr, params, ct));
        } else {
            BufferingGetableResourceEntity e = new BufferingGetableResourceEntity(gr, params, ct, contentLength, getMaxMemorySize());
            response.setEntity(e);
        }
    }
}
Also used : BufferingGetableResourceEntity(io.milton.http.entity.BufferingGetableResourceEntity) GetableResource(io.milton.resource.GetableResource) BufferingControlResource(io.milton.resource.BufferingControlResource) GetableResourceEntity(io.milton.http.entity.GetableResourceEntity) BufferingGetableResourceEntity(io.milton.http.entity.BufferingGetableResourceEntity)

Aggregations

BufferingGetableResourceEntity (io.milton.http.entity.BufferingGetableResourceEntity)1 GetableResourceEntity (io.milton.http.entity.GetableResourceEntity)1 BufferingControlResource (io.milton.resource.BufferingControlResource)1 GetableResource (io.milton.resource.GetableResource)1