blob: 3ffe0962d3675418866595214c0dd45387e46101 [file] [log] [blame]
/*
* Copyright 1999-2004 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 org.apache.cocoon.environment;
import java.util.Locale;
/**
* Defines an interface to provide client response information .
*
* @author <a href="mailto:dims@yahoo.com">Davanum Srinivas</a>
* @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
* @version CVS $Id: Response.java,v 1.3 2004/03/05 13:02:54 bdelacretaz Exp $
*
*/
public interface Response {
/**
* Returns the name of the charset used for
* the MIME body sent in this response.
*
* <p>If no charset has been assigned, it is implicitly
* set to <code>ISO-8859-1</code> (<code>Latin-1</code>).
*
* <p>See RFC 2047 (http://ds.internic.net/rfc/rfc2045.txt)
* for more information about character encoding and MIME.
*
* @return a <code>String</code> specifying the
* name of the charset, for
* example, <code>ISO-8859-1</code>
*
*/
String getCharacterEncoding();
/**
* Sets the locale of the response, setting the headers (including the
* Content-Type's charset) as appropriate. By default, the response locale
* is the default locale for the server.
*
* @param loc the locale of the response
*
* @see #getLocale()
*
*/
void setLocale(Locale loc);
/**
* Returns the locale assigned to the response.
*
*
* @see #setLocale(Locale)
*
*/
Locale getLocale();
/**
* Constructs a cookie with a specified name and value.
*
* <p>The name must conform to RFC 2109. That means it can contain
* only ASCII alphanumeric characters and cannot contain commas,
* semicolons, or white space or begin with a $ character. The cookie's
* name cannot be changed after creation.
*
* <p>The value can be anything the server chooses to send. Its
* value is probably of interest only to the server. The cookie's
* value can be changed after creation with the
* <code>setValue</code> method.
*
* <p>By default, cookies are created according to the Netscape
* cookie specification. The version can be changed with the
* <code>setVersion</code> method.
*
*
* @param name a <code>String</code> specifying the name of the cookie
*
* @param value a <code>String</code> specifying the value of the cookie
*
* @throws IllegalArgumentException if the cookie name contains illegal characters
* (for example, a comma, space, or semicolon)
* or it is one of the tokens reserved for use
* by the cookie protocol
*
*/
Cookie createCookie(String name, String value);
/**
* Adds the specified cookie to the response. This method can be called
* multiple times to set more than one cookie.
*
* @param cookie the Cookie to return to the client
*
*/
void addCookie(Cookie cookie);
/**
* Returns a boolean indicating whether the named response header
* has already been set.
*
* @param name the header name
* @return <code>true</code> if the named response header
* has already been set;
* <code>false</code> otherwise
*/
boolean containsHeader(String name);
/**
* Encodes the specified URL by including the session ID in it,
* or, if encoding is not needed, returns the URL unchanged.
* The implementation of this method includes the logic to
* determine whether the session ID needs to be encoded in the URL.
* For example, if the browser supports cookies, or session
* tracking is turned off, URL encoding is unnecessary.
*
* <p>For robust session tracking, all URLs emitted by a servlet
* should be run through this
* method. Otherwise, URL rewriting cannot be used with browsers
* which do not support cookies.
*
* @param url the url to be encoded.
* @return the encoded URL if encoding is needed;
* the unchanged URL otherwise.
*/
String encodeURL(String url);
/**
*
* Sets a response header with the given name and
* date-value. The date is specified in terms of
* milliseconds since the epoch. If the header had already
* been set, the new value overwrites the previous one. The
* <code>containsHeader</code> method can be used to test for the
* presence of a header before setting its value.
*
* @param name the name of the header to set
* @param date the assigned date value
*
* @see #containsHeader(String)
* @see #addDateHeader(String, long)
*/
void setDateHeader(String name, long date);
/**
*
* Adds a response header with the given name and
* date-value. The date is specified in terms of
* milliseconds since the epoch. This method allows response headers
* to have multiple values.
*
* @param name the name of the header to set
* @param date the additional date value
*
* @see #setDateHeader(String, long)
*/
void addDateHeader(String name, long date);
/**
*
* Sets a response header with the given name and value.
* If the header had already been set, the new value overwrites the
* previous one. The <code>containsHeader</code> method can be
* used to test for the presence of a header before setting its
* value.
*
* @param name the name of the header
* @param value the header value
*
* @see #containsHeader(String)
* @see #addHeader(String, String)
*/
void setHeader(String name, String value);
/**
* Adds a response header with the given name and value.
* This method allows response headers to have multiple values.
*
* @param name the name of the header
* @param value the additional header value
*
* @see #setHeader(String, String)
*/
void addHeader(String name, String value);
/**
* Sets a response header with the given name and
* int value. If the header had already
* been set, the new value overwrites the previous one. The
* <code>containsHeader</code> method can be used to test for the
* presence of a header before setting its value.
*
* @param name the name of the header to set
* @param value the assigned int value
*
* @see #containsHeader(String)
* @see #addIntHeader(String, int)
*/
void setIntHeader(String name, int value);
/**
* Adds a response header with the given name and
* int value. This method allows response headers
* to have multiple values.
*
* @param name the name of the header to set
* @param value the additional int value
*
* @see #setIntHeader(String, int)
*/
void addIntHeader(String name, int value);
}