001: // Copyright 2006, 2007 The Apache Software Foundation
002: //
003: // Licensed under the Apache License, Version 2.0 (the "License");
004: // you may not use this file except in compliance with the License.
005: // You may obtain a copy of the License at
006: //
007: // http://www.apache.org/licenses/LICENSE-2.0
008: //
009: // Unless required by applicable law or agreed to in writing, software
010: // distributed under the License is distributed on an "AS IS" BASIS,
011: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012: // See the License for the specific language governing permissions and
013: // limitations under the License.
014:
015: package org.apache.tapestry.services;
016:
017: import java.util.List;
018: import java.util.Locale;
019:
020: /**
021: * Generic version of {@link javax.servlet.http.HttpServletRequest}, used to encapsulate the
022: * Servlet API version, and to help bridge the differences between Servlet API and Porlet API.
023: */
024: public interface Request {
025: /**
026: * Gets the {@link Session}. If create is false and the session has not be created previously,
027: * returns null.
028: *
029: * @param create
030: * true to force the creation of the session
031: * @return the session (or null if create is false the session has not been previously created)
032: */
033: Session getSession(boolean create);
034:
035: /**
036: * Returns the context path. This always starts with a "/" character and does not end with one,
037: * with the exception of servlets in the root context, which return the empty string.
038: */
039: String getContextPath();
040:
041: /** Returns a list of query parameter names, in alphabetical order. */
042: List<String> getParameterNames();
043:
044: /**
045: * Returns the query parameter value for the given name. Returns null if no such parameter is in
046: * the request. For a multi-valued parameter, returns just the first value.
047: */
048: String getParameter(String name);
049:
050: /**
051: * Returns the parameter values for the given name. Returns null if no such parameter is in the
052: * request.
053: * <p>
054: * TODO: Shouldn't this move to {@link FormParameterLookup}?
055: */
056: String[] getParameters(String name);
057:
058: /**
059: * Returns the path portion of the request, which starts with a "/" and contains everything up
060: * to the start of the query parameters. It doesn't include the context path.
061: */
062: String getPath();
063:
064: /** Returns the locale of the client as determined from the request headers. */
065: Locale getLocale();
066:
067: /** Returns the names of all headers in the request. */
068: List<String> getHeaderNames();
069:
070: /**
071: * Returns the value of the specified request header as a <code>long</code> value that
072: * represents a <code>Date</code> object. Use this method with headers that contain dates,
073: * such as <code>If-Modified-Since</code>.
074: * <p>
075: * The date is returned as the number of milliseconds since January 1, 1970 GMT. The header name
076: * is case insensitive.
077: * <p>
078: * If the request did not have a header of the specified name, this method returns -1. If the
079: * header can't be converted to a date, the method throws an
080: * <code>IllegalArgumentException</code>.
081: *
082: * @param name
083: * a <code>String</code> specifying the name of the header
084: * @return a <code>long</code> value representing the date specified in the header expressed
085: * as the number of milliseconds since January 1, 1970 GMT, or -1 if the named header
086: * was not included with the reqest
087: * @exception IllegalArgumentException
088: * If the header value can't be converted to a date
089: */
090: long getDateHeader(String name);
091:
092: /** Returns the named header as a string, or null if not found. */
093: String getHeader(String name);
094:
095: /**
096: * Sets the encoding of the request, which must occur before any parameters for the request are
097: * read.
098: *
099: * @param requestEncoding
100: * charset used when parsing parameters
101: */
102: void setEncoding(String requestEncoding);
103: }
|