/* * Copyright 2008 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.gwt.http.server; import com.google.gwt.http.client.RequestBuilderTest; import java.io.BufferedReader; import java.io.IOException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet component of the * {@link com.google.gwt.http.client.RequestBuilderTest RequestBuilderTest}. */ public class RequestBuilderTestServlet extends HttpServlet { @Override protected void doDelete(HttpServletRequest request, HttpServletResponse response) { try { response.setStatus(HttpServletResponse.SC_OK); response.getWriter().print(RequestBuilderTest.SERVLET_DELETE_RESPONSE); } catch (IOException e) { response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { String pathInfo = request.getPathInfo(); if (pathInfo.equals("/setRequestHeader")) { String value = request.getHeader("Foo"); if (value.equals("Bar1")) { response.setStatus(HttpServletResponse.SC_OK); response.getWriter().print(RequestBuilderTest.SERVLET_GET_RESPONSE); } else { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); } } else if (pathInfo.equals("/send_GET")) { response.setStatus(HttpServletResponse.SC_OK); response.getWriter().write(RequestBuilderTest.SERVLET_GET_RESPONSE); } else if (pathInfo.equals("/sendRequest_GET")) { response.setStatus(HttpServletResponse.SC_OK); response.getWriter().write(RequestBuilderTest.SERVLET_GET_RESPONSE); } else if (pathInfo.equals("/setTimeout/timeout")) { // cause a timeout on the client try { Thread.sleep(5000); } catch (InterruptedException e) { } response.setStatus(HttpServletResponse.SC_OK); response.getWriter().print(RequestBuilderTest.SERVLET_GET_RESPONSE); } else if (pathInfo.equals("/setTimeout/noTimeout")) { // wait but not long enough to timeout try { Thread.sleep(1000); } catch (InterruptedException e) { } response.setStatus(HttpServletResponse.SC_OK); response.getWriter().print(RequestBuilderTest.SERVLET_GET_RESPONSE); } else if (pathInfo.equals("/user/pass")) { String auth = request.getHeader("Authorization"); if (auth == null) { response.setHeader("WWW-Authenticate", "BASIC"); response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); } else { response.setStatus(HttpServletResponse.SC_OK); response.getWriter().print(RequestBuilderTest.SERVLET_GET_RESPONSE); } } else { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); } } @Override protected void doHead(HttpServletRequest request, HttpServletResponse response) { response.setStatus(HttpServletResponse.SC_OK); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) { try { String parameter = request.getParameter("method"); if ("test request".equals(parameter)) { /* * On Safari 2.0.4, if the HTTP response does not include any response * text the status message will be undefined. So, we make sure that the * post returns some data. See * http://bugs.webkit.org/show_bug.cgi?id=3810. */ response.getWriter().print(RequestBuilderTest.SERVLET_POST_RESPONSE); response.setStatus(HttpServletResponse.SC_OK); } else if (request.getPathInfo().equals("/simplePost")) { response.getWriter().print(RequestBuilderTest.SERVLET_POST_RESPONSE); response.setStatus(HttpServletResponse.SC_OK); } else { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); } } catch (IOException e) { response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } } @Override protected void doPut(HttpServletRequest request, HttpServletResponse response) throws IOException { BufferedReader reader = request.getReader(); String content = reader.readLine(); if (content != null && content.equals("<html><body>Put Me</body></html>")) { response.getWriter().print(RequestBuilderTest.SERVLET_PUT_RESPONSE); response.setStatus(HttpServletResponse.SC_OK); } else { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); } } }