content: /*
   *  Copyright (C) 2010-2012 Stichting Akvo (Akvo Foundation)
   *
   *  This file is part of Akvo FLOW.
   *
   *  Akvo FLOW is free software: you can redistribute it and modify it under the terms of
   *  the GNU Affero General Public License (AGPL) as published by the Free Software Foundation,
   *  either version 3 of the License or any later version.
   *
   *  Akvo FLOW is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   *  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   *  See the GNU Affero General Public License included below for more details.
   *
   *  The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>.
   */
  
  package org.waterforpeople.mapping.app.web;
  
  import java.io.IOException;
  
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  
  import com.google.appengine.api.LifecycleManager;
  import com.google.appengine.api.LifecycleManager.ShutdownHook;
  
  /**
   * simple servlet to bind a shutdown hook
   * 
   * @author Christopher Fagiani
   */
  public class StartupServlet extends HttpServlet {
  
      private static final long serialVersionUID = -5683590972260558060L;
  
      public void doGet(HttpServletRequest req, HttpServletResponse resp)
              throws IOException {
          executeRequest(req, resp);
      }
  
      public void doPost(HttpServletRequest req, HttpServletResponse resp)
              throws IOException {
          executeRequest(req, resp);
      }
  
      private void executeRequest(HttpServletRequest req, HttpServletResponse resp) {
          try {
              resp.setStatus(HttpServletResponse.SC_OK);
              LifecycleManager.getInstance().setShutdownHook(new ShutdownHook() {
                  public void shutdown() {
                      LifecycleManager.getInstance().interruptAllRequests();
                  }
              });
          } catch (Throwable t) {
              System.out.println("Cannot register shutdown hook."
                      + t.getMessage());
              t.printStackTrace();
          }
      }
  }
  