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