1 // Copyright 2011 Google Inc. All Rights Reserved.
3 package com
.google
.appengine
.tools
.development
;
5 import java
.io
.IOException
;
7 import javax
.servlet
.Filter
;
8 import javax
.servlet
.FilterChain
;
9 import javax
.servlet
.FilterConfig
;
10 import javax
.servlet
.ServletException
;
11 import javax
.servlet
.ServletRequest
;
12 import javax
.servlet
.ServletResponse
;
13 import javax
.servlet
.http
.HttpServletRequest
;
14 import javax
.servlet
.http
.HttpServletResponse
;
17 * A Filter that verifies that the incoming request's headers are valid.
20 public class HeaderVerificationFilter
implements Filter
{
21 private static final String CONTENT_LENGTH
= "Content-Length";
24 public void init(FilterConfig filterConfig
) {}
27 public void destroy() {}
30 public void doFilter(ServletRequest request
, ServletResponse response
, FilterChain chain
)
31 throws IOException
, ServletException
{
32 if (doFilterInternal(request
, response
)) {
33 chain
.doFilter(request
, response
);
38 * Helper method for doFilter() that contains the filtering logic but does
39 * not invoke the remaining filters in the chain.
41 * @return true if the request should be passed to the remaining filters in the chain.
43 private boolean doFilterInternal(ServletRequest request
, ServletResponse response
)
45 if (!(request
instanceof HttpServletRequest
)) {
48 if (!(response
instanceof HttpServletResponse
)) {
51 HttpServletRequest httpRequest
= (HttpServletRequest
) request
;
52 HttpServletResponse httpResponse
= (HttpServletResponse
) response
;
54 if (httpRequest
.getMethod().equals("POST") &&
55 httpRequest
.getHeader(CONTENT_LENGTH
) == null) {
56 httpResponse
.sendError(HttpServletResponse
.SC_LENGTH_REQUIRED
, "Length required");