/*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * (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.mozilla.org/MPL/>.
 * 
 * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
 * WARRANTY OF ANY KIND, either express or implied. See the License for the specific
 * language governing rights and limitations under the License.
 * 
 * The Original Code is the Venice Web Communities System.
 * 
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
 * for Silverwrist Design Studios.  Portions created by Eric J. Bowersox are
 * Copyright (C) 2002-03 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 * 
 * Contributor(s): 
 */
package com.silverwrist.dynamo;

/**
 * Contains the names of various application, session, and request attributes and initialization parameters
 * used by the Dynamo servlet interface.
 *
 * @author Eric J. Bowersox &lt;erbo@silcom.com&gt;
 * @version X
 */
public interface WebConstants
{
  /**
   * Prefix for all Dynamo-specific application (<CODE>ServletContext</CODE>) attributes.
   */
  public static final String APPLICATION_PREFIX = "com.silverwrist.dynamo.";

  /**
   * Application attribute that records whether or not logging has been initiated.
   */
  public static final String LOGGING_ATTRIBUTE = APPLICATION_PREFIX + "LoggingStarted";

  /**
   * Application attribute that holds the Dynamo
   * {@link com.silverwrist.dynamo.app.ApplicationContainer ApplicationContainer} object.
   */
  public static final String APPLICATION_ATTRIBUTE = APPLICATION_PREFIX + "app.ApplicationContainer";

  /**
   * Application attribute used to store the {@link com.silverwrist.dynamo.iface.MIMETypeMapper MIMETypeMapper}
   * object created to tap into the servlet container's MIME type maps.
   */
  public static final String SERVLET_MAPPER_ATTRIBUTE = APPLICATION_PREFIX + "servlet.MIMETypeMapper";

  /**
   * Servlet context initialization parameter that tells Dynamo where to find the logging configuration file.
   */
  public static final String LOGGING_INIT_PARAM = "logging.config";

  /**
   * Servlet context initialization parameter that tells Dynamo where to find the Dynamo XML configuration file.
   */
  public static final String CONFIG_INIT_PARAM = "dynamo.config";

  /**
   * Prefix for all Dynamo-specific session (<CODE>HttpSession</CODE>) attributes.
   */
  public static final String SESSION_PREFIX = "com.silverwrist.dynamo.";

  /**
   * Session attribute used to store the HTTP-specific {@link com.silverwrist.dynamo.iface.SessionInfo SessionInfo}
   * object.
   */
  public static final String SESSION_PARAM = SESSION_PREFIX + "session";

  /**
   * Session attribute used to store the connection-specific
   * {@link com.silverwrist.dynamo.iface.BrowserData BrowserData} object.
   */
  public static final String SESSION_BROWSER_DATA_PARAM = SESSION_PREFIX + "browser.data";

  /**
   * Prefix for all Dynamo-specific request (<CODE>ServletRequest</CODE>) attributes.
   */
  public static final String REQUEST_PREFIX = "com.silverwrist.dynamo.";

  /**
   * Request attribute which stores the per-request
   * {@link com.silverwrist.dynamo.iface.SessionInfoProvider SessionInfoProvider} object.
   */
  public static final String REQUEST_SESSION_PROVIDER_ATTR = REQUEST_PREFIX + "session.provider";

  /**
   * Request attribute which contains a reference to a new HTTP session that must be initialized.
   */
  public static final String REQUEST_SESSIONINIT_ATTR = REQUEST_PREFIX + "HTTPsession.init";

  /**
   * Request attribute which contains a reference to the connection-specific
   * {@link com.silverwrist.dynamo.iface.BrowserData BrowserData} object.
   */
  public static final String REQUEST_BROWSER_DATA_ATTR = REQUEST_PREFIX + "browser.data";

  /**
   * Request attribute which contains a reference to the set of all cookies currently defined
   * on the connection.
   */
  public static final String REQUEST_COOKIESET_ATTR = REQUEST_PREFIX + "browser.cookieset";

  /**
   * Request attribute containing a list of all new cookies set on the output, which cannot be set until
   * the start of the output phase.
   */
  public static final String REQUEST_NEWCOOKIEHOLDER_ATTR = REQUEST_PREFIX + "browser.NewCookieHolder";

  /**
   * Request attribute containing a list of all new headers set on the output, which cannot be set until
   * the start of the output phase.
   */
  public static final String REQUEST_NEWHEADERHOLDER_ATTR = REQUEST_PREFIX + "servlet.NewHeaderHolder";

  /**
   * Request attribute containing a backreference to the {@link com.silverwrist.dynamo.iface.Request Request}
   * object for the current request.
   */
  public static final String REQUEST_SELF_ATTR = REQUEST_PREFIX + "request.self";

  /**
   * The HTTP header which requests a page only if it's been modified since a specific time.
   */
  public static final String HDR_IF_MODIFIED_SINCE = "If-Modified-Since";

  /**
   * The HTTP header which returns when a page was last modified.
   */
  public static final String HDR_LAST_MODIFIED = "Last-Modified";

} // end interface WebConstants
