001: /*
002: * <copyright>
003: *
004: * Copyright 1997-2004 BBNT Solutions, LLC
005: * under sponsorship of the Defense Advanced Research Projects
006: * Agency (DARPA).
007: *
008: * You can redistribute this software and/or modify it under the
009: * terms of the Cougaar Open Source License as published on the
010: * Cougaar Open Source Website (www.cougaar.org).
011: *
012: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
013: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
014: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
015: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
016: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
017: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
018: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
019: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
020: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
021: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
022: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
023: *
024: * </copyright>
025: */
026:
027: package org.cougaar.planning.servlet;
028:
029: import java.io.IOException;
030: import java.io.PrintWriter;
031: import java.util.Enumeration;
032:
033: import javax.servlet.ServletException;
034: import javax.servlet.http.HttpServlet;
035: import javax.servlet.http.HttpServletRequest;
036: import javax.servlet.http.HttpServletResponse;
037:
038: import org.cougaar.core.servlet.SimpleServletSupport;
039:
040: /**
041: * <pre>
042: * Base class for all servlets in the datagrabber.
043: *
044: * Holds the simple servlet support object.
045: * Automatically treats POST requests as GETs.
046: * Defines the usage function as something to be called when there
047: * are no url parameters.
048: *
049: * Most of the work of a servlet is done by the ServletWorker.
050: * A new ServletWorker is created for every new request.
051: * </pre>
052: */
053: public abstract class ServletBase extends HttpServlet {
054: public static final boolean DEBUG = false;
055:
056: public static boolean VERBOSE = false;
057:
058: static {
059: VERBOSE = Boolean
060: .getBoolean("org.cougaar.mlm.ui.psp.transit.ServletBase.verbose");
061: }
062:
063: /**
064: * Save our service broker during initialization.
065: */
066: protected SimpleServletSupport support;
067:
068: public SimpleServletSupport getSupport() {
069: return support;
070: }
071:
072: /** **/
073: public void setSimpleServletSupport(SimpleServletSupport support) {
074: this .support = support;
075: }
076:
077: /**
078: * Pretty to-String for debugging.
079: */
080: public String toString() {
081: return getClass().getName();
082: }
083:
084: public void doGet(HttpServletRequest request,
085: HttpServletResponse response) throws IOException,
086: ServletException {
087: ServletWorker worker = createWorker();
088: if (!request.getParameterNames().hasMoreElements()) {
089: getUsage(response.getWriter(), support);
090: return;
091: }
092: if (VERBOSE) {
093: Enumeration paramNames = request.getParameterNames();
094: for (int i = 0; paramNames.hasMoreElements();)
095: System.out.println("ServletBase got param #" + i++
096: + " - " + paramNames.nextElement());
097: }
098: worker.execute(request, response, support);
099: }
100:
101: public void doPost(HttpServletRequest request,
102: HttpServletResponse response) throws IOException,
103: ServletException {
104: doGet(request, response);
105: }
106:
107: protected abstract ServletWorker createWorker();
108:
109: /**
110: * USAGE <p>
111: *
112: * Only called if no arguments are given.
113: */
114: public abstract void getUsage(PrintWriter out,
115: SimpleServletSupport support);
116: }
|