Added code contributed by BJ Hargrave to begin a Servlet 2.1 API bundle (FELIX-40).
git-svn-id: https://svn.apache.org/repos/asf/incubator/felix/trunk@355208 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/javax.servlet/src/main/java/javax/servlet/http/HttpServletRequest.java b/javax.servlet/src/main/java/javax/servlet/http/HttpServletRequest.java
new file mode 100644
index 0000000..68c77cc
--- /dev/null
+++ b/javax.servlet/src/main/java/javax/servlet/http/HttpServletRequest.java
@@ -0,0 +1,514 @@
+/*
+ * Copyright 1999,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package javax.servlet.http;
+
+import javax.servlet.ServletRequest;
+import java.util.Enumeration;
+
+/**
+ *
+ * Extends the {@link javax.servlet.ServletRequest} interface
+ * to provide request information for HTTP servlets.
+ *
+ * <p>The servlet container creates an <code>HttpServletRequest</code>
+ * object and passes it as an argument to the servlet's service
+ * methods (<code>doGet</code>, <code>doPost</code>, etc).
+ *
+ *
+ * @author Various
+ * @version $Version$
+ *
+ *
+ */
+
+public interface HttpServletRequest extends ServletRequest {
+
+ /**
+ * Returns the name of the authentication scheme used to protect
+ * the servlet, for example, "BASIC" or "SSL".
+ * If the servlet is not authenticated <code>null</code> is returned.
+ *
+ * <p>Same as the value of the CGI variable AUTH_TYPE.
+ *
+ *
+ * @return a <code>String</code> specifying the name of
+ * the authentication scheme, or
+ * <code>null</code> if the request was not
+ * authenticated
+ *
+ */
+
+ public String getAuthType();
+
+
+
+
+ /**
+ *
+ * Returns an array containing all of the <code>Cookie</code>
+ * objects the client sent with this request.
+ * This method returns <code>null</code> if no cookies were sent.
+ *
+ * @return an array of all the <code>Cookies</code>
+ * included with this request, or <code>null</code>
+ * if the request has no cookies
+ *
+ *
+ */
+
+ public Cookie[] getCookies();
+
+
+
+
+ /**
+ *
+ * Returns the value of the specified request header
+ * as a <code>long</code> value that represents a
+ * <code>Date</code> object. Use this method with
+ * headers that contain dates, such as
+ * <code>If-Modified-Since</code>.
+ *
+ * <p>The date is returned as
+ * the number of milliseconds since January 1, 1970 GMT.
+ * The header name is case insensitive.
+ *
+ * <p>If the request did not have a header of the
+ * specified name, this method returns -1. If the header
+ * can't be converted to a date, the method throws
+ * an <code>IllegalArgumentException</code>.
+ *
+ * @param name a <code>String</code> specifying the
+ * name of the header
+ *
+ * @return a <code>long</code> value
+ * representing the date specified
+ * in the header expressed as
+ * the number of milliseconds
+ * since January 1, 1970 GMT,
+ * or -1 if the named header
+ * was not included with the
+ * reqest
+ *
+ * @exception IllegalArgumentException If the header value
+ * can't be converted
+ * to a date
+ *
+ */
+
+ public long getDateHeader(String name);
+
+
+
+
+ /**
+ *
+ * Returns the value of the specified request header
+ * as a <code>String</code>. If the request did not include a header
+ * of the specified name, this method returns <code>null</code>.
+ * The header name is case insensitive. You can use
+ * this method with any request header.
+ *
+ * @param name a <code>String</code> specifying the
+ * header name
+ *
+ * @return a <code>String</code> containing the
+ * value of the requested
+ * header, or <code>null</code>
+ * if the request does not
+ * have a header of that name
+ *
+ */
+
+ public String getHeader(String name);
+
+
+
+
+ /**
+ *
+ * Returns an enumeration of all the header names
+ * this request contains. If the request has no
+ * headers, this method returns an empty enumeration.
+ *
+ * <p>Some servlet containers do not allow do not allow
+ * servlets to access headers using this method, in
+ * which case this method returns <code>null</code>
+ *
+ * @return an enumeration of all the
+ * header names sent with this
+ * request; if the request has
+ * no headers, an empty enumeration;
+ * if the servlet container does not
+ * allow servlets to use this method,
+ * <code>null</code>
+ *
+ *
+ */
+
+ public Enumeration getHeaderNames();
+
+
+
+
+ /**
+ *
+ * Returns the value of the specified request header
+ * as an <code>int</code>. If the request does not have a header
+ * of the specified name, this method returns -1. If the
+ * header cannot be converted to an integer, this method
+ * throws a <code>NumberFormatException</code>.
+ *
+ * <p>The header name is case insensitive.
+ *
+ * @param name a <code>String</code> specifying the name
+ * of a request header
+ *
+ * @return an integer expressing the value
+ * of the request header or -1
+ * if the request doesn't have a
+ * header of this name
+ *
+ * @exception NumberFormatException If the header value
+ * can't be converted
+ * to an <code>int</code>
+ */
+
+ public int getIntHeader(String name);
+
+
+
+
+ /**
+ *
+ * Returns the name of the HTTP method with which this
+ * request was made, for example, GET, POST, or PUT.
+ * Same as the value of the CGI variable REQUEST_METHOD.
+ *
+ * @return a <code>String</code>
+ * specifying the name
+ * of the method with which
+ * this request was made
+ *
+ */
+
+ public String getMethod();
+
+
+
+
+ /**
+ *
+ * Returns any extra path information associated with
+ * the URL 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.
+ *
+ * <p>Same as the value of the CGI variable PATH_INFO.
+ *
+ *
+ * @return a <code>String</code>, decoded by the
+ * web container, specifying
+ * extra path information that comes
+ * after the servlet path but before
+ * the query string in the request URL;
+ * or <code>null</code> if the URL does not have
+ * any extra path information
+ *
+ */
+
+ public String getPathInfo();
+
+
+
+
+ /**
+ *
+ * Returns any extra path information after the servlet name
+ * but before the query string, and translates it to a real
+ * path. Same as the value of the CGI variable PATH_TRANSLATED.
+ *
+ * <p>If the URL does not have any extra path information,
+ * this method returns <code>null</code>.
+ *
+ * The web container does not decode this string.
+ *
+ *
+ * @return a <code>String</code> specifying the
+ * real path, or <code>null</code> if
+ * the URL does not have any extra path
+ * information
+ *
+ *
+ */
+
+ public String getPathTranslated();
+
+
+
+
+ /**
+ *
+ * Returns the query string that is contained in the request
+ * URL after the path. This method returns <code>null</code>
+ * if the URL does not have a query string. Same as the value
+ * of the CGI variable QUERY_STRING.
+ *
+ * @return a <code>String</code> containing the query
+ * string or <code>null</code> if the URL
+ * contains no query string. The value is not
+ * decoded by the container.
+ *
+ */
+
+ public String getQueryString();
+
+
+
+
+ /**
+ *
+ * Returns the login of the user making this request, if the
+ * user has been authenticated, or <code>null</code> if the user
+ * has not been authenticated.
+ * Whether the user name is sent with each subsequent request
+ * depends on the browser and type of authentication. Same as the
+ * value of the CGI variable REMOTE_USER.
+ *
+ * @return a <code>String</code> specifying the login
+ * of the user making this request, or <code>null</code
+ * if the user login is not known
+ *
+ */
+
+ public String getRemoteUser();
+
+
+
+
+ /**
+ *
+ * Returns the session ID specified by the client. This may
+ * not be the same as the ID of the actual session in use.
+ * For example, if the request specified an old (expired)
+ * session ID and the server has started a new session, this
+ * method gets a new session with a new ID. If the request
+ * did not specify a session ID, this method returns
+ * <code>null</code>.
+ *
+ *
+ * @return a <code>String</code> specifying the session
+ * ID, or <code>null</code> if the request did
+ * not specify a session ID
+ *
+ * @see #isRequestedSessionIdValid
+ *
+ */
+
+ public String getRequestedSessionId();
+
+
+
+
+ /**
+ *
+ * Returns the part of this request's URL from the protocol
+ * name up to the query string in the first line of the HTTP request.
+ * The web container does not decode this String.
+ * For example:
+ *
+ *
+
+ * <table>
+ * <tr align=left><th>First line of HTTP request </th>
+ * <th> Returned Value</th>
+ * <tr><td>POST /some/path.html HTTP/1.1<td><td>/some/path.html
+ * <tr><td>GET http://foo.bar/a.html HTTP/1.0
+ * <td><td>/a.html
+ * <tr><td>HEAD /xyz?a=b HTTP/1.1<td><td>/xyz
+ * </table>
+ *
+ * <p>To reconstruct an URL with a scheme and host, use
+ * {@link HttpUtils#getRequestURL}.
+ *
+ * @return a <code>String</code> containing
+ * the part of the URL from the
+ * protocol name up to the query string
+ *
+ * @see HttpUtils#getRequestURL
+ *
+ */
+
+ public String getRequestURI();
+
+ /**
+ *
+ * Returns the part of this request's URL 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. Same as the value
+ * of the CGI variable SCRIPT_NAME.
+ *
+ *
+ * @return a <code>String</code> containing
+ * the name or path of the servlet being
+ * called, as specified in the request URL,
+ * decoded.
+ *
+ *
+ */
+
+ public String getServletPath();
+
+
+
+
+ /**
+ *
+ * Returns the current <code>HttpSession</code>
+ * associated with this request or, if if there is no
+ * current session and <code>create</code> is true, returns
+ * a new session.
+ *
+ * <p>If <code>create</code> is <code>false</code>
+ * and the request has no valid <code>HttpSession</code>,
+ * this method returns <code>null</code>.
+ *
+ * <p>To make sure the session is properly maintained,
+ * you must call this method before
+ * the response is committed. If the container is using cookies
+ * to maintain session integrity and is asked to create a new session
+ * when the response is committed, an IllegalStateException is thrown.
+ *
+ *
+ *
+ *
+ * @param create <code>true</code> to create
+ * a new session for this request if necessary;
+ * <code>false</code> to return <code>null</code>
+ * if there's no current session
+ *
+ *
+ * @return the <code>HttpSession</code> associated
+ * with this request or <code>null</code> if
+ * <code>create</code> is <code>false</code>
+ * and the request has no valid session
+ *
+ * @see #getSession()
+ *
+ *
+ */
+
+ public HttpSession getSession(boolean create);
+
+
+
+
+
+ /**
+ *
+ * Returns the current session associated with this request,
+ * or if the request does not have a session, creates one.
+ *
+ * @return the <code>HttpSession</code> associated
+ * with this request
+ *
+ * @see #getSession(boolean)
+ *
+ */
+
+ public HttpSession getSession();
+
+
+
+
+
+
+ /**
+ *
+ * Checks whether the requested session ID is still valid.
+ *
+ * @return <code>true</code> if this
+ * request has an id for a valid session
+ * in the current session context;
+ * <code>false</code> otherwise
+ *
+ * @see #getRequestedSessionId
+ * @see #getSession(boolean)
+ * @see HttpSessionContext
+ *
+ */
+
+ public boolean isRequestedSessionIdValid();
+
+
+
+
+ /**
+ *
+ * Checks whether the requested session ID came in as a cookie.
+ *
+ * @return <code>true</code> if the session ID
+ * came in as a
+ * cookie; otherwise, <code>false</code>
+ *
+ *
+ * @see #getSession(boolean)
+ *
+ */
+
+ public boolean isRequestedSessionIdFromCookie();
+
+
+
+
+ /**
+ *
+ * Checks whether the requested session ID came in as part of the
+ * request URL.
+ *
+ * @return <code>true</code> if the session ID
+ * came in as part of a URL; otherwise,
+ * <code>false</code>
+ *
+ *
+ * @see #getSession(boolean)
+ *
+ */
+
+ public boolean isRequestedSessionIdFromURL();
+
+
+
+
+
+ /**
+ *
+ * @deprecated As of Version 2.1 of the Java Servlet
+ * API, use {@link #isRequestedSessionIdFromURL}
+ * instead.
+ *
+ */
+
+ public boolean isRequestedSessionIdFromUrl();
+
+
+
+}