Quadcap Image Database

com/quadcap/app/dbimage/DbImageController.java

Go to the documentation of this file.
00001 package com.quadcap.app.dbimage; 00002 00003 /* Copyright 2000 - 2003 Quadcap Software. All rights reserved. 00004 * 00005 * This software is distributed under the Quadcap Free Software License. 00006 * This software may be used or modified for any purpose, personal or 00007 * commercial. Open Source redistributions are permitted. Commercial 00008 * redistribution of larger works derived from, or works which bundle 00009 * this software requires a "Commercial Redistribution License"; see 00010 * http://www.quadcap.com/purchase. 00011 * 00012 * Redistributions qualify as "Open Source" under one of the following terms: 00013 * 00014 * Redistributions are made at no charge beyond the reasonable cost of 00015 * materials and delivery. 00016 * 00017 * Redistributions are accompanied by a copy of the Source Code or by an 00018 * irrevocable offer to provide a copy of the Source Code for up to three 00019 * years at the cost of materials and delivery. Such redistributions 00020 * must allow further use, modification, and redistribution of the Source 00021 * Code under substantially the same terms as this license. 00022 * 00023 * Redistributions of source code must retain the copyright notices as they 00024 * appear in each source code file, these license terms, and the 00025 * disclaimer/limitation of liability set forth as paragraph 6 below. 00026 * 00027 * Redistributions in binary form must reproduce this Copyright Notice, 00028 * these license terms, and the disclaimer/limitation of liability set 00029 * forth as paragraph 6 below, in the documentation and/or other materials 00030 * provided with the distribution. 00031 * 00032 * The Software is provided on an "AS IS" basis. No warranty is 00033 * provided that the Software is free of defects, or fit for a 00034 * particular purpose. 00035 * 00036 * Limitation of Liability. Quadcap Software shall not be liable 00037 * for any damages suffered by the Licensee or any third party resulting 00038 * from use of the Software. 00039 */ 00040 00041 import java.util.HashMap; 00042 00043 import javax.servlet.ServletConfig; 00044 import javax.servlet.ServletException; 00045 00046 import javax.servlet.http.HttpServlet; 00047 import javax.servlet.http.HttpServletRequest; 00048 import javax.servlet.http.HttpServletResponse; 00049 00050 /** 00051 * The controller servlet for the image database application. All incoming 00052 * requests get dispatched from here to an Action instance. 00053 * 00054 * @author Stan Bailes 00055 */ 00056 public class DbImageController extends HttpServlet { 00057 HashMap actions = new HashMap(); 00058 00059 static HashMap actionClasses = new HashMap(); 00060 static { 00061 actionClasses.put("/load", "com.quadcap.app.dbimage.ActionLoad"); 00062 } 00063 00064 public void init(ServletConfig config) throws ServletException { 00065 super.init(config); 00066 00067 } 00068 00069 public void doPost(HttpServletRequest request, 00070 HttpServletResponse response) 00071 throws ServletException 00072 { 00073 doGet(request, response); 00074 } 00075 00076 public void doGet(HttpServletRequest request, 00077 HttpServletResponse response) 00078 throws ServletException 00079 { 00080 try { 00081 Action action = getAction(request); 00082 if (action == null) { 00083 response.sendError(HttpServletResponse.SC_NOT_FOUND, 00084 "Not Found"); 00085 } else { 00086 try { 00087 action.service(request, response); 00088 } catch (ServletException e) { 00089 throw e; 00090 } 00091 } 00092 } catch (Throwable t) { 00093 throw new ServletException(t); 00094 } 00095 } 00096 00097 Action getAction(HttpServletRequest request) throws Exception { 00098 String s = request.getPathInfo(); 00099 Action action = (Action)actions.get(s); 00100 if (action == null) { 00101 String actionClass = (String)actionClasses.get(s); 00102 if (actionClass != null) { 00103 Class c = Class.forName(actionClass); 00104 action = (Action)c.newInstance(); 00105 action.init(getServletConfig()); 00106 actions.put(s, action); 00107 } 00108 } 00109 return action; 00110 } 00111 }