/* * 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) 2001-02 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved. * * Contributor(s): */ package com.silverwrist.venice.ui; import java.io.InputStream; import java.io.IOException; import java.util.Enumeration; import java.util.Map; import org.w3c.dom.Document; import com.silverwrist.util.ServletMultipartException; import com.silverwrist.venice.core.CommunityContext; import com.silverwrist.venice.core.UserContext; import com.silverwrist.venice.core.VeniceEngine; import com.silverwrist.venice.except.*; import com.silverwrist.venice.ui.dlg.Dialog; import com.silverwrist.venice.ui.helpers.ErrorBox; import com.silverwrist.venice.ui.menus.MenuComponent; import com.silverwrist.venice.ui.script.ScriptManager; import com.silverwrist.venice.util.ServiceProvider; public interface RequestInput extends ServiceProvider { public static final String LEFT_MENU_SESSION_ATTR = "LeftMenu"; /** * Returns a <CODE>String</CODE> containing the real path for a given virtual path. For example, * the virtual path "/index.html" has a real path of whatever file on the server's filesystem * would be served by a request for "/index.html".<P> * This method returns <CODE>null</CODE> if the virtual path cannot be translated to a real path for * any reason. * * @param s A <CODE>String</CODE> specifying a virtual path. * @return A <CODE>String</CODE> specifying the real path, or <CODE>null</CODE> if the translation cannot * be performed. */ public abstract String mapPath(String s); /** * Returns the portion of the request URI that indicates the context of the request, i.e. the servlet * context under which Venice is installed. The context path always comes first in a request URI. The * path starts with a "/" character but does not end with a "/" character. * * @return A <CODE>String</CODE> specifying the portion of the request URI that indicates the context * of the request. */ public abstract String getContextPath(); /** * Returns the part of this request's URI that calls the servlet. This includes either the servlet name * or a path to the servlet, but does not include any extra path information or a query string. * * @return A <CODE>String</CODE> containing the name or path of the servlet being called, as specified * in the request URI. */ public abstract String getServletPath(); /** * Returns any extra path information associated with the URI the client sent when it made this request. * The extra path information follows the servlet path but precedes the query string. This method * returns <CODE>null</CODE> if there was no extra path information. In Venice, the path information is * used to specify parameters in certain servlets. * * @return A <CODE>String</CODE> specifying extra path information that comes after the servlet path * but before the query string in the request URI; or <CODE>null</CODE> if the URI does not * have any extra path information. */ public abstract String getPathInfo(); /** * Returns the query string that is contained in the request URI after the path. This method returns * <CODE>null</CODE> if the URI does not have a query string. * * @return A <CODE>String</CODE> containing the query string or <CODE>null</CODE> if the URI contains * no query string. */ public abstract String getQueryString(); /** * Returns the name of the HTTP method with which this request was made, for example, GET, POST, or PUT. * * @return A <CODE>String</CODE> specifying the name of the method with which this request was made. */ public abstract String getVerb(); /** * Returns the Internet Protocol (IP) address of the client that sent the request. * * @return A <CODE>String</CODE> containing the IP address of the client that sent the request. */ public abstract String getSourceAddress(); /** * Returns <CODE>true</CODE> if the request parameter with the specified name is defined, * <CODE>false</CODE> if not. For standard Venice requests, parameters are contained in the * query string or posted form data. * * @param name Parameter name to be checked. * @return See above. */ public abstract boolean hasParameter(String name); /** * Returns the value of a request parameter as a <CODE>String</CODE>, or <CODE>null</CODE> if the * parameter does not exist. For standard Venice requests, parameters are contained in the query * string or posted form data.<P> * You should only use this method when you are sure the parameter has only one value. If the parameter * might have more than one value, use {@link #getParameterValues(java.lang.String)}.<P> * If you use this method with a multivalued parameter, the value returned is equal to the first value * in the array returned by <CODE>getParameterValues</CODE>. * * @param name A <CODE>String</CODE> specifying the name of the parameter. * @return A <CODE>String</CODE> representing the single value of the parameter. * @see #getParameterValues(java.lang.String) */ public abstract String getParameter(String name); /** * Returns the value of a request parameter as a <CODE>int</CODE>, or a specified default value if * the parameter does not exist. For standard Venice requests, parameters are contained in the query * string or posted form data.<P> * If you use this method with a multivalued parameter, the value returned is equal to the * <CODE>int</CODE> equivalent of the first value in the array returned by <CODE>getParameterValues</CODE>. * * @param name A <CODE>String</CODE> specifying the name of the parameter. * @param default_value The default value to use for the parameter if the specified parameter does not exist. * @return An <CODE>int</CODE> representing the single value of the parameter. */ public abstract int getParameterInt(String name, int default_value); /** * Returns the value of a request parameter as a <CODE>short</CODE>, or a specified default value if * the parameter does not exist. For standard Venice requests, parameters are contained in the query * string or posted form data.<P> * If you use this method with a multivalued parameter, the value returned is equal to the * <CODE>short</CODE> equivalent of the first value in the array returned by <CODE>getParameterValues</CODE>. * * @param name A <CODE>String</CODE> specifying the name of the parameter. * @param default_value The default value to use for the parameter if the specified parameter does not exist. * @return A <CODE>short</CODE> representing the single value of the parameter. */ public abstract short getParameterShort(String name, short default_value); /** * Returns the value of a request parameter as a <CODE>long</CODE>, or a specified default value if * the parameter does not exist. For standard Venice requests, parameters are contained in the query * string or posted form data.<P> * If you use this method with a multivalued parameter, the value returned is equal to the * <CODE>long</CODE> equivalent of the first value in the array returned by <CODE>getParameterValues</CODE>. * * @param name A <CODE>String</CODE> specifying the name of the parameter. * @param default_value The default value to use for the parameter if the specified parameter does not exist. * @return A <CODE>long</CODE> representing the single value of the parameter. */ public abstract long getParameterLong(String name, long default_value); /** * Returns an <CODE>Enumeration</CODE> of <CODE>String</CODE> objects containing the names of the * parameters contained in this request. If the request has no parameters, the method returns an empty * <CODE>Enumeration.</CODE> * * @return An <CODE>Enumeration</CODE> of <CODE>String</CODE> objects, each <CODE>String</CODE> * containing the name of a request parameter, or an empty <CODE>Enumeration</CODE> if the * request has no parameters. */ public abstract Enumeration getParameterNames(); /** * Returns an array of <CODE>String</CODE> objects containing all of the values the given request * parameter has, or <CODE>null</CODE> if the parameter does not exist.<P> * If the parameter has a single value, the array has a length of 1. * * @param name A <CODE>String</CODE> containing the name of the parameter whose value is requested. * @return An array of <CODE>String</CODE> objects containing the parameter's values. * @see #getParameter(java.lang.String) */ public abstract String[] getParameterValues(String name); /** * Returns <CODE>true</CODE> if the specified parameter is a file parameter, <CODE>false</CODE> if * not. If the parameter does not exist, the return value is <CODE>false</CODE>. * * @param name A <CODE>String</CODE> containing the name of the parameter to test. * @return See above. */ public abstract boolean isFileParam(String name); /** * Returns the MIME type of the specified parameter. If the type cannot be determined, the return * value is <CODE>null</CODE>.<P> * N.B.: For non-file parameters, or all parameters to a request that is not a file upload, the MIME * type is "text/plain". * * @param name A <CODE>String</CODE> containing the name of the parameter to test. * @return See above. */ public abstract String getParameterType(String name); /** * Returns the size in bytes of the specified parameter. If the size cannot be determined, the return * value is -1.<P> * N.B.: For non-file parameters, or all parameters to a request that is not a file upload, the size * is the number of bytes occupied by the parameter, expressed in UTF-8 encoding. * * @param name A <CODE>String</CODE> containing the name of the parameter to test. * @return See above. */ public abstract int getParameterSize(String name); /** * Returns an <CODE>InputStream</CODE> reading from the data of the named file parameter. If the * named parameter does not exist or is not a file parameter, returns <CODE>null; * * @param name A <CODE>String</CODE> containing the name of the parameter whose value is requested. * @return See above. * @exception com.silverwrist.util.ServletMultipartException If there is a problem retrieving * the parameter data stream. */ public abstract InputStream getParameterDataStream(String name) throws ServletMultipartException; /** * Returns <CODE>true</CODE> if the parameter set reflects the clicking of an image button with a * specified name, <CODE>false</CODE> if not. * * @param name A <CODE>String</CODE> containing the name of the image button to test. * @return See above. */ public abstract boolean isImageButtonClicked(String name); /** * Returns the application-level attribute with the given name, or <CODE>null</CODE> if there is no * attribute by that name. * * @param name A <CODE>String</CODE> specifying the name of the attribute. * @return An <CODE>Object</CODE> containing the value of the attribute, or <CODE>null</CODE> if no * attribute exists matching the given name. */ public abstract Object getAppAttribute(String name); /** * Sets the application-level attribute with the given name. * * @param name A <CODE>String</CODE> specifying the name of the attribute. * @param o The object to be bound as the value of that attribute, or <CODE>null</CODE> if the binding * is to be removed. */ public abstract void setAppAttribute(String name, Object o); /** * Returns the session-level attribute with the given name, or <CODE>null</CODE> if there is no * attribute by that name. * * @param name A <CODE>String</CODE> specifying the name of the attribute. * @return An <CODE>Object</CODE> containing the value of the attribute, or <CODE>null</CODE> if no * attribute exists matching the given name. */ public abstract Object getSessionAttribute(String name); /** * Sets the session-level attribute with the given name. * * @param name A <CODE>String</CODE> specifying the name of the attribute. * @param o The object to be bound as the value of that attribute, or <CODE>null</CODE> if the binding * is to be removed. */ public abstract void setSessionAttribute(String name, Object o); /** * Returns the request-level attribute with the given name, or <CODE>null</CODE> if there is no * attribute by that name. * * @param name A <CODE>String</CODE> specifying the name of the attribute. * @return An <CODE>Object</CODE> containing the value of the attribute, or <CODE>null</CODE> if no * attribute exists matching the given name. */ public abstract Object getRequestAttribute(String name); /** * Sets the request-level attribute with the given name. * * @param name A <CODE>String</CODE> specifying the name of the attribute. * @param o The object to be bound as the value of that attribute, or <CODE>null</CODE> if the binding * is to be removed. */ public abstract void setRequestAttribute(String name, Object o); /** * Returns the instance of the Venice engine associated with the application. * * @return See above. */ public abstract VeniceEngine getEngine(); /** * Returns the instance of the Venice user object associated with the session. * * @return See above. */ public abstract UserContext getUser(); /** * Returns the current servlet location. This is used, for instance, as the context to return to * after a login. * * @return The current servlet location. */ public abstract String getLocation(); /** * Sets the "current" servlet location that is displayed. This is used, for instance, * as the context to return to after a login. * * @param str The new location to be set. */ public abstract void setLocation(String str); /** * Returns <CODE>true</CODE> if the "Log In" link is to be displayed on the outer frame, * <CODE>false</CODE> if not. * * @return See above. */ public abstract boolean getDisplayLogin(); /** * Sets whether or not the "Log In" link is to be displayed on the outer frame. * * @param val <CODE>true</CODE> to display the "Log In" link on the outer frame, * <CODE>false</CODE> to omit it. */ public abstract void setDisplayLogin(boolean val); public abstract MenuComponent getMenu(String name); public abstract MenuComponent getMenu(String name, Map vars); public abstract Dialog getDialog(String name); public abstract Content[] getSideBoxes() throws AccessError, DataException; public abstract CommunityContext getCommunity(); public abstract CommunityContext getCommunity(boolean required, String on_error) throws ErrorBox; public abstract String getDefaultServletAddress(CommunityContext comm); public abstract void registerCleanup(AutoCleanup ac); public abstract String getConfigProperty(String name); public abstract String getConfigProperty(String name, String default_val); } // end interface RequestInput