Revision created by MOE tool push_codebase.
[gae.git] / java / src / main / com / google / appengine / tools / development / HeaderVerificationFilter.java
blobd78d18f0e9d12570b37a081d4dd41834b31b0138
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;
16 /**
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";
23 @Override
24 public void init(FilterConfig filterConfig) {}
26 @Override
27 public void destroy() {}
29 @Override
30 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
31 throws IOException, ServletException {
32 if (doFilterInternal(request, response)) {
33 chain.doFilter(request, response);
37 /**
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)
44 throws IOException {
45 if (!(request instanceof HttpServletRequest)) {
46 return true;
48 if (!(response instanceof HttpServletResponse)) {
49 return true;
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");
57 return false;
60 return true;