You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by kn...@apache.org on 2001/09/05 11:34:25 UTC
cvs commit: jakarta-turbine-3/proposals/kasper/newrundata Context.java Cookie.java Request.java Response.java RunData.java Session.java
knielsen 01/09/05 02:34:25
Added: proposals/kasper/newrundata Context.java Cookie.java
Request.java Response.java RunData.java
Session.java
Log:
Start of new Rundata proposal
Revision Changes Path
1.1 jakarta-turbine-3/proposals/kasper/newrundata/Context.java
Index: Context.java
===================================================================
package org.apache.turbine.newrundata;
import java.net.MalformedURLException;
import java.net.URL;
/**
* Defines an interface to provide client context information .
*
* @author <a href="mailto:dims@yahoo.com">Davanum Srinivas</a>
* @author <a href="mailto:dims@yahoo.com">Kasper Nielsen</a>
* @version CVS $Revision: 1.1 $ $Date: 2001/09/05 09:34:25 $
*
*/
public interface Context {
Object getAttribute(String name);
URL getResource(String path) throws MalformedURLException;
String getRealPath(String path) throws MalformedURLException;
String getMimeType(String file);
String getInitParameter(String name);
}
1.1 jakarta-turbine-3/proposals/kasper/newrundata/Cookie.java
Index: Cookie.java
===================================================================
package org.apache.turbine.newrundata;
/**
*
* Creates a cookie, a small amount of information sent by a servlet to
* a Web browser, saved by the browser, and later sent back to the server.
* A cookie's value can uniquely
* identify a client, so cookies are commonly used for session management.
*
* <p>A cookie has a name, a single value, and optional attributes
* such as a comment, path and domain qualifiers, a maximum age, and a
* version number. Some Web browsers have bugs in how they handle the
* optional attributes, so use them sparingly to improve the interoperability
* of your servlets.
*
* <p>The servlet sends cookies to the browser by using the
* {@link Response#addCookie} method, which adds
* fields to HTTP response headers to send cookies to the
* browser, one at a time. The browser is expected to
* support 20 cookies for each Web server, 300 cookies total, and
* may limit cookie size to 4 KB each.
*
* <p>The browser returns cookies to the servlet by adding
* fields to HTTP request headers. Cookies can be retrieved
* from a request by using the {@link Request#getCookies} method.
* Several cookies might have the same name but different path attributes.
*
* <p>Cookies affect the caching of the Web pages that use them.
* HTTP 1.0 does not cache pages that use cookies created with
* this class. This class does not support the cache control
* defined with HTTP 1.1.
*
* <p>This class supports both the Version 0 (by Netscape) and Version 1
* (by RFC 2109) cookie specifications. By default, cookies are
* created using Version 0 to ensure the best interoperability.
*
*
* @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
* @version CVS $Revision: 1.1 $ $Date: 2001/09/05 09:34:25 $
*
*/
public interface Cookie {
/**
*
* Specifies a comment that describes a cookie's purpose.
* The comment is useful if the browser presents the cookie
* to the user. Comments
* are not supported by Netscape Version 0 cookies.
*
* @param purpose a <code>String</code> specifying the comment
* to display to the user
*
* @see #getComment
*
*/
void setComment(String purpose);
/**
* Returns the comment describing the purpose of this cookie, or
* <code>null</code> if the cookie has no comment.
*
* @return a <code>String</code> containing the comment,
* or <code>null</code> if none
*
* @see #setComment
*
*/
String getComment();
/**
*
* Specifies the domain within which this cookie should be presented.
*
* <p>The form of the domain name is specified by RFC 2109. A domain
* name begins with a dot (<code>.foo.com</code>) and means that
* the cookie is visible to servers in a specified Domain Name System
* (DNS) zone (for example, <code>www.foo.com</code>, but not
* <code>a.b.foo.com</code>). By default, cookies are only returned
* to the server that sent them.
*
*
* @param pattern a <code>String</code> containing the domain name
* within which this cookie is visible;
* form is according to RFC 2109
*
* @see #getDomain
*
*/
void setDomain(String pattern);
/**
* Returns the domain name set for this cookie. The form of
* the domain name is set by RFC 2109.
*
* @return a <code>String</code> containing the domain name
*
* @see #setDomain
*
*/
String getDomain();
/**
* Sets the maximum age of the cookie in seconds.
*
* <p>A positive value indicates that the cookie will expire
* after that many seconds have passed. Note that the value is
* the <i>maximum</i> age when the cookie will expire, not the cookie's
* current age.
*
* <p>A negative value means
* that the cookie is not stored persistently and will be deleted
* when the Web browser exits. A zero value causes the cookie
* to be deleted.
*
* @param expiry an integer specifying the maximum age of the
* cookie in seconds; if negative, means
* the cookie is not stored; if zero, deletes
* the cookie
*
*
* @see #getMaxAge
*
*/
void setMaxAge(int expiry);
/**
* Returns the maximum age of the cookie, specified in seconds,
* By default, <code>-1</code> indicating the cookie will persist
* until browser shutdown.
*
*
* @return an integer specifying the maximum age of the
* cookie in seconds; if negative, means
* the cookie persists until browser shutdown
*
*
* @see #setMaxAge
*
*/
int getMaxAge();
/**
* Specifies a path for the cookie
* to which the client should return the cookie.
*
* <p>The cookie is visible to all the pages in the directory
* you specify, and all the pages in that directory's subdirectories.
* A cookie's path must include the servlet that set the cookie,
* for example, <i>/catalog</i>, which makes the cookie
* visible to all directories on the server under <i>/catalog</i>.
*
* <p>Consult RFC 2109 (available on the Internet) for more
* information on setting path names for cookies.
*
*
* @param uri a <code>String</code> specifying a path
*
*
* @see #getPath
*
*/
void setPath(String uri);
/**
* Returns the path on the server
* to which the browser returns this cookie. The
* cookie is visible to all subpaths on the server.
*
*
* @return a <code>String</code> specifying a path that contains
* a servlet name, for example, <i>/catalog</i>
*
* @see #setPath
*
*/
String getPath();
/**
* Indicates to the browser whether the cookie should only be sent
* using a secure protocol, such as HTTPS or SSL.
*
* <p>The default value is <code>false</code>.
*
* @param flag if <code>true</code>, sends the cookie from the browser
* to the server using only when using a secure protocol;
* if <code>false</code>, sent on any protocol
*
* @see #getSecure
*
*/
void setSecure(boolean flag);
/**
* Returns <code>true</code> if the browser is sending cookies
* only over a secure protocol, or <code>false</code> if the
* browser can send cookies using any protocol.
*
* @return <code>true</code> if the browser can use
* any standard protocol; otherwise, <code>false</code>
*
* @see #setSecure
*
*/
boolean getSecure();
/**
* Returns the name of the cookie. The name cannot be changed after
* creation.
*
* @return a <code>String</code> specifying the cookie's name
*
*/
String getName();
/**
*
* Assigns a new value to a cookie after the cookie is created.
* If you use a binary value, you may want to use BASE64 encoding.
*
* <p>With Version 0 cookies, values should not contain white
* space, brackets, parentheses, equals signs, commas,
* double quotes, slashes, question marks, at signs, colons,
* and semicolons. Empty values may not behave the same way
* on all browsers.
*
* @param newValue a <code>String</code> specifying the new value
*
*
* @see #getValue
* @see Cookie
*
*/
void setValue(String newValue);
/**
* Returns the value of the cookie.
*
* @return a <code>String</code> containing the cookie's
* present value
*
* @see #setValue
* @see Cookie
*
*/
String getValue();
/**
* Returns the version of the protocol this cookie complies
* with. Version 1 complies with RFC 2109,
* and version 0 complies with the original
* cookie specification drafted by Netscape. Cookies provided
* by a browser use and identify the browser's cookie version.
*
*
* @return 0 if the cookie complies with the
* original Netscape specification; 1
* if the cookie complies with RFC 2109
*
* @see #setVersion
*
*/
int getVersion();
/**
* Sets the version of the cookie protocol this cookie complies
* with. Version 0 complies with the original Netscape cookie
* specification. Version 1 complies with RFC 2109.
*
* <p>Since RFC 2109 is still somewhat new, consider
* version 1 as experimental; do not use it yet on production sites.
*
*
* @param v 0 if the cookie should comply with
* the original Netscape specification;
* 1 if the cookie should comply with RFC 2109
*
* @see #getVersion
*
*/
void setVersion(int v);
}
1.1 jakarta-turbine-3/proposals/kasper/newrundata/Request.java
Index: Request.java
===================================================================
package org.apache.turbine.newrundata;
/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company:
* @author
* @version 1.0
*/
public interface Request {
//Todo
//needs to be filled out (Kasper)
//
}
1.1 jakarta-turbine-3/proposals/kasper/newrundata/Response.java
Index: Response.java
===================================================================
package org.apache.turbine.newrundata;
/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company:
* @author
* @version 1.0
*/
public interface Response {
//Todo
//needs to be filled out (Kasper)
//
}
1.1 jakarta-turbine-3/proposals/kasper/newrundata/RunData.java
Index: RunData.java
===================================================================
package org.apache.turbine.newrundata;
/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company:
* @author
* @version 1.0
*/
import java.util.Map;
public interface RunData {
//context stuff
//should we base it on string keys instead of object keys?
public boolean containsKey(Object key);
public Object get(Object key);
// no need to have a public Object put(Object key, Object value);
// this will be provided in the default implementation TurbineRunData
// users of rundata should use getTempStorage to store request specifik details.
public Response getResponse();
public Request getRequest();
public Session getSession();
public Context getContext();
public Map getTempStorage();
}
1.1 jakarta-turbine-3/proposals/kasper/newrundata/Session.java
Index: Session.java
===================================================================
package org.apache.turbine.newrundata;
import java.util.Enumeration;
import java.util.Map;
/**
*
* Provides a way to identify a user across more than one page
* request or visit to a Web site and to store information about that user.
*
* <p>Cocoon uses this interface to create a session
* between a client and the "cocoon server". The session persists
* for a specified time period, across more than one connection or
* page request from the user. A session usually corresponds to one
* user, who may visit a site many times. The server can maintain a
* session in many ways such as using cookies or rewriting URLs.
*
* <p>This interface allows Cocoon to
* <ul>
* <li>View and manipulate information about a session, such as
* the session identifier, creation time, and last accessed time
* <li>Bind objects to sessions, allowing user information to persist
* across multiple user connections
* </ul>
*
* <p>Session information is scoped only to the current context
* (<code>Context</code>), so information stored in one context
* will not be directly visible in another.
*
* @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
* @version CVS $Revision: 1.1 $ $Date: 2001/09/05 09:34:25 $
*
*/
public interface Session {
/**
*
* Returns the time when this session was created, measured
* in milliseconds since midnight January 1, 1970 GMT.
*
* @return a <code>long</code> specifying
* when this session was created,
* expressed in
* milliseconds since 1/1/1970 GMT
*
* @exception IllegalStateException if this method is called on an
* invalidated session
*
*/
long getCreationTime();
/**
*
* Returns a string containing the unique identifier assigned
* to this session. The identifier is assigned
* by the context container and is implementation dependent.
*
* @return a string specifying the identifier
* assigned to this session
*
* @exeption IllegalStateException if this method is called on an
* invalidated session
*
*/
String getId();
/**
*
* Returns the last time the client sent a request associated with
* this session, as the number of milliseconds since midnight
* January 1, 1970 GMT.
*
* <p>Actions that your application takes, such as getting or setting
* a value associated with the session, do not affect the access
* time.
*
* @return a <code>long</code>
* representing the last time
* the client sent a request associated
* with this session, expressed in
* milliseconds since 1/1/1970 GMT
*
* @exeption IllegalStateException if this method is called on an
* invalidated session
*
*/
long getLastAccessedTime();
/**
*
* Specifies the time, in seconds, between client requests before the
* contextcontainer will invalidate this session. A negative time
* indicates the session should never timeout.
*
* @param interval An integer specifying the number
* of seconds
*
*/
void setMaxInactiveInterval(int interval);
/**
* Returns the maximum time interval, in seconds, that
* the context container will keep this session open between
* client accesses. After this interval, the context container
* will invalidate the session. The maximum time interval can be set
* with the <code>setMaxInactiveInterval</code> method.
* A negative time indicates the session should never timeout.
*
*
* @return an integer specifying the number of
* seconds this session remains open
* between client requests
*
* @see #setMaxInactiveInterval
*
*
*/
int getMaxInactiveInterval();
/**
*
* Returns the object bound with the specified name in this session, or
* <code>null</code> if no object is bound under the name.
*
* @param name a string specifying the name of the object
*
* @return the object with the specified name
*
* @exception IllegalStateException if this method is called on an
* invalidated session
*
*/
Object getAttribute(String name);
/**
*
* Returns an <code>Enumeration</code> of <code>String</code> objects
* containing the names of all the objects bound to this session.
*
* @return an <code>Enumeration</code> of
* <code>String</code> objects specifying the
* names of all the objects bound to
* this session
*
* @exception IllegalStateException if this method is called on an
* invalidated session
*
*/
Enumeration getAttributeNames();
/**
* Binds an object to this session, using the name specified.
* If an object of the same name is already bound to the session,
* the object is replaced.
*
*
* @param name the name to which the object is bound;
* cannot be null
*
* @param value the object to be bound; cannot be null
*
* @exception IllegalStateException if this method is called on an
* invalidated session
*
*/
void setAttribute(String name, Object value);
/**
*
* Removes the object bound with the specified name from
* this session. If the session does not have an object
* bound with the specified name, this method does nothing.
*
*
* @param name the name of the object to
* remove from this session
*
* @exception IllegalStateException if this method is called on an
* invalidated session
*/
void removeAttribute(String name);
/**
*
* Invalidates this session
* to it.
*
* @exception IllegalStateException if this method is called on an
* already invalidated session
*
*/
void invalidate();
/**
*
* Returns <code>true</code> if the client does not yet know about the
* session or if the client chooses not to join the session. For
* example, if the server used only cookie-based sessions, and
* the client had disabled the use of cookies, then a session would
* be new on each request.
*
* @return <code>true</code> if the
* server has created a session,
* but the client has not yet joined
*
* @exception IllegalStateException if this method is called on an
* already invalidated session
*
*/
boolean isNew();
/**
*
* Returns a <code>Map</code> where arbitary session data can be stored
* The implementation _must_ provide a Threadsafe Map
* Everything that is put into the Map should also be ThreadSafe
*
*
* @exception IllegalStateException if this method is called on an
* already invalidated session
*
*/
Map getSessionTempStorage();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: turbine-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-dev-help@jakarta.apache.org