Refine search
@SuppressWarnings("unchecked") private boolean safeExtension(HttpServletRequest request, @Nullable String extension) { if (!StringUtils.hasText(extension)) { return true; } extension = extension.toLowerCase(Locale.ENGLISH); if (this.safeExtensions.contains(extension)) { return true; } String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE); if (pattern != null && pattern.endsWith("." + extension)) { return true; } if (extension.equals("html")) { String name = HandlerMapping.PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE; Set<MediaType> mediaTypes = (Set<MediaType>) request.getAttribute(name); if (!CollectionUtils.isEmpty(mediaTypes) && mediaTypes.contains(MediaType.TEXT_HTML)) { return true; } } return safeMediaTypesForExtension(new ServletWebRequest(request), extension); }
@Override public String getDescription(boolean includeClientInfo) { HttpServletRequest request = getRequest(); StringBuilder sb = new StringBuilder(); sb.append("uri=").append(request.getRequestURI()); if (includeClientInfo) { String client = request.getRemoteAddr(); if (StringUtils.hasLength(client)) { sb.append(";client=").append(client); } HttpSession session = request.getSession(false); if (session != null) { sb.append(";session=").append(session.getId()); } String user = request.getRemoteUser(); if (StringUtils.hasLength(user)) { sb.append(";user=").append(user); } } return sb.toString(); }
@Override public boolean checkNotModified(@Nullable String etag, long lastModifiedTimestamp) { HttpServletResponse response = getResponse(); if (this.notModified || (response != null && HttpStatus.OK.value() != response.getStatus())) { return this.notModified; if (validateIfUnmodifiedSince(lastModifiedTimestamp)) { if (this.notModified && response != null) { response.setStatus(HttpStatus.PRECONDITION_FAILED.value()); boolean validated = validateIfNoneMatch(etag); if (!validated) { validateIfModifiedSince(lastModifiedTimestamp); boolean isHttpGetOrHead = SAFE_METHODS.contains(getRequest().getMethod()); if (this.notModified) { response.setStatus(isHttpGetOrHead ? if (lastModifiedTimestamp > 0 && parseDateValue(response.getHeader(LAST_MODIFIED)) == -1) { response.setDateHeader(LAST_MODIFIED, lastModifiedTimestamp); response.setHeader(ETAG, padEtagIfNecessary(etag));
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; }
/** * Set the response status according to the {@link ResponseStatus} annotation. */ private void setResponseStatus(ServletWebRequest webRequest) throws IOException { HttpStatus status = getResponseStatus(); if (status == null) { return; } HttpServletResponse response = webRequest.getResponse(); if (response != null) { String reason = getResponseStatusReason(); if (StringUtils.hasText(reason)) { response.sendError(status.value(), reason); } else { response.setStatus(status.value()); } } // To be picked up by RedirectView webRequest.getRequest().setAttribute(View.RESPONSE_STATUS_ATTRIBUTE, status); }
@Override @Nullable public String getHeader(String headerName) { return getRequest().getHeader(headerName); }
@Override @Nullable public String getParameter(String paramName) { return getRequest().getParameter(paramName); }
/** * Return the HTTP method of the request. * @since 4.0.2 */ @Nullable public HttpMethod getHttpMethod() { return HttpMethod.resolve(getRequest().getMethod()); }
@Override public String getContextPath() { return getRequest().getContextPath(); }
@Override public Map<String, String[]> getParameterMap() { return getRequest().getParameterMap(); }
@Test public void inputStream() throws Exception { MethodParameter inputStreamParameter = new MethodParameter(method, 5); assertTrue("InputStream not supported", resolver.supportsParameter(inputStreamParameter)); Object result = resolver.resolveArgument(inputStreamParameter, null, webRequest, null); assertSame("Invalid result", webRequest.getRequest().getInputStream(), result); }
@Override public Iterator<String> getHeaderNames() { return CollectionUtils.toIterator(getRequest().getHeaderNames()); }
@Override public Iterator<String> getParameterNames() { return CollectionUtils.toIterator(getRequest().getParameterNames()); }
@Override @Nullable public String[] getParameterValues(String paramName) { return getRequest().getParameterValues(paramName); }
@Override @Nullable public String[] getHeaderValues(String headerName) { String[] headerValues = StringUtils.toStringArray(getRequest().getHeaders(headerName)); return (!ObjectUtils.isEmpty(headerValues) ? headerValues : null); }
@Override @Nullable public Principal getUserPrincipal() { return getRequest().getUserPrincipal(); }
ifNoneMatch = getRequest().getHeaders(IF_NONE_MATCH); etag = padEtagIfNecessary(etag); if (etag.startsWith("W/")) { etag = etag.substring(2);
@Override @Nullable public String getRemoteUser() { return getRequest().getRemoteUser(); }
@Override public boolean isSecure() { return getRequest().isSecure(); }
@Override public Locale getLocale() { return getRequest().getLocale(); }