@Override public long getDateHeader(String name) { return b.request.getDateHeader(name); }
/** * The default behavior of this method is to return getDateHeader(String name) * on the wrapped request object. */ public long getDateHeader(String name) { return this._getHttpServletRequest().getDateHeader(name); }
@Override protected void preResponseCommit() { long lastModified = lastModifiedData.getLastModified(); long ifModifiedSince = request.getDateHeader("If-Modified-Since"); if (lastModified > -1 && !response.containsHeader("Last-Modified")) { if (ifModifiedSince < (lastModified / 1000 * 1000)) { response.setDateHeader("Last-Modified", lastModified); } else { response.reset(); response.setStatus(HttpServletResponse.SC_NOT_MODIFIED); } } } }
private boolean isCachedClientSide(HttpServletRequest req, CachedAsset cachedAsset) { return cachedAsset.getETag().equals(req.getHeader(IF_NONE_MATCH)) || (req.getDateHeader(IF_MODIFIED_SINCE) >= cachedAsset.getLastModifiedTime()); }
private long parseDateHeader(String headerName) { long dateValue = -1; try { dateValue = getRequest().getDateHeader(headerName); } catch (IllegalArgumentException ex) { String headerValue = getHeader(headerName); // Possibly an IE 10 style value: "Wed, 09 Apr 2014 09:57:42 GMT; length=13774" if (headerValue != null) { int separatorIndex = headerValue.indexOf(';'); if (separatorIndex != -1) { String datePart = headerValue.substring(0, separatorIndex); dateValue = parseDateValue(datePart); } } } return dateValue; }
private long parseDateHeader(String headerName) { long dateValue = -1; try { dateValue = getRequest().getDateHeader(headerName); } catch (IllegalArgumentException ex) { String headerValue = getHeader(headerName); // Possibly an IE 10 style value: "Wed, 09 Apr 2014 09:57:42 GMT; length=13774" if (headerValue != null) { int separatorIndex = headerValue.indexOf(';'); if (separatorIndex != -1) { String datePart = headerValue.substring(0, separatorIndex); dateValue = parseDateValue(datePart); } } } return dateValue; }
response.setHeader("Pragma","cache"); if (!StringUtils.isEmpty(request.getHeader("If-Modified-Since"))) { long lastModified = request.getDateHeader("If-Modified-Since"); Calendar last = Calendar.getInstance(); last.setTime(new Date(lastModified));
@Test void testPreResponseCommit5() { // setup decoraResponseWrapper = new DecoraResponseWrapper(originalRequest, originalResponse, lastModifiedData, decoraManager); when(lastModifiedData.getLastModified()).thenReturn(Long.valueOf(1)); when(originalResponse.containsHeader("Last-Modified")).thenReturn(false); when(originalRequest.getDateHeader("If-Modified-Since")).thenReturn(Long.MAX_VALUE); // when decoraResponseWrapper.preResponseCommit(); // then verify(originalResponse).reset(); }
@Test void testPreResponseCommit4() { // setup decoraResponseWrapper = new DecoraResponseWrapper(originalRequest, originalResponse, lastModifiedData, decoraManager); when(lastModifiedData.getLastModified()).thenReturn(Long.valueOf(1)); when(originalResponse.containsHeader("Last-Modified")).thenReturn(false); when(originalRequest.getDateHeader("If-Modified-Since")).thenReturn(Long.MIN_VALUE); // when decoraResponseWrapper.preResponseCommit(); // then verify(originalResponse).setDateHeader("Last-Modified", lastModifiedData.getLastModified()); }
long ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE); if (ifModifiedSince < (lastModified / 1000 * 1000)) {
long ifModifiedSince = request.getDateHeader("If-Modified-Since"); if (ifNoneMatch == null && ifModifiedSince != -1 && ifModifiedSince + 1000 > lastModified) { response.setHeader("ETag", fileName); // Required in 304. long ifUnmodifiedSince = request.getDateHeader("If-Unmodified-Since"); if (ifUnmodifiedSince != -1 && ifUnmodifiedSince + 1000 <= lastModified) { response.sendError(HttpServletResponse.SC_PRECONDITION_FAILED); if (ifRange != null && !ifRange.equals(fileName)) { try { long ifRangeTime = request.getDateHeader("If-Range"); // Throws IAE if invalid. if (ifRangeTime != -1) { ranges.add(full);
@Test void testGetDateHeaderString() { // setup DecoraRequestWrapper decoraRequestWrapper = new DecoraRequestWrapper(httpServletRequestMock); // when decoraRequestWrapper.getDateHeader(TEST_STRING); // then verify(httpServletRequestMock).getDateHeader(TEST_STRING); }
@Override public long getDateHeader(String name) { return proxy.getDateHeader(name); }
public long getDateHeader(String s) { return delegate.getDateHeader(s); }
/** * The default behavior of this method is to return getDateHeader(String name) * on the wrapped request object. */ public long getDateHeader(String name) { return this._getHttpServletRequest().getDateHeader(name); }
/** * The default behavior of this method is to return getDateHeader(String name) * on the wrapped request object. */ public long getDateHeader(String name) { return getHttpServletRequest().getDateHeader(name); }
@Override public long getDateHeader(String name) { synchronized (mutex) { return getRequest().getDateHeader(name); } }
@Override public long getDateHeader(String name) { return getRequest().getDateHeader(name); }
private void checkLastModified(RC request, long lastModified, Runnable runner) throws IOException { ServletRequestContext servletRequest = getServletRequestContext(request); // 假如: // 1. request为servlet request; // 并且,lastModified >= 0; // 并且,GET方法; // 2. 或者,lastModified > ifModifiedSince // 执行runner if (lastModified < 0 || servletRequest == null || !"get".equalsIgnoreCase(servletRequest.getRequest().getMethod())) { runner.run(); } else { long ifModifiedSince = servletRequest.getRequest().getDateHeader("If-Modified-Since"); if (ifModifiedSince < lastModified / 1000 * 1000) { if (lastModified >= 0) { servletRequest.getResponse().setDateHeader("Last-Modified", lastModified); } runner.run(); } else { servletRequest.getResponse().setStatus(SC_NOT_MODIFIED); } } }
@Test public void testGetNotModified() throws ServletException, IOException { StaticContentServlet servlet = new StaticContentServlet(); ServletContext context = mock(ServletContext.class); when(context.getServletContextName()).thenReturn("foo"); when(context.getMimeType(anyString())).thenReturn("image/png"); ServletConfig config = mock(ServletConfig.class); when(config.getInitParameterNames()).thenReturn(Collections.enumeration(Arrays.asList("root"))); when(config.getInitParameter("root")).thenReturn(getFileSystemRoot()); when(config.getServletContext()).thenReturn(context); servlet.init(config); HttpServletRequest request = mock(HttpServletRequest.class); when(request.getMethod()).thenReturn("GET"); when(request.getPathInfo()).thenReturn(IMAGE_RESOURCE); when(request.getRequestURI()).thenReturn("/foo" + IMAGE_RESOURCE); when(request.getContextPath()).thenReturn("/foo"); when(request.getDateHeader("If-Modified-Since")).thenReturn(getResourceAsFile(IMAGE_RESOURCE).lastModified()); ServletOutputStream stream = mock(ServletOutputStream.class); HttpServletResponse response = mock(HttpServletResponse.class); when(response.getOutputStream()).thenReturn(stream); servlet.service(request, response); verify(response).setStatus(HttpServletResponse.SC_NOT_MODIFIED); verifyZeroInteractions(stream); }