Index: ServletContext.java
===================================================================
RCS file: /cvs/glassfish/servlet-api/src/jakarta-servletapi-5/jsr154/src/share/javax/servlet/ServletContext.java,v
retrieving revision 1.7.6.1
diff -u -r1.7.6.1 ServletContext.java
--- ServletContext.java 17 Apr 2008 20:15:00 -0000 1.7.6.1
+++ ServletContext.java 5 May 2008 19:23:15 -0000
@@ -59,6 +59,7 @@
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.EnumSet;
import java.util.Enumeration;
import java.util.Set;
@@ -704,6 +705,80 @@
*/
public String getServletContextName();
+
+ /**
+ * Sets the session tracking cookie configuration for this
+ * <tt>ServletContext</tt>.
+ *
+ * <p>The given <tt>sessionCookieConfig</tt> replaces any
+ * session tracking cookie configuration that was set by a previous
+ * invocation of this method on this <tt>ServletContext</tt>.
+ *
+ * @param sessionCookieConfig the configuration of the session
+ * tracking cookies for this <tt>ServletContext</tt>
+ *
+ * @throws IllegalStateException if this <tt>ServletContext</tt> has
+ * already been initialized
+ */
+ public void setSessionCookieConfig(SessionCookieConfig sessionCookieConfig);
+
+ /**
+ * Gets the session tracking cookie configuration of this
+ * <tt>ServletContext</tt>.
+ *
+ * @return the session tracking cookie configuration of this
+ * <tt>ServletContext</tt>, or <tt>null</tt> if
+ * {@link #setSessionCookieConfig setSessionCookieConfig} was never
+ * called on this <tt>ServletContext</tt>
+ */
+ public SessionCookieConfig getSessionCookieConfig();
+
+ /**
+ * Sets the session tracking modes that are to become effective for this
+ * <tt>ServletContext</tt>.
+ *
+ * <p>The given <tt>sessionTrackingModes</tt> replaces any
+ * session tracking modes set by a previous invocation of this
+ * method on this <tt>ServletContext</tt>.
+ *
+ * @param sessionTrackingModes enum set of session tracking modes to
+ * become effective for this <tt>ServletContext</tt>
+ *
+ * @throws IllegalStateException if this <tt>ServletContext</tt> has
+ * already been initialized
+ * @throws IllegalArgumentException if <tt>sessionTrackingModes</tt>
+ * specifies a combination of <tt>SessionTrackingMode.SSL</tt> with a
+ * session tracking mode other than <tt>SessionTrackingMode.SSL</tt>,
+ * or if <tt>sessionTrackingModes</tt> specifies a session tracking mode
+ * that is not supported by the servlet container
+ */
+ public void setSessionTrackingModes(EnumSet<SessionTrackingMode> sessionTrackingModes);
+
+ /**
+ * Gets the session tracking modes that are supported by default for this
+ * <tt>ServletContext</tt>.
+ *
+ * @return enum set of the session tracking modes supported by default for
+ * this <tt>ServletContext</tt>
+ */
+ public EnumSet<SessionTrackingMode> getDefaultSessionTrackingModes();
+
+ /**
+ * Gets the session tracking modes that are in effect for this
+ * <tt>ServletContext</tt>.
+ *
+ * <p>The session tracking modes in effect are those provided to
+ * {@link #setSessionTrackingModes setSessionTrackingModes}.
+ *
+ * <p>By default, the session tracking modes returned by
+ * {@link #getDefaultSessionTrackingModes getDefaultSessionTrackingModes}
+ * are in effect.
+ *
+ * @return enum set of the session tracking modes in effect for this
+ * <tt>ServletContext</tt>
+ */
+ public EnumSet<SessionTrackingMode> getEffectiveSessionTrackingModes();
+
}
------------------------------------------------------------------------------------------------------- package javax.servlet;
/**
* Enumeration of session tracking modes.
*
* @since 3.0
*/
public enum SessionTrackingMode {
COOKIE,
URL,
SSL
}
------------------------------------------------------------------------------------------------------- package javax.servlet;
/**
* Session tracking cookie configuration class.
*
* @since 3.0
*/
public class SessionCookieConfig {
private String domain;
private String path;
private String comment;
private boolean isHttpOnly;
private boolean isSecure;
/**
* Constructor.
*
* <p>If <tt>isHttpOnly</tt> is <tt>true</tt>, any session
* tracking cookies configured by this <tt>SessionCookieConfig</tt>
* will be marked as <i>HttpOnly</i>, by adding the <tt>HttpOnly</tt>
* attribute to them. <i>HttpOnly</i> cookies are not supposed to be
* exposed to client-side scripting code, and may therefore help
* mitigate certain kinds of cross-site scripting attacks.
*
* <p>If <tt>isSecure</tt> is <tt>true</tt>, any session
* tracking cookie configured by this <tt>SessionCookieConfig</tt>
* will be marked as <i>secure</i>, even if the request that initiated
* the corresponding session is using plain HTTP instead of a secure
* protocol such as HTTPS.
* If <tt>isSecure</tt> is <tt>false</tt>, any session tracking
* cookie configured by this <tt>SessionCookieConfig</tt> will be marked
* as <i>secure</i> only if the request that initiated the corresponding
* session is also secure.
*
* @param domain The domain assigned to any session tracking cookie
* configured by this <tt>SessionCookieConfig</tt>
* @param path The path assigned to any session tracking cookie
* configured by this <tt>SessionCookieConfig</tt>, or <tt>null</tt> if the
* context path of the <tt>ServletContext</tt> with which this
* <tt>SessionCookieConfig</tt> has been associated is to be used
* as the cookie path
* @param comment The comment assigned to any session tracking cookie
* configured by this <tt>SessionCookieConfig</tt>
* @param isHttpOnly true if any session tracking cookies configured
* by this <tt>SessionCookieConfig</tt> will be marked as <i>HttpOnly</i>,
* false otherwise
* @param isSecure true if any session tracking ccokie configured by
* this <tt>SessionCookieConfig</tt> will be marked as <i>secure</i>
* even if the request that initiated the corresponding session is
* using plain HTTP instead of HTTPS, and false if any session tracking
* cookie configured by this <tt>SessionCookieConfig</tt> will be marked
* as <i>secure</i> only if the request that initiated the corresponding
* session is also secure
*
* @see javax.servlet.http.Cookie#setDomain(String)
* @see javax.servlet.http.Cookie#setPath(String)
* @see javax.servlet.http.Cookie#setComment(String)
* @see javax.servlet.http.Cookie#setHttpOnly(boolean)
* @see javax.servlet.http.Cookie#setSecure(boolean)
* @see ServletContext#setSessionCookieConfig
*/
public SessionCookieConfig(String domain, String path, String comment,
boolean isHttpOnly, boolean isSecure) {
this.domain = domain;
this.path = path;
this.comment = comment;
this.isHttpOnly = isHttpOnly;
this.isSecure = isSecure;
}
/**
* Gets the domain assigned to any session tracking cookie configured
* by this <tt>SessionCookieConfig</tt>.
*
* @return the session tracking cookie domain
*
* @see javax.servlet.http.Cookie#getDomain()
*/
public String getDomain() {
return domain;
}
/**
* Gets the path assigned to any session tracking cookie configured
* by this <tt>SessionCookieConfig</tt>.
*
* @return the session tracking cookie path
*
* @see javax.servlet.http.Cookie#getPath()
*/
public String getPath() {
return path;
}
/**
* Gets the comment assigned to any session tracking cookie configured
* by this <tt>SessionCookieConfig</tt>.
*
* @return the session tracking cookie comment
*
* @see javax.servlet.http.Cookie#getComment()
*/
public String getComment() {
return comment;
}
/**
* Checks if any session tracking cookies configured by this
* <tt>SessionCookieConfig</tt> will be marked as <i>HttpOnly</i>.
*
* @return true if any session tracking cookies configured by this
* <tt>SessionCookieConfig</tt> will be marked as <i>HttpOnly</i>,
* false otherwise
*
* @see javax.servlet.http.Cookie#isHttpOnly(boolean)
*/
public boolean isHttpOnly() {
return isHttpOnly;
}
/**
* Checks if any session tracking cookie configured by this
* <tt>SessionCookieConfig</tt> will be marked as <i>secure</i> even
* if the request that initiated the corresponding session is using
* plain HTTP instead of HTTPS.
*
* @return true if any session tracking cookie configured by this
* <tt>SessionCookieConfig</tt> will be marked as <i>secure</i> even
* if the request that initiated the corresponding session is using
* plain HTTP instead of HTTPS, and false if any session tracking
* cookie configured by this <tt>SessionCookieConfig</tt> will be marked
* as <i>secure</i> only if the request that initiated the corresponding
* session is also secure.
*
* @see javax.servlet.http.Cookie#getSecure()
* @see ServletRequest#isSecure()
*/
public boolean isSecure() {
return isSecure;
}
}
|