/** * Tells whether the transfer encoding is chunked. * * @return */ private boolean isTransferChunked() { if (!getHeaders().containsHeader(Headers.HEADER_TRANSFER_ENCODING) || getHeaders().containsHeader(Headers.HEADER_CONTENT_LENGTH)) { return false; } return getHeaders().getHeader(Headers.HEADER_TRANSFER_ENCODING).equalsIgnoreCase(TRANSFER_ENCODING_CHUNKED); }
private void sendRedirectToDirectorySlashedPath(final HttpServletResponseImpl response, final String originalPath) throws IOException { response.setStatus(HttpServletResponse.STATUS_MOVED_PERMANENTLY); response.getHeaders().setHeader(Headers.HEADER_LOCATION, originalPath + "/"); response.flush(); }
/** * Sets default response headers. * * @param request * @param response */ private void setDefaultResponseHeaders(final HttpServletRequest request, final HttpServletResponseImpl response) { boolean isKeepAlive = false; if (request.getHeader(Headers.HEADER_CONNECTION) != null) { isKeepAlive = request.getHeader(Headers.HEADER_CONNECTION).equalsIgnoreCase("keep-alive"); } response.setKeepAlive(isKeepAlive && serverConfig.isKeepAlive()); response.getHeaders().setHeader(Headers.HEADER_SERVER, WebServer.SIGNATURE); }
/** * Flushes the output. * * @throws IOException */ public void flush() throws IOException { // It makes no sense to set chunked encoding if there is no print writer if (printWriter != null && printWriter instanceof ChunkedPrintWriter) { getHeaders().setHeader(Headers.HEADER_TRANSFER_ENCODING, TRANSFER_ENCODING_CHUNKED); } if (!isCommitted()) { flushHeaders(); } if (printWriter != null) { printWriter.writeEnd(); printWriter.flush(); } outputStream.flush(); } }
private void loadCompleteContent(final HttpServletRequestImpl request, final HttpServletResponseImpl response, final File file) throws IOException { response.setContentType(mimeTypeMapping.getMimeTypeByExtension(FileUtilities.getExtension(file.getName()))); response.setStatus(HttpServletResponse.STATUS_OK); response.setContentLength(file.length()); response.getHeaders().setHeader(Headers.HEADER_ACCEPT_RANGES, "bytes"); response.flushHeaders(); if (!request.getMethod().equals(HttpServletRequest.METHOD_HEAD)) { InputStream fileInputStream = new FileInputStream(file); try { response.serveStream(fileInputStream); } finally { IOUtilities.closeSilently(fileInputStream); } } response.flush(); }
@Test public void shouldSetHeadersProperly() { httpServletResponseImpl.setHeader("StringValue", "value"); httpServletResponseImpl.setIntHeader("IntValue", 1); assertThat(httpServletResponseImpl.getHeaders().getHeader("StringValue"), is("value")); assertThat(httpServletResponseImpl.getHeaders().getHeader("IntValue"), is("1")); } }
/** * Terminates servlet. Sets all necessary headers, flushes content. * * @param request * @param response * @throws IOException */ private void terminate(final HttpServletRequestImpl request, final HttpServletResponseImpl response) throws IOException { freeUploadedUnprocessedFiles(request.getUploadedFiles()); HttpSessionImpl session = (HttpSessionImpl) request.getSession(false); if (session != null) { try { ((ServletContextImpl) request.getServletContext()).handleSession(session, response); } catch (IOException e) { LOGGER.log(Level.WARNING, "Unable to persist session", e); } } if (!response.isCommitted()) { if (response.getContentType() == null) { response.setContentType(DEFAULT_RESPONSE_CONTENT_TYPE); } response.getHeaders().setHeader(Headers.HEADER_CACHE_CONTROL, HEADER_VALUE_NO_CACHE); response.getHeaders().setHeader(Headers.HEADER_PRAGMA, HEADER_VALUE_NO_CACHE); } response.flush(); }
response.getHeaders().setHeader(Headers.HEADER_CONTENT_RANGE, "bytes " + getRanges(ranges) + "/" + file.length());
@Test public void shouldRedirectProperly() throws IOException { String url = "/SomeUrl"; httpServletResponseImpl.sendRedirect(url); assertThat(httpServletResponseImpl.getStatus(), is("HTTP/1.1 301 Moved Permanently")); assertThat(httpServletResponseImpl.getHeaders().getHeader(Headers.HEADER_LOCATION), is(url)); }