[jboss-cvs] JBossAS SVN: r68007 - in projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet: http and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Dec 6 17:01:54 EST 2007


Author: smcgowan at redhat.com
Date: 2007-12-06 17:01:53 -0500 (Thu, 06 Dec 2007)
New Revision: 68007

Modified:
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/Filter.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/FilterChain.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/FilterConfig.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/GenericServlet.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/LocalStrings.properties
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/LocalStrings_fr.properties
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/LocalStrings_ja.properties
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/RequestDispatcher.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/Servlet.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletConfig.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContext.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContextAttributeEvent.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContextAttributeListener.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContextEvent.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContextListener.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletException.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletInputStream.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletOutputStream.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequest.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestAttributeEvent.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestAttributeListener.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestEvent.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestListener.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestWrapper.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletResponse.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletResponseWrapper.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/SingleThreadModel.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/UnavailableException.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/Cookie.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServlet.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServletRequest.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServletRequestWrapper.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServletResponse.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServletResponseWrapper.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSession.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionActivationListener.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionAttributeListener.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionBindingEvent.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionBindingListener.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionContext.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionEvent.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionListener.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpUtils.java
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/LocalStrings.properties
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/LocalStrings_es.properties
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/LocalStrings_fr.properties
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/LocalStrings_ja.properties
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/package.html
   projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/package.html
Log:
update servlet apis

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/Filter.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/Filter.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/Filter.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,113 +1,92 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
 import java.io.IOException;
 
-/**
- * A filter is an object that performs filtering tasks on either the request to
- * a resource (a servlet or static content), or on the response from a resource,
- * or both. <br>
- * <br>
- * Filters perform filtering in the <code>doFilter</code> method. Every Filter
- * has access to a FilterConfig object from which it can obtain its
- * initialization parameters, a reference to the ServletContext which it can
- * use, for example, to load resources needed for filtering tasks.
- * <p>
- * Filters are configured in the deployment descriptor of a web application
- * <p>
- * Examples that have been identified for this design are<br>
- * <ol>
- * <li>Authentication Filters</li>
- * <li>Logging and Auditing Filters</li>
- * <li>Image conversion Filters</li>
- * <li>Data compression Filters</li>
- * <li>Encryption Filters</li>
- * <li>Tokenizing Filters</li>
- * <li>Filters that trigger resource access events</li>
- * <li>XSL/T filters</li>
- * <li>Mime-type chain Filter</li>
- * </ol>
- * 
- * @since Servlet 2.3
- */
+	/** 
+	* A filter is an object that performs filtering tasks on either the request to a resource (a servlet or static content), or on the response from a resource, or both.
+        * <br><br>
+	* Filters perform filtering in the <code>doFilter</code> method. Every Filter has access to 
+	** a FilterConfig object from which it can obtain its initialization parameters, a
+	** reference to the ServletContext which it can use, for example, to load resources
+	** needed for filtering tasks.
+	** <p>
+	** Filters are configured in the deployment descriptor of a web application
+	** <p>
+	** Examples that have been identified for this design are<br>
+	** 1) Authentication Filters <br>
+	** 2) Logging and Auditing Filters <br>
+	** 3) Image conversion Filters <br>
+    	** 4) Data compression Filters <br>
+	** 5) Encryption Filters <br>
+	** 6) Tokenizing Filters <br>
+	** 7) Filters that trigger resource access events <br>
+	** 8) XSL/T filters <br>
+	** 9) Mime-type chain Filter <br>
+	 * @since	Servlet 2.3
+	*/
 
-public interface Filter
-{
+public interface Filter {
 
-   /**
-    * Called by the web container to indicate to a filter that it is being
-    * placed into service. The servlet container calls the init method exactly
-    * once after instantiating the filter. The init method must complete
-    * successfully before the filter is asked to do any filtering work. <br>
-    * <br>
-    * 
-    * The web container cannot place the filter into service if the init method
-    * either<br>
-    * <ol>
-    * <li>Throws a ServletException</li>
-    * <li>Does not return within a time period defined by the web container</li>
-    * </ol>
-    */
-   public void init(FilterConfig filterConfig) throws ServletException;
+	/** 
+	* Called by the web container to indicate to a filter that it is being placed into
+	* service. The servlet container calls the init method exactly once after instantiating the
+	* filter. The init method must complete successfully before the filter is asked to do any
+	* filtering work. <br><br>
 
-   /**
-    * The <code>doFilter</code> method of the Filter is called by the
-    * container each time a request/response pair is passed through the chain
-    * due to a client request for a resource at the end of the chain. The
-    * FilterChain passed in to this method allows the Filter to pass on the
-    * request and response to the next entity in the chain.
-    * <p>
-    * A typical implementation of this method would follow the following
-    * pattern:- <br>
-    * <ol>
-    * <li>Examine the request</li>
-    * <li>Optionally wrap the request object with a custom implementation to
-    * filter content or headers for input filtering</li>
-    * <li>Optionally wrap the response object with a custom implementation to
-    * filter content or headers for output filtering</li>
-    * <li>a) <strong>Either</strong> invoke the next entity in the chain using
-    * the FilterChain object (<code>chain.doFilter()</code>), <br>
-    * b) <strong>or</strong> not pass on the request/response pair to the
-    * next entity in the filter chain to block the request processing</li>
-    * <li> Directly set headers on the response after invocation of the next
-    * entity in the filter chain.</li>
-    * </ol>
-    */
-   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException;
+     	* The web container cannot place the filter into service if the init method either<br>
+        * 1.Throws a ServletException <br>
+        * 2.Does not return within a time period defined by the web container 
+	*/
+	public void init(FilterConfig filterConfig) throws ServletException;
+	
+	
+	/**
+	* The <code>doFilter</code> method of the Filter is called by the container
+	* each time a request/response pair is passed through the chain due
+	* to a client request for a resource at the end of the chain. The FilterChain passed in to this
+	* method allows the Filter to pass on the request and response to the next entity in the
+	* chain.<p>
+	* A typical implementation of this method would follow the following pattern:- <br>
+	* 1. Examine the request<br>
+	* 2. Optionally wrap the request object with a custom implementation to
+	* filter content or headers for input filtering <br>
+	* 3. Optionally wrap the response object with a custom implementation to
+	* filter content or headers for output filtering <br>
+	* 4. a) <strong>Either</strong> invoke the next entity in the chain using the FilterChain object (<code>chain.doFilter()</code>), <br>   
+	** 4. b) <strong>or</strong> not pass on the request/response pair to the next entity in the filter chain to block the request processing<br>
+	** 5. Directly set headers on the response after invocation of the next entity in the filter chain.
+	**/
+    public void doFilter ( ServletRequest request, ServletResponse response, FilterChain chain ) throws IOException, ServletException;
 
-   /**
-    * Called by the web container to indicate to a filter that it is being taken
-    * out of service. This method is only called once all threads within the
-    * filter's doFilter method have exited or after a timeout period has passed.
-    * After the web container calls this method, it will not call the doFilter
-    * method again on this instance of the filter. <br>
-    * <br>
-    * 
-    * This method gives the filter an opportunity to clean up any resources that
-    * are being held (for example, memory, file handles, threads) and make sure
-    * that any persistent state is synchronized with the filter's current state
-    * in memory.
-    */
-   public void destroy();
+	/**
+	* Called by the web container to indicate to a filter that it is being taken out of service. This 
+	* method is only called once all threads within the filter's doFilter method have exited or after
+	* a timeout period has passed. After the web container calls this method, it will not call the
+	* doFilter method again on this instance of the filter. <br><br>
+	* 
+     	* This method gives the filter an opportunity to clean up any resources that are being held (for
+	* example, memory, file handles, threads) and make sure that any persistent state is synchronized
+	* with the filter's current state in memory.
+	*/
 
+	public void destroy();
+
+
 }
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/FilterChain.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/FilterChain.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/FilterChain.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,49 +1,46 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
 import java.io.IOException;
 
-/**
- * A FilterChain is an object provided by the servlet container to the developer
- * giving a view into the invocation chain of a filtered request for a resource. Filters
- * use the FilterChain to invoke the next filter in the chain, or if the calling filter
- * is the last filter in the chain, to invoke the resource at the end of the chain.
- *
- * @see     Filter
- * @since   Servlet 2.3
- **/
-public interface FilterChain
-{
-
-   /**
-    * Causes the next filter in the chain to be invoked, or if the calling filter is the last filter
-    * in the chain, causes the resource at the end of the chain to be invoked.
+    /**
+    * A FilterChain is an object provided by the servlet container to the developer
+    * giving a view into the invocation chain of a filtered request for a resource. Filters
+    * use the FilterChain to invoke the next filter in the chain, or if the calling filter
+    * is the last filter in the chain, to invoke the resource at the end of the chain.
     *
-    * @param    request the request to pass along the chain.
-    * @param    response the response to pass along the chain.
-    *
-    * @since    2.3
-    */
-   public void doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException;
+    * @see Filter
+    * @since Servlet 2.3
+    **/
 
+public interface FilterChain {
+	
+	/**
+	* Causes the next filter in the chain to be invoked, or if the calling filter is the last filter
+	* in the chain, causes the resource at the end of the chain to be invoked.
+	*
+	* @param request the request to pass along the chain.
+	* @param response the response to pass along the chain.
+	*
+	* @since 2.3
+	*/
+	
+    public void doFilter ( ServletRequest request, ServletResponse response ) throws IOException, ServletException;
+
 }
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/FilterConfig.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/FilterConfig.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/FilterConfig.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,79 +1,92 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
+
 import java.util.Enumeration;
 
-/**
- * 
- * A filter configuration object used by a servlet container to pass information
- * to a filter during initialization.
- * 
- * @see Filter
- * @since Servlet 2.3
- * 
- */
-public interface FilterConfig
-{
+	 /** 
+	 *
+	 * A filter configuration object used by a servlet container
+	 * to pass information to a filter during initialization.
+	 * @see Filter 
+	  * @since	Servlet 2.3
+	 *
+	 */
 
-   /**
-    * Returns the filter-name of this filter as defined in the deployment
-    * descriptor.
-    */
-   public String getFilterName();
 
-   /**
-    * Returns a reference to the {@link ServletContext} in which the caller is
-    * executing.
-    * 
-    * @return a {@link ServletContext} object, used by the caller to interact
-    *         with its servlet container
-    * 
-    * @see ServletContext
-    */
-   public ServletContext getServletContext();
+public interface FilterConfig {
 
-   /**
-    * Returns a <code>String</code> containing the value of the named
-    * initialization parameter, or <code>null</code> if the parameter does not
-    * exist.
-    * 
-    * @param name
-    *           a <code>String</code> specifying the name of the
-    *           initialization parameter
-    * 
-    * @return a <code>String</code> containing the value of the initialization
-    *         parameter
-    */
-   public String getInitParameter(String name);
+	/** 
+	* Returns the filter-name of this filter as defined in the deployment descriptor. 
+	*/
+	
+	public String getFilterName();
 
-   /**
-    * Returns the names of the filter's initialization parameters as an
-    * <code>Enumeration</code> of <code>String</code> objects, or an empty
-    * <code>Enumeration</code> if the filter has no initialization parameters.
-    * 
-    * @return an <code>Enumeration</code> of <code>String</code> objects
-    *         containing the names of the filter's initialization parameters
-    */
-   public Enumeration getInitParameterNames();
 
+ /**
+     * Returns a reference to the {@link ServletContext} in which the caller
+     * is executing.
+     *
+     *
+     * @return		a {@link ServletContext} object, used
+     *			by the caller to interact with its servlet 
+     *                  container
+     * 
+     * @see		ServletContext
+     *
+     */
+
+    public ServletContext getServletContext();
+    
+    /**
+     * Returns a <code>String</code> containing the value of the 
+     * named initialization parameter, or <code>null</code> if 
+     * the parameter does not exist.
+     *
+     * @param name	a <code>String</code> specifying the name
+     *			of the initialization parameter
+     *
+     * @return		a <code>String</code> containing the value 
+     *			of the initialization parameter
+     *
+     */
+
+    public String getInitParameter(String name);
+
+
+    /**
+     * Returns the names of the filter's initialization parameters
+     * as an <code>Enumeration</code> of <code>String</code> objects, 
+     * or an empty <code>Enumeration</code> if the filter has
+     * no initialization parameters.
+     *
+     * @return		an <code>Enumeration</code> of <code>String</code> 
+     *			objects containing the names of the filter's 
+     *			initialization parameters
+     *
+     *
+     *
+     */
+
+    public Enumeration getInitParameterNames();
+
+
+
+
 }

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/GenericServlet.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/GenericServlet.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/GenericServlet.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,272 +1,324 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
 import java.io.IOException;
 import java.util.Enumeration;
-import java.util.ResourceBundle;
 
 /**
- * Defines a generic, protocol-independent servlet. To write an HTTP servlet for
- * use on the Web, extend {@link javax.servlet.http.HttpServlet} instead.
- * <p>
- * <code>GenericServlet</code> implements the <code>Servlet</code> and
- * <code>ServletConfig</code> interfaces. <code>GenericServlet</code> may be
- * directly extended by a servlet, although it's more common to extend a
- * protocol-specific subclass such as <code>HttpServlet</code>.
- * <p>
- * <code>GenericServlet</code> makes writing servlets easier. It provides
- * simple versions of the lifecycle methods <code>init</code> and
- * <code>destroy</code> and of the methods in the <code>ServletConfig</code>
- * interface. <code>GenericServlet</code> also implements the <code>log</code>
- * method, declared in the <code>ServletContext</code> interface.
- * <p>
- * To write a generic servlet, you need only override the abstract
- * <code>service</code> method.
- * 
- * @author Various
+ *
+ * Defines a generic, protocol-independent
+ * servlet. To write an HTTP servlet for use on the
+ * Web, extend {@link javax.servlet.http.HttpServlet} instead.
+ *
+ * <p><code>GenericServlet</code> implements the <code>Servlet</code>
+ * and <code>ServletConfig</code> interfaces. <code>GenericServlet</code>
+ * may be directly extended by a servlet, although it's more common to extend
+ * a protocol-specific subclass such as <code>HttpServlet</code>.
+ *
+ * <p><code>GenericServlet</code> makes writing servlets
+ * easier. It provides simple versions of the lifecycle methods 
+ * <code>init</code> and <code>destroy</code> and of the methods 
+ * in the <code>ServletConfig</code> interface. <code>GenericServlet</code>
+ * also implements the <code>log</code> method, declared in the
+ * <code>ServletContext</code> interface. 
+ *
+ * <p>To write a generic servlet, you need only
+ * override the abstract <code>service</code> method. 
+ *
+ *
+ * @author 	Various
+ * @version 	$Version$
+ *
+ *
+ *
  */
 
-public abstract class GenericServlet implements Servlet, ServletConfig, java.io.Serializable
+ 
+public abstract class GenericServlet 
+    implements Servlet, ServletConfig, java.io.Serializable
 {
-   private static final String LSTRING_FILE = "javax.servlet.LocalStrings";
 
-   private static ResourceBundle lStrings = ResourceBundle.getBundle(LSTRING_FILE);
+    private transient ServletConfig config;
+    
 
-   private transient ServletConfig config;
+    /**
+     *
+     * Does nothing. All of the servlet initialization
+     * is done by one of the <code>init</code> methods.
+     *
+     */
 
+    public GenericServlet() { }
+    
+    
+    
    /**
-    * Does nothing. All of the servlet initialization is done by one of the
-    * <code>init</code> methods.
-    */
-   public GenericServlet()
-   {
-   }
+     * Called by the servlet container to indicate to a servlet that the
+     * servlet is being taken out of service.  See {@link Servlet#destroy}.
+     *
+     * 
+     */
 
-   /**
-    * Called by the servlet container to indicate to a servlet that the servlet
-    * is being taken out of service. See {@link Servlet#destroy}.
-    */
-   public void destroy()
-   {
-   }
+    public void destroy() {
+    }
+    
+    
+    
+    /**
+     * Returns a <code>String</code> containing the value of the named
+     * initialization parameter, or <code>null</code> if the parameter does
+     * not exist.  See {@link ServletConfig#getInitParameter}.
+     *
+     * <p>This method is supplied for convenience. It gets the 
+     * value of the named parameter from the servlet's 
+     * <code>ServletConfig</code> object.
+     *
+     * @param name 		a <code>String</code> specifying the name 
+     *				of the initialization parameter
+     *
+     * @return String 		a <code>String</code> containing the value
+     *				of the initialization parameter
+     *
+     */ 
 
+    public String getInitParameter(String name) {
+	return getServletConfig().getInitParameter(name);
+    }
+    
+    
+
    /**
-    * Returns a <code>String</code> containing the value of the named
-    * initialization parameter, or <code>null</code> if the parameter does not
-    * exist. See {@link ServletConfig#getInitParameter}.
-    * <p>
-    * This method is supplied for convenience. It gets the value of the named
-    * parameter from the servlet's <code>ServletConfig</code> object.
-    * 
-    * @param name
-    *           a <code>String</code> specifying the name of the
-    *           initialization parameter
-    * @return String a <code>String</code> containing the value of the
-    *         initialization parameter
+    * Returns the names of the servlet's initialization parameters 
+    * as an <code>Enumeration</code> of <code>String</code> objects,
+    * or an empty <code>Enumeration</code> if the servlet has no
+    * initialization parameters.  See {@link
+    * ServletConfig#getInitParameterNames}.
+    *
+    * <p>This method is supplied for convenience. It gets the 
+    * parameter names from the servlet's <code>ServletConfig</code> object. 
+    *
+    *
+    * @return Enumeration 	an enumeration of <code>String</code>
+    *				objects containing the names of 
+    *				the servlet's initialization parameters
+    *
     */
-   public String getInitParameter(String name)
-   {
-      ServletConfig sc = getServletConfig();
-      if (sc == null)
-      {
-         throw new IllegalStateException(lStrings.getString("err.servlet_config_not_initialized"));
-      }
 
-      return sc.getInitParameter(name);
-   }
+    public Enumeration getInitParameterNames() {
+	return getServletConfig().getInitParameterNames();
+    }   
+    
+     
+ 
+     
 
-   /**
-    * Returns the names of the servlet's initialization parameters as an
-    * <code>Enumeration</code> of <code>String</code> objects, or an empty
-    * <code>Enumeration</code> if the servlet has no initialization
-    * parameters. See {@link ServletConfig#getInitParameterNames}.
-    * <p>
-    * This method is supplied for convenience. It gets the parameter names from
-    * the servlet's <code>ServletConfig</code> object.
-    * 
-    * @return Enumeration an enumeration of <code>String</code> objects
-    *         containing the names of the servlet's initialization parameters
-    */
-   public Enumeration getInitParameterNames()
-   {
-      ServletConfig sc = getServletConfig();
-      if (sc == null)
-      {
-         throw new IllegalStateException(lStrings.getString("err.servlet_config_not_initialized"));
-      }
+    /**
+     * Returns this servlet's {@link ServletConfig} object.
+     *
+     * @return ServletConfig 	the <code>ServletConfig</code> object
+     *				that initialized this servlet
+     *
+     */
+    
+    public ServletConfig getServletConfig() {
+	return config;
+    }
+    
+    
+ 
+    
+    /**
+     * Returns a reference to the {@link ServletContext} in which this servlet
+     * is running.  See {@link ServletConfig#getServletContext}.
+     *
+     * <p>This method is supplied for convenience. It gets the 
+     * context from the servlet's <code>ServletConfig</code> object.
+     *
+     *
+     * @return ServletContext 	the <code>ServletContext</code> object
+     *				passed to this servlet by the <code>init</code>
+     *				method
+     *
+     */
 
-      return sc.getInitParameterNames();
-   }
+    public ServletContext getServletContext() {
+	return getServletConfig().getServletContext();
+    }
 
-   /**
-    * Returns this servlet's {@link ServletConfig} object.
-    * 
-    * @return ServletConfig the <code>ServletConfig</code> object that
-    *         initialized this servlet
-    */
-   public ServletConfig getServletConfig()
-   {
-      return config;
-   }
 
-   /**
-    * Returns a reference to the {@link ServletContext} in which this servlet is
-    * running. See {@link ServletConfig#getServletContext}.
-    * <p>
-    * This method is supplied for convenience. It gets the context from the
-    * servlet's <code>ServletConfig</code> object.
-    * 
-    * @return ServletContext the <code>ServletContext</code> object passed to
-    *         this servlet by the <code>init</code> method
-    */
-   public ServletContext getServletContext()
-   {
-      ServletConfig sc = getServletConfig();
-      if (sc == null)
-      {
-         throw new IllegalStateException(lStrings.getString("err.servlet_config_not_initialized"));
-      }
 
-      return sc.getServletContext();
-   }
+ 
 
-   /**
-    * Returns information about the servlet, such as author, version, and
-    * copyright. By default, this method returns an empty string. Override this
-    * method to have it return a meaningful value. See {@link
-    * Servlet#getServletInfo}.
-    * 
-    * @return String information about this servlet, by default an empty string
-    */
-   public String getServletInfo()
-   {
-      return "";
-   }
+    /**
+     * Returns information about the servlet, such as 
+     * author, version, and copyright. 
+     * By default, this method returns an empty string.  Override this method
+     * to have it return a meaningful value.  See {@link
+     * Servlet#getServletInfo}.
+     *
+     *
+     * @return String 		information about this servlet, by default an
+     * 				empty string
+     *
+     */
+    
+    public String getServletInfo() {
+	return "";
+    }
 
-   /**
-    * Called by the servlet container to indicate to a servlet that the servlet
-    * is being placed into service. See {@link Servlet#init}.
-    * <p>
-    * This implementation stores the {@link ServletConfig} object it receives
-    * from the servlet container for later use. When overriding this form of the
-    * method, call <code>super.init(config)</code>.
-    * 
-    * @param config
-    *           the <code>ServletConfig</code> object that contains
-    *           configutation information for this servlet
-    * @exception ServletException
-    *               if an exception occurs that interrupts the servlet's normal
-    *               operation
-    * @see UnavailableException
-    */
-   public void init(ServletConfig config) throws ServletException
-   {
-      this.config = config;
-      this.init();
-   }
 
-   /**
-    * A convenience method which can be overridden so that there's no need to
-    * call <code>super.init(config)</code>.
-    * <p>
-    * Instead of overriding {@link #init(ServletConfig)}, simply override this
-    * method and it will be called by
-    * <code>GenericServlet.init(ServletConfig config)</code>. The
-    * <code>ServletConfig</code> object can still be retrieved via {@link
-    * #getServletConfig}.
-    * 
-    * @exception ServletException
-    *               if an exception occurs that interrupts the servlet's normal
-    *               operation
-    */
-   public void init() throws ServletException
-   {
 
-   }
 
-   /**
-    * Writes the specified message to a servlet log file, prepended by the
-    * servlet's name. See {@link ServletContext#log(String)}.
-    * 
-    * @param msg
-    *           a <code>String</code> specifying the message to be written to
-    *           the log file
-    */
-   public void log(String msg)
-   {
-      getServletContext().log(getServletName() + ": " + msg);
-   }
+    /**
+     *
+     * Called by the servlet container to indicate to a servlet that the
+     * servlet is being placed into service.  See {@link Servlet#init}.
+     *
+     * <p>This implementation stores the {@link ServletConfig}
+     * object it receives from the servlet container for later use.
+     * When overriding this form of the method, call 
+     * <code>super.init(config)</code>.
+     *
+     * @param config 			the <code>ServletConfig</code> object
+     *					that contains configutation
+     *					information for this servlet
+     *
+     * @exception ServletException 	if an exception occurs that
+     *					interrupts the servlet's normal
+     *					operation
+     *
+     * 
+     * @see 				UnavailableException
+     *
+     */
 
-   /**
-    * Writes an explanatory message and a stack trace for a given
-    * <code>Throwable</code> exception to the servlet log file, prepended by
-    * the servlet's name. See {@link ServletContext#log(String, Throwable)}.
-    * 
-    * @param message
-    *           a <code>String</code> that describes the error or exception
-    * @param t
-    *           the <code>java.lang.Throwable</code> error or exception
-    */
-   public void log(String message, Throwable t)
-   {
-      getServletContext().log(getServletName() + ": " + message, t);
-   }
+    public void init(ServletConfig config) throws ServletException {
+	this.config = config;
+	this.init();
+    }
 
-   /**
-    * Called by the servlet container to allow the servlet to respond to a
-    * request. See {@link Servlet#service}.
-    * <p>
-    * This method is declared abstract so subclasses, such as
-    * <code>HttpServlet</code>, must override it.
-    * 
-    * @param req
-    *           the <code>ServletRequest</code> object that contains the
-    *           client's request
-    * @param res
-    *           the <code>ServletResponse</code> object that will contain the
-    *           servlet's response
-    * @exception ServletException
-    *               if an exception occurs that interferes with the servlet's
-    *               normal operation occurred
-    * @exception IOException
-    *               if an input or output exception occurs
-    */
-   public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;
 
-   /**
-    * Returns the name of this servlet instance. See
-    * {@link ServletConfig#getServletName}.
-    * 
-    * @return the name of this servlet instance
-    */
-   public String getServletName()
-   {
-      ServletConfig sc = getServletConfig();
-      if (sc == null)
-      {
-         throw new IllegalStateException(lStrings.getString("err.servlet_config_not_initialized"));
-      }
 
-      return sc.getServletName();
-   }
+
+
+    /**
+     *
+     * A convenience method which can be overridden so that there's no need
+     * to call <code>super.init(config)</code>.
+     *
+     * <p>Instead of overriding {@link #init(ServletConfig)}, simply override
+     * this method and it will be called by
+     * <code>GenericServlet.init(ServletConfig config)</code>.
+     * The <code>ServletConfig</code> object can still be retrieved via {@link
+     * #getServletConfig}. 
+     *
+     * @exception ServletException 	if an exception occurs that
+     *					interrupts the servlet's
+     *					normal operation
+     *
+     */
+    
+    public void init() throws ServletException {
+
+    }
+    
+
+
+
+    /**
+     * 
+     * Writes the specified message to a servlet log file, prepended by the
+     * servlet's name.  See {@link ServletContext#log(String)}.
+     *
+     * @param msg 	a <code>String</code> specifying
+     *			the message to be written to the log file
+     *
+     */
+     
+    public void log(String msg) {
+	getServletContext().log(getServletName() + ": "+ msg);
+    }
+   
+   
+   
+   
+    /**
+     * Writes an explanatory message and a stack trace
+     * for a given <code>Throwable</code> exception
+     * to the servlet log file, prepended by the servlet's name.
+     * See {@link ServletContext#log(String, Throwable)}.
+     *
+     *
+     * @param message 		a <code>String</code> that describes
+     *				the error or exception
+     *
+     * @param t			the <code>java.lang.Throwable</code> error
+     * 				or exception
+     *
+     *
+     */
+   
+    public void log(String message, Throwable t) {
+	getServletContext().log(getServletName() + ": " + message, t);
+    }
+    
+    
+    
+    /**
+     * Called by the servlet container to allow the servlet to respond to
+     * a request.  See {@link Servlet#service}.
+     * 
+     * <p>This method is declared abstract so subclasses, such as 
+     * <code>HttpServlet</code>, must override it.
+     *
+     *
+     *
+     * @param req 	the <code>ServletRequest</code> object
+     *			that contains the client's request
+     *
+     * @param res 	the <code>ServletResponse</code> object
+     *			that will contain the servlet's response
+     *
+     * @exception ServletException 	if an exception occurs that
+     *					interferes with the servlet's
+     *					normal operation occurred
+     *
+     * @exception IOException 		if an input or output
+     *					exception occurs
+     *
+     */
+
+    public abstract void service(ServletRequest req, ServletResponse res)
+	throws ServletException, IOException;
+    
+
+
+    /**
+     * Returns the name of this servlet instance.
+     * See {@link ServletConfig#getServletName}.
+     *
+     * @return          the name of this servlet instance
+     *
+     *
+     *
+     */
+
+    public String getServletName() {
+        return config.getServletName();
+    }
 }

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/LocalStrings.properties
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/LocalStrings.properties	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/LocalStrings.properties	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,3 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 # Default localized string information
 # Localized for Locale en_US
 
@@ -2,3 +17,2 @@
 err.not_iso8859_1=Not an ISO 8859-1 character: {0}
-err.servlet_config_not_initialized=ServletConfig has not been initialized
 value.true=true

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/LocalStrings_fr.properties
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/LocalStrings_fr.properties	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/LocalStrings_fr.properties	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,3 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 # Default localized string information
 # Localized for Locale fr_FR
 

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/LocalStrings_ja.properties
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/LocalStrings_ja.properties	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/LocalStrings_ja.properties	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,3 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 # Default localized string information
 # Localized for Locale ja_JP
 

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/RequestDispatcher.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/RequestDispatcher.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/RequestDispatcher.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,111 +1,139 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
+
+import java.io.IOException;
+
+
+/**
+ * Defines an object that receives requests from the client
+ * and sends them to any resource (such as a servlet, 
+ * HTML file, or JSP file) on the server. The servlet
+ * container creates the <code>RequestDispatcher</code> object,
+ * which is used as a wrapper around a server resource located
+ * at a particular path or given by a particular name.
  *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * <p>This interface is intended to wrap servlets,
+ * but a servlet container can create <code>RequestDispatcher</code>
+ * objects to wrap any type of resource.
  *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * @author 	Various
+ * @version 	$Version$
  *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * @see 	ServletContext#getRequestDispatcher(java.lang.String)
+ * @see 	ServletContext#getNamedDispatcher(java.lang.String)
+ * @see 	ServletRequest#getRequestDispatcher(java.lang.String)
+ *
  */
-package javax.servlet;
+ 
+public interface RequestDispatcher {
 
-import java.io.IOException;
 
+
+
+
 /**
- * Defines an object that receives requests from the client and sends them to
- * any resource (such as a servlet, HTML file, or JSP file) on the server. The
- * servlet container creates the <code>RequestDispatcher</code> object, which
- * is used as a wrapper around a server resource located at a particular path or
- * given by a particular name.
- * <p>
- * This interface is intended to wrap servlets, but a servlet container can
- * create <code>RequestDispatcher</code> objects to wrap any type of resource.
- * 
- * @author Various
- * @see ServletContext#getRequestDispatcher(java.lang.String)
- * @see ServletContext#getNamedDispatcher(java.lang.String)
- * @see ServletRequest#getRequestDispatcher(java.lang.String)
+ * Forwards a request from
+ * a servlet to another resource (servlet, JSP file, or
+ * HTML file) on the server. This method allows
+ * one servlet to do preliminary processing of
+ * a request and another resource to generate
+ * the response.
+ *
+ * <p>For a <code>RequestDispatcher</code> obtained via 
+ * <code>getRequestDispatcher()</code>, the <code>ServletRequest</code> 
+ * object has its path elements and parameters adjusted to match
+ * the path of the target resource.
+ *
+ * <p><code>forward</code> should be called before the response has been 
+ * committed to the client (before response body output has been flushed).  
+ * If the response already has been committed, this method throws
+ * an <code>IllegalStateException</code>.
+ * Uncommitted output in the response buffer is automatically cleared 
+ * before the forward.
+ *
+ * <p>The request and response parameters must be either the same
+ * objects as were passed to the calling servlet's service method or be
+ * subclasses of the {@link ServletRequestWrapper} or {@link ServletResponseWrapper} classes
+ * that wrap them.
+ *
+ *
+ * @param request		a {@link ServletRequest} object
+ *				that represents the request the client
+ * 				makes of the servlet
+ *
+ * @param response		a {@link ServletResponse} object
+ *				that represents the response the servlet
+ *				returns to the client
+ *
+ * @exception ServletException	if the target resource throws this exception
+ *
+ * @exception IOException	if the target resource throws this exception
+ *
+ * @exception IllegalStateException	if the response was already committed
+ *
  */
 
-public interface RequestDispatcher
-{
+    public void forward(ServletRequest request, ServletResponse response)
+	throws ServletException, IOException;
 
-   /**
-    * Forwards a request from a servlet to another resource (servlet, JSP file,
-    * or HTML file) on the server. This method allows one servlet to do
-    * preliminary processing of a request and another resource to generate the
-    * response.
-    * <p>
-    * For a <code>RequestDispatcher</code> obtained via
-    * <code>getRequestDispatcher()</code>, the <code>ServletRequest</code>
-    * object has its path elements and parameters adjusted to match the path of
-    * the target resource.
-    * <p>
-    * <code>forward</code> should be called before the response has been
-    * committed to the client (before response body output has been flushed). If
-    * the response already has been committed, this method throws an
-    * <code>IllegalStateException</code>. Uncommitted output in the response
-    * buffer is automatically cleared before the forward.
-    * <p>
-    * The request and response parameters must be either the same objects as
-    * were passed to the calling servlet's service method or be subclasses of
-    * the {@link ServletRequestWrapper} or {@link ServletResponseWrapper}
-    * classes that wrap them.
-    * 
-    * @param request
-    *           a {@link ServletRequest} object that represents the request the
-    *           client makes of the servlet
-    * @param response
-    *           a {@link ServletResponse} object that represents the response
-    *           the servlet returns to the client
-    * @exception ServletException
-    *               if the target resource throws this exception
-    * @exception IOException
-    *               if the target resource throws this exception
-    * @exception IllegalStateException
-    *               if the response was already committed
-    */
 
-   public void forward(ServletRequest request, ServletResponse response) throws ServletException, IOException;
 
-   /**
-    * Includes the content of a resource (servlet, JSP page, HTML file) in the
-    * response. In essence, this method enables programmatic server-side
-    * includes.
-    * <p>
-    * The {@link ServletResponse} object has its path elements and parameters
-    * remain unchanged from the caller's. The included servlet cannot change the
-    * response status code or set headers; any attempt to make a change is
-    * ignored.
-    * <p>
-    * The request and response parameters must be either the same objects as
-    * were passed to the calling servlet's service method or be subclasses of
-    * the {@link ServletRequestWrapper} or {@link ServletResponseWrapper}
-    * classes that wrap them.
-    * 
-    * @param request
-    *           a {@link ServletRequest} object that contains the client's
-    *           request
-    * @param response
-    *           a {@link ServletResponse} object that contains the servlet's
-    *           response
-    * @exception ServletException
-    *               if the included resource throws this exception
-    * @exception IOException
-    *               if the included resource throws this exception
-    */
 
-   public void include(ServletRequest request, ServletResponse response) throws ServletException, IOException;
+    /**
+     *
+     * Includes the content of a resource (servlet, JSP page,
+     * HTML file) in the response. In essence, this method enables 
+     * programmatic server-side includes.
+     *
+     * <p>The {@link ServletResponse} object has its path elements
+     * and parameters remain unchanged from the caller's. The included
+     * servlet cannot change the response status code or set headers;
+     * any attempt to make a change is ignored.
+     *
+     * <p>The request and response parameters must be either the same
+     * objects as were passed to the calling servlet's service method or be
+     * subclasses of the {@link ServletRequestWrapper} or {@link ServletResponseWrapper} classes
+     * that wrap them.
+     * 
+     *
+     *
+     * @param request 			a {@link ServletRequest} object 
+     *					that contains the client's request
+     *
+     * @param response 			a {@link ServletResponse} object 
+     * 					that contains the servlet's response
+     *
+     * @exception ServletException 	if the included resource throws this exception
+     *
+     * @exception IOException 		if the included resource throws this exception
+     *
+     *
+     */
+     
+    public void include(ServletRequest request, ServletResponse response)
+	throws ServletException, IOException;
 }
+
+
+
+
+
+
+
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/Servlet.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/Servlet.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/Servlet.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,165 +1,193 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
 import java.io.IOException;
 
+
 /**
  * Defines methods that all servlets must implement.
- * <p>
- * A servlet is a small Java program that runs within a Web server. Servlets
- * receive and respond to requests from Web clients, usually across HTTP, the
- * HyperText Transfer Protocol.
- * <p>
- * To implement this interface, you can write a generic servlet that extends
- * <code>javax.servlet.GenericServlet</code> or an HTTP servlet that extends
- * <code>javax.servlet.http.HttpServlet</code>.
- * <p>
- * This interface defines methods to initialize a servlet, to service requests,
- * and to remove a servlet from the server. These are known as life-cycle
- * methods and are called in the following sequence:
+ *
+ * <p>A servlet is a small Java program that runs within a Web server.
+ * Servlets receive and respond to requests from Web clients,
+ * usually across HTTP, the HyperText Transfer Protocol. 
+ *
+ * <p>To implement this interface, you can write a generic servlet
+ * that extends
+ * <code>javax.servlet.GenericServlet</code> or an HTTP servlet that
+ * extends <code>javax.servlet.http.HttpServlet</code>.
+ *
+ * <p>This interface defines methods to initialize a servlet,
+ * to service requests, and to remove a servlet from the server.
+ * These are known as life-cycle methods and are called in the
+ * following sequence:
  * <ol>
- * <li>The servlet is constructed, then initialized with the <code>init</code>
- * method.</li>
- * <li>Any calls from clients to the <code>service</code> method are handled.</li>
- * <li>The servlet is taken out of service, then destroyed with the
- * <code>destroy</code> method, then garbage collected and finalized.</li>
+ * <li>The servlet is constructed, then initialized with the <code>init</code> method.
+ * <li>Any calls from clients to the <code>service</code> method are handled.
+ * <li>The servlet is taken out of service, then destroyed with the 
+ * <code>destroy</code> method, then garbage collected and finalized.
  * </ol>
- * <p>
- * In addition to the life-cycle methods, this interface provides the
- * <code>getServletConfig</code> method, which the servlet can use to get any
- * startup information, and the <code>getServletInfo</code> method, which
- * allows the servlet to return basic information about itself, such as author,
- * version, and copyright.
- * 
- * @author Various
- * @see GenericServlet
- * @see javax.servlet.http.HttpServlet
+ *
+ * <p>In addition to the life-cycle methods, this interface
+ * provides the <code>getServletConfig</code> method, which the servlet 
+ * can use to get any startup information, and the <code>getServletInfo</code>
+ * method, which allows the servlet to return basic information about itself,
+ * such as author, version, and copyright.
+ *
+ * @author 	Various
+ * @version 	$Version$
+ *
+ * @see 	GenericServlet
+ * @see 	javax.servlet.http.HttpServlet
+ *
  */
 
-public interface Servlet
-{
 
-   /**
-    * Called by the servlet container to indicate to a servlet that the servlet
-    * is being placed into service.
-    * <p>
-    * The servlet container calls the <code>init</code> method exactly once
-    * after instantiating the servlet. The <code>init</code> method must
-    * complete successfully before the servlet can receive any requests.
-    * <p>
-    * The servlet container cannot place the servlet into service if the
-    * <code>init</code> method
-    * <ol>
-    * <li>Throws a <code>ServletException</code></li>
-    * <li>Does not return within a time period defined by the Web server</li>
-    * </ol>
-    * 
-    * @param config
-    *           a <code>ServletConfig</code> object containing the servlet's
-    *           configuration and initialization parameters
-    * @exception ServletException
-    *               if an exception has occurred that interferes with the
-    *               servlet's normal operation
-    * @see UnavailableException
-    * @see #getServletConfig
-    */
+public interface Servlet {
 
-   public void init(ServletConfig config) throws ServletException;
+    /**
+     * Called by the servlet container to indicate to a servlet that the 
+     * servlet is being placed into service.
+     *
+     * <p>The servlet container calls the <code>init</code>
+     * method exactly once after instantiating the servlet.
+     * The <code>init</code> method must complete successfully
+     * before the servlet can receive any requests.
+     *
+     * <p>The servlet container cannot place the servlet into service
+     * if the <code>init</code> method
+     * <ol>
+     * <li>Throws a <code>ServletException</code>
+     * <li>Does not return within a time period defined by the Web server
+     * </ol>
+     *
+     *
+     * @param config			a <code>ServletConfig</code> object 
+     *					containing the servlet's
+     * 					configuration and initialization parameters
+     *
+     * @exception ServletException 	if an exception has occurred that
+     *					interferes with the servlet's normal
+     *					operation
+     *
+     * @see 				UnavailableException
+     * @see 				#getServletConfig
+     *
+     */
 
-   /**
-    * Returns a {@link ServletConfig} object, which contains initialization and
-    * startup parameters for this servlet. The <code>ServletConfig</code>
-    * object returned is the one passed to the <code>init</code> method.
-    * <p>
-    * Implementations of this interface are responsible for storing the
-    * <code>ServletConfig</code> object so that this method can return it. The
-    * {@link GenericServlet} class, which implements this interface, already
-    * does this.
-    * 
-    * @return the <code>ServletConfig</code> object that initializes this
-    *         servlet
-    * @see #init
-    */
+    public void init(ServletConfig config) throws ServletException;
+    
+    
 
-   public ServletConfig getServletConfig();
+    /**
+     *
+     * Returns a {@link ServletConfig} object, which contains
+     * initialization and startup parameters for this servlet.
+     * The <code>ServletConfig</code> object returned is the one 
+     * passed to the <code>init</code> method. 
+     *
+     * <p>Implementations of this interface are responsible for storing the 
+     * <code>ServletConfig</code> object so that this 
+     * method can return it. The {@link GenericServlet}
+     * class, which implements this interface, already does this.
+     *
+     * @return		the <code>ServletConfig</code> object
+     *			that initializes this servlet
+     *
+     * @see 		#init
+     *
+     */
 
-   /**
-    * Called by the servlet container to allow the servlet to respond to a
-    * request.
-    * <p>
-    * This method is only called after the servlet's <code>init()</code>
-    * method has completed successfully.
-    * <p>
-    * The status code of the response always should be set for a servlet that
-    * throws or sends an error.
-    * <p>
-    * Servlets typically run inside multithreaded servlet containers that can
-    * handle multiple requests concurrently. Developers must be aware to
-    * synchronize access to any shared resources such as files, network
-    * connections, and as well as the servlet's class and instance variables.
-    * More information on multithreaded programming in Java is available in <a
-    * href="http://java.sun.com/Series/Tutorial/java/threads/multithreaded.html">
-    * the Java tutorial on multi-threaded programming</a>.
-    * 
-    * @param req
-    *           the <code>ServletRequest</code> object that contains the
-    *           client's request
-    * @param res
-    *           the <code>ServletResponse</code> object that contains the
-    *           servlet's response
-    * @exception ServletException
-    *               if an exception occurs that interferes with the servlet's
-    *               normal operation
-    * @exception IOException
-    *               if an input or output exception occurs
-    */
+    public ServletConfig getServletConfig();
+    
+    
 
-   public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;
+    /**
+     * Called by the servlet container to allow the servlet to respond to 
+     * a request.
+     *
+     * <p>This method is only called after the servlet's <code>init()</code>
+     * method has completed successfully.
+     * 
+     * <p>  The status code of the response always should be set for a servlet 
+     * that throws or sends an error.
+     *
+     * 
+     * <p>Servlets typically run inside multithreaded servlet containers
+     * that can handle multiple requests concurrently. Developers must 
+     * be aware to synchronize access to any shared resources such as files,
+     * network connections, and as well as the servlet's class and instance 
+     * variables. 
+     * More information on multithreaded programming in Java is available in 
+     * <a href="http://java.sun.com/Series/Tutorial/java/threads/multithreaded.html">
+     * the Java tutorial on multi-threaded programming</a>.
+     *
+     *
+     * @param req 	the <code>ServletRequest</code> object that contains
+     *			the client's request
+     *
+     * @param res 	the <code>ServletResponse</code> object that contains
+     *			the servlet's response
+     *
+     * @exception ServletException 	if an exception occurs that interferes
+     *					with the servlet's normal operation 
+     *
+     * @exception IOException 		if an input or output exception occurs
+     *
+     */
 
-   /**
-    * Returns information about the servlet, such as author, version, and
-    * copyright.
-    * <p>
-    * The string that this method returns should be plain text and not markup of
-    * any kind (such as HTML, XML, etc.).
-    * 
-    * @return a <code>String</code> containing servlet information
-    */
+    public void service(ServletRequest req, ServletResponse res)
+	throws ServletException, IOException;
+	
+	
 
-   public String getServletInfo();
+    /**
+     * Returns information about the servlet, such
+     * as author, version, and copyright.
+     * 
+     * <p>The string that this method returns should
+     * be plain text and not markup of any kind (such as HTML, XML,
+     * etc.).
+     *
+     * @return 		a <code>String</code> containing servlet information
+     *
+     */
 
-   /**
-    * Called by the servlet container to indicate to a servlet that the servlet
-    * is being taken out of service. This method is only called once all threads
-    * within the servlet's <code>service</code> method have exited or after a
-    * timeout period has passed. After the servlet container calls this method,
-    * it will not call the <code>service</code> method again on this servlet.
-    * <p>
-    * This method gives the servlet an opportunity to clean up any resources
-    * that are being held (for example, memory, file handles, threads) and make
-    * sure that any persistent state is synchronized with the servlet's current
-    * state in memory.
-    */
+    public String getServletInfo();
+    
+    
 
-   public void destroy();
+    /**
+     *
+     * Called by the servlet container to indicate to a servlet that the
+     * servlet is being taken out of service.  This method is
+     * only called once all threads within the servlet's
+     * <code>service</code> method have exited or after a timeout
+     * period has passed. After the servlet container calls this 
+     * method, it will not call the <code>service</code> method again
+     * on this servlet.
+     *
+     * <p>This method gives the servlet an opportunity 
+     * to clean up any resources that are being held (for example, memory,
+     * file handles, threads) and make sure that any persistent state is
+     * synchronized with the servlet's current state in memory.
+     *
+     */
+
+    public void destroy();
 }

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletConfig.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletConfig.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletConfig.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,82 +1,95 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
 import java.util.Enumeration;
 
+
+
 /**
- * A servlet configuration object used by a servlet container to pass
- * information to a servlet during initialization.
+ * 
+ * A servlet configuration object used by a servlet container
+ * to pass information to a servlet during initialization. 
+ *
  */
+ 
+public interface ServletConfig {
+    
 
-public interface ServletConfig
-{
+    /**
+     * Returns the name of this servlet instance.
+     * The name may be provided via server administration, assigned in the 
+     * web application deployment descriptor, or for an unregistered (and thus
+     * unnamed) servlet instance it will be the servlet's class name.
+     *
+     * @return		the name of the servlet instance
+     *
+     *
+     *
+     */
 
-   /**
-    * Returns the name of this servlet instance. The name may be provided via
-    * server administration, assigned in the web application deployment
-    * descriptor, or for an unregistered (and thus unnamed) servlet instance it
-    * will be the servlet's class name.
-    * 
-    * @return the name of the servlet instance
-    */
+    public String getServletName();
 
-   public String getServletName();
+    /**
+     * Returns a reference to the {@link ServletContext} in which the caller
+     * is executing.
+     *
+     *
+     * @return		a {@link ServletContext} object, used
+     *			by the caller to interact with its servlet 
+     *                  container
+     * 
+     * @see		ServletContext
+     *
+     */
 
-   /**
-    * Returns a reference to the {@link ServletContext} in which the caller is
-    * executing.
-    * 
-    * @return a {@link ServletContext} object, used by the caller to interact
-    *         with its servlet container
-    * @see ServletContext
-    */
+    public ServletContext getServletContext();
+    
+    /**
+     * Returns a <code>String</code> containing the value of the 
+     * named initialization parameter, or <code>null</code> if 
+     * the parameter does not exist.
+     *
+     * @param name	a <code>String</code> specifying the name
+     *			of the initialization parameter
+     *
+     * @return		a <code>String</code> containing the value 
+     *			of the initialization parameter
+     *
+     */
 
-   public ServletContext getServletContext();
+    public String getInitParameter(String name);
 
-   /**
-    * Returns a <code>String</code> containing the value of the named
-    * initialization parameter, or <code>null</code> if the parameter does not
-    * exist.
-    * 
-    * @param name
-    *           a <code>String</code> specifying the name of the
-    *           initialization parameter
-    * @return a <code>String</code> containing the value of the initialization
-    *         parameter
-    */
 
-   public String getInitParameter(String name);
+    /**
+     * Returns the names of the servlet's initialization parameters
+     * as an <code>Enumeration</code> of <code>String</code> objects, 
+     * or an empty <code>Enumeration</code> if the servlet has
+     * no initialization parameters.
+     *
+     * @return		an <code>Enumeration</code> of <code>String</code> 
+     *			objects containing the names of the servlet's 
+     *			initialization parameters
+     *
+     *
+     *
+     */
 
-   /**
-    * Returns the names of the servlet's initialization parameters as an
-    * <code>Enumeration</code> of <code>String</code> objects, or an empty
-    * <code>Enumeration</code> if the servlet has no initialization
-    * parameters.
-    * 
-    * @return an <code>Enumeration</code> of <code>String</code> objects
-    *         containing the names of the servlet's initialization parameters
-    */
+    public Enumeration getInitParameterNames();
 
-   public Enumeration getInitParameterNames();
 
 }

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContext.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContext.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContext.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,24 +1,19 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
 import java.io.InputStream;
@@ -27,123 +22,122 @@
 import java.util.Enumeration;
 import java.util.Set;
 
+
 /**
- * Defines a set of methods that a servlet uses to communicate with its servlet
- * container, for example, to get the MIME type of a file, dispatch requests, or
- * write to a log file.
- * <p>
- * There is one context per "web application" per Java Virtual Machine. (A "web
- * application" is a collection of servlets and content installed under a
+ * 
+ * Defines a set of methods that a servlet uses to communicate with its
+ * servlet container, for example, to get the MIME type of a file, dispatch
+ * requests, or write to a log file.
+ *
+ * <p>There is one context per "web application" per Java Virtual Machine.  (A
+ * "web application" is a collection of servlets and content installed under a
  * specific subset of the server's URL namespace such as <code>/catalog</code>
- * and possibly installed via a <code>.war</code> file.)
- * <p>
- * In the case of a web application marked "distributed" in its deployment
- * descriptor, there will be one context instance for each virtual machine. In
- * this situation, the context cannot be used as a location to share global
- * information (because the information won't be truly global). Use an external
- * resource like a database instead.
- * <p>
- * The <code>ServletContext</code> object is contained within the
- * {@link ServletConfig} object, which the Web server provides the servlet when
- * the servlet is initialized.
- * 
- * @author Various
- * @see Servlet#getServletConfig
- * @see ServletConfig#getServletContext
+ * and possibly installed via a <code>.war</code> file.) 
+ *
+ * <p>In the case of a web
+ * application marked "distributed" in its deployment descriptor, there will
+ * be one context instance for each virtual machine.  In this situation, the 
+ * context cannot be used as a location to share global information (because
+ * the information won't be truly global).  Use an external resource like 
+ * a database instead.
+ *
+ * <p>The <code>ServletContext</code> object is contained within 
+ * the {@link ServletConfig} object, which the Web server provides the
+ * servlet when the servlet is initialized.
+ *
+ * @author 	Various
+ * @version 	$Version$
+ *
+ * @see 	Servlet#getServletConfig
+ * @see 	ServletConfig#getServletContext
+ *
  */
 
-public interface ServletContext
-{
+public interface ServletContext {
 
-   /**
-    * Returns the context path of the web application.
-    * <p>
-    * The context path is the portion of the request URI that is used to select
-    * the context of the request. The context path always comes first in a
-    * request URI. The path starts with a "/" character but does not end with a
-    * "/" character. For servlets in the default (root) context, this method
-    * returns "".
-    * <p>
-    * It is possible that a servlet container may match a context by more than
-    * one context path. In such cases the
-    * {@link javax.servlet.http.HttpServletRequest#getContextPath()} will return
-    * the actual context path used by the request and it may differ from the
-    * path returned by this method. The context path returned by this method
-    * should be considered as the prime or preferred context path of the
-    * application.
-    * 
-    * @return The context path of the web application, or "" for the default
-    *         (root) context
-    * @see javax.servlet.http.HttpServletRequest#getContextPath()
-    * @since Servlet 2.5
-    */
-   public String getContextPath();
 
-   /**
-    * Returns a <code>ServletContext</code> object that corresponds to a
-    * specified URL on the server.
-    * <p>
-    * This method allows servlets to gain access to the context for various
-    * parts of the server, and as needed obtain {@link RequestDispatcher}
-    * objects from the context. The given path must be begin with "/", is
-    * interpreted relative to the server's document root and is matched against
-    * the context roots of other web applications hosted on this container.
-    * <p>
-    * In a security conscious environment, the servlet container may return
-    * <code>null</code> for a given URL.
-    * 
-    * @param uripath
-    *           a <code>String</code> specifying the context path of another
-    *           web application in the container.
-    * @return the <code>ServletContext</code> object that corresponds to the
-    *         named URL, or null if either none exists or the container wishes
-    *         to restrict this access.
-    * @see RequestDispatcher
-    */
+    /**
+     * Returns a <code>ServletContext</code> object that 
+     * corresponds to a specified URL on the server.
+     *
+     * <p>This method allows servlets to gain
+     * access to the context for various parts of the server, and as
+     * needed obtain {@link RequestDispatcher} objects from the context.
+     * The given path must be begin with "/", is interpreted relative 
+     * to the server's document root and is matched against the context roots of
+     * other web applications hosted on this container.
+     * 
+     * <p>In a security conscious environment, the servlet container may
+     * return <code>null</code> for a given URL.
+     *       
+     * @param uripath 	a <code>String</code> specifying the context path of
+     *			another web application in the container.
+     * @return		the <code>ServletContext</code> object that
+     *			corresponds to the named URL, or null if either
+			none exists or the container wishes to restrict 
+     * 			this access.
+     *
+     * @see 		RequestDispatcher
+     *
+     */
 
-   public ServletContext getContext(String uripath);
+    public ServletContext getContext(String uripath);
+    
 
-   /**
-    * Returns the major version of the Java Servlet API that this servlet
-    * container supports. All implementations that comply with Version 2.5 must
-    * have this method return the integer 2.
-    * 
-    * @return 2
-    */
+    public String getContextPath();
 
-   public int getMajorVersion();
 
-   /**
-    * Returns the minor version of the Servlet API that this servlet container
-    * supports. All implementations that comply with Version 2.5 must have this
-    * method return the integer 5.
-    * 
-    * @return 5
-    */
+    /**
+     * Returns the major version of the Java Servlet API that this
+     * servlet container supports. All implementations that comply
+     * with Version 2.4 must have this method
+     * return the integer 2.
+     *
+     * @return 		2
+     *
+     */
+    
+    public int getMajorVersion();
+    
+    
 
-   public int getMinorVersion();
+    /**
+     * Returns the minor version of the Servlet API that this
+     * servlet container supports. All implementations that comply
+     * with Version 2.4 must have this method
+     * return the integer 4.
+     *
+     * @return 		4
+     *
+     */
 
-   /**
-    * Returns the MIME type of the specified file, or <code>null</code> if the
-    * MIME type is not known. The MIME type is determined by the configuration
-    * of the servlet container, and may be specified in a web application
-    * deployment descriptor. Common MIME types are <code>"text/html"</code>
-    * and <code>"image/gif"</code>.
-    * 
-    * @param file
-    *           a <code>String</code> specifying the name of a file
-    * @return a <code>String</code> specifying the file's MIME type
-    */
+    public int getMinorVersion();
+    
+    
 
-   public String getMimeType(String file);
+    /**
+     * Returns the MIME type of the specified file, or <code>null</code> if 
+     * the MIME type is not known. The MIME type is determined
+     * by the configuration of the servlet container, and may be specified
+     * in a web application deployment descriptor. Common MIME
+     * types are <code>"text/html"</code> and <code>"image/gif"</code>.
+     *
+     *
+     * @param   file    a <code>String</code> specifying the name
+     *			of a file
+     *
+     * @return 		a <code>String</code> specifying the file's MIME type
+     *
+     */
 
-   /**
-    * Returns a directory-like listing of all the paths to resources within the
-    * web application whose longest sub-path matches the supplied path argument.
-    * Paths indicating subdirectory paths end with a '/'. The returned paths are
-    * all relative to the root of the web application and have a leading '/'.
-    * For example, for a web application containing<br>
-    * <br>
+    public String getMimeType(String file);
+    
+    /**
+    * Returns a directory-like listing of all the paths to resources within the web application whose longest sub-path
+    * matches the supplied path argument. Paths indicating subdirectory paths end with a '/'. The returned paths are all 
+    * relative to the root of the web application and have a leading '/'. For example, for a web application 
+    * containing<br><br>
+
     * /welcome.html<br>
     * /catalog/index.html<br>
     * /catalog/products.html<br>
@@ -151,370 +145,502 @@
     * /catalog/offers/music.html<br>
     * /customer/login.jsp<br>
     * /WEB-INF/web.xml<br>
-    * /WEB-INF/classes/com.acme.OrderServlet.class,<br>
-    * <br>
-    * getResourcePaths("/") returns {"/welcome.html", "/catalog/", "/customer/",
-    * "/WEB-INF/"}<br>
-    * getResourcePaths("/catalog/") returns {"/catalog/index.html",
-    * "/catalog/products.html", "/catalog/offers/"}.<br>
-    * 
-    * @param path
-    *           the partial path used to match the resources, which must start
-    *           with a /
-    * @return a Set containing the directory listing, or null if there are no
-    *         resources in the web application whose path begins with the
-    *         supplied path.
+    * /WEB-INF/classes/com.acme.OrderServlet.class,<br><br>
+    *
+    * getResourcePaths("/") returns {"/welcome.html", "/catalog/", "/customer/", "/WEB-INF/"}<br>
+    * getResourcePaths("/catalog/") returns {"/catalog/index.html", "/catalog/products.html", "/catalog/offers/"}.<br>
+	   
+
+
+    *@param path		the partial path used to match the resources,
+    *				which must start with a /
+    *@return a Set containing the directory listing, or null if there are no resources in the web application whose path
+	* begins with the supplied path.
+
     * @since Servlet 2.3
     */
+    
+    public Set getResourcePaths(String path);
+    
+    
 
-   public Set getResourcePaths(String path);
+    /**
+     * Returns a URL to the resource that is mapped to a specified
+     * path. The path must begin with a "/" and is interpreted
+     * as relative to the current context root.
+     *
+     * <p>This method allows the servlet container to make a resource 
+     * available to servlets from any source. Resources 
+     * can be located on a local or remote
+     * file system, in a database, or in a <code>.war</code> file. 
+     *
+     * <p>The servlet container must implement the URL handlers
+     * and <code>URLConnection</code> objects that are necessary
+     * to access the resource.
+     *
+     * <p>This method returns <code>null</code>
+     * if no resource is mapped to the pathname.
+     *
+     * <p>Some containers may allow writing to the URL returned by
+     * this method using the methods of the URL class.
+     *
+     * <p>The resource content is returned directly, so be aware that 
+     * requesting a <code>.jsp</code> page returns the JSP source code.
+     * Use a <code>RequestDispatcher</code> instead to include results of 
+     * an execution.
+     *
+     * <p>This method has a different purpose than
+     * <code>java.lang.Class.getResource</code>,
+     * which looks up resources based on a class loader. This
+     * method does not use class loaders.
+     * 
+     * @param path 				a <code>String</code> specifying
+     *						the path to the resource
+     *
+     * @return 					the resource located at the named path,
+     * 						or <code>null</code> if there is no resource
+     *						at that path
+     *
+     * @exception MalformedURLException 	if the pathname is not given in 
+     * 						the correct form
+     *
+     */
+    
+    public URL getResource(String path) throws MalformedURLException;
+    
+    
 
-   /**
-    * Returns a URL to the resource that is mapped to a specified path. The path
-    * must begin with a "/" and is interpreted as relative to the current
-    * context root.
-    * <p>
-    * This method allows the servlet container to make a resource available to
-    * servlets from any source. Resources can be located on a local or remote
-    * file system, in a database, or in a <code>.war</code> file.
-    * <p>
-    * The servlet container must implement the URL handlers and
-    * <code>URLConnection</code> objects that are necessary to access the
-    * resource.
-    * <p>
-    * This method returns <code>null</code> if no resource is mapped to the
-    * pathname.
-    * <p>
-    * Some containers may allow writing to the URL returned by this method using
-    * the methods of the URL class.
-    * <p>
-    * The resource content is returned directly, so be aware that requesting a
-    * <code>.jsp</code> page returns the JSP source code. Use a
-    * <code>RequestDispatcher</code> instead to include results of an
-    * execution.
-    * <p>
-    * This method has a different purpose than
-    * <code>java.lang.Class.getResource</code>, which looks up resources
-    * based on a class loader. This method does not use class loaders.
-    * 
-    * @param path
-    *           a <code>String</code> specifying the path to the resource
-    * @return the resource located at the named path, or <code>null</code> if
-    *         there is no resource at that path
-    * @exception MalformedURLException
-    *               if the pathname is not given in the correct form
-    */
+    /**
+     * Returns the resource located at the named path as
+     * an <code>InputStream</code> object.
+     *
+     * <p>The data in the <code>InputStream</code> can be 
+     * of any type or length. The path must be specified according
+     * to the rules given in <code>getResource</code>.
+     * This method returns <code>null</code> if no resource exists at
+     * the specified path. 
+     * 
+     * <p>Meta-information such as content length and content type
+     * that is available via <code>getResource</code>
+     * method is lost when using this method.
+     *
+     * <p>The servlet container must implement the URL handlers
+     * and <code>URLConnection</code> objects necessary to access
+     * the resource.
+     *
+     * <p>This method is different from 
+     * <code>java.lang.Class.getResourceAsStream</code>,
+     * which uses a class loader. This method allows servlet containers 
+     * to make a resource available
+     * to a servlet from any location, without using a class loader.
+     * 
+     *
+     * @param path 	a <code>String</code> specifying the path
+     *			to the resource
+     *
+     * @return 		the <code>InputStream</code> returned to the 
+     *			servlet, or <code>null</code> if no resource
+     *			exists at the specified path 
+     *
+     *
+     */
 
-   public URL getResource(String path) throws MalformedURLException;
+    public InputStream getResourceAsStream(String path);
+    
 
-   /**
-    * Returns the resource located at the named path as an
-    * <code>InputStream</code> object.
-    * <p>
-    * The data in the <code>InputStream</code> can be of any type or length.
-    * The path must be specified according to the rules given in
-    * <code>getResource</code>. This method returns <code>null</code> if no
-    * resource exists at the specified path.
-    * <p>
-    * Meta-information such as content length and content type that is available
-    * via <code>getResource</code> method is lost when using this method.
-    * <p>
-    * The servlet container must implement the URL handlers and
-    * <code>URLConnection</code> objects necessary to access the resource.
-    * <p>
-    * This method is different from
-    * <code>java.lang.Class.getResourceAsStream</code>, which uses a class
-    * loader. This method allows servlet containers to make a resource available
-    * to a servlet from any location, without using a class loader.
-    * 
-    * @param path
-    *           a <code>String</code> specifying the path to the resource
-    * @return the <code>InputStream</code> returned to the servlet, or
-    *         <code>null</code> if no resource exists at the specified path
-    */
 
-   public InputStream getResourceAsStream(String path);
 
-   /**
-    * Returns a {@link RequestDispatcher} object that acts as a wrapper for the
-    * resource located at the given path. A <code>RequestDispatcher</code>
-    * object can be used to forward a request to the resource or to include the
-    * resource in a response. The resource can be dynamic or static.
-    * <p>
-    * The pathname must begin with a "/" and is interpreted as relative to the
-    * current context root. Use <code>getContext</code> to obtain a
-    * <code>RequestDispatcher</code> for resources in foreign contexts. This
-    * method returns <code>null</code> if the <code>ServletContext</code>
-    * cannot return a <code>RequestDispatcher</code>.
-    * 
-    * @param path
-    *           a <code>String</code> specifying the pathname to the resource
-    * @return a <code>RequestDispatcher</code> object that acts as a wrapper
-    *         for the resource at the specified path, or <code>null</code> if
-    *         the <code>ServletContext</code> cannot return a
-    *         <code>RequestDispatcher</code>
-    * @see RequestDispatcher
-    * @see ServletContext#getContext
-    */
+    /**
+     * 
+     * Returns a {@link RequestDispatcher} object that acts
+     * as a wrapper for the resource located at the given path.
+     * A <code>RequestDispatcher</code> object can be used to forward 
+     * a request to the resource or to include the resource in a response.
+     * The resource can be dynamic or static.
+     *
+     * <p>The pathname must begin with a "/" and is interpreted as relative
+     * to the current context root.  Use <code>getContext</code> to obtain
+     * a <code>RequestDispatcher</code> for resources in foreign contexts.
+     * This method returns <code>null</code> if the <code>ServletContext</code>
+     * cannot return a <code>RequestDispatcher</code>.
+     *
+     * @param path 	a <code>String</code> specifying the pathname
+     *			to the resource
+     *
+     * @return 		a <code>RequestDispatcher</code> object
+     *			that acts as a wrapper for the resource
+     *			at the specified path, or <code>null</code> if 
+     *			the <code>ServletContext</code> cannot return
+     *			a <code>RequestDispatcher</code>
+     *
+     * @see 		RequestDispatcher
+     * @see 		ServletContext#getContext
+     *
+     */
 
-   public RequestDispatcher getRequestDispatcher(String path);
+    public RequestDispatcher getRequestDispatcher(String path);
 
-   /**
-    * Returns a {@link RequestDispatcher} object that acts as a wrapper for the
-    * named servlet.
-    * <p>
-    * Servlets (and JSP pages also) may be given names via server administration
-    * or via a web application deployment descriptor. A servlet instance can
-    * determine its name using {@link ServletConfig#getServletName}.
-    * <p>
-    * This method returns <code>null</code> if the <code>ServletContext</code>
-    * cannot return a <code>RequestDispatcher</code> for any reason.
-    * 
-    * @param name
-    *           a <code>String</code> specifying the name of a servlet to wrap
-    * @return a <code>RequestDispatcher</code> object that acts as a wrapper
-    *         for the named servlet, or <code>null</code> if the
-    *         <code>ServletContext</code> cannot return a
-    *         <code>RequestDispatcher</code>
-    * @see RequestDispatcher
-    * @see ServletContext#getContext
-    * @see ServletConfig#getServletName
-    */
 
-   public RequestDispatcher getNamedDispatcher(String name);
 
-   /**
-    * @deprecated As of Java Servlet API 2.1, with no direct replacement.
-    *             <p>
-    *             This method was originally defined to retrieve a servlet from
-    *             a <code>ServletContext</code>. In this version, this method
-    *             always returns <code>null</code> and remains only to
-    *             preserve binary compatibility. This method will be permanently
-    *             removed in a future version of the Java Servlet API.
-    *             <p>
-    *             In lieu of this method, servlets can share information using
-    *             the <code>ServletContext</code> class and can perform shared
-    *             business logic by invoking methods on common non-servlet
-    *             classes.
-    */
-   @Deprecated
-   public Servlet getServlet(String name) throws ServletException;
+    /**
+     * Returns a {@link RequestDispatcher} object that acts
+     * as a wrapper for the named servlet.
+     *
+     * <p>Servlets (and JSP pages also) may be given names via server 
+     * administration or via a web application deployment descriptor.
+     * A servlet instance can determine its name using 
+     * {@link ServletConfig#getServletName}.
+     *
+     * <p>This method returns <code>null</code> if the 
+     * <code>ServletContext</code>
+     * cannot return a <code>RequestDispatcher</code> for any reason.
+     *
+     * @param name 	a <code>String</code> specifying the name
+     *			of a servlet to wrap
+     *
+     * @return 		a <code>RequestDispatcher</code> object
+     *			that acts as a wrapper for the named servlet,
+     *			or <code>null</code> if the <code>ServletContext</code>
+     *			cannot return a <code>RequestDispatcher</code>
+     *
+     * @see 		RequestDispatcher
+     * @see 		ServletContext#getContext
+     * @see 		ServletConfig#getServletName
+     *
+     */
 
-   /**
-    * @deprecated As of Java Servlet API 2.0, with no replacement.
-    *             <p>
-    *             This method was originally defined to return an
-    *             <code>Enumeration</code> of all the servlets known to this
-    *             servlet context. In this version, this method always returns
-    *             an empty enumeration and remains only to preserve binary
-    *             compatibility. This method will be permanently removed in a
-    *             future version of the Java Servlet API.
-    */
-   @Deprecated
-   public Enumeration getServlets();
+    public RequestDispatcher getNamedDispatcher(String name);
+    
+    
+    
+    
+    /**
+     *
+     * @deprecated	As of Java Servlet API 2.1, with no direct replacement.
+     *
+     * <p>This method was originally defined to retrieve a servlet
+     * from a <code>ServletContext</code>. In this version, this method 
+     * always returns <code>null</code> and remains only to preserve 
+     * binary compatibility. This method will be permanently removed 
+     * in a future version of the Java Servlet API.
+     *
+     * <p>In lieu of this method, servlets can share information using the 
+     * <code>ServletContext</code> class and can perform shared business logic
+     * by invoking methods on common non-servlet classes.
+     *
+     */
 
-   /**
-    * @deprecated As of Java Servlet API 2.1, with no replacement.
-    *             <p>
-    *             This method was originally defined to return an
-    *             <code>Enumeration</code> of all the servlet names known to
-    *             this context. In this version, this method always returns an
-    *             empty <code>Enumeration</code> and remains only to preserve
-    *             binary compatibility. This method will be permanently removed
-    *             in a future version of the Java Servlet API.
-    */
+    public Servlet getServlet(String name) throws ServletException;
+    
+  
+  
+  
+    
 
-   public Enumeration getServletNames();
+    /**
+     *
+     * @deprecated	As of Java Servlet API 2.0, with no replacement.
+     *
+     * <p>This method was originally defined to return an <code>Enumeration</code>
+     * of all the servlets known to this servlet context. In this
+     * version, this method always returns an empty enumeration and
+     * remains only to preserve binary compatibility. This method
+     * will be permanently removed in a future version of the Java
+     * Servlet API.
+     *
+     */
+    
+    public Enumeration getServlets();
+    
+    
+    
+    
+    
 
-   /**
-    * Writes the specified message to a servlet log file, usually an event log.
-    * The name and type of the servlet log file is specific to the servlet
-    * container.
-    * 
-    * @param msg
-    *           a <code>String</code> specifying the message to be written to
-    *           the log file
-    */
+    /**
+     * @deprecated	As of Java Servlet API 2.1, with no replacement.
+     *
+     * <p>This method was originally defined to return an 
+     * <code>Enumeration</code>
+     * of all the servlet names known to this context. In this version,
+     * this method always returns an empty <code>Enumeration</code> and 
+     * remains only to preserve binary compatibility. This method will 
+     * be permanently removed in a future version of the Java Servlet API.
+     *
+     */
+ 
+    public Enumeration getServletNames();
+    
+  
+  
+    
+    
+    /**
+     *
+     * Writes the specified message to a servlet log file, usually
+     * an event log. The name and type of the servlet log file is 
+     * specific to the servlet container.
+     *
+     *
+     * @param msg 	a <code>String</code> specifying the 
+     *			message to be written to the log file
+     *
+     */
+     
+    public void log(String msg);
+    
+    
+    
+    
 
-   public void log(String msg);
+    /**
+     * @deprecated	As of Java Servlet API 2.1, use
+     * 			{@link #log(String message, Throwable throwable)} 
+     *			instead.
+     *
+     * <p>This method was originally defined to write an 
+     * exception's stack trace and an explanatory error message
+     * to the servlet log file.
+     *
+     */
 
-   /**
-    * @deprecated As of Java Servlet API 2.1, use
-    *             {@link #log(String message, Throwable throwable)} instead.
-    *             <p>
-    *             This method was originally defined to write an exception's
-    *             stack trace and an explanatory error message to the servlet
-    *             log file.
-    */
-   @Deprecated
-   public void log(Exception exception, String msg);
+    public void log(Exception exception, String msg);
+    
+    
+    
+    
 
-   /**
-    * Writes an explanatory message and a stack trace for a given
-    * <code>Throwable</code> exception to the servlet log file. The name and
-    * type of the servlet log file is specific to the servlet container, usually
-    * an event log.
-    * 
-    * @param message
-    *           a <code>String</code> that describes the error or exception
-    * @param throwable
-    *           the <code>Throwable</code> error or exception
-    */
+    /**
+     * Writes an explanatory message and a stack trace
+     * for a given <code>Throwable</code> exception
+     * to the servlet log file. The name and type of the servlet log 
+     * file is specific to the servlet container, usually an event log.
+     *
+     *
+     * @param message 		a <code>String</code> that 
+     *				describes the error or exception
+     *
+     * @param throwable 	the <code>Throwable</code> error 
+     *				or exception
+     *
+     */
+    
+    public void log(String message, Throwable throwable);
+    
+    
+    
+    
+    
+    /**
+     * Returns a <code>String</code> containing the real path 
+     * for a given virtual path. For example, the path "/index.html"
+     * returns the absolute file path on the server's filesystem would be
+     * served by a request for "http://host/contextPath/index.html",
+     * where contextPath is the context path of this ServletContext..
+     *
+     * <p>The real path returned will be in a form
+     * appropriate to the computer and operating system on
+     * which the servlet container is running, including the
+     * proper path separators. This method returns <code>null</code>
+     * if the servlet container cannot translate the virtual path
+     * to a real path for any reason (such as when the content is
+     * being made available from a <code>.war</code> archive).
+     *
+     *
+     * @param path 	a <code>String</code> specifying a virtual path
+     *
+     *
+     * @return 		a <code>String</code> specifying the real path,
+     *                  or null if the translation cannot be performed
+     *			
+     *
+     */
 
-   public void log(String message, Throwable throwable);
+    public String getRealPath(String path);
+    
+    
 
-   /**
-    * Returns a <code>String</code> containing the real path for a given
-    * virtual path. For example, the path "/index.html" returns the absolute
-    * file path on the server's filesystem would be served by a request for
-    * "http://host/contextPath/index.html", where contextPath is the context
-    * path of this ServletContext..
-    * <p>
-    * The real path returned will be in a form appropriate to the computer and
-    * operating system on which the servlet container is running, including the
-    * proper path separators. This method returns <code>null</code> if the
-    * servlet container cannot translate the virtual path to a real path for any
-    * reason (such as when the content is being made available from a
-    * <code>.war</code> archive).
-    * 
-    * @param path
-    *           a <code>String</code> specifying a virtual path
-    * @return a <code>String</code> specifying the real path, or null if the
-    *         translation cannot be performed
-    */
 
-   public String getRealPath(String path);
+    /**
+     * Returns the name and version of the servlet container on which
+     * the servlet is running. 
+     *
+     * <p>The form of the returned string is 
+     * <i>servername</i>/<i>versionnumber</i>.
+     * For example, the JavaServer Web Development Kit may return the string
+     * <code>JavaServer Web Dev Kit/1.0</code>.
+     *
+     * <p>The servlet container may return other optional information 
+     * after the primary string in parentheses, for example,
+     * <code>JavaServer Web Dev Kit/1.0 (JDK 1.1.6; Windows NT 4.0 x86)</code>.
+     *
+     *
+     * @return 		a <code>String</code> containing at least the 
+     *			servlet container name and version number
+     *
+     */
 
-   /**
-    * Returns the name and version of the servlet container on which the servlet
-    * is running.
-    * <p>
-    * The form of the returned string is <i>servername</i>/<i>versionnumber</i>.
-    * For example, the JavaServer Web Development Kit may return the string
-    * <code>JavaServer Web Dev Kit/1.0</code>.
-    * <p>
-    * The servlet container may return other optional information after the
-    * primary string in parentheses, for example,
-    * <code>JavaServer Web Dev Kit/1.0 (JDK 1.1.6; Windows NT 4.0 x86)</code>.
-    * 
-    * @return a <code>String</code> containing at least the servlet container
-    *         name and version number
-    */
+    public String getServerInfo();
+    
+    
 
-   public String getServerInfo();
 
-   /**
-    * Returns a <code>String</code> containing the value of the named
-    * context-wide initialization parameter, or <code>null</code> if the
-    * parameter does not exist.
-    * <p>
-    * This method can make available configuration information useful to an
-    * entire "web application". For example, it can provide a webmaster's email
-    * address or the name of a system that holds critical data.
-    * 
-    * @param name
-    *           a <code>String</code> containing the name of the parameter
-    *           whose value is requested
-    * @return a <code>String</code> containing at least the servlet container
-    *         name and version number
-    * @see ServletConfig#getInitParameter
-    */
+    /**
+     * Returns a <code>String</code> containing the value of the named
+     * context-wide initialization parameter, or <code>null</code> if the 
+     * parameter does not exist.
+     *
+     * <p>This method can make available configuration information useful
+     * to an entire "web application".  For example, it can provide a 
+     * webmaster's email address or the name of a system that holds 
+     * critical data.
+     *
+     * @param	name	a <code>String</code> containing the name of the
+     *                  parameter whose value is requested
+     * 
+     * @return 		a <code>String</code> containing at least the 
+     *			servlet container name and version number
+     *
+     * @see ServletConfig#getInitParameter
+     */
 
-   public String getInitParameter(String name);
+    public String getInitParameter(String name);
+    
+    
 
-   /**
-    * Returns the names of the context's initialization parameters as an
-    * <code>Enumeration</code> of <code>String</code> objects, or an empty
-    * <code>Enumeration</code> if the context has no initialization
-    * parameters.
-    * 
-    * @return an <code>Enumeration</code> of <code>String</code> objects
-    *         containing the names of the context's initialization parameters
-    * @see ServletConfig#getInitParameter
-    */
 
-   public Enumeration getInitParameterNames();
+    /**
+     * Returns the names of the context's initialization parameters as an
+     * <code>Enumeration</code> of <code>String</code> objects, or an
+     * empty <code>Enumeration</code> if the context has no initialization
+     * parameters.
+     *
+     * @return 		an <code>Enumeration</code> of <code>String</code> 
+     *                  objects containing the names of the context's
+     *                  initialization parameters
+     *
+     * @see ServletConfig#getInitParameter
+     */
 
-   /**
-    * Returns the servlet container attribute with the given name, or
-    * <code>null</code> if there is no attribute by that name. An attribute
-    * allows a servlet container to give the servlet additional information not
-    * already provided by this interface. See your server documentation for
-    * information about its attributes. A list of supported attributes can be
-    * retrieved using <code>getAttributeNames</code>.
-    * <p>
-    * The attribute is returned as a <code>java.lang.Object</code> or some
-    * subclass. Attribute names should follow the same convention as package
-    * names. The Java Servlet API specification reserves names matching
-    * <code>java.*</code>, <code>javax.*</code>, and <code>sun.*</code>.
-    * 
-    * @param name
-    *           a <code>String</code> specifying the name of the attribute
-    * @return an <code>Object</code> containing the value of the attribute, or
-    *         <code>null</code> if no attribute exists matching the given name
-    * @see ServletContext#getAttributeNames
-    */
+    public Enumeration getInitParameterNames();
+    
+    
 
-   public Object getAttribute(String name);
+    /**
+     * Returns the servlet container attribute with the given name, 
+     * or <code>null</code> if there is no attribute by that name.
+     * An attribute allows a servlet container to give the
+     * servlet additional information not
+     * already provided by this interface. See your
+     * server documentation for information about its attributes.
+     * A list of supported attributes can be retrieved using
+     * <code>getAttributeNames</code>.
+     *
+     * <p>The attribute is returned as a <code>java.lang.Object</code>
+     * or some subclass.
+     * Attribute names should follow the same convention as package
+     * names. The Java Servlet API specification reserves names
+     * matching <code>java.*</code>, <code>javax.*</code>,
+     * and <code>sun.*</code>.
+     *
+     *
+     * @param name 	a <code>String</code> specifying the name 
+     *			of the attribute
+     *
+     * @return 		an <code>Object</code> containing the value 
+     *			of the attribute, or <code>null</code>
+     *			if no attribute exists matching the given
+     *			name
+     *
+     * @see 		ServletContext#getAttributeNames
+     *
+     */
+  
+    public Object getAttribute(String name);
+    
+    
+    
 
-   /**
-    * Returns an <code>Enumeration</code> containing the attribute names
-    * available within this servlet context. Use the {@link #getAttribute}
-    * method with an attribute name to get the value of an attribute.
-    * 
-    * @return an <code>Enumeration</code> of attribute names
-    * @see #getAttribute
-    */
+    /**
+     * Returns an <code>Enumeration</code> containing the 
+     * attribute names available
+     * within this servlet context. Use the
+     * {@link #getAttribute} method with an attribute name
+     * to get the value of an attribute.
+     *
+     * @return 		an <code>Enumeration</code> of attribute 
+     *			names
+     *
+     * @see		#getAttribute
+     *
+     */
 
-   public Enumeration getAttributeNames();
+    public Enumeration getAttributeNames();
+    
+    
+    
+    
+    /**
+     *
+     * Binds an object to a given attribute name in this servlet context. If
+     * the name specified is already used for an attribute, this
+     * method will replace the attribute with the new to the new attribute.
+     * <p>If listeners are configured on the <code>ServletContext</code> the  
+     * container notifies them accordingly.
+     * <p>
+     * If a null value is passed, the effect is the same as calling 
+     * <code>removeAttribute()</code>.
+     * 
+     * <p>Attribute names should follow the same convention as package
+     * names. The Java Servlet API specification reserves names
+     * matching <code>java.*</code>, <code>javax.*</code>, and
+     * <code>sun.*</code>.
+     *
+     *
+     * @param name 	a <code>String</code> specifying the name 
+     *			of the attribute
+     *
+     * @param object 	an <code>Object</code> representing the
+     *			attribute to be bound
+     *
+     *
+     *
+     */
+    
+    public void setAttribute(String name, Object object);
+    
+    
 
-   /**
-    * Binds an object to a given attribute name in this servlet context. If the
-    * name specified is already used for an attribute, this method will replace
-    * the attribute with the new to the new attribute.
-    * <p>
-    * If listeners are configured on the <code>ServletContext</code> the
-    * container notifies them accordingly.
-    * <p>
-    * If a null value is passed, the effect is the same as calling
-    * <code>removeAttribute()</code>.
-    * <p>
-    * Attribute names should follow the same convention as package names. The
-    * Java Servlet API specification reserves names matching <code>java.*</code>,
-    * <code>javax.*</code>, and <code>sun.*</code>.
-    * 
-    * @param name
-    *           a <code>String</code> specifying the name of the attribute
-    * @param object
-    *           an <code>Object</code> representing the attribute to be bound
-    */
 
-   public void setAttribute(String name, Object object);
 
-   /**
-    * Removes the attribute with the given name from the servlet context. After
-    * removal, subsequent calls to {@link #getAttribute} to retrieve the
-    * attribute's value will return <code>null</code>.
-    * <p>
-    * If listeners are configured on the <code>ServletContext</code> the
-    * container notifies them accordingly.
-    * 
-    * @param name
-    *           a <code>String</code> specifying the name of the attribute to
-    *           be removed
-    */
+    /**
+     * Removes the attribute with the given name from 
+     * the servlet context. After removal, subsequent calls to
+     * {@link #getAttribute} to retrieve the attribute's value
+     * will return <code>null</code>.
 
-   public void removeAttribute(String name);
+     * <p>If listeners are configured on the <code>ServletContext</code> the 
+     * container notifies them accordingly.
 
-   /**
-    * Returns the name of this web application corresponding to this
-    * ServletContext as specified in the deployment descriptor for this web
-    * application by the display-name element.
-    * 
-    * @return The name of the web application or null if no name has been
-    *         declared in the deployment descriptor.
-    * @since Servlet 2.3
-    */
+     *
+     *
+     * @param name	a <code>String</code> specifying the name 
+     * 			of the attribute to be removed
+     *
+     */
 
-   public String getServletContextName();
+    public void removeAttribute(String name);
+    
+    /**
+     * Returns the name of this web application corresponding to this ServletContext as specified in the deployment
+     * descriptor for this web application by the display-name element.
+     *
+     *
+     * @return	    The name of the web application or null if no name has been declared in the deployment descriptor.
+     * @since Servlet 2.3
+     */
+    
+    public String getServletContextName();
 }
+
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContextAttributeEvent.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContextAttributeEvent.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContextAttributeEvent.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,68 +1,60 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
-/**
- * This is the event class for notifications about changes to the attributes of
- * the servlet context of a web application.
- * 
- * @see ServletContextAttributeListener
- * @since v 2.3
- */
 
-public class ServletContextAttributeEvent extends ServletContextEvent
-{
-   private String name;
+	/** 
+	* This is the event class for notifications about changes to the attributes of the
+	*  servlet context of a web application.
+	* @see ServletContextAttributeListener
+	 * @since	v 2.3
+	*/
 
-   private Object value;
+public class ServletContextAttributeEvent extends ServletContextEvent { 
+	private String name;
+	private Object value;
 
-   /**
-    * Construct a ServletContextAttributeEvent from the given context for the *
-    * given attribute name and attribute value.
-    */
-   public ServletContextAttributeEvent(ServletContext source, String name, Object value)
-   {
-      super(source);
-      this.name = name;
-      this.value = value;
-   }
-
-   /**
-    * Return the name of the attribute that changed on the ServletContext.
-    */
-   public String getName()
-   {
-      return this.name;
-   }
-
-   /**
-    * Returns the value of the attribute that has been added, removed, or
-    * replaced. If the attribute was added, this is the value of the attribute.
-    * If the attribute was removed, this is the value of the removed attribute.
-    * If the attribute was replaced, this is the old value of the attribute.
-    */
-
-   public Object getValue()
-   {
-      return this.value;
-   }
+	/** Construct a ServletContextAttributeEvent from the given context for the
+	** given attribute name and attribute value. 
+	*/
+	public ServletContextAttributeEvent(ServletContext source, String name, Object value) {
+	    super(source);
+	    this.name = name;
+	    this.value = value;
+	}
+	
+	/**
+	* Return the name of the attribute that changed on the ServletContext.
+	*
+	*/
+	public String getName() {
+		return this.name;
+	}
+	
+	/**
+	* Returns the value of the attribute that has been added, removed, or replaced.
+	* If the attribute was added, this is the value of the attribute. If the attribute was
+	* removed, this is the value of the removed attribute. If the attribute was replaced, this
+	* is the old value of the attribute.
+	*
+	*/
+	
+	public Object getValue() {
+	    return this.value;   
+	}
 }
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContextAttributeListener.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContextAttributeListener.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContextAttributeListener.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,55 +1,37 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
 import java.util.EventListener;
 
-/**
- * Implementations of this interface receive notifications of * changes to the
- * attribute list on the servlet context of a web application. To receive
- * notification events, the implementation class must be configured in the
- * deployment descriptor for the web application.
- * 
- * @see ServletContextAttributeEvent
- * @since v 2.3
- */
+	/** Implementations of this interface receive notifications of
+	** changes to the attribute list on the servlet context of a web application. 
+	* To receive notification events, the implementation class
+	* must be configured in the deployment descriptor for the web application.
+	* @see ServletContextAttributeEvent
+	 * @since	v 2.3
+	*/
 
-public interface ServletContextAttributeListener extends EventListener
-{
-   /**
-    * Notification that a new attribute was added to the servlet context. Called
-    * after the attribute is added.
-    */
-   public void attributeAdded(ServletContextAttributeEvent scab);
-
-   /**
-    * Notification that an existing attribute has been removed from the servlet
-    * context. Called after the attribute is removed.
-    */
-   public void attributeRemoved(ServletContextAttributeEvent scab);
-
-   /**
-    * Notification that an attribute on the servlet context has been replaced.
-    * Called after the attribute is replaced.
-    */
-   public void attributeReplaced(ServletContextAttributeEvent scab);
+public interface ServletContextAttributeListener extends EventListener {
+	/** Notification that a new attribute was added to the servlet context. Called after the attribute is added.*/
+public void attributeAdded(ServletContextAttributeEvent scab);
+	/** Notification that an existing attribute has been removed from the servlet context. Called after the attribute is removed.*/
+public void attributeRemoved(ServletContextAttributeEvent scab);
+	/** Notification that an attribute on the servlet context has been replaced. Called after the attribute is replaced. */
+public void attributeReplaced(ServletContextAttributeEvent scab);
 }
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContextEvent.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContextEvent.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContextEvent.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,56 +1,47 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
-/**
- * This is the event class for notifications about changes to the servlet
- * context of a web application.
- * 
- * @see ServletContextListener
- * @since v 2.3
- */
 
-public class ServletContextEvent extends java.util.EventObject
-{
+	/** 
+	 * This is the event class for notifications about changes to
+	 * the servlet context of a web application.
+	 * @see ServletContextListener
+	 * @since	v 2.3
+	 */
 
-   /**
-    * Construct a ServletContextEvent from the given context.
-    * 
-    * @param source -
-    *           the ServletContext that is sending the event.
-    */
-   public ServletContextEvent(ServletContext source)
-   {
-      super(source);
-   }
+public class ServletContextEvent extends java.util.EventObject { 
 
-   /**
-    * Return the ServletContext that changed.
-    * 
-    * @return the ServletContext that sent the event.
-    */
-   public ServletContext getServletContext()
-   {
-      return (ServletContext) super.getSource();
-   }
-
+	/** Construct a ServletContextEvent from the given context.
+	 *
+	 * @param source - the ServletContext that is sending the event.
+	 */
+    public ServletContextEvent(ServletContext source) {
+	super(source);
+    }
+    
+	/**
+	 * Return the ServletContext that changed.
+	 *
+	 * @return the ServletContext that sent the event.
+	 */
+    public ServletContext getServletContext () { 
+	return (ServletContext) super.getSource();
+    }
+    
 }
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContextListener.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContextListener.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletContextListener.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,53 +1,51 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
 import java.util.EventListener;
 
-/**
- * Implementations of this interface receive notifications about changes to the
- * servlet context of the web application they are part of. To receive
- * notification events, the implementation class must be configured in the
- * deployment descriptor for the web application.
- * 
- * @see ServletContextEvent
- * @since v 2.3
- */
+	/** 
+	 * Implementations of this interface receive notifications about
+	 * changes to the servlet context of the web application they are
+	 * part of.
+	 * To receive notification events, the implementation class
+	 * must be configured in the deployment descriptor for the web
+	 * application.
+	 * @see ServletContextEvent
+	 * @since	v 2.3
+	 */
 
-public interface ServletContextListener extends EventListener
-{
-   /**
-    * * Notification that the web application initialization * process is
-    * starting. * All ServletContextListeners are notified of context *
-    * initialization before any filter or servlet in the web * application is
-    * initialized.
-    */
+public interface ServletContextListener extends EventListener {
+	/**
+	 ** Notification that the web application initialization
+	 ** process is starting.
+	 ** All ServletContextListeners are notified of context
+	 ** initialization before any filter or servlet in the web
+	 ** application is initialized.
+	 */
 
-   public void contextInitialized(ServletContextEvent sce);
+    public void contextInitialized ( ServletContextEvent sce );
 
-   /**
-    * * Notification that the servlet context is about to be shut down. * All
-    * servlets and filters have been destroy()ed before any *
-    * ServletContextListeners are notified of context * destruction.
-    */
-   public void contextDestroyed(ServletContextEvent sce);
+	/**
+	 ** Notification that the servlet context is about to be shut down.
+	 ** All servlets and filters have been destroy()ed before any
+	 ** ServletContextListeners are notified of context
+	 ** destruction.
+	 */
+    public void contextDestroyed ( ServletContextEvent sce );
 }
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletException.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletException.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletException.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,112 +1,98 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
+
 /**
- * Defines a general exception a servlet can throw when it encounters
- * difficulty.
- * 
- * @author Various
+ * Defines a general exception a servlet can throw when it
+ * encounters difficulty.
+ *
+ * @author 	Various
+ * @version 	$Version$
  */
+public class ServletException extends Exception {
 
-public class ServletException extends Exception
-{
+    /**
+     * Constructs a new servlet exception.
+     */
+    public ServletException() {
+        super();
+    }
 
-   private Throwable rootCause;
+    /**
+     * Constructs a new servlet exception with the
+     * specified message. The message can be written 
+     * to the server log and/or displayed for the user. 
+     *
+     * @param message 		a <code>String</code> 
+     *				specifying the text of 
+     *				the exception message
+     */
+    public ServletException(String message) {
+        super(message);
+    }
 
-   /**
-    * Constructs a new servlet exception.
-    */
+    /**
+     * Constructs a new servlet exception when the servlet 
+     * needs to throw an exception and include a message 
+     * about the "root cause" exception that interfered with its 
+     * normal operation, including a description message.
+     *
+     * @param message 		a <code>String</code> containing 
+     *				the text of the exception message
+     *
+     * @param rootCause		the <code>Throwable</code> exception 
+     *				that interfered with the servlet's
+     *				normal operation, making this servlet
+     *				exception necessary
+     */
+    public ServletException(String message, Throwable rootCause) {
+        super(message, rootCause);
+    }
 
-   public ServletException()
-   {
-      super();
-   }
+    /**
+     * Constructs a new servlet exception when the servlet 
+     * needs to throw an exception and include a message
+     * about the "root cause" exception that interfered with its
+     * normal operation.  The exception's message is based on the localized
+     * message of the underlying exception.
+     *
+     * <p>This method calls the <code>getLocalizedMessage</code> method
+     * on the <code>Throwable</code> exception to get a localized exception
+     * message. When subclassing <code>ServletException</code>, 
+     * this method can be overridden to create an exception message 
+     * designed for a specific locale.
+     *
+     * @param rootCause 	the <code>Throwable</code> exception
+     * 				that interfered with the servlet's
+     *				normal operation, making the servlet exception
+     *				necessary
+     */
+    public ServletException(Throwable rootCause) {
+        super(rootCause);
+    }
 
-   /**
-    * Constructs a new servlet exception with the specified message. The message
-    * can be written to the server log and/or displayed for the user.
-    * 
-    * @param message
-    *           a <code>String</code> specifying the text of the exception
-    *           message
-    */
-
-   public ServletException(String message)
-   {
-      super(message);
-   }
-
-   /**
-    * Constructs a new servlet exception when the servlet needs to throw an
-    * exception and include a message about the "root cause" exception that
-    * interfered with its normal operation, including a description message.
-    * 
-    * @param message
-    *           a <code>String</code> containing the text of the exception
-    *           message
-    * @param rootCause
-    *           the <code>Throwable</code> exception that interfered with the
-    *           servlet's normal operation, making this servlet exception
-    *           necessary
-    */
-
-   public ServletException(String message, Throwable rootCause)
-   {
-      super(message, rootCause);
-      this.rootCause = rootCause;
-   }
-
-   /**
-    * Constructs a new servlet exception when the servlet needs to throw an
-    * exception and include a message about the "root cause" exception that
-    * interfered with its normal operation. The exception's message is based on
-    * the localized message of the underlying exception.
-    * <p>
-    * This method calls the <code>getLocalizedMessage</code> method on the
-    * <code>Throwable</code> exception to get a localized exception message.
-    * When subclassing <code>ServletException</code>, this method can be
-    * overridden to create an exception message designed for a specific locale.
-    * 
-    * @param rootCause
-    *           the <code>Throwable</code> exception that interfered with the
-    *           servlet's normal operation, making the servlet exception
-    *           necessary
-    */
-
-   public ServletException(Throwable rootCause)
-   {
-      super(rootCause);
-      this.rootCause = rootCause;
-   }
-
-   /**
-    * Returns the exception that caused this servlet exception.
-    * 
-    * @return the <code>Throwable</code> that caused this servlet exception
-    */
-
-   public Throwable getRootCause()
-   {
-      return rootCause;
-   }
+    /**
+     * Returns the exception that caused this servlet exception.
+     *
+     * @return			the <code>Throwable</code> 
+     *				that caused this servlet exception
+     */
+    public Throwable getRootCause() {
+        return getCause();
+    }
 }

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletInputStream.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletInputStream.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletInputStream.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,97 +1,106 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
 import java.io.InputStream;
 import java.io.IOException;
 
 /**
- * Provides an input stream for reading binary data from a client request,
- * including an efficient <code>readLine</code> method for reading data one
- * line at a time. With some protocols, such as HTTP POST and PUT, a
- * <code>ServletInputStream</code> object can be used to read data sent from
- * the client.
- * <p>
- * A <code>ServletInputStream</code> object is normally retrieved via the
- * {@link ServletRequest#getInputStream} method.
- * <p>
- * This is an abstract class that a servlet container implements. Subclasses of
- * this class must implement the <code>java.io.InputStream.read()</code>
- * method.
  * 
- * @author Various
- * @see ServletRequest
+ * Provides an input stream for reading binary data from a client
+ * request, including an efficient <code>readLine</code> method
+ * for reading data one line at a time. With some protocols, such
+ * as HTTP POST and PUT, a <code>ServletInputStream</code>
+ * object can be used to read data sent from the client.
+ *
+ * <p>A <code>ServletInputStream</code> object is normally retrieved via
+ * the {@link ServletRequest#getInputStream} method.
+ *
+ *
+ * <p>This is an abstract class that a servlet container implements.
+ * Subclasses of this class
+ * must implement the <code>java.io.InputStream.read()</code> method.
+ *
+ *
+ * @author 	Various
+ * @version 	$Version$
+ *
+ * @see		ServletRequest 
+ *
  */
 
-public abstract class ServletInputStream extends InputStream
-{
+public abstract class ServletInputStream extends InputStream {
 
-   /**
-    * Does nothing, because this is an abstract class.
-    */
 
-   protected ServletInputStream()
-   {
-   }
 
-   /**
-    * Reads the input stream, one line at a time. Starting at an offset, reads
-    * bytes into an array, until it reads a certain number of bytes or reaches a
-    * newline character, which it reads into the array as well.
-    * <p>
-    * This method returns -1 if it reaches the end of the input stream before
-    * reading the maximum number of bytes.
-    * 
-    * @param b
-    *           an array of bytes into which data is read
-    * @param off
-    *           an integer specifying the character at which this method begins
-    *           reading
-    * @param len
-    *           an integer specifying the maximum number of bytes to read
-    * @return an integer specifying the actual number of bytes read, or -1 if
-    *         the end of the stream is reached
-    * @exception IOException
-    *               if an input or output exception has occurred
-    */
+    /**
+     * Does nothing, because this is an abstract class.
+     *
+     */
 
-   public int readLine(byte[] b, int off, int len) throws IOException
-   {
+    protected ServletInputStream() { }
 
-      if (len <= 0)
-      {
-         return 0;
-      }
-      int count = 0, c;
+  
+  
+    
+    /**
+     *
+     * Reads the input stream, one line at a time. Starting at an
+     * offset, reads bytes into an array, until it reads a certain number
+     * of bytes or reaches a newline character, which it reads into the
+     * array as well.
+     *
+     * <p>This method returns -1 if it reaches the end of the input
+     * stream before reading the maximum number of bytes.
+     *
+     *
+     *
+     * @param b 		an array of bytes into which data is read
+     *
+     * @param off 		an integer specifying the character at which
+     *				this method begins reading
+     *
+     * @param len		an integer specifying the maximum number of 
+     *				bytes to read
+     *
+     * @return			an integer specifying the actual number of bytes 
+     *				read, or -1 if the end of the stream is reached
+     *
+     * @exception IOException	if an input or output exception has occurred
+     *
+     */
+     
+    public int readLine(byte[] b, int off, int len) throws IOException {
 
-      while ((c = read()) != -1)
-      {
-         b[off++] = (byte) c;
-         count++;
-         if (c == '\n' || count == len)
-         {
-            break;
-         }
-      }
-      return count > 0 ? count : -1;
-   }
+	if (len <= 0) {
+	    return 0;
+	}
+	int count = 0, c;
+
+	while ((c = read()) != -1) {
+	    b[off++] = (byte)c;
+	    count++;
+	    if (c == '\n' || count == len) {
+		break;
+	    }
+	}
+	return count > 0 ? count : -1;
+    }
 }
+
+
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletOutputStream.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletOutputStream.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletOutputStream.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,24 +1,19 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
 import java.io.OutputStream;
@@ -28,290 +23,342 @@
 import java.util.ResourceBundle;
 
 /**
- * Provides an output stream for sending binary data to the client. A
- * <code>ServletOutputStream</code> object is normally retrieved via the
- * {@link ServletResponse#getOutputStream} method.
- * <p>
- * This is an abstract class that the servlet container implements. Subclasses
- * of this class must implement the <code>java.io.OutputStream.write(int)</code>
+ * Provides an output stream for sending binary data to the
+ * client. A <code>ServletOutputStream</code> object is normally retrieved 
+ * via the {@link ServletResponse#getOutputStream} method.
+ *
+ * <p>This is an abstract class that the servlet container implements.
+ * Subclasses of this class
+ * must implement the <code>java.io.OutputStream.write(int)</code>
  * method.
+ *
  * 
- * @author Various
- * @see ServletResponse
+ * @author 	Various
+ * @version 	$Version$
+ *
+ * @see 	ServletResponse
+ *
  */
 
-public abstract class ServletOutputStream extends OutputStream
-{
+public abstract class ServletOutputStream extends OutputStream {
 
-   private static final String LSTRING_FILE = "javax.servlet.LocalStrings";
+    private static final String LSTRING_FILE = "javax.servlet.LocalStrings";
+    private static ResourceBundle lStrings =
+	ResourceBundle.getBundle(LSTRING_FILE);
 
-   private static ResourceBundle lStrings = ResourceBundle.getBundle(LSTRING_FILE);
 
-   /**
-    * Does nothing, because this is an abstract class.
-    */
+    
+    /**
+     *
+     * Does nothing, because this is an abstract class.
+     *
+     */
 
-   protected ServletOutputStream()
-   {
-   }
+    protected ServletOutputStream() { }
 
-   /**
-    * Writes a <code>String</code> to the client, without a carriage
-    * return-line feed (CRLF) character at the end.
-    * 
-    * @param s
-    *           the <code>String</code> to send to the client
-    * @exception IOException
-    *               if an input or output exception occurred
-    */
 
-   public void print(String s) throws IOException
-   {
-      if (s == null)
-         s = "null";
-      int len = s.length();
-      for (int i = 0; i < len; i++)
-      {
-         char c = s.charAt(i);
+    /**
+     * Writes a <code>String</code> to the client, 
+     * without a carriage return-line feed (CRLF) 
+     * character at the end.
+     *
+     *
+     * @param s			the <code>String</code> to send to the client
+     *
+     * @exception IOException 	if an input or output exception occurred
+     *
+     */
 
-         //
-         // XXX NOTE: This is clearly incorrect for many strings,
-         // but is the only consistent approach within the current
-         // servlet framework. It must suffice until servlet output
-         // streams properly encode their output.
-         //
-         if ((c & 0xff00) != 0)
-         { // high order byte must be zero
-            String errMsg = lStrings.getString("err.not_iso8859_1");
-            Object[] errArgs = new Object[1];
-            errArgs[0] = new Character(c);
-            errMsg = MessageFormat.format(errMsg, errArgs);
-            throw new CharConversionException(errMsg);
-         }
-         write(c);
-      }
-   }
+    public void print(String s) throws IOException {
+	if (s==null) s="null";
+	int len = s.length();
+	for (int i = 0; i < len; i++) {
+	    char c = s.charAt (i);
 
-   /**
-    * Writes a <code>boolean</code> value to the client, with no carriage
-    * return-line feed (CRLF) character at the end.
-    * 
-    * @param b
-    *           the <code>boolean</code> value to send to the client
-    * @exception IOException
-    *               if an input or output exception occurred
-    */
+	    //
+	    // XXX NOTE:  This is clearly incorrect for many strings,
+	    // but is the only consistent approach within the current
+	    // servlet framework.  It must suffice until servlet output
+	    // streams properly encode their output.
+	    //
+	    if ((c & 0xff00) != 0) {	// high order byte must be zero
+		String errMsg = lStrings.getString("err.not_iso8859_1");
+		Object[] errArgs = new Object[1];
+		errArgs[0] = new Character(c);
+		errMsg = MessageFormat.format(errMsg, errArgs);
+		throw new CharConversionException(errMsg);
+	    }
+	    write (c);
+	}
+    }
 
-   public void print(boolean b) throws IOException
-   {
-      String msg;
-      if (b)
-      {
-         msg = lStrings.getString("value.true");
-      }
-      else
-      {
-         msg = lStrings.getString("value.false");
-      }
-      print(msg);
-   }
 
-   /**
-    * Writes a character to the client, with no carriage return-line feed (CRLF)
-    * at the end.
-    * 
-    * @param c
-    *           the character to send to the client
-    * @exception IOException
-    *               if an input or output exception occurred
-    */
 
-   public void print(char c) throws IOException
-   {
-      print(String.valueOf(c));
-   }
+    /**
+     * Writes a <code>boolean</code> value to the client,
+     * with no carriage return-line feed (CRLF) 
+     * character at the end.
+     *
+     * @param b			the <code>boolean</code> value 
+     *				to send to the client
+     *
+     * @exception IOException 	if an input or output exception occurred
+     *
+     */
 
-   /**
-    * Writes an int to the client, with no carriage return-line feed (CRLF) at
-    * the end.
-    * 
-    * @param i
-    *           the int to send to the client
-    * @exception IOException
-    *               if an input or output exception occurred
-    */
+    public void print(boolean b) throws IOException {
+	String msg;
+	if (b) {
+	    msg = lStrings.getString("value.true");
+	} else {
+	    msg = lStrings.getString("value.false");
+	}
+	print(msg);
+    }
 
-   public void print(int i) throws IOException
-   {
-      print(String.valueOf(i));
-   }
 
-   /**
-    * Writes a <code>long</code> value to the client, with no carriage
-    * return-line feed (CRLF) at the end.
-    * 
-    * @param l
-    *           the <code>long</code> value to send to the client
-    * @exception IOException
-    *               if an input or output exception occurred
-    */
 
-   public void print(long l) throws IOException
-   {
-      print(String.valueOf(l));
-   }
+    /**
+     * Writes a character to the client,
+     * with no carriage return-line feed (CRLF) 
+     * at the end.
+     *
+     * @param c			the character to send to the client
+     *
+     * @exception IOException 	if an input or output exception occurred
+     *
+     */
 
-   /**
-    * Writes a <code>float</code> value to the client, with no carriage
-    * return-line feed (CRLF) at the end.
-    * 
-    * @param f
-    *           the <code>float</code> value to send to the client
-    * @exception IOException
-    *               if an input or output exception occurred
-    */
+    public void print(char c) throws IOException {
+	print(String.valueOf(c));
+    }
 
-   public void print(float f) throws IOException
-   {
-      print(String.valueOf(f));
-   }
 
-   /**
-    * Writes a <code>double</code> value to the client, with no carriage
-    * return-line feed (CRLF) at the end.
-    * 
-    * @param d
-    *           the <code>double</code> value to send to the client
-    * @exception IOException
-    *               if an input or output exception occurred
-    */
 
-   public void print(double d) throws IOException
-   {
-      print(String.valueOf(d));
-   }
 
-   /**
-    * Writes a carriage return-line feed (CRLF) to the client.
-    * 
-    * @exception IOException
-    *               if an input or output exception occurred
-    */
+    /**
+     *
+     * Writes an int to the client,
+     * with no carriage return-line feed (CRLF) 
+     * at the end.
+     *
+     * @param i			the int to send to the client
+     *
+     * @exception IOException 	if an input or output exception occurred
+     *
+     */  
 
-   public void println() throws IOException
-   {
-      print("\r\n");
-   }
+    public void print(int i) throws IOException {
+	print(String.valueOf(i));
+    }
 
-   /**
-    * Writes a <code>String</code> to the client, followed by a carriage
-    * return-line feed (CRLF).
-    * 
-    * @param s
-    *           the <code>String</code> to write to the client
-    * @exception IOException
-    *               if an input or output exception occurred
-    */
 
-   public void println(String s) throws IOException
-   {
-      print(s);
-      println();
-   }
 
-   /**
-    * Writes a <code>boolean</code> value to the client, followed by a
-    * carriage return-line feed (CRLF).
-    * 
-    * @param b
-    *           the <code>boolean</code> value to write to the client
-    * @exception IOException
-    *               if an input or output exception occurred
-    */
+ 
+    /**
+     * 
+     * Writes a <code>long</code> value to the client,
+     * with no carriage return-line feed (CRLF) at the end.
+     *
+     * @param l			the <code>long</code> value 
+     *				to send to the client
+     *
+     * @exception IOException 	if an input or output exception 
+     *				occurred
+     * 
+     */
 
-   public void println(boolean b) throws IOException
-   {
-      print(b);
-      println();
-   }
+    public void print(long l) throws IOException {
+	print(String.valueOf(l));
+    }
 
-   /**
-    * Writes a character to the client, followed by a carriage return-line feed
-    * (CRLF).
-    * 
-    * @param c
-    *           the character to write to the client
-    * @exception IOException
-    *               if an input or output exception occurred
-    */
 
-   public void println(char c) throws IOException
-   {
-      print(c);
-      println();
-   }
 
-   /**
-    * Writes an int to the client, followed by a carriage return-line feed
-    * (CRLF) character.
-    * 
-    * @param i
-    *           the int to write to the client
-    * @exception IOException
-    *               if an input or output exception occurred
-    */
+    /**
+     *
+     * Writes a <code>float</code> value to the client,
+     * with no carriage return-line feed (CRLF) at the end.
+     *
+     * @param f			the <code>float</code> value
+     *				to send to the client
+     *
+     * @exception IOException	if an input or output exception occurred
+     *
+     *
+     */
 
-   public void println(int i) throws IOException
-   {
-      print(i);
-      println();
-   }
+    public void print(float f) throws IOException {
+	print(String.valueOf(f));
+    }
 
-   /**
-    * Writes a <code>long</code> value to the client, followed by a carriage
-    * return-line feed (CRLF).
-    * 
-    * @param l
-    *           the <code>long</code> value to write to the client
-    * @exception IOException
-    *               if an input or output exception occurred
-    */
 
-   public void println(long l) throws IOException
-   {
-      print(l);
-      println();
-   }
 
-   /**
-    * Writes a <code>float</code> value to the client, followed by a carriage
-    * return-line feed (CRLF).
-    * 
-    * @param f
-    *           the <code>float</code> value to write to the client
-    * @exception IOException
-    *               if an input or output exception occurred
-    */
+    /**
+     *
+     * Writes a <code>double</code> value to the client,
+     * with no carriage return-line feed (CRLF) at the end.
+     * 
+     * @param d			the <code>double</code> value
+     *				to send to the client
+     *
+     * @exception IOException 	if an input or output exception occurred
+     *
+     */
 
-   public void println(float f) throws IOException
-   {
-      print(f);
-      println();
-   }
+    public void print(double d) throws IOException {
+	print(String.valueOf(d));
+    }
 
-   /**
-    * Writes a <code>double</code> value to the client, followed by a carriage
-    * return-line feed (CRLF).
-    * 
-    * @param d
-    *           the <code>double</code> value to write to the client
-    * @exception IOException
-    *               if an input or output exception occurred
-    */
 
-   public void println(double d) throws IOException
-   {
-      print(d);
-      println();
-   }
+
+    /**
+     * Writes a carriage return-line feed (CRLF)
+     * to the client.
+     *
+     *
+     *
+     * @exception IOException 	if an input or output exception occurred
+     *
+     */
+
+    public void println() throws IOException {
+	print("\r\n");
+    }
+
+
+
+    /**
+     * Writes a <code>String</code> to the client, 
+     * followed by a carriage return-line feed (CRLF).
+     *
+     *
+     * @param s			the <code>String</code> to write to the client
+     *
+     * @exception IOException 	if an input or output exception occurred
+     *
+     */
+
+    public void println(String s) throws IOException {
+	print(s);
+	println();
+    }
+
+
+
+
+    /**
+     *
+     * Writes a <code>boolean</code> value to the client, 
+     * followed by a 
+     * carriage return-line feed (CRLF).
+     *
+     *
+     * @param b			the <code>boolean</code> value 
+     *				to write to the client
+     *
+     * @exception IOException 	if an input or output exception occurred
+     *
+     */
+
+    public void println(boolean b) throws IOException {
+	print(b);
+	println();
+    }
+
+
+
+    /**
+     *
+     * Writes a character to the client, followed by a carriage
+     * return-line feed (CRLF).
+     *
+     * @param c			the character to write to the client
+     *
+     * @exception IOException 	if an input or output exception occurred
+     *
+     */
+
+    public void println(char c) throws IOException {
+	print(c);
+	println();
+    }
+
+
+
+    /**
+     *
+     * Writes an int to the client, followed by a 
+     * carriage return-line feed (CRLF) character.
+     *
+     *
+     * @param i			the int to write to the client
+     *
+     * @exception IOException 	if an input or output exception occurred
+     *
+     */
+
+    public void println(int i) throws IOException {
+	print(i);
+	println();
+    }
+
+
+
+    /**  
+     *
+     * Writes a <code>long</code> value to the client, followed by a 
+     * carriage return-line feed (CRLF).
+     *
+     *
+     * @param l			the <code>long</code> value to write to the client
+     *
+     * @exception IOException 	if an input or output exception occurred
+     *
+     */  
+
+    public void println(long l) throws IOException {
+	print(l);
+	println();
+    }
+
+
+
+    /**
+     *
+     * Writes a <code>float</code> value to the client, 
+     * followed by a carriage return-line feed (CRLF).
+     *
+     * @param f			the <code>float</code> value 
+     *				to write to the client
+     *
+     *
+     * @exception IOException 	if an input or output exception 
+     *				occurred
+     *
+     */
+
+    public void println(float f) throws IOException {
+	print(f);
+	println();
+    }
+
+
+
+    /**
+     *
+     * Writes a <code>double</code> value to the client, 
+     * followed by a carriage return-line feed (CRLF).
+     *
+     *
+     * @param d			the <code>double</code> value
+     *				to write to the client
+     *
+     * @exception IOException 	if an input or output exception occurred
+     *
+     */
+
+    public void println(double d) throws IOException {
+	print(d);
+	println();
+    }
 }

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequest.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequest.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequest.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,24 +1,19 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
 import java.io.BufferedReader;
@@ -27,431 +22,577 @@
 import java.util.Locale;
 import java.util.Map;
 
+
+
 /**
- * Defines an object to provide client request information to a servlet. The
+ * Defines an object to provide client request information to a servlet.  The
  * servlet container creates a <code>ServletRequest</code> object and passes
  * it as an argument to the servlet's <code>service</code> method.
- * <p>
- * A <code>ServletRequest</code> object provides data including parameter name
- * and values, attributes, and an input stream. Interfaces that extend
- * <code>ServletRequest</code> can provide additional protocol-specific data
- * (for example, HTTP data is provided by
- * {@link javax.servlet.http.HttpServletRequest}.
+ *
+ * <p>A <code>ServletRequest</code> object provides data including
+ * parameter name and values, attributes, and an input stream.
+ * Interfaces that extend <code>ServletRequest</code> can provide
+ * additional protocol-specific data (for example, HTTP data is
+ * provided by {@link javax.servlet.http.HttpServletRequest}.
  * 
- * @author Various
- * @see javax.servlet.http.HttpServletRequest
+ * @author 	Various
+ * @version 	$Version$
+ *
+ * @see 	javax.servlet.http.HttpServletRequest
+ *
  */
 
-public interface ServletRequest
-{
+public interface ServletRequest {
 
-   /**
-    * Returns the value of the named attribute as an <code>Object</code>, or
-    * <code>null</code> if no attribute of the given name exists.
-    * <p>
-    * Attributes can be set two ways. The servlet container may set attributes
-    * to make available custom information about a request. For example, for
-    * requests made using HTTPS, the attribute
-    * <code>javax.servlet.request.X509Certificate</code> can be used to
-    * retrieve information on the certificate of the client. Attributes can also
-    * be set programatically using {@link ServletRequest#setAttribute}. This
-    * allows information to be embedded into a request before a
-    * {@link RequestDispatcher} call.
-    * <p>
-    * Attribute names should follow the same conventions as package names. This
-    * specification reserves names matching <code>java.*</code>,
-    * <code>javax.*</code>, and <code>sun.*</code>.
-    * 
-    * @param name
-    *           a <code>String</code> specifying the name of the attribute
-    * @return an <code>Object</code> containing the value of the attribute, or
-    *         <code>null</code> if the attribute does not exist
-    */
 
-   public Object getAttribute(String name);
 
-   /**
-    * Returns an <code>Enumeration</code> containing the names of the
-    * attributes available to this request. This method returns an empty
-    * <code>Enumeration</code> if the request has no attributes available to
-    * it.
-    * 
-    * @return an <code>Enumeration</code> of strings containing the names of
-    *         the request's attributes
-    */
 
-   public Enumeration getAttributeNames();
+    /**
+     *
+     * Returns the value of the named attribute as an <code>Object</code>,
+     * or <code>null</code> if no attribute of the given name exists. 
+     *
+     * <p> Attributes can be set two ways.  The servlet container may set
+     * attributes to make available custom information about a request.
+     * For example, for requests made using HTTPS, the attribute
+     * <code>javax.servlet.request.X509Certificate</code> can be used to
+     * retrieve information on the certificate of the client.  Attributes
+     * can also be set programatically using 
+     * {@link ServletRequest#setAttribute}.  This allows information to be
+     * embedded into a request before a {@link RequestDispatcher} call.
+     *
+     * <p>Attribute names should follow the same conventions as package
+     * names. This specification reserves names matching <code>java.*</code>,
+     * <code>javax.*</code>, and <code>sun.*</code>. 
+     *
+     * @param name	a <code>String</code> specifying the name of 
+     *			the attribute
+     *
+     * @return		an <code>Object</code> containing the value 
+     *			of the attribute, or <code>null</code> if
+     *			the attribute does not exist
+     *
+     */
 
-   /**
-    * Returns the name of the character encoding used in the body of this
-    * request. This method returns <code>null</code> if the request does not
-    * specify a character encoding
-    * 
-    * @return a <code>String</code> containing the name of the character
-    *         encoding, or <code>null</code> if the request does not specify a
-    *         character encoding
-    */
+    public Object getAttribute(String name);
+    
+    
 
-   public String getCharacterEncoding();
+    /**
+     * Returns an <code>Enumeration</code> containing the
+     * names of the attributes available to this request. 
+     * This method returns an empty <code>Enumeration</code>
+     * if the request has no attributes available to it.
+     * 
+     *
+     * @return		an <code>Enumeration</code> of strings 
+     *			containing the names 
+     * 			of the request's attributes
+     *
+     */
 
-   /**
-    * Overrides the name of the character encoding used in the body of this
-    * request. This method must be called prior to reading request parameters or
-    * reading input using getReader(). Otherwise, it has no effect.
-    * 
-    * @param env
-    *           <code>String</code> containing the name of the character
-    *           encoding.
-    * @throws java.io.UnsupportedEncodingException
-    *            if this ServletRequest is still in a state where a character
-    *            encoding may be set, but the specified encoding is invalid
-    */
-   public void setCharacterEncoding(String env) throws java.io.UnsupportedEncodingException;
+    public Enumeration getAttributeNames();
+    
+    
+    
+    
+    /**
+     * Returns the name of the character encoding used in the body of this
+     * request. This method returns <code>null</code> if the request
+     * does not specify a character encoding
+     * 
+     *
+     * @return		a <code>String</code> containing the name of 
+     *			the character encoding, or <code>null</code>
+     *			if the request does not specify a character encoding
+     *
+     */
 
-   /**
-    * Returns the length, in bytes, of the request body and made available by
-    * the input stream, or -1 if the length is not known. For HTTP servlets,
-    * same as the value of the CGI variable CONTENT_LENGTH.
-    * 
-    * @return an integer containing the length of the request body or -1 if the
-    *         length is not known
-    */
+    public String getCharacterEncoding();
 
-   public int getContentLength();
+ /**
+     * Overrides the name of the character encoding used in the body of this
+     * request. This method must be called prior to reading request parameters
+     * or reading input using getReader().
+     * 
+     *
+     * @param env	a <code>String</code> containing the name of 
+     *			the character encoding.
+     * @throws		java.io.UnsupportedEncodingException if this is not a valid encoding
+     */
 
-   /**
-    * Returns the MIME type of the body of the request, or <code>null</code>
-    * if the type is not known. For HTTP servlets, same as the value of the CGI
-    * variable CONTENT_TYPE.
-    * 
-    * @return a <code>String</code> containing the name of the MIME type of
-    *         the request, or null if the type is not known
-    */
+    public void setCharacterEncoding(String env) throws java.io.UnsupportedEncodingException;
 
-   public String getContentType();
+    
+    
+    
+    
+    /**
+     * Returns the length, in bytes, of the request body 
+     * and made available by the input stream, or -1 if the
+     * length is not known. For HTTP servlets, same as the value
+     * of the CGI variable CONTENT_LENGTH.
+     *
+     * @return		an integer containing the length of the 
+     * 			request body or -1 if the length is not known
+     *
+     */
 
-   /**
-    * Retrieves the body of the request as binary data using a
-    * {@link ServletInputStream}. Either this method or {@link #getReader} may
-    * be called to read the body, not both.
-    * 
-    * @return a {@link ServletInputStream} object containing the body of the
-    *         request
-    * @exception IllegalStateException
-    *               if the {@link #getReader} method has already been called for
-    *               this request
-    * @exception IOException
-    *               if an input or output exception occurred
-    */
+    public int getContentLength();
+    
+    
+    
 
-   public ServletInputStream getInputStream() throws IOException;
+    /**
+     * Returns the MIME type of the body of the request, or 
+     * <code>null</code> if the type is not known. For HTTP servlets, 
+     * same as the value of the CGI variable CONTENT_TYPE.
+     *
+     * @return		a <code>String</code> containing the name 
+     *			of the MIME type of 
+     * 			the request, or null if the type is not known
+     *
+     */
 
-   /**
-    * Returns the value of a request parameter as a <code>String</code>, or
-    * <code>null</code> if the parameter does not exist. Request parameters
-    * are extra information sent with the request. For HTTP servlets, parameters
-    * are contained in the query string or posted form data.
-    * <p>
-    * You should only use this method when you are sure the parameter has only
-    * one value. If the parameter might have more than one value, use
-    * {@link #getParameterValues}.
-    * <p>
-    * If you use this method with a multivalued parameter, the value returned is
-    * equal to the first value in the array returned by
-    * <code>getParameterValues</code>.
-    * <p>
-    * If the parameter data was sent in the request body, such as occurs with an
-    * HTTP POST request, then reading the body directly via {@link
-    * #getInputStream} or {@link #getReader} can interfere with the execution of
-    * this method.
-    * 
-    * @param name
-    *           a <code>String</code> specifying the name of the parameter
-    * @return a <code>String</code> representing the single value of the
-    *         parameter
-    * @see #getParameterValues
-    */
+    public String getContentType();
+    
+    
+    
 
-   public String getParameter(String name);
+    /**
+     * Retrieves the body of the request as binary data using
+     * a {@link ServletInputStream}.  Either this method or 
+     * {@link #getReader} may be called to read the body, not both.
+     *
+     * @return			a {@link ServletInputStream} object containing
+     * 				the body of the request
+     *
+     * @exception IllegalStateException  if the {@link #getReader} method
+     * 					 has already been called for this request
+     *
+     * @exception IOException    	if an input or output exception occurred
+     *
+     */
 
-   /**
-    * Returns an <code>Enumeration</code> of <code>String</code> objects
-    * containing the names of the parameters contained in this request. If the
-    * request has no parameters, the method returns an empty
-    * <code>Enumeration</code>.
-    * 
-    * @return an <code>Enumeration</code> of <code>String</code> objects,
-    *         each <code>String</code> containing the name of a request
-    *         parameter; or an empty <code>Enumeration</code> if the request
-    *         has no parameters
-    */
+    public ServletInputStream getInputStream() throws IOException; 
+     
+    
+    
 
-   public Enumeration getParameterNames();
+    /**
+     * Returns the value of a request parameter as a <code>String</code>,
+     * or <code>null</code> if the parameter does not exist. Request parameters
+     * are extra information sent with the request.  For HTTP servlets,
+     * parameters are contained in the query string or posted form data.
+     *
+     * <p>You should only use this method when you are sure the
+     * parameter has only one value. If the parameter might have
+     * more than one value, use {@link #getParameterValues}.
+     *
+     * <p>If you use this method with a multivalued
+     * parameter, the value returned is equal to the first value
+     * in the array returned by <code>getParameterValues</code>.
+     *
+     * <p>If the parameter data was sent in the request body, such as occurs
+     * with an HTTP POST request, then reading the body directly via {@link
+     * #getInputStream} or {@link #getReader} can interfere
+     * with the execution of this method.
+     *
+     * @param name 	a <code>String</code> specifying the 
+     *			name of the parameter
+     *
+     * @return		a <code>String</code> representing the 
+     *			single value of the parameter
+     *
+     * @see 		#getParameterValues
+     *
+     */
 
-   /**
-    * Returns an array of <code>String</code> objects containing all of the
-    * values the given request parameter has, or <code>null</code> if the
-    * parameter does not exist.
-    * <p>
-    * If the parameter has a single value, the array has a length of 1.
-    * 
-    * @param name
-    *           a <code>String</code> containing the name of the parameter
-    *           whose value is requested
-    * @return an array of <code>String</code> objects containing the
-    *         parameter's values
-    * @see #getParameter
-    */
+    public String getParameter(String name);
+    
+    
+    
 
-   public String[] getParameterValues(String name);
+    /**
+     *
+     * Returns an <code>Enumeration</code> of <code>String</code>
+     * objects containing the names of the parameters contained
+     * in this request. If the request has 
+     * no parameters, the method returns an 
+     * empty <code>Enumeration</code>. 
+     *
+     * @return		an <code>Enumeration</code> of <code>String</code>
+     *			objects, each <code>String</code> containing
+     * 			the name of a request parameter; or an 
+     *			empty <code>Enumeration</code> if the
+     *			request has no parameters
+     *
+     */
+     
+    public Enumeration getParameterNames();
+    
+    
+    
 
-   /**
-    * Returns a java.util.Map of the parameters of this request. Request
-    * parameters are extra information sent with the request. For HTTP servlets,
-    * parameters are contained in the query string or posted form data.
-    * 
-    * @return an immutable java.util.Map containing parameter names as keys and
-    *         parameter values as map values. The keys in the parameter map are
-    *         of type String. The values in the parameter map are of type String
-    *         array.
-    */
+    /**
+     * Returns an array of <code>String</code> objects containing 
+     * all of the values the given request parameter has, or 
+     * <code>null</code> if the parameter does not exist.
+     *
+     * <p>If the parameter has a single value, the array has a length
+     * of 1.
+     *
+     * @param name	a <code>String</code> containing the name of 
+     *			the parameter whose value is requested
+     *
+     * @return		an array of <code>String</code> objects 
+     *			containing the parameter's values
+     *
+     * @see		#getParameter
+     *
+     */
 
-   public Map getParameterMap();
+    public String[] getParameterValues(String name);
+ 
+    /** Returns a java.util.Map of the parameters of this request.
+     * Request parameters
+     * are extra information sent with the request.  For HTTP servlets,
+     * parameters are contained in the query string or posted form data.
+     *
+     * @return an immutable java.util.Map containing parameter names as 
+     * keys and parameter values as map values. The keys in the parameter
+     * map are of type String. The values in the parameter map are of type
+     * String array.
+     *
+     */
 
-   /**
-    * Returns the name and version of the protocol the request uses in the form
-    * <i>protocol/majorVersion.minorVersion</i>, for example, HTTP/1.1. For
-    * HTTP servlets, the value returned is the same as the value of the CGI
-    * variable <code>SERVER_PROTOCOL</code>.
-    * 
-    * @return a <code>String</code> containing the protocol name and version
-    *         number
-    */
+    public Map getParameterMap();
+    
+    
 
-   public String getProtocol();
+    /**
+     * Returns the name and version of the protocol the request uses
+     * in the form <i>protocol/majorVersion.minorVersion</i>, for 
+     * example, HTTP/1.1. For HTTP servlets, the value
+     * returned is the same as the value of the CGI variable 
+     * <code>SERVER_PROTOCOL</code>.
+     *
+     * @return		a <code>String</code> containing the protocol 
+     *			name and version number
+     *
+     */
+    
+    public String getProtocol();
+    
+    
+    
 
-   /**
-    * Returns the name of the scheme used to make this request, for example,
-    * <code>http</code>, <code>https</code>, or <code>ftp</code>.
-    * Different schemes have different rules for constructing URLs, as noted in
-    * RFC 1738.
-    * 
-    * @return a <code>String</code> containing the name of the scheme used to
-    *         make this request
-    */
+    /**
+     * Returns the name of the scheme used to make this request, 
+     * for example,
+     * <code>http</code>, <code>https</code>, or <code>ftp</code>.
+     * Different schemes have different rules for constructing URLs,
+     * as noted in RFC 1738.
+     *
+     * @return		a <code>String</code> containing the name 
+     *			of the scheme used to make this request
+     *
+     */
 
-   public String getScheme();
+    public String getScheme();
+    
+    
+    
 
-   /**
-    * Returns the host name of the server to which the request was sent. It is
-    * the value of the part before ":" in the <code>Host</code> header value,
-    * if any, or the resolved server name, or the server IP address.
-    * 
-    * @return a <code>String</code> containing the name of the server
-    */
+    /**
+     * Returns the host name of the server to which the request was sent.
+     * It is the value of the part before ":" in the <code>Host</code>
+     * header value, if any, or the resolved server name, or the server IP address.
+     *
+     * @return		a <code>String</code> containing the name 
+     *			of the server
+     */
 
-   public String getServerName();
+    public String getServerName();
+    
+    
+    
 
-   /**
-    * Returns the port number to which the request was sent. It is the value of
-    * the part after ":" in the <code>Host</code> header value, if any, or the
-    * server port where the client connection was accepted on.
-    * 
-    * @return an integer specifying the port number
-    */
+    /**
+     * Returns the port number to which the request was sent.
+     * It is the value of the part after ":" in the <code>Host</code>
+     * header value, if any, or the server port where the client connection
+     * was accepted on.
+     *
+     * @return		an integer specifying the port number
+     *
+     */
 
-   public int getServerPort();
+    public int getServerPort();
+    
+    
+    
+    /**
+     * Retrieves the body of the request as character data using
+     * a <code>BufferedReader</code>.  The reader translates the character
+     * data according to the character encoding used on the body.
+     * Either this method or {@link #getInputStream} may be called to read the
+     * body, not both.
+     * 
+     *
+     * @return					a <code>BufferedReader</code>
+     *						containing the body of the request	
+     *
+     * @exception UnsupportedEncodingException 	if the character set encoding
+     * 						used is not supported and the 
+     *						text cannot be decoded
+     *
+     * @exception IllegalStateException   	if {@link #getInputStream} method
+     * 						has been called on this request
+     *
+     * @exception IOException  			if an input or output exception occurred
+     *
+     * @see 					#getInputStream
+     *
+     */
 
-   /**
-    * Retrieves the body of the request as character data using a
-    * <code>BufferedReader</code>. The reader translates the character data
-    * according to the character encoding used on the body. Either this method
-    * or {@link #getInputStream} may be called to read the body, not both.
-    * 
-    * @return a <code>BufferedReader</code> containing the body of the request
-    * @exception UnsupportedEncodingException
-    *               if the character set encoding used is not supported and the
-    *               text cannot be decoded
-    * @exception IllegalStateException
-    *               if {@link #getInputStream} method has been called on this
-    *               request
-    * @exception IOException
-    *               if an input or output exception occurred
-    * @see #getInputStream
-    */
+    public BufferedReader getReader() throws IOException;
+    
+    
+    
 
-   public BufferedReader getReader() throws IOException;
+    /**
+     * Returns the Internet Protocol (IP) address of the client 
+     * or last proxy that sent the request.
+     * For HTTP servlets, same as the value of the 
+     * CGI variable <code>REMOTE_ADDR</code>.
+     *
+     * @return		a <code>String</code> containing the 
+     *			IP address of the client that sent the request
+     *
+     */
+    
+    public String getRemoteAddr();
+    
+    
+    
 
-   /**
-    * Returns the Internet Protocol (IP) address of the client or last proxy
-    * that sent the request. For HTTP servlets, same as the value of the CGI
-    * variable <code>REMOTE_ADDR</code>.
-    * 
-    * @return a <code>String</code> containing the IP address of the client
-    *         that sent the request
-    */
+    /**
+     * Returns the fully qualified name of the client
+     * or the last proxy that sent the request.
+     * If the engine cannot or chooses not to resolve the hostname 
+     * (to improve performance), this method returns the dotted-string form of 
+     * the IP address. For HTTP servlets, same as the value of the CGI variable 
+     * <code>REMOTE_HOST</code>.
+     *
+     * @return		a <code>String</code> containing the fully 
+     *			qualified name of the client
+     *
+     */
 
-   public String getRemoteAddr();
+    public String getRemoteHost();
+    
+    
+    
 
-   /**
-    * Returns the fully qualified name of the client or the last proxy that sent
-    * the request. If the engine cannot or chooses not to resolve the hostname
-    * (to improve performance), this method returns the dotted-string form of
-    * the IP address. For HTTP servlets, same as the value of the CGI variable
-    * <code>REMOTE_HOST</code>.
-    * 
-    * @return a <code>String</code> containing the fully qualified name of the
-    *         client
-    */
+    /**
+     *
+     * Stores an attribute in this request.
+     * Attributes are reset between requests.  This method is most
+     * often used in conjunction with {@link RequestDispatcher}.
+     *
+     * <p>Attribute names should follow the same conventions as
+     * package names. Names beginning with <code>java.*</code>,
+     * <code>javax.*</code>, and <code>com.sun.*</code>, are
+     * reserved for use by Sun Microsystems.
+     *<br> If the object passed in is null, the effect is the same as
+     * calling {@link #removeAttribute}.
+     * <br> It is warned that when the request is dispatched from the
+     * servlet resides in a different web application by
+     * <code>RequestDispatcher</code>, the object set by this method
+     * may not be correctly retrieved in the caller servlet.
+     *
+     *
+     * @param name			a <code>String</code> specifying 
+     *					the name of the attribute
+     *
+     * @param o				the <code>Object</code> to be stored
+     *
+     */
 
-   public String getRemoteHost();
+    public void setAttribute(String name, Object o);
+    
+    
+    
 
-   /**
-    * Stores an attribute in this request. Attributes are reset between
-    * requests. This method is most often used in conjunction with
-    * {@link RequestDispatcher}.
-    * <p>
-    * Attribute names should follow the same conventions as package names. Names
-    * beginning with <code>java.*</code>, <code>javax.*</code>, and
-    * <code>com.sun.*</code>, are reserved for use by Sun Microsystems. <br>
-    * If the object passed in is null, the effect is the same as calling
-    * {@link #removeAttribute}. <br>
-    * It is warned that when the request is dispatched from the servlet resides
-    * in a different web application by <code>RequestDispatcher</code>, the
-    * object set by this method may not be correctly retrieved in the caller
-    * servlet.
-    * 
-    * @param name
-    *           a <code>String</code> specifying the name of the attribute
-    * @param o
-    *           the <code>Object</code> to be stored
-    */
+    /**
+     *
+     * Removes an attribute from this request.  This method is not
+     * generally needed as attributes only persist as long as the request
+     * is being handled.
+     *
+     * <p>Attribute names should follow the same conventions as
+     * package names. Names beginning with <code>java.*</code>,
+     * <code>javax.*</code>, and <code>com.sun.*</code>, are
+     * reserved for use by Sun Microsystems.
+     *
+     *
+     * @param name			a <code>String</code> specifying 
+     *					the name of the attribute to remove
+     *
+     */
 
-   public void setAttribute(String name, Object o);
+    public void removeAttribute(String name);
+    
+    
+    
 
-   /**
-    * Removes an attribute from this request. This method is not generally
-    * needed as attributes only persist as long as the request is being handled.
-    * <p>
-    * Attribute names should follow the same conventions as package names. Names
-    * beginning with <code>java.*</code>, <code>javax.*</code>, and
-    * <code>com.sun.*</code>, are reserved for use by Sun Microsystems.
-    * 
-    * @param name
-    *           a <code>String</code> specifying the name of the attribute to
-    *           remove
-    */
+    /**
+     *
+     * Returns the preferred <code>Locale</code> that the client will 
+     * accept content in, based on the Accept-Language header.
+     * If the client request doesn't provide an Accept-Language header,
+     * this method returns the default locale for the server.
+     *
+     *
+     * @return		the preferred <code>Locale</code> for the client
+     *
+     */
 
-   public void removeAttribute(String name);
+    public Locale getLocale();
+    
+    
+    
 
-   /**
-    * Returns the preferred <code>Locale</code> that the client will accept
-    * content in, based on the Accept-Language header. If the client request
-    * doesn't provide an Accept-Language header, this method returns the default
-    * locale for the server.
-    * 
-    * @return the preferred <code>Locale</code> for the client
-    */
+    /**
+     *
+     * Returns an <code>Enumeration</code> of <code>Locale</code> objects
+     * indicating, in decreasing order starting with the preferred locale, the
+     * locales that are acceptable to the client based on the Accept-Language
+     * header.
+     * If the client request doesn't provide an Accept-Language header,
+     * this method returns an <code>Enumeration</code> containing one 
+     * <code>Locale</code>, the default locale for the server.
+     *
+     *
+     * @return		an <code>Enumeration</code> of preferred 
+     *                  <code>Locale</code> objects for the client
+     *
+     */
 
-   public Locale getLocale();
+    public Enumeration getLocales();
+    
+    
+    
 
-   /**
-    * Returns an <code>Enumeration</code> of <code>Locale</code> objects
-    * indicating, in decreasing order starting with the preferred locale, the
-    * locales that are acceptable to the client based on the Accept-Language
-    * header. If the client request doesn't provide an Accept-Language header,
-    * this method returns an <code>Enumeration</code> containing one
-    * <code>Locale</code>, the default locale for the server.
-    * 
-    * @return an <code>Enumeration</code> of preferred <code>Locale</code>
-    *         objects for the client
-    */
+    /**
+     *
+     * Returns a boolean indicating whether this request was made using a
+     * secure channel, such as HTTPS.
+     *
+     *
+     * @return		a boolean indicating if the request was made using a
+     *                  secure channel
+     *
+     */
 
-   public Enumeration getLocales();
+    public boolean isSecure();
+    
+    
+    
 
-   /**
-    * Returns a boolean indicating whether this request was made using a secure
-    * channel, such as HTTPS.
-    * 
-    * @return a boolean indicating if the request was made using a secure
-    *         channel
-    */
+    /**
+     *
+     * Returns a {@link RequestDispatcher} object that acts as a wrapper for
+     * the resource located at the given path.  
+     * A <code>RequestDispatcher</code> object can be used to forward
+     * a request to the resource or to include the resource in a response.
+     * The resource can be dynamic or static.
+     *
+     * <p>The pathname specified may be relative, although it cannot extend
+     * outside the current servlet context.  If the path begins with 
+     * a "/" it is interpreted as relative to the current context root.  
+     * This method returns <code>null</code> if the servlet container
+     * cannot return a <code>RequestDispatcher</code>.
+     *
+     * <p>The difference between this method and {@link
+     * ServletContext#getRequestDispatcher} is that this method can take a
+     * relative path.
+     *
+     * @param path      a <code>String</code> specifying the pathname
+     *                  to the resource. If it is relative, it must be
+     *                  relative against the current servlet.
+     *
+     * @return          a <code>RequestDispatcher</code> object
+     *                  that acts as a wrapper for the resource
+     *                  at the specified path, or <code>null</code>
+     *                  if the servlet container cannot return a
+     *                  <code>RequestDispatcher</code>
+     *
+     * @see             RequestDispatcher
+     * @see             ServletContext#getRequestDispatcher
+     *
+     */
 
-   public boolean isSecure();
+    public RequestDispatcher getRequestDispatcher(String path);
+    
+    
+    
 
-   /**
-    * Returns a {@link RequestDispatcher} object that acts as a wrapper for the
-    * resource located at the given path. A <code>RequestDispatcher</code>
-    * object can be used to forward a request to the resource or to include the
-    * resource in a response. The resource can be dynamic or static.
-    * <p>
-    * The pathname specified may be relative, although it cannot extend outside
-    * the current servlet context. If the path begins with a "/" it is
-    * interpreted as relative to the current context root. This method returns
-    * <code>null</code> if the servlet container cannot return a
-    * <code>RequestDispatcher</code>.
-    * <p>
-    * The difference between this method and {@link
-    * ServletContext#getRequestDispatcher} is that this method can take a
-    * relative path.
-    * 
-    * @param path
-    *           a <code>String</code> specifying the pathname to the resource.
-    *           If it is relative, it must be relative against the current
-    *           servlet.
-    * @return a <code>RequestDispatcher</code> object that acts as a wrapper
-    *         for the resource at the specified path, or <code>null</code> if
-    *         the servlet container cannot return a
-    *         <code>RequestDispatcher</code>
-    * @see RequestDispatcher
-    * @see ServletContext#getRequestDispatcher
-    */
+    /**
+     * 
+     * @deprecated 	As of Version 2.1 of the Java Servlet API,
+     * 			use {@link ServletContext#getRealPath} instead.
+     *
+     */
 
-   public RequestDispatcher getRequestDispatcher(String path);
+    public String getRealPath(String path);
+    
+    
+    /**
+     * Returns the Internet Protocol (IP) source port of the client
+     * or last proxy that sent the request.
+     *
+     * @return	an integer specifying the port number
+     *
+     * @since 2.4
+     */    
+    public int getRemotePort();
 
-   /**
-    * @deprecated As of Version 2.1 of the Java Servlet API, use
-    *             {@link ServletContext#getRealPath} instead.
-    */
 
-   public String getRealPath(String path);
+    /**
+     * Returns the host name of the Internet Protocol (IP) interface on
+     * which the request was received.
+     *
+     * @return	a <code>String</code> containing the host
+     *		name of the IP on which the request was received.
+     *
+     * @since 2.4
+     */
+    public String getLocalName();
 
-   /**
-    * Returns the Internet Protocol (IP) source port of the client or last proxy
-    * that sent the request.
-    * 
-    * @return an integer specifying the port number
-    * @since 2.4
-    */
-   public int getRemotePort();
+    /**
+     * Returns the Internet Protocol (IP) address of the interface on
+     * which the request  was received.
+     *
+     * @return	a <code>String</code> containing the
+     *		IP address on which the request was received. 
+     *
+     * @since 2.4
+     *
+     */       
+    public String getLocalAddr();
 
-   /**
-    * Returns the host name of the Internet Protocol (IP) interface on which the
-    * request was received.
-    * 
-    * @return a <code>String</code> containing the host name of the IP on
-    *         which the request was received.
-    * @since 2.4
-    */
-   public String getLocalName();
 
-   /**
-    * Returns the Internet Protocol (IP) address of the interface on which the
-    * request was received.
-    * 
-    * @return a <code>String</code> containing the IP address on which the
-    *         request was received.
-    * @since 2.4
-    */
-   public String getLocalAddr();
+    /**
+     * Returns the Internet Protocol (IP) port number of the interface
+     * on which the request was received.
+     *
+     * @return an integer specifying the port number
+     *
+     * @since 2.4
+     */
+    public int getLocalPort();
 
-   /**
-    * Returns the Internet Protocol (IP) port number of the interface on which
-    * the request was received.
-    * 
-    * @return an integer specifying the port number
-    * @since 2.4
-    */
-   public int getLocalPort();
+}
 
-}

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestAttributeEvent.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestAttributeEvent.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestAttributeEvent.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,81 +1,67 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
-/**
- * This is the event class for notifications of changes to the attributes of the
- * servlet request in an application.
- * 
- * @see ServletRequestAttributeListener
- * @since Servlet 2.4
- */
 
-public class ServletRequestAttributeEvent extends ServletRequestEvent
-{
-   private String name;
+    /** 
+      * This is the event class for notifications of changes to the 
+      * attributes of the servlet request in an application.
+      * @see ServletRequestAttributeListener
+      * @since	Servlet 2.4
+      */
 
-   private Object value;
+public class ServletRequestAttributeEvent extends ServletRequestEvent { 
+    private String name;
+    private Object value;
 
-   /**
-    * Construct a ServletRequestAttributeEvent giving the servlet context of
-    * this web application, the ServletRequest whose attributes are changing and
-    * the name and value of the attribute.
-    * 
-    * @param sc
-    *           the ServletContext that is sending the event.
-    * @param request
-    *           the ServletRequest that is sending the event.
-    * @param name
-    *           the name of the request attribute.
-    * @param value
-    *           the value of the request attribute.
-    */
-   public ServletRequestAttributeEvent(ServletContext sc, ServletRequest request, String name, Object value)
-   {
-      super(sc, request);
-      this.name = name;
-      this.value = value;
-   }
+     /** Construct a ServletRequestAttributeEvent giving the servlet context
+      * of this web application, the ServletRequest whose attributes are
+      * changing and the name and value of the attribute.
+      *
+      * @param sc		the ServletContext that is sending the event.
+      * @param request		the ServletRequest that is sending the event.
+      * @param name		the name of the request attribute.
+      * @param value		the value of the request attribute.
+      */
+    public ServletRequestAttributeEvent(ServletContext sc, ServletRequest request, String name, Object value) {
+        super(sc, request);
+        this.name = name;
+        this.value = value;
+    }
 
-   /**
-    * Return the name of the attribute that changed on the ServletRequest.
-    * 
-    * @return the name of the changed request attribute
-    */
-   public String getName()
-   {
-      return this.name;
-   }
+    /**
+      * Return the name of the attribute that changed on the ServletRequest.
+      *
+      * @return		the name of the changed request attribute
+      */
+    public String getName() {
+        return this.name;
+    }
 
-   /**
-    * Returns the value of the attribute that has been added, removed or
-    * replaced. If the attribute was added, this is the value of the attribute.
-    * If the attribute was removed, this is the value of the removed attribute.
-    * If the attribute was replaced, this is the old value of the attribute.
-    * 
-    * @return the value of the changed request attribute
-    */
-   public Object getValue()
-   {
-      return this.value;
-   }
+    /**
+      * Returns the value of the attribute that has been added, removed or 
+      * replaced. If the attribute was added, this is the value of the 
+      * attribute. If the attribute was removed, this is the value of the 
+      * removed attribute. If the attribute was replaced, this is the old 
+      * value of the attribute.
+      *
+      * @return		the value of the changed request attribute
+      */
+    public Object getValue() {
+        return this.value;   
+    }
 }

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestAttributeListener.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestAttributeListener.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestAttributeListener.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,57 +1,50 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
 import java.util.EventListener;
 
-/**
- * A ServletRequestAttributeListener can be implemented by the developer
- * interested in being notified of request attribute changes. Notifications will
- * be generated while the request is within the scope of the web application in
- * which the listener is registered. A request is defined as coming into scope
- * when it is about to enter the first servlet or filter in each web
- * application, as going out of scope when it exits the last servlet or the
- * first filter in the chain.
- * 
- * @since Servlet 2.4
- */
+    /**
+     * A ServletRequestAttributeListener can be implemented by the
+     * developer interested in being notified of request attribute
+     * changes. Notifications will be generated while the request
+     * is within the scope of the web application in which the listener
+     * is registered. A request is defined as coming into scope when
+     * it is about to enter the first servlet or filter in each web
+     * application, as going out of scope when it exits the last servlet
+     * or the first filter in the chain.
+     *
+     * @since Servlet 2.4
+     */
 
-public interface ServletRequestAttributeListener extends EventListener
-{
-   /**
-    * Notification that a new attribute was added to the * servlet request.
-    * Called after the attribute is added.
-    */
-   public void attributeAdded(ServletRequestAttributeEvent srae);
+public interface ServletRequestAttributeListener extends EventListener {
+    /** Notification that a new attribute was added to the
+     ** servlet request. Called after the attribute is added.
+     */
+    public void attributeAdded(ServletRequestAttributeEvent srae);
 
-   /**
-    * Notification that an existing attribute has been removed from the *
-    * servlet request. Called after the attribute is removed.
-    */
-   public void attributeRemoved(ServletRequestAttributeEvent srae);
+    /** Notification that an existing attribute has been removed from the
+     ** servlet request. Called after the attribute is removed.
+     */
+    public void attributeRemoved(ServletRequestAttributeEvent srae);
 
-   /**
-    * Notification that an attribute was replaced on the * servlet request.
-    * Called after the attribute is replaced.
-    */
-   public void attributeReplaced(ServletRequestAttributeEvent srae);
+    /** Notification that an attribute was replaced on the
+     ** servlet request. Called after the attribute is replaced.
+     */
+    public void attributeReplaced(ServletRequestAttributeEvent srae);
 }
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestEvent.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestEvent.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestEvent.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,66 +1,56 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
-/**
- * Events of this kind indicate lifecycle events for a ServletRequest. The
- * source of the event is the ServletContext of this web application.
- * 
- * @see ServletRequestListener
- * @since Servlet 2.4
- */
 
-public class ServletRequestEvent extends java.util.EventObject
-{
-   private ServletRequest request;
+    /** 
+      * Events of this kind indicate lifecycle
+      * events for a ServletRequest.
+      * The source of the event
+      * is the ServletContext of this web application.
+      * @see ServletRequestListener
+      * @since	Servlet 2.4
+      */
 
-   /**
-    * Construct a ServletRequestEvent for the given ServletContext and
-    * ServletRequest.
-    * 
-    * @param sc
-    *           the ServletContext of the web application.
-    * @param request
-    *           the ServletRequest that is sending the event.
-    */
-   public ServletRequestEvent(ServletContext sc, ServletRequest request)
-   {
-      super(sc);
-      this.request = request;
-   }
+public class ServletRequestEvent extends java.util.EventObject { 
+    private ServletRequest request;
 
-   /**
-    * Returns the ServletRequest that is changing.
-    */
-   public ServletRequest getServletRequest()
-   {
-      return this.request;
-   }
+    /** Construct a ServletRequestEvent for the given ServletContext
+      * and ServletRequest.
+      *
+      * @param sc		the ServletContext of the web application.
+      * @param request		the ServletRequest that is sending the event.
+      */
+    public ServletRequestEvent(ServletContext sc, ServletRequest request) {
+        super(sc);
+        this.request = request;
+    }
+    
+    /**
+      * Returns the ServletRequest that is changing.
+      */
+    public ServletRequest getServletRequest () { 
+        return this.request;
+    }
 
-   /**
-    * Returns the ServletContext of this web application.
-    */
-   public ServletContext getServletContext()
-   {
-      return (ServletContext) super.getSource();
-   }
+    /**
+      * Returns the ServletContext of this web application.
+      */
+    public ServletContext getServletContext () { 
+        return (ServletContext) super.getSource();
+    }
 }

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestListener.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestListener.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestListener.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,44 +1,40 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
 import java.util.EventListener;
 
-/**
- * A ServletRequestListener can be implemented by the developer interested in
- * being notified of requests coming in and out of scope in a web component. A
- * request is defined as coming into scope when it is about to enter the first
- * servlet or filter in each web application, as going out of scope when it
- * exits the last servlet or the first filter in the chain.
- * 
- * @since Servlet 2.4
- */
+    /**
+     * A ServletRequestListener can be implemented by the developer
+     * interested in being notified of requests coming in and out of
+     * scope in a web component. A request is defined as coming into
+     * scope when it is about to enter the first servlet or filter
+     * in each web application, as going out of scope when it exits
+     * the last servlet or the first filter in the chain.
+     *
+     * @since Servlet 2.4
+     */
 
-public interface ServletRequestListener extends EventListener
-{
 
-   /** The request is about to go out of scope of the web application. */
-   public void requestDestroyed(ServletRequestEvent sre);
+public interface ServletRequestListener extends EventListener {
 
-   /** The request is about to come into scope of the web application. */
-   public void requestInitialized(ServletRequestEvent sre);
+    /** The request is about to go out of scope of the web application. */
+    public void requestDestroyed ( ServletRequestEvent sre );
+
+    /** The request is about to come into scope of the web application. */
+    public void requestInitialized ( ServletRequestEvent sre );
 }

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestWrapper.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestWrapper.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletRequestWrapper.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,24 +1,19 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
 import java.io.BufferedReader;
@@ -27,350 +22,380 @@
 import java.util.Locale;
 import java.util.Map;
 
+
+
 /**
- * Provides a convenient implementation of the ServletRequest interface that can
- * be subclassed by developers wishing to adapt the request to a Servlet. This
- * class implements the Wrapper or Decorator pattern. Methods default to calling
- * through to the wrapped request object.
  * 
- * @since v 2.3
- * @see javax.servlet.ServletRequest
+ * Provides a convenient implementation of the ServletRequest interface that
+ * can be subclassed by developers wishing to adapt the request to a Servlet.
+ * This class implements the Wrapper or Decorator pattern. Methods default to
+ * calling through to the wrapped request object.
+  * @since	v 2.3
+ * 
+ * 
+ *
+ * @see 	javax.servlet.ServletRequest
+ *
  */
 
-public class ServletRequestWrapper implements ServletRequest
-{
-   private ServletRequest request;
+public class ServletRequestWrapper implements ServletRequest {
+    private ServletRequest request;
 
-   /**
-    * Creates a ServletRequest adaptor wrapping the given request object.
-    * 
-    * @throws java.lang.IllegalArgumentException
-    *            if the request is null
-    */
+	/**
+	* Creates a ServletRequest adaptor wrapping the given request object. 
+	* @throws java.lang.IllegalArgumentException if the request is null
+	*/
 
-   public ServletRequestWrapper(ServletRequest request)
-   {
-      if (request == null)
-      {
-         throw new IllegalArgumentException("Request cannot be null");
-      }
-      this.request = request;
-   }
+    public ServletRequestWrapper(ServletRequest request) {
+	if (request == null) {
+	    throw new IllegalArgumentException("Request cannot be null");   
+	}
+	this.request = request;
+    }
 
-   /**
-    * Return the wrapped request object.
-    */
-   public ServletRequest getRequest()
-   {
-      return this.request;
-   }
+	/**
+	* Return the wrapped request object.
+	*/
+	public ServletRequest getRequest() {
+		return this.request;
+	}
+	
+	/**
+	* Sets the request object being wrapped. 
+	* @throws java.lang.IllegalArgumentException if the request is null.
+	*/
+	
+	public void setRequest(ServletRequest request) {
+	    if (request == null) {
+		throw new IllegalArgumentException("Request cannot be null");
+	    }
+	    this.request = request;
+	}
 
-   /**
-    * Sets the request object being wrapped.
-    * 
-    * @throws java.lang.IllegalArgumentException
-    *            if the request is null.
-    */
+    /**
+     *
+     * The default behavior of this method is to call getAttribute(String name)
+     * on the wrapped request object.
+     */
 
-   public void setRequest(ServletRequest request)
-   {
-      if (request == null)
-      {
-         throw new IllegalArgumentException("Request cannot be null");
-      }
-      this.request = request;
-   }
+    public Object getAttribute(String name) {
+	return this.request.getAttribute(name);
+	}
+    
+    
 
-   /**
-    * The default behavior of this method is to call getAttribute(String name)
-    * on the wrapped request object.
-    */
+    /**
+     * The default behavior of this method is to return getAttributeNames()
+     * on the wrapped request object.
+     */
 
-   public Object getAttribute(String name)
-   {
-      return this.request.getAttribute(name);
-   }
+    public Enumeration getAttributeNames() {
+	return this.request.getAttributeNames();
+	}    
+    
+    
+    
+    /**
+      * The default behavior of this method is to return getCharacterEncoding()
+     * on the wrapped request object.
+     */
 
-   /**
-    * The default behavior of this method is to return getAttributeNames() on
-    * the wrapped request object.
-    */
+    public String getCharacterEncoding() {
+	return this.request.getCharacterEncoding();
+	}
+	
+    /**
+      * The default behavior of this method is to set the character encoding
+     * on the wrapped request object.
+     */
 
-   public Enumeration getAttributeNames()
-   {
-      return this.request.getAttributeNames();
-   }
+    public void setCharacterEncoding(String enc) throws java.io.UnsupportedEncodingException {
+	this.request.setCharacterEncoding(enc);
+	}
+    
+    
+    /**
+      * The default behavior of this method is to return getContentLength()
+     * on the wrapped request object.
+     */
 
-   /**
-    * The default behavior of this method is to return getCharacterEncoding() on
-    * the wrapped request object.
-    */
+    public int getContentLength() {
+	return this.request.getContentLength();
+    }
+    
+    
+    
 
-   public String getCharacterEncoding()
-   {
-      return this.request.getCharacterEncoding();
-   }
+       /**
+      * The default behavior of this method is to return getContentType()
+     * on the wrapped request object.
+     */
+    public String getContentType() {
+	return this.request.getContentType();
+    }
+    
+    
+    
 
-   /**
-    * The default behavior of this method is to set the character encoding on
-    * the wrapped request object.
-    */
+     /**
+      * The default behavior of this method is to return getInputStream()
+     * on the wrapped request object.
+     */
 
-   public void setCharacterEncoding(String enc) throws java.io.UnsupportedEncodingException
-   {
-      this.request.setCharacterEncoding(enc);
-   }
+    public ServletInputStream getInputStream() throws IOException {
+	return this.request.getInputStream();
+	}
+     
+    
+    
 
-   /**
-    * The default behavior of this method is to return getContentLength() on the
-    * wrapped request object.
-    */
+    /**
+      * The default behavior of this method is to return getParameter(String name)
+     * on the wrapped request object.
+     */
 
-   public int getContentLength()
-   {
-      return this.request.getContentLength();
-   }
+    public String getParameter(String name) {
+	return this.request.getParameter(name);
+    }
+    
+    /**
+      * The default behavior of this method is to return getParameterMap()
+     * on the wrapped request object.
+     */
+    public Map getParameterMap() {
+	return this.request.getParameterMap();
+    }
+    
+    
+    
 
-   /**
-    * The default behavior of this method is to return getContentType() on the
-    * wrapped request object.
-    */
-   public String getContentType()
-   {
-      return this.request.getContentType();
-   }
+    /**
+      * The default behavior of this method is to return getParameterNames()
+     * on the wrapped request object.
+     */
+     
+    public Enumeration getParameterNames() {
+	return this.request.getParameterNames();
+    }
+    
+    
+    
 
-   /**
-    * The default behavior of this method is to return getInputStream() on the
-    * wrapped request object.
-    */
+       /**
+      * The default behavior of this method is to return getParameterValues(String name)
+     * on the wrapped request object.
+     */
+    public String[] getParameterValues(String name) {
+	return this.request.getParameterValues(name);
+	}
+    
+    
+    
 
-   public ServletInputStream getInputStream() throws IOException
-   {
-      return this.request.getInputStream();
-   }
+     /**
+      * The default behavior of this method is to return getProtocol()
+     * on the wrapped request object.
+     */
+    
+    public String getProtocol() {
+	return this.request.getProtocol();
+	}
+    
+    
+    
 
-   /**
-    * The default behavior of this method is to return getParameter(String name)
-    * on the wrapped request object.
-    */
+    /**
+      * The default behavior of this method is to return getScheme()
+     * on the wrapped request object.
+     */
+    
 
-   public String getParameter(String name)
-   {
-      return this.request.getParameter(name);
-   }
+    public String getScheme() {
+	return this.request.getScheme();
+	}
+    
+    
+    
 
-   /**
-    * The default behavior of this method is to return getParameterMap() on the
-    * wrapped request object.
-    */
-   public Map getParameterMap()
-   {
-      return this.request.getParameterMap();
-   }
+    /**
+      * The default behavior of this method is to return getServerName()
+     * on the wrapped request object.
+     */
+    public String getServerName() {
+	return this.request.getServerName();
+	}
+    
+    
+    
 
    /**
-    * The default behavior of this method is to return getParameterNames() on
-    * the wrapped request object.
-    */
+      * The default behavior of this method is to return getServerPort()
+     * on the wrapped request object.
+     */
 
-   public Enumeration getParameterNames()
-   {
-      return this.request.getParameterNames();
-   }
+    public int getServerPort() {
+	return this.request.getServerPort();
+	}
+    
+    
+    
+  /**
+      * The default behavior of this method is to return getReader()
+     * on the wrapped request object.
+     */
 
-   /**
-    * The default behavior of this method is to return getParameterValues(String
-    * name) on the wrapped request object.
-    */
-   public String[] getParameterValues(String name)
-   {
-      return this.request.getParameterValues(name);
-   }
+    public BufferedReader getReader() throws IOException {
+	return this.request.getReader();
+	}
+    
+    
+    
 
-   /**
-    * The default behavior of this method is to return getProtocol() on the
-    * wrapped request object.
-    */
+    /**
+      * The default behavior of this method is to return getRemoteAddr()
+     * on the wrapped request object.
+     */
+    
+    public String getRemoteAddr() {
+	return this.request.getRemoteAddr();
+    }
+    
+    
+    
 
-   public String getProtocol()
-   {
-      return this.request.getProtocol();
-   }
+      /**
+      * The default behavior of this method is to return getRemoteHost()
+     * on the wrapped request object.
+     */
 
-   /**
-    * The default behavior of this method is to return getScheme() on the
-    * wrapped request object.
-    */
+    public String getRemoteHost() {
+	return this.request.getRemoteHost();
+    }
+    
+    
+    
 
-   public String getScheme()
-   {
-      return this.request.getScheme();
-   }
+    /**
+      * The default behavior of this method is to return setAttribute(String name, Object o)
+     * on the wrapped request object.
+     */
 
-   /**
-    * The default behavior of this method is to return getServerName() on the
-    * wrapped request object.
-    */
-   public String getServerName()
-   {
-      return this.request.getServerName();
-   }
+    public void setAttribute(String name, Object o) {
+	this.request.setAttribute(name, o);
+    }
+    
+    
+    
 
-   /**
-    * The default behavior of this method is to return getServerPort() on the
-    * wrapped request object.
-    */
+    /**
+      * The default behavior of this method is to call removeAttribute(String name)
+     * on the wrapped request object.
+     */
+    public void removeAttribute(String name) {
+	this.request.removeAttribute(name);
+    }
+    
+    
+    
 
-   public int getServerPort()
-   {
-      return this.request.getServerPort();
-   }
-
    /**
-    * The default behavior of this method is to return getReader() on the
-    * wrapped request object.
-    */
+      * The default behavior of this method is to return getLocale()
+     * on the wrapped request object.
+     */
 
-   public BufferedReader getReader() throws IOException
-   {
-      return this.request.getReader();
-   }
+    public Locale getLocale() {
+	return this.request.getLocale();
+    }
+    
+    
+    
 
-   /**
-    * The default behavior of this method is to return getRemoteAddr() on the
-    * wrapped request object.
-    */
+     /**
+      * The default behavior of this method is to return getLocales()
+     * on the wrapped request object.
+     */
 
-   public String getRemoteAddr()
-   {
-      return this.request.getRemoteAddr();
-   }
+    public Enumeration getLocales() {
+	return this.request.getLocales();
+    }
+    
+    
+    
 
-   /**
-    * The default behavior of this method is to return getRemoteHost() on the
-    * wrapped request object.
-    */
+    /**
+      * The default behavior of this method is to return isSecure()
+     * on the wrapped request object.
+     */
 
-   public String getRemoteHost()
-   {
-      return this.request.getRemoteHost();
-   }
+    public boolean isSecure() {
+	return this.request.isSecure();
+    }
+    
+    
+    
 
-   /**
-    * The default behavior of this method is to return setAttribute(String name,
-    * Object o) on the wrapped request object.
-    */
+    /**
+      * The default behavior of this method is to return getRequestDispatcher(String path)
+     * on the wrapped request object.
+     */
 
-   public void setAttribute(String name, Object o)
-   {
-      this.request.setAttribute(name, o);
-   }
+    public RequestDispatcher getRequestDispatcher(String path) {
+	return this.request.getRequestDispatcher(path);
+    }
+    
+    
+    
 
-   /**
-    * The default behavior of this method is to call removeAttribute(String
-    * name) on the wrapped request object.
-    */
-   public void removeAttribute(String name)
-   {
-      this.request.removeAttribute(name);
-   }
+    /**
+      * The default behavior of this method is to return getRealPath(String path)
+     * on the wrapped request object.
+     */
 
-   /**
-    * The default behavior of this method is to return getLocale() on the
-    * wrapped request object.
-    */
+    public String getRealPath(String path) {
+	return this.request.getRealPath(path);
+    }
+    
+    /**
+     * The default behavior of this method is to return
+     * getRemotePort() on the wrapped request object.
+     *
+     * @since 2.4
+     */    
+    public int getRemotePort(){
+        return this.request.getRemotePort();
+    }
 
-   public Locale getLocale()
-   {
-      return this.request.getLocale();
-   }
 
-   /**
-    * The default behavior of this method is to return getLocales() on the
-    * wrapped request object.
-    */
+    /**
+     * The default behavior of this method is to return
+     * getLocalName() on the wrapped request object.
+     *
+     * @since 2.4
+     */
+    public String getLocalName(){
+        return this.request.getLocalName();
+    }
 
-   public Enumeration getLocales()
-   {
-      return this.request.getLocales();
-   }
+    /**
+     * The default behavior of this method is to return
+     * getLocalAddr() on the wrapped request object.
+     *
+     * @since 2.4
+     */       
+    public String getLocalAddr(){
+        return this.request.getLocalAddr();
+    }
 
-   /**
-    * The default behavior of this method is to return isSecure() on the wrapped
-    * request object.
-    */
 
-   public boolean isSecure()
-   {
-      return this.request.isSecure();
-   }
+    /**
+     * The default behavior of this method is to return
+     * getLocalPort() on the wrapped request object.
+     *
+     * @since 2.4
+     */
+    public int getLocalPort(){
+        return this.request.getLocalPort();
+    }
+    
+}
 
-   /**
-    * The default behavior of this method is to return
-    * getRequestDispatcher(String path) on the wrapped request object.
-    */
-
-   public RequestDispatcher getRequestDispatcher(String path)
-   {
-      return this.request.getRequestDispatcher(path);
-   }
-
-   /**
-    * The default behavior of this method is to return getRealPath(String path)
-    * on the wrapped request object.
-    * 
-    * @deprecated As of Version 2.1 of the Java Servlet API, use
-    *             {@link ServletContext#getRealPath} instead.
-    */
-   @Deprecated
-   public String getRealPath(String path)
-   {
-      return this.request.getRealPath(path);
-   }
-
-   /**
-    * The default behavior of this method is to return getRemotePort() on the
-    * wrapped request object.
-    * 
-    * @since 2.4
-    */
-   public int getRemotePort()
-   {
-      return this.request.getRemotePort();
-   }
-
-   /**
-    * The default behavior of this method is to return getLocalName() on the
-    * wrapped request object.
-    * 
-    * @since 2.4
-    */
-   public String getLocalName()
-   {
-      return this.request.getLocalName();
-   }
-
-   /**
-    * The default behavior of this method is to return getLocalAddr() on the
-    * wrapped request object.
-    * 
-    * @since 2.4
-    */
-   public String getLocalAddr()
-   {
-      return this.request.getLocalAddr();
-   }
-
-   /**
-    * The default behavior of this method is to return getLocalPort() on the
-    * wrapped request object.
-    * 
-    * @since 2.4
-    */
-   public int getLocalPort()
-   {
-      return this.request.getLocalPort();
-   }
-
-}

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletResponse.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletResponse.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletResponse.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,360 +1,453 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.Locale;
 
+
 /**
  * Defines an object to assist a servlet in sending a response to the client.
  * The servlet container creates a <code>ServletResponse</code> object and
  * passes it as an argument to the servlet's <code>service</code> method.
- * <p>
- * To send binary data in a MIME body response, use the
- * {@link ServletOutputStream} returned by {@link #getOutputStream}. To send
- * character data, use the <code>PrintWriter</code> object returned by
- * {@link #getWriter}. To mix binary and text data, for example, to create a
- * multipart response, use a <code>ServletOutputStream</code> and manage the
- * character sections manually.
- * <p>
- * The charset for the MIME body response can be specified explicitly using the
- * {@link #setCharacterEncoding} and {@link #setContentType} methods, or
- * implicitly using the {@link #setLocale} method. Explicit specifications take
- * precedence over implicit specifications. If no charset is specified,
- * ISO-8859-1 will be used. The <code>setCharacterEncoding</code>,
- * <code>setContentType</code>, or <code>setLocale</code> method must be
- * called before <code>getWriter</code> and before committing the response for
- * the character encoding to be used.
- * <p>
- * See the Internet RFCs such as <a href="http://www.ietf.org/rfc/rfc2045.txt">
- * RFC 2045</a> for more information on MIME. Protocols such as SMTP and HTTP
- * define profiles of MIME, and those standards are still evolving.
+ *
+ * <p>To send binary data in a MIME body response, use
+ * the {@link ServletOutputStream} returned by {@link #getOutputStream}.
+ * To send character data, use the <code>PrintWriter</code> object 
+ * returned by {@link #getWriter}. To mix binary and text data,
+ * for example, to create a multipart response, use a
+ * <code>ServletOutputStream</code> and manage the character sections
+ * manually.
+ *
+ * <p>The charset for the MIME body response can be specified
+ * explicitly using the {@link #setCharacterEncoding} and
+ * {@link #setContentType} methods, or implicitly
+ * using the {@link #setLocale} method.
+ * Explicit specifications take precedence over
+ * implicit specifications. If no charset is specified, ISO-8859-1 will be
+ * used. The <code>setCharacterEncoding</code>,
+ * <code>setContentType</code>, or <code>setLocale</code> method must
+ * be called before <code>getWriter</code> and before committing
+ * the response for the character encoding to be used.
  * 
- * @author Various
- * @see ServletOutputStream
+ * <p>See the Internet RFCs such as 
+ * <a href="http://www.ietf.org/rfc/rfc2045.txt">
+ * RFC 2045</a> for more information on MIME. Protocols such as SMTP
+ * and HTTP define profiles of MIME, and those standards
+ * are still evolving.
+ *
+ * @author 	Various
+ * @version 	$Version$
+ *
+ * @see		ServletOutputStream
+ *
  */
+ 
+public interface ServletResponse {
 
-public interface ServletResponse
-{
 
-   /**
-    * Returns the name of the character encoding (MIME charset) used for the
-    * body sent in this response. The character encoding may have been specified
-    * explicitly using the {@link #setCharacterEncoding} or
-    * {@link #setContentType} methods, or implicitly using the
-    * {@link #setLocale} method. Explicit specifications take precedence over
-    * implicit specifications. Calls made to these methods after
-    * <code>getWriter</code> has been called or after the response has been
-    * committed have no effect on the character encoding. If no character
-    * encoding has been specified, <code>ISO-8859-1</code> is returned.
-    * <p>
-    * See RFC 2047 (http://www.ietf.org/rfc/rfc2047.txt) for more information
-    * about character encoding and MIME.
-    * 
-    * @return a <code>String</code> specifying the name of the character
-    *         encoding, for example, <code>UTF-8</code>
-    */
+    
+    /**
+     * Returns the name of the character encoding (MIME charset)
+     * used for the body sent in this response.
+     * The character encoding may have been specified explicitly
+     * using the {@link #setCharacterEncoding} or
+     * {@link #setContentType} methods, or implicitly using the
+     * {@link #setLocale} method. Explicit specifications take
+     * precedence over implicit specifications. Calls made
+     * to these methods after <code>getWriter</code> has been
+     * called or after the response has been committed have no
+     * effect on the character encoding. If no character encoding
+     * has been specified, <code>ISO-8859-1</code> is returned.
+     * <p>See RFC 2047 (http://www.ietf.org/rfc/rfc2047.txt)
+     * for more information about character encoding and MIME.
+     *
+     * @return		a <code>String</code> specifying the
+     *			name of the character encoding, for
+     *			example, <code>UTF-8</code>
+     *
+     */
+  
+    public String getCharacterEncoding();
+    
+    
 
-   public String getCharacterEncoding();
+    /**
+     * Returns the content type used for the MIME body
+     * sent in this response. The content type proper must
+     * have been specified using {@link #setContentType}
+     * before the response is committed. If no content type
+     * has been specified, this method returns null.
+     * If a content type has been specified and a
+     * character encoding has been explicitly or implicitly
+     * specified as described in {@link #getCharacterEncoding},
+     * the charset parameter is included in the string returned.
+     * If no character encoding has been specified, the
+     * charset parameter is omitted.
+     *
+     * @return		a <code>String</code> specifying the
+     *			content type, for example,
+     *			<code>text/html; charset=UTF-8</code>,
+     *			or null
+     *
+     * @since 2.4
+     */
+  
+    public String getContentType();
+    
+    
 
-   /**
-    * Returns the content type used for the MIME body sent in this response. The
-    * content type proper must have been specified using {@link #setContentType}
-    * before the response is committed. If no content type has been specified,
-    * this method returns null. If a content type has been specified, and a
-    * character encoding has been explicitly or implicitly specified as
-    * described in {@link #getCharacterEncoding} or {@link #getWriter} has been
-    * called, the charset parameter is included in the string returned. If no
-    * character encoding has been specified, the charset parameter is omitted.
-    * 
-    * @return a <code>String</code> specifying the content type, for example,
-    *         <code>text/html; charset=UTF-8</code>, or null
-    * @since 2.4
-    */
+    /**
+     * Returns a {@link ServletOutputStream} suitable for writing binary 
+     * data in the response. The servlet container does not encode the
+     * binary data.  
+     
+     * <p> Calling flush() on the ServletOutputStream commits the response.
+     
+     * Either this method or {@link #getWriter} may 
+     * be called to write the body, not both.
+     *
+     * @return				a {@link ServletOutputStream} for writing binary data	
+     *
+     * @exception IllegalStateException if the <code>getWriter</code> method
+     * 					has been called on this response
+     *
+     * @exception IOException 		if an input or output exception occurred
+     *
+     * @see 				#getWriter
+     *
+     */
 
-   public String getContentType();
+    public ServletOutputStream getOutputStream() throws IOException;
+    
+    
 
-   /**
-    * Returns a {@link ServletOutputStream} suitable for writing binary data in
-    * the response. The servlet container does not encode the binary data.
-    * <p>
-    * Calling flush() on the ServletOutputStream commits the response. Either
-    * this method or {@link #getWriter} may be called to write the body, not
-    * both.
-    * 
-    * @return a {@link ServletOutputStream} for writing binary data
-    * @exception IllegalStateException
-    *               if the <code>getWriter</code> method has been called on
-    *               this response
-    * @exception IOException
-    *               if an input or output exception occurred
-    * @see #getWriter
-    */
+    /**
+     * Returns a <code>PrintWriter</code> object that
+     * can send character text to the client.
+     * The <code>PrintWriter</code> uses the character
+     * encoding returned by {@link #getCharacterEncoding}.
+     * If the response's character encoding has not been
+     * specified as described in <code>getCharacterEncoding</code>
+     * (i.e., the method just returns the default value 
+     * <code>ISO-8859-1</code>), <code>getWriter</code>
+     * updates it to <code>ISO-8859-1</code>.
+     * <p>Calling flush() on the <code>PrintWriter</code>
+     * commits the response.
+     * <p>Either this method or {@link #getOutputStream} may be called
+     * to write the body, not both.
+     *
+     * 
+     * @return 		a <code>PrintWriter</code> object that 
+     *			can return character data to the client 
+     *
+     * @exception UnsupportedEncodingException
+     *			if the character encoding returned
+     *			by <code>getCharacterEncoding</code> cannot be used
+     *
+     * @exception IllegalStateException
+     *			if the <code>getOutputStream</code>
+     * 			method has already been called for this 
+     *			response object
+     *
+     * @exception IOException
+     *			if an input or output exception occurred
+     *
+     * @see 		#getOutputStream
+     * @see 		#setCharacterEncoding
+     *
+     */
 
-   public ServletOutputStream getOutputStream() throws IOException;
+    public PrintWriter getWriter() throws IOException;
+    
+    
+    
+    
+    /**
+     * Sets the character encoding (MIME charset) of the response
+     * being sent to the client, for example, to UTF-8.
+     * If the character encoding has already been set by
+     * {@link #setContentType} or {@link #setLocale},
+     * this method overrides it.
+     * Calling {@link #setContentType} with the <code>String</code>
+     * of <code>text/html</code> and calling
+     * this method with the <code>String</code> of <code>UTF-8</code>
+     * is equivalent with calling
+     * <code>setContentType</code> with the <code>String</code> of
+     * <code>text/html; charset=UTF-8</code>.
+     * <p>This method can be called repeatedly to change the character
+     * encoding.
+     * This method has no effect if it is called after
+     * <code>getWriter</code> has been
+     * called or after the response has been committed.
+     * <p>Containers must communicate the character encoding used for
+     * the servlet response's writer to the client if the protocol
+     * provides a way for doing so. In the case of HTTP, the character
+     * encoding is communicated as part of the <code>Content-Type</code>
+     * header for text media types. Note that the character encoding
+     * cannot be communicated via HTTP headers if the servlet does not
+     * specify a content type; however, it is still used to encode text
+     * written via the servlet response's writer.
+     *
+     * @param charset 	a String specifying only the character set
+     * 			defined by IANA Character Sets
+     *			(http://www.iana.org/assignments/character-sets)
+     *
+     * @see		#setContentType
+     * 			#setLocale
+     *
+     * @since 2.4
+     *
+     */
 
-   /**
-    * Returns a <code>PrintWriter</code> object that can send character text
-    * to the client. The <code>PrintWriter</code> uses the character encoding
-    * returned by {@link #getCharacterEncoding}. If the response's character
-    * encoding has not been specified as described in
-    * <code>getCharacterEncoding</code> (i.e., the method just returns the
-    * default value <code>ISO-8859-1</code>), <code>getWriter</code>
-    * updates it to <code>ISO-8859-1</code>.
-    * <p>
-    * Calling flush() on the <code>PrintWriter</code> commits the response.
-    * <p>
-    * Either this method or {@link #getOutputStream} may be called to write the
-    * body, not both.
-    * 
-    * @return a <code>PrintWriter</code> object that can return character data
-    *         to the client
-    * @exception UnsupportedEncodingException
-    *               if the character encoding returned by
-    *               <code>getCharacterEncoding</code> cannot be used
-    * @exception IllegalStateException
-    *               if the <code>getOutputStream</code> method has already
-    *               been called for this response object
-    * @exception IOException
-    *               if an input or output exception occurred
-    * @see #getOutputStream
-    * @see #setCharacterEncoding
-    */
+    public void setCharacterEncoding(String charset);
+    
+    
 
-   public PrintWriter getWriter() throws IOException;
 
-   /**
-    * Sets the character encoding (MIME charset) of the response being sent to
-    * the client, for example, to UTF-8. If the character encoding has already
-    * been set by {@link #setContentType} or {@link #setLocale}, this method
-    * overrides it. Calling {@link #setContentType} with the <code>String</code>
-    * of <code>text/html</code> and calling this method with the
-    * <code>String</code> of <code>UTF-8</code> is equivalent with calling
-    * <code>setContentType</code> with the <code>String</code> of
-    * <code>text/html; charset=UTF-8</code>.
-    * <p>
-    * This method can be called repeatedly to change the character encoding.
-    * This method has no effect if it is called after <code>getWriter</code>
-    * has been called or after the response has been committed.
-    * <p>
-    * Containers must communicate the character encoding used for the servlet
-    * response's writer to the client if the protocol provides a way for doing
-    * so. In the case of HTTP, the character encoding is communicated as part of
-    * the <code>Content-Type</code> header for text media types. Note that the
-    * character encoding cannot be communicated via HTTP headers if the servlet
-    * does not specify a content type; however, it is still used to encode text
-    * written via the servlet response's writer.
-    * 
-    * @param charset
-    *           a String specifying only the character set defined by IANA
-    *           Character Sets (http://www.iana.org/assignments/character-sets)
-    * @see #setContentType
-    * @see #setLocale
-    * @since 2.4
-    */
+    /**
+     * Sets the length of the content body in the response
+     * In HTTP servlets, this method sets the HTTP Content-Length header.
+     *
+     *
+     * @param len 	an integer specifying the length of the 
+     * 			content being returned to the client; sets
+     *			the Content-Length header
+     *
+     */
 
-   public void setCharacterEncoding(String charset);
+    public void setContentLength(int len);
+    
+    
 
-   /**
-    * Sets the length of the content body in the response In HTTP servlets, this
-    * method sets the HTTP Content-Length header.
-    * 
-    * @param len
-    *           an integer specifying the length of the content being returned
-    *           to the client; sets the Content-Length header
-    */
+    /**
+     * Sets the content type of the response being sent to
+     * the client, if the response has not been committed yet.
+     * The given content type may include a character encoding
+     * specification, for example, <code>text/html;charset=UTF-8</code>.
+     * The response's character encoding is only set from the given
+     * content type if this method is called before <code>getWriter</code>
+     * is called.
+     * <p>This method may be called repeatedly to change content type and
+     * character encoding.
+     * This method has no effect if called after the response
+     * has been committed. It does not set the response's character
+     * encoding if it is called after <code>getWriter</code>
+     * has been called or after the response has been committed.
+     * <p>Containers must communicate the content type and the character
+     * encoding used for the servlet response's writer to the client if
+     * the protocol provides a way for doing so. In the case of HTTP,
+     * the <code>Content-Type</code> header is used.
+     *
+     * @param type 	a <code>String</code> specifying the MIME 
+     *			type of the content
+     *
+     * @see 		#setLocale
+     * @see 		#setCharacterEncoding
+     * @see 		#getOutputStream
+     * @see 		#getWriter
+     *
+     */
 
-   public void setContentLength(int len);
+    public void setContentType(String type);
+    
 
-   /**
-    * Sets the content type of the response being sent to the client, if the
-    * response has not been committed yet. The given content type may include a
-    * character encoding specification, for example,
-    * <code>text/html;charset=UTF-8</code>. The response's character encoding
-    * is only set from the given content type if this method is called before
-    * <code>getWriter</code> is called.
-    * <p>
-    * This method may be called repeatedly to change content type and character
-    * encoding. This method has no effect if called after the response has been
-    * committed. It does not set the response's character encoding if it is
-    * called after <code>getWriter</code> has been called or after the
-    * response has been committed.
-    * <p>
-    * Containers must communicate the content type and the character encoding
-    * used for the servlet response's writer to the client if the protocol
-    * provides a way for doing so. In the case of HTTP, the
-    * <code>Content-Type</code> header is used.
-    * 
-    * @param type
-    *           a <code>String</code> specifying the MIME type of the content
-    * @see #setLocale
-    * @see #setCharacterEncoding
-    * @see #getOutputStream
-    * @see #getWriter
-    */
+    /**
+     * Sets the preferred buffer size for the body of the response.  
+     * The servlet container will use a buffer at least as large as 
+     * the size requested.  The actual buffer size used can be found
+     * using <code>getBufferSize</code>.
+     *
+     * <p>A larger buffer allows more content to be written before anything is
+     * actually sent, thus providing the servlet with more time to set
+     * appropriate status codes and headers.  A smaller buffer decreases 
+     * server memory load and allows the client to start receiving data more
+     * quickly.
+     *
+     * <p>This method must be called before any response body content is
+     * written; if content has been written or the response object has
+     * been committed, this method throws an 
+     * <code>IllegalStateException</code>.
+     *
+     * @param size 	the preferred buffer size
+     *
+     * @exception  IllegalStateException  	if this method is called after
+     *						content has been written
+     *
+     * @see 		#getBufferSize
+     * @see 		#flushBuffer
+     * @see 		#isCommitted
+     * @see 		#reset
+     *
+     */
 
-   public void setContentType(String type);
+    public void setBufferSize(int size);
+    
+    
 
-   /**
-    * Sets the preferred buffer size for the body of the response. The servlet
-    * container will use a buffer at least as large as the size requested. The
-    * actual buffer size used can be found using <code>getBufferSize</code>.
-    * <p>
-    * A larger buffer allows more content to be written before anything is
-    * actually sent, thus providing the servlet with more time to set
-    * appropriate status codes and headers. A smaller buffer decreases server
-    * memory load and allows the client to start receiving data more quickly.
-    * <p>
-    * This method must be called before any response body content is written; if
-    * content has been written or the response object has been committed, this
-    * method throws an <code>IllegalStateException</code>.
-    * 
-    * @param size
-    *           the preferred buffer size
-    * @exception IllegalStateException
-    *               if this method is called after content has been written
-    * @see #getBufferSize
-    * @see #flushBuffer
-    * @see #isCommitted
-    * @see #reset
-    */
+    /**
+     * Returns the actual buffer size used for the response.  If no buffering
+     * is used, this method returns 0.
+     *
+     * @return	 	the actual buffer size used
+     *
+     * @see 		#setBufferSize
+     * @see 		#flushBuffer
+     * @see 		#isCommitted
+     * @see 		#reset
+     *
+     */
 
-   public void setBufferSize(int size);
+    public int getBufferSize();
+    
+    
 
-   /**
-    * Returns the actual buffer size used for the response. If no buffering is
-    * used, this method returns 0.
-    * 
-    * @return the actual buffer size used
-    * @see #setBufferSize
-    * @see #flushBuffer
-    * @see #isCommitted
-    * @see #reset
-    */
+    /**
+     * Forces any content in the buffer to be written to the client.  A call
+     * to this method automatically commits the response, meaning the status 
+     * code and headers will be written.
+     *
+     * @see 		#setBufferSize
+     * @see 		#getBufferSize
+     * @see 		#isCommitted
+     * @see 		#reset
+     *
+     */
 
-   public int getBufferSize();
+    public void flushBuffer() throws IOException;
+    
+    
+    
+    /**
+     * Clears the content of the underlying buffer in the response without
+     * clearing headers or status code. If the 
+     * response has been committed, this method throws an 
+     * <code>IllegalStateException</code>.
+     *
+     * @see 		#setBufferSize
+     * @see 		#getBufferSize
+     * @see 		#isCommitted
+     * @see 		#reset
+     *
+     * @since 2.3
+     */
 
-   /**
-    * Forces any content in the buffer to be written to the client. A call to
-    * this method automatically commits the response, meaning the status code
-    * and headers will be written.
-    * 
-    * @see #setBufferSize
-    * @see #getBufferSize
-    * @see #isCommitted
-    * @see #reset
-    */
+    public void resetBuffer();
+    
 
-   public void flushBuffer() throws IOException;
+    /**
+     * Returns a boolean indicating if the response has been
+     * committed.  A committed response has already had its status 
+     * code and headers written.
+     *
+     * @return		a boolean indicating if the response has been
+     *  		committed
+     *
+     * @see 		#setBufferSize
+     * @see 		#getBufferSize
+     * @see 		#flushBuffer
+     * @see 		#reset
+     *
+     */
 
-   /**
-    * Clears the content of the underlying buffer in the response without
-    * clearing headers or status code. If the response has been committed, this
-    * method throws an <code>IllegalStateException</code>.
-    * 
-    * @see #setBufferSize
-    * @see #getBufferSize
-    * @see #isCommitted
-    * @see #reset
-    * @since 2.3
-    */
+    public boolean isCommitted();
+    
+    
 
-   public void resetBuffer();
+    /**
+     * Clears any data that exists in the buffer as well as the status code and
+     * headers.  If the response has been committed, this method throws an 
+     * <code>IllegalStateException</code>.
+     *
+     * @exception IllegalStateException  if the response has already been
+     *                                   committed
+     *
+     * @see 		#setBufferSize
+     * @see 		#getBufferSize
+     * @see 		#flushBuffer
+     * @see 		#isCommitted
+     *
+     */
 
-   /**
-    * Returns a boolean indicating if the response has been committed. A
-    * committed response has already had its status code and headers written.
-    * 
-    * @return a boolean indicating if the response has been committed
-    * @see #setBufferSize
-    * @see #getBufferSize
-    * @see #flushBuffer
-    * @see #reset
-    */
+    public void reset();
+    
+    
 
-   public boolean isCommitted();
+    /**
+     * Sets the locale of the response, if the response has not been
+     * committed yet. It also sets the response's character encoding
+     * appropriately for the locale, if the character encoding has not
+     * been explicitly set using {@link #setContentType} or
+     * {@link #setCharacterEncoding}, <code>getWriter</code> hasn't
+     * been called yet, and the response hasn't been committed yet.
+     * If the deployment descriptor contains a 
+     * <code>locale-encoding-mapping-list</code> element, and that
+     * element provides a mapping for the given locale, that mapping
+     * is used. Otherwise, the mapping from locale to character
+     * encoding is container dependent.
+     * <p>This method may be called repeatedly to change locale and
+     * character encoding. The method has no effect if called after the
+     * response has been committed. It does not set the response's
+     * character encoding if it is called after {@link #setContentType}
+     * has been called with a charset specification, after
+     * {@link #setCharacterEncoding} has been called, after
+     * <code>getWriter</code> has been called, or after the response
+     * has been committed.
+     * <p>Containers must communicate the locale and the character encoding
+     * used for the servlet response's writer to the client if the protocol
+     * provides a way for doing so. In the case of HTTP, the locale is
+     * communicated via the <code>Content-Language</code> header,
+     * the character encoding as part of the <code>Content-Type</code>
+     * header for text media types. Note that the character encoding
+     * cannot be communicated via HTTP headers if the servlet does not
+     * specify a content type; however, it is still used to encode text
+     * written via the servlet response's writer.
+     * 
+     * @param loc  the locale of the response
+     *
+     * @see 		#getLocale
+     * @see 		#setContentType
+     * @see 		#setCharacterEncoding
+     *
+     */
 
-   /**
-    * Clears any data that exists in the buffer as well as the status code and
-    * headers. If the response has been committed, this method throws an
-    * <code>IllegalStateException</code>.
-    * 
-    * @exception IllegalStateException
-    *               if the response has already been committed
-    * @see #setBufferSize
-    * @see #getBufferSize
-    * @see #flushBuffer
-    * @see #isCommitted
-    */
+    public void setLocale(Locale loc);
+    
+    
 
-   public void reset();
+    /**
+     * Returns the locale specified for this response
+     * using the {@link #setLocale} method. Calls made to
+     * <code>setLocale</code> after the response is committed
+     * have no effect. If no locale has been specified,
+     * the container's default locale is returned.
+     * 
+     * @see 		#setLocale
+     *
+     */
 
-   /**
-    * Sets the locale of the response, if the response has not been committed
-    * yet. It also sets the response's character encoding appropriately for the
-    * locale, if the character encoding has not been explicitly set using
-    * {@link #setContentType} or {@link #setCharacterEncoding},
-    * <code>getWriter</code> hasn't been called yet, and the response hasn't
-    * been committed yet. If the deployment descriptor contains a
-    * <code>locale-encoding-mapping-list</code> element, and that element
-    * provides a mapping for the given locale, that mapping is used. Otherwise,
-    * the mapping from locale to character encoding is container dependent.
-    * <p>
-    * This method may be called repeatedly to change locale and character
-    * encoding. The method has no effect if called after the response has been
-    * committed. It does not set the response's character encoding if it is
-    * called after {@link #setContentType} has been called with a charset
-    * specification, after {@link #setCharacterEncoding} has been called, after
-    * <code>getWriter</code> has been called, or after the response has been
-    * committed.
-    * <p>
-    * Containers must communicate the locale and the character encoding used for
-    * the servlet response's writer to the client if the protocol provides a way
-    * for doing so. In the case of HTTP, the locale is communicated via the
-    * <code>Content-Language</code> header, the character encoding as part of
-    * the <code>Content-Type</code> header for text media types. Note that the
-    * character encoding cannot be communicated via HTTP headers if the servlet
-    * does not specify a content type; however, it is still used to encode text
-    * written via the servlet response's writer.
-    * 
-    * @param loc
-    *           the locale of the response
-    * @see #getLocale
-    * @see #setContentType
-    * @see #setCharacterEncoding
-    */
+    public Locale getLocale();
 
-   public void setLocale(Locale loc);
 
-   /**
-    * Returns the locale specified for this response using the
-    * {@link #setLocale} method. Calls made to <code>setLocale</code> after
-    * the response is committed have no effect. If no locale has been specified,
-    * the container's default locale is returned.
-    * 
-    * @see #setLocale
-    */
 
-   public Locale getLocale();
+}
 
-}
+
+
+
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletResponseWrapper.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletResponseWrapper.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/ServletResponseWrapper.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,24 +1,19 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
 import java.io.IOException;
@@ -26,209 +21,198 @@
 import java.util.Locale;
 
 /**
+ * 
  * Provides a convenient implementation of the ServletResponse interface that
  * can be subclassed by developers wishing to adapt the response from a Servlet.
  * This class implements the Wrapper or Decorator pattern. Methods default to
  * calling through to the wrapped response object.
  * 
- * @author Various
- * @since v 2.3
- * @see javax.servlet.ServletResponse
+ * @author 	Various
+ * @version 	$Version$
+ * @since	v 2.3
+ *
+ * @see 	javax.servlet.ServletResponse
+ *
  */
 
-public class ServletResponseWrapper implements ServletResponse
-{
-   private ServletResponse response;
+ 
+public class ServletResponseWrapper implements ServletResponse {
+	private ServletResponse response;
+	/**
+	* Creates a ServletResponse adaptor wrapping the given response object.
+	* @throws java.lang.IllegalArgumentException if the response is null.
+	*/
 
-   /**
-    * Creates a ServletResponse adaptor wrapping the given response object.
-    * 
-    * @throws java.lang.IllegalArgumentException
-    *            if the response is null.
-    */
 
-   public ServletResponseWrapper(ServletResponse response)
-   {
-      if (response == null)
-      {
-         throw new IllegalArgumentException("Response cannot be null");
-      }
-      this.response = response;
-   }
+	public ServletResponseWrapper(ServletResponse response) {
+	    if (response == null) {
+		throw new IllegalArgumentException("Response cannot be null");
+	    }
+	    this.response = response;
+	}
 
-   /**
-    * Return the wrapped ServletResponse object.
-    */
+	/**
+	* Return the wrapped ServletResponse object.
+	*/
 
-   public ServletResponse getResponse()
-   {
-      return this.response;
-   }
+	public ServletResponse getResponse() {
+		return this.response;
+	}	
+	
+	
+	/**
+	* Sets the response being wrapped. 
+	* @throws java.lang.IllegalArgumentException if the response is null.
+	*/
+	
+	public void setResponse(ServletResponse response) {
+	    if (response == null) {
+		throw new IllegalArgumentException("Response cannot be null");
+	    }
+	    this.response = response;
+	}
 
-   /**
-    * Sets the response being wrapped.
-    * 
-    * @throws java.lang.IllegalArgumentException
-    *            if the response is null.
-    */
+    /**
+     * The default behavior of this method is to call setCharacterEncoding(String charset)
+     * on the wrapped response object.
+     *
+     * @since 2.4
+     */
 
-   public void setResponse(ServletResponse response)
-   {
-      if (response == null)
-      {
-         throw new IllegalArgumentException("Response cannot be null");
-      }
-      this.response = response;
-   }
+    public void setCharacterEncoding(String charset) {
+	this.response.setCharacterEncoding(charset);
+    }
 
-   /**
-    * The default behavior of this method is to call setCharacterEncoding(String
-    * charset) on the wrapped response object.
-    * 
-    * @since 2.4
-    */
+    /**
+     * The default behavior of this method is to return getCharacterEncoding()
+     * on the wrapped response object.
+     */
 
-   public void setCharacterEncoding(String charset)
-   {
-      this.response.setCharacterEncoding(charset);
-   }
+    public String getCharacterEncoding() {
+	return this.response.getCharacterEncoding();
+	}
+    
+    
+	  /**
+     * The default behavior of this method is to return getOutputStream()
+     * on the wrapped response object.
+     */
 
-   /**
-    * The default behavior of this method is to return getCharacterEncoding() on
-    * the wrapped response object.
-    */
+    public ServletOutputStream getOutputStream() throws IOException {
+	return this.response.getOutputStream();
+    }  
+      
+     /**
+     * The default behavior of this method is to return getWriter()
+     * on the wrapped response object.
+     */
 
-   public String getCharacterEncoding()
-   {
-      return this.response.getCharacterEncoding();
-   }
 
-   /**
-    * The default behavior of this method is to return getOutputStream() on the
-    * wrapped response object.
-    */
+    public PrintWriter getWriter() throws IOException {
+	return this.response.getWriter();
+	}
+    
+    /**
+     * The default behavior of this method is to call setContentLength(int len)
+     * on the wrapped response object.
+     */
 
-   public ServletOutputStream getOutputStream() throws IOException
-   {
-      return this.response.getOutputStream();
-   }
+    public void setContentLength(int len) {
+	this.response.setContentLength(len);
+    }
+    
+    /**
+     * The default behavior of this method is to call setContentType(String type)
+     * on the wrapped response object.
+     */
 
-   /**
-    * The default behavior of this method is to return getWriter() on the
-    * wrapped response object.
-    */
+    public void setContentType(String type) {
+	this.response.setContentType(type);
+    }
 
-   public PrintWriter getWriter() throws IOException
-   {
-      return this.response.getWriter();
-   }
+    /**
+     * The default behavior of this method is to return getContentType()
+     * on the wrapped response object.
+     *
+     * @since 2.4
+     */
 
-   /**
-    * The default behavior of this method is to call setContentLength(int len)
-    * on the wrapped response object.
-    */
+    public String getContentType() {
+	return this.response.getContentType();
+    }
+    
+    /**
+     * The default behavior of this method is to call setBufferSize(int size)
+     * on the wrapped response object.
+     */
+    public void setBufferSize(int size) {
+	this.response.setBufferSize(size);
+    }
+    
+    /**
+     * The default behavior of this method is to return getBufferSize()
+     * on the wrapped response object.
+     */
+    public int getBufferSize() {
+	return this.response.getBufferSize();
+    }
 
-   public void setContentLength(int len)
-   {
-      this.response.setContentLength(len);
-   }
+    /**
+     * The default behavior of this method is to call flushBuffer()
+     * on the wrapped response object.
+     */
 
-   /**
-    * The default behavior of this method is to call setContentType(String type)
-    * on the wrapped response object.
-    */
+    public void flushBuffer() throws IOException {
+	this.response.flushBuffer();
+    }
+    
+    /**
+     * The default behavior of this method is to return isCommitted()
+     * on the wrapped response object.
+     */
+    public boolean isCommitted() {
+	return this.response.isCommitted();
+    }
 
-   public void setContentType(String type)
-   {
-      this.response.setContentType(type);
-   }
+    /**
+     * The default behavior of this method is to call reset()
+     * on the wrapped response object.
+     */
 
-   /**
-    * The default behavior of this method is to return getContentType() on the
-    * wrapped response object.
-    * 
-    * @since 2.4
-    */
+    public void reset() {
+	this.response.reset();
+    }
+    
+    /**
+     * The default behavior of this method is to call resetBuffer()
+     * on the wrapped response object.
+     */
+     
+    public void resetBuffer() {
+	this.response.resetBuffer();
+    }
+    
+    /**
+     * The default behavior of this method is to call setLocale(Locale loc)
+     * on the wrapped response object.
+     */
 
-   public String getContentType()
-   {
-      return this.response.getContentType();
-   }
+    public void setLocale(Locale loc) {
+	this.response.setLocale(loc);
+    }
+    
+    /**
+     * The default behavior of this method is to return getLocale()
+     * on the wrapped response object.
+     */
+    public Locale getLocale() {
+	return this.response.getLocale();
+    }
 
-   /**
-    * The default behavior of this method is to call setBufferSize(int size) on
-    * the wrapped response object.
-    */
-   public void setBufferSize(int size)
-   {
-      this.response.setBufferSize(size);
-   }
 
-   /**
-    * The default behavior of this method is to return getBufferSize() on the
-    * wrapped response object.
-    */
-   public int getBufferSize()
-   {
-      return this.response.getBufferSize();
-   }
+}
 
-   /**
-    * The default behavior of this method is to call flushBuffer() on the
-    * wrapped response object.
-    */
 
-   public void flushBuffer() throws IOException
-   {
-      this.response.flushBuffer();
-   }
 
-   /**
-    * The default behavior of this method is to return isCommitted() on the
-    * wrapped response object.
-    */
-   public boolean isCommitted()
-   {
-      return this.response.isCommitted();
-   }
 
-   /**
-    * The default behavior of this method is to call reset() on the wrapped
-    * response object.
-    */
 
-   public void reset()
-   {
-      this.response.reset();
-   }
-
-   /**
-    * The default behavior of this method is to call resetBuffer() on the
-    * wrapped response object.
-    */
-
-   public void resetBuffer()
-   {
-      this.response.resetBuffer();
-   }
-
-   /**
-    * The default behavior of this method is to call setLocale(Locale loc) on
-    * the wrapped response object.
-    */
-
-   public void setLocale(Locale loc)
-   {
-      this.response.setLocale(loc);
-   }
-
-   /**
-    * The default behavior of this method is to return getLocale() on the
-    * wrapped response object.
-    */
-   public Locale getLocale()
-   {
-      return this.response.getLocale();
-   }
-
-}

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/SingleThreadModel.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/SingleThreadModel.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/SingleThreadModel.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,49 +1,49 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
+
+/**
+ * Ensures that servlets handle
+ * only one request at a time. This interface has no methods.
  *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * <p>If a servlet implements this interface, you are <i>guaranteed</i>
+ * that no two threads will execute concurrently in the
+ * servlet's <code>service</code> method. The servlet container
+ * can make this guarantee by synchronizing access to a single
+ * instance of the servlet, or by maintaining a pool of servlet
+ * instances and dispatching each new request to a free servlet.
  *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * <p>Note that SingleThreadModel does not solve all thread safety
+ * issues.  For example, session attributes and static variables can
+ * still be accessed by multiple requests on multiple threads
+ * at the same time, even when SingleThreadModel servlets are used.
+ * It is recommended that a developer take other means to resolve
+ * those issues instead of implementing this interface, such as
+ * avoiding the usage of an instance variable or synchronizing
+ * the block of the code accessing those resources.
+ * This interface is deprecated in Servlet API version 2.4.
  *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ *
+ * @author	Various
+ * @version	$Version$
+ *
+ * @deprecated	As of Java Servlet API 2.4, with no direct
+ *	replacement.
  */
-package javax.servlet;
 
-/**
- * Ensures that servlets handle only one request at a time. This interface has
- * no methods.
- * <p>
- * If a servlet implements this interface, you are <i>guaranteed</i> that no
- * two threads will execute concurrently in the servlet's <code>service</code>
- * method. The servlet container can make this guarantee by synchronizing access
- * to a single instance of the servlet, or by maintaining a pool of servlet
- * instances and dispatching each new request to a free servlet.
- * <p>
- * Note that SingleThreadModel does not solve all thread safety issues. For
- * example, session attributes and static variables can still be accessed by
- * multiple requests on multiple threads at the same time, even when
- * SingleThreadModel servlets are used. It is recommended that a developer take
- * other means to resolve those issues instead of implementing this interface,
- * such as avoiding the usage of an instance variable or synchronizing the block
- * of the code accessing those resources. This interface is deprecated in
- * Servlet API version 2.4.
- * 
- * @author Various
- * @deprecated As of Java Servlet API 2.4, with no direct replacement.
- */
- at Deprecated
-public interface SingleThreadModel
-{
+public interface SingleThreadModel {
 }

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/UnavailableException.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/UnavailableException.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/UnavailableException.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,191 +1,206 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet;
 
+
 /**
- * Defines an exception that a servlet or filter throws to indicate that it is
- * permanently or temporarily unavailable.
- * <p>
- * When a servlet or filter is permanently unavailable, something is wrong with
- * it, and it cannot handle requests until some action is taken. For example, a
- * servlet might be configured incorrectly, or a filter's state may be
- * corrupted. The component should log both the error and the corrective action
+ * Defines an exception that a servlet or filter throws to indicate
+ * that it is permanently or temporarily unavailable. 
+ *
+ * <p>When a servlet or filter is permanently unavailable, something is wrong
+ * with it, and it cannot handle
+ * requests until some action is taken. For example, a servlet
+ * might be configured incorrectly, or a filter's state may be corrupted.
+ * The component should log both the error and the corrective action
  * that is needed.
- * <p>
- * A servlet or filter is temporarily unavailable if it cannot handle requests
- * momentarily due to some system-wide problem. For example, a third-tier server
- * might not be accessible, or there may be insufficient memory or disk storage
- * to handle requests. A system administrator may need to take corrective
- * action.
- * <p>
- * Servlet containers can safely treat both types of unavailable exceptions in
- * the same way. However, treating temporary unavailability effectively makes
- * the servlet container more robust. Specifically, the servlet container might
- * block requests to the servlet or filter for a period of time suggested by the
- * exception, rather than rejecting them until the servlet container restarts.
- * 
- * @author Various
+ *
+ * <p>A servlet or filter is temporarily unavailable if it cannot handle
+ * requests momentarily due to some system-wide problem. For example,
+ * a third-tier server might not be accessible, or there may be 
+ * insufficient memory or disk storage to handle requests. A system
+ * administrator may need to take corrective action.
+ *
+ * <p>Servlet containers can safely treat both types of unavailable
+ * exceptions in the same way. However, treating temporary unavailability
+ * effectively makes the servlet container more robust. Specifically,
+ * the servlet container might block requests to the servlet or filter for a period
+ * of time suggested by the exception, rather than rejecting them until
+ * the servlet container restarts.
+ *
+ *
+ * @author 	Various
+ * @version 	$Version$
+ *
  */
 
-public class UnavailableException extends ServletException
-{
+public class UnavailableException
+extends ServletException {
 
-   private Servlet servlet; // what's unavailable
+    private Servlet     servlet;           // what's unavailable
+    private boolean     permanent;         // needs admin action?
+    private int         seconds;           // unavailability estimate
 
-   private boolean permanent; // needs admin action?
+    /**
+     * 
+     * @deprecated	As of Java Servlet API 2.2, use {@link
+     * 			#UnavailableException(String)} instead.
+     *
+     * @param servlet 	the <code>Servlet</code> instance that is
+     *                  unavailable
+     *
+     * @param msg 	a <code>String</code> specifying the
+     *                  descriptive message
+     *
+     */
 
-   private int seconds; // unavailability estimate
+    public UnavailableException(Servlet servlet, String msg) {
+	super(msg);
+	this.servlet = servlet;
+	permanent = true;
+    }
+ 
+    /**
+     * @deprecated	As of Java Servlet API 2.2, use {@link
+     *			#UnavailableException(String, int)} instead.
+     *
+     * @param seconds	an integer specifying the number of seconds
+     * 			the servlet expects to be unavailable; if
+     *			zero or negative, indicates that the servlet
+     *			can't make an estimate
+     *
+     * @param servlet	the <code>Servlet</code> that is unavailable
+     * 
+     * @param msg	a <code>String</code> specifying the descriptive 
+     *			message, which can be written to a log file or 
+     *			displayed for the user.
+     *
+     */
+    
+    public UnavailableException(int seconds, Servlet servlet, String msg) {
+	super(msg);
+	this.servlet = servlet;
+	if (seconds <= 0)
+	    this.seconds = -1;
+	else
+	    this.seconds = seconds;
+	permanent = false;
+    }
 
-   /**
-    * @deprecated As of Java Servlet API 2.2, use {@link
-    *             #UnavailableException(String)} instead.
-    * @param servlet
-    *           the <code>Servlet</code> instance that is unavailable
-    * @param msg
-    *           a <code>String</code> specifying the descriptive message
-    */
-   @Deprecated
-   public UnavailableException(Servlet servlet, String msg)
-   {
-      super(msg);
-      this.servlet = servlet;
-      permanent = true;
-   }
+    /**
+     * 
+     * Constructs a new exception with a descriptive
+     * message indicating that the servlet is permanently
+     * unavailable.
+     *
+     * @param msg 	a <code>String</code> specifying the
+     *                  descriptive message
+     *
+     */
 
-   /**
-    * @deprecated As of Java Servlet API 2.2, use {@link
-    *             #UnavailableException(String, int)} instead.
-    * @param seconds
-    *           an integer specifying the number of seconds the servlet expects
-    *           to be unavailable; if zero or negative, indicates that the
-    *           servlet can't make an estimate
-    * @param servlet
-    *           the <code>Servlet</code> that is unavailable
-    * @param msg
-    *           a <code>String</code> specifying the descriptive message,
-    *           which can be written to a log file or displayed for the user.
-    */
-   @Deprecated
-   public UnavailableException(int seconds, Servlet servlet, String msg)
-   {
-      super(msg);
-      this.servlet = servlet;
-      if (seconds <= 0)
-         this.seconds = -1;
-      else
-         this.seconds = seconds;
-      permanent = false;
-   }
+    public UnavailableException(String msg) {
+	super(msg);
 
-   /**
-    * Constructs a new exception with a descriptive message indicating that the
-    * servlet is permanently unavailable.
-    * 
-    * @param msg
-    *           a <code>String</code> specifying the descriptive message
-    */
+	permanent = true;
+    }
 
-   public UnavailableException(String msg)
-   {
-      super(msg);
+    /**
+     * Constructs a new exception with a descriptive message
+     * indicating that the servlet is temporarily unavailable
+     * and giving an estimate of how long it will be unavailable.
+     * 
+     * <p>In some cases, the servlet cannot make an estimate. For
+     * example, the servlet might know that a server it needs is
+     * not running, but not be able to report how long it will take
+     * to be restored to functionality. This can be indicated with
+     * a negative or zero value for the <code>seconds</code> argument.
+     *
+     * @param msg	a <code>String</code> specifying the
+     *                  descriptive message, which can be written
+     *                  to a log file or displayed for the user.
+     *
+     * @param seconds	an integer specifying the number of seconds
+     * 			the servlet expects to be unavailable; if
+     *			zero or negative, indicates that the servlet
+     *			can't make an estimate
+     *
+     */
+    
+    public UnavailableException(String msg, int seconds) {
+	super(msg);
 
-      permanent = true;
-   }
+	if (seconds <= 0)
+	    this.seconds = -1;
+	else
+	    this.seconds = seconds;
 
-   /**
-    * Constructs a new exception with a descriptive message indicating that the
-    * servlet is temporarily unavailable and giving an estimate of how long it
-    * will be unavailable.
-    * <p>
-    * In some cases, the servlet cannot make an estimate. For example, the
-    * servlet might know that a server it needs is not running, but not be able
-    * to report how long it will take to be restored to functionality. This can
-    * be indicated with a negative or zero value for the <code>seconds</code>
-    * argument.
-    * 
-    * @param msg
-    *           a <code>String</code> specifying the descriptive message,
-    *           which can be written to a log file or displayed for the user.
-    * @param seconds
-    *           an integer specifying the number of seconds the servlet expects
-    *           to be unavailable; if zero or negative, indicates that the
-    *           servlet can't make an estimate
-    */
+	permanent = false;
+    }
 
-   public UnavailableException(String msg, int seconds)
-   {
-      super(msg);
+    /**
+     *
+     * Returns a <code>boolean</code> indicating
+     * whether the servlet is permanently unavailable.
+     * If so, something is wrong with the servlet, and the
+     * system administrator must take some corrective action.
+     *
+     * @return		<code>true</code> if the servlet is
+     *			permanently unavailable; <code>false</code>
+     *			if the servlet is available or temporarily
+     *			unavailable
+     *
+     */
+     
+    public boolean isPermanent() {
+	return permanent;
+    }
+  
+    /**
+     * @deprecated	As of Java Servlet API 2.2, with no replacement.
+     *
+     * Returns the servlet that is reporting its unavailability.
+     * 
+     * @return		the <code>Servlet</code> object that is 
+     *			throwing the <code>UnavailableException</code>
+     *
+     */
+     
+    public Servlet getServlet() {
+	return servlet;
+    }
 
-      if (seconds <= 0)
-         this.seconds = -1;
-      else
-         this.seconds = seconds;
-
-      permanent = false;
-   }
-
-   /**
-    * Returns a <code>boolean</code> indicating whether the servlet is
-    * permanently unavailable. If so, something is wrong with the servlet, and
-    * the system administrator must take some corrective action.
-    * 
-    * @return <code>true</code> if the servlet is permanently unavailable;
-    *         <code>false</code> if the servlet is available or temporarily
-    *         unavailable
-    */
-
-   public boolean isPermanent()
-   {
-      return permanent;
-   }
-
-   /**
-    * @deprecated As of Java Servlet API 2.2, with no replacement. Returns the
-    *             servlet that is reporting its unavailability.
-    * @return the <code>Servlet</code> object that is throwing the
-    *         <code>UnavailableException</code>
-    */
-   @Deprecated
-   public Servlet getServlet()
-   {
-      return servlet;
-   }
-
-   /**
-    * Returns the number of seconds the servlet expects to be temporarily
-    * unavailable.
-    * <p>
-    * If this method returns a negative number, the servlet is permanently
-    * unavailable or cannot provide an estimate of how long it will be
-    * unavailable. No effort is made to correct for the time elapsed since the
-    * exception was first reported.
-    * 
-    * @return an integer specifying the number of seconds the servlet will be
-    *         temporarily unavailable, or a negative number if the servlet is
-    *         permanently unavailable or cannot make an estimate
-    */
-
-   public int getUnavailableSeconds()
-   {
-      return permanent ? -1 : seconds;
-   }
+    /**
+     * Returns the number of seconds the servlet expects to 
+     * be temporarily unavailable.  
+     *
+     * <p>If this method returns a negative number, the servlet
+     * is permanently unavailable or cannot provide an estimate of
+     * how long it will be unavailable. No effort is
+     * made to correct for the time elapsed since the exception was
+     * first reported.
+     *
+     * @return		an integer specifying the number of seconds
+     *			the servlet will be temporarily unavailable,
+     *			or a negative number if the servlet is permanently
+     *			unavailable or cannot make an estimate
+     *
+     */
+     
+    public int getUnavailableSeconds() {
+	return permanent ? -1 : seconds;
+    }
 }

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/Cookie.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/Cookie.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/Cookie.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,437 +1,537 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet.http;
 
 import java.text.MessageFormat;
 import java.util.ResourceBundle;
 
 /**
- * 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 HttpServletResponse#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
+ *
+ * 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 HttpServletResponse#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 HttpServletRequest#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 Various
+ * <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 HttpServletRequest#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	Various
+ * @version	$Version$
+ *
  */
 
 // XXX would implement java.io.Serializable too, but can't do that
 // so long as sun.servlet.* must run on older JDK 1.02 JVMs which
 // don't include that support.
-public class Cookie implements Cloneable
-{
 
-   private static final String LSTRING_FILE = "javax.servlet.http.LocalStrings";
+public class Cookie implements Cloneable {
 
-   private static ResourceBundle lStrings = ResourceBundle.getBundle(LSTRING_FILE);
+    private static final String LSTRING_FILE =
+	"javax.servlet.http.LocalStrings";
+    private static ResourceBundle lStrings =
+	ResourceBundle.getBundle(LSTRING_FILE);
+    
+    //
+    // The value of the cookie itself.
+    //
+    
+    private String name;	// NAME= ... "$Name" style is reserved
+    private String value;	// value of NAME
 
-   //
-   // The value of the cookie itself.
-   //
+    //
+    // Attributes encoded in the header's cookie fields.
+    //
+    
+    private String comment;	// ;Comment=VALUE ... describes cookie's use
+				// ;Discard ... implied by maxAge < 0
+    private String domain;	// ;Domain=VALUE ... domain that sees cookie
+    private int maxAge = -1;	// ;Max-Age=VALUE ... cookies auto-expire
+    private String path;	// ;Path=VALUE ... URLs that see the cookie
+    private boolean secure;	// ;Secure ... e.g. use SSL
+    private int version = 0;	// ;Version=1 ... means RFC 2109++ style
+    
+    
 
-   private String name; // NAME= ... "$Name" style is reserved
+    /**
+     * 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
+     * @see #setValue
+     * @see #setVersion
+     *
+     */
 
-   private String value; // value of NAME
+    public Cookie(String name, String value) {
+	if (!isToken(name)
+		|| name.equalsIgnoreCase("Comment")	// rfc2019
+		|| name.equalsIgnoreCase("Discard")	// 2019++
+		|| name.equalsIgnoreCase("Domain")
+		|| name.equalsIgnoreCase("Expires")	// (old cookies)
+		|| name.equalsIgnoreCase("Max-Age")	// rfc2019
+		|| name.equalsIgnoreCase("Path")
+		|| name.equalsIgnoreCase("Secure")
+		|| name.equalsIgnoreCase("Version")
+		|| name.startsWith("$")
+	    ) {
+	    String errMsg = lStrings.getString("err.cookie_name_is_token");
+	    Object[] errArgs = new Object[1];
+	    errArgs[0] = name;
+	    errMsg = MessageFormat.format(errMsg, errArgs);
+	    throw new IllegalArgumentException(errMsg);
+	}
 
-   //
-   // Attributes encoded in the header's cookie fields.
-   //
+	this.name = name;
+	this.value = value;
+    }
 
-   private String comment; // ;Comment=VALUE ... describes cookie's use
 
-   // ;Discard ... implied by maxAge < 0
-   private String domain; // ;Domain=VALUE ... domain that sees cookie
 
-   private int maxAge = -1; // ;Max-Age=VALUE ... cookies auto-expire
 
-   private String path; // ;Path=VALUE ... URLs that see the cookie
 
-   private boolean secure; // ;Secure ... e.g. use SSL
+    /**
+     *
+     * 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
+     *
+     */
 
-   private int version = 0; // ;Version=1 ... means RFC 2109++ style
+    public void setComment(String purpose) {
+	comment = purpose;
+    }
+    
+    
+    
 
-   /**
-    * 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
-    * @see #setValue
-    * @see #setVersion
-    */
+    /**
+     * 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
+     *
+     */ 
 
-   public Cookie(String name, String value)
-   {
-      if (!isToken(name) || name.equalsIgnoreCase("Comment") // rfc2019
-            || name.equalsIgnoreCase("Discard") // 2019++
-            || name.equalsIgnoreCase("Domain") || name.equalsIgnoreCase("Expires") // (old
-                                                                                    // cookies)
-            || name.equalsIgnoreCase("Max-Age") // rfc2019
-            || name.equalsIgnoreCase("Path") || name.equalsIgnoreCase("Secure") || name.equalsIgnoreCase("Version") || name.startsWith("$"))
-      {
-         String errMsg = lStrings.getString("err.cookie_name_is_token");
-         Object[] errArgs = new Object[1];
-         errArgs[0] = name;
-         errMsg = MessageFormat.format(errMsg, errArgs);
-         throw new IllegalArgumentException(errMsg);
-      }
+    public String getComment() {
+	return comment;
+    }
+    
+    
+    
 
-      this.name = name;
-      this.value = value;
-   }
 
-   /**
-    * 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
-    */
+    /**
+     *
+     * 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
+     *
+     */
 
-   public void setComment(String purpose)
-   {
-      comment = purpose;
-   }
+    public void setDomain(String pattern) {
+	domain = pattern.toLowerCase();	// IE allegedly needs this
+    }
+    
+    
+    
+    
 
-   /**
-    * 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
-    */
+    /**
+     * 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
+     *
+     */ 
 
-   public String getComment()
-   {
-      return comment;
-   }
+    public String getDomain() {
+	return domain;
+    }
 
-   /**
-    * 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
-    */
 
-   public void setDomain(String pattern)
-   {
-      domain = pattern.toLowerCase(); // IE allegedly needs this
-   }
 
-   /**
-    * 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
-    */
 
-   public String getDomain()
-   {
-      return domain;
-   }
+    /**
+     * 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
+     *
+     */
 
-   /**
-    * 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
-    */
+    public void setMaxAge(int expiry) {
+	maxAge = expiry;
+    }
 
-   public void setMaxAge(int expiry)
-   {
-      maxAge = 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
-    */
 
-   public int getMaxAge()
-   {
-      return maxAge;
-   }
 
-   /**
-    * 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
-    */
+    /**
+     * 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
+     *
+     */
 
-   public void setPath(String uri)
-   {
-      path = uri;
-   }
+    public int getMaxAge() {
+	return maxAge;
+    }
+    
+    
+    
 
-   /**
-    * 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
-    */
+    /**
+     * 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
+     *
+     */
 
-   public String getPath()
-   {
-      return path;
-   }
+    public void setPath(String uri) {
+	path = uri;
+    }
 
-   /**
-    * 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 only when using a secure protocol; if
-    *           <code>false</code>, sent on any protocol
-    * @see #getSecure
-    */
 
-   public void setSecure(boolean flag)
-   {
-      secure = 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 uses a secure protocol;
-    *         otherwise, <code>true</code>
-    * @see #setSecure
-    */
 
-   public boolean getSecure()
-   {
-      return secure;
-   }
+    /**
+     * 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
+     *
+     */ 
 
-   /**
-    * Returns the name of the cookie. The name cannot be changed after creation.
-    * 
-    * @return a <code>String</code> specifying the cookie's name
-    */
+    public String getPath() {
+	return path;
+    }
 
-   public String getName()
-   {
-      return name;
-   }
 
-   /**
-    * 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
-    */
 
-   public void setValue(String newValue)
-   {
-      value = newValue;
-   }
 
-   /**
-    * Returns the value of the cookie.
-    * 
-    * @return a <code>String</code> containing the cookie's present value
-    * @see #setValue
-    * @see Cookie
-    */
 
-   public String getValue()
-   {
-      return value;
-   }
+    /**
+     * 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 only when using a secure protocol;
+     *			if <code>false</code>, sent on any protocol
+     *
+     * @see #getSecure
+     *
+     */
+ 
+    public void setSecure(boolean flag) {
+	secure = flag;
+    }
 
-   /**
-    * 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
-    */
 
-   public int getVersion()
-   {
-      return version;
-   }
 
-   /**
-    * 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
-    */
 
-   public void setVersion(int v)
-   {
-      version = v;
-   }
+    /**
+     * 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 uses a secure protocol;
+     * 			 otherwise, <code>true</code>
+     *
+     * @see #setSecure
+     *
+     */
 
-   // Note -- disabled for now to allow full Netscape compatibility
-   // from RFC 2068, token special case characters
-   // 
-   // private static final String tspecials = "()<>@,;:\\\"/[]?={} \t";
+    public boolean getSecure() {
+	return secure;
+    }
 
-   private static final String tspecials = ",; ";
 
-   /*
-    * Tests a string and returns true if the string counts as a reserved token
-    * in the Java language. @param value the <code>String</code> to be tested
-    * @return <code>true</code> if the <code>String</code> is a reserved
-    * token; <code>false</code> if it is not
-    */
 
-   private boolean isToken(String value)
-   {
-      int len = value.length();
 
-      for (int i = 0; i < len; i++)
-      {
-         char c = value.charAt(i);
 
-         if (c < 0x20 || c >= 0x7f || tspecials.indexOf(c) != -1)
-            return false;
-      }
-      return true;
-   }
+    /**
+     * Returns the name of the cookie. The name cannot be changed after
+     * creation.
+     *
+     * @return		a <code>String</code> specifying the cookie's name
+     *
+     */
 
-   /**
-    * Overrides the standard <code>java.lang.Object.clone</code> method to
-    * return a copy of this cookie.
-    */
+    public String getName() {
+	return name;
+    }
 
-   public Object clone()
-   {
-      try
-      {
-         return super.clone();
-      }
-      catch (CloneNotSupportedException e)
-      {
-         throw new RuntimeException(e.getMessage());
-      }
-   }
+
+
+
+
+    /**
+     *
+     * 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
+     *
+     */
+
+    public void setValue(String newValue) {
+	value = newValue;
+    }
+
+
+
+
+    /**
+     * Returns the value of the cookie.
+     *
+     * @return			a <code>String</code> containing the cookie's
+     *				present value
+     *
+     * @see #setValue
+     * @see Cookie
+     *
+     */
+
+    public String getValue() {
+	return value;
+    }
+
+
+
+
+    /**
+     * 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
+     *
+     */
+
+    public int getVersion() {
+	return version;
+    }
+
+
+
+
+    /**
+     * 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
+     *
+     */
+
+    public void setVersion(int v) {
+	version = v;
+    }
+
+    // Note -- disabled for now to allow full Netscape compatibility
+    // from RFC 2068, token special case characters
+    // 
+    // private static final String tspecials = "()<>@,;:\\\"/[]?={} \t";
+
+    private static final String tspecials = ",; ";
+    
+    
+    
+
+    /*
+     * Tests a string and returns true if the string counts as a 
+     * reserved token in the Java language.
+     * 
+     * @param value		the <code>String</code> to be tested
+     *
+     * @return			<code>true</code> if the <code>String</code> is
+     *				a reserved token; <code>false</code>
+     *				if it is not			
+     */
+
+    private boolean isToken(String value) {
+	int len = value.length();
+
+	for (int i = 0; i < len; i++) {
+	    char c = value.charAt(i);
+
+	    if (c < 0x20 || c >= 0x7f || tspecials.indexOf(c) != -1)
+		return false;
+	}
+	return true;
+    }
+
+
+
+
+
+
+    /**
+     *
+     * Overrides the standard <code>java.lang.Object.clone</code> 
+     * method to return a copy of this cookie.
+     *		
+     *
+     */
+
+    public Object clone() {
+	try {
+	    return super.clone();
+	} catch (CloneNotSupportedException e) {
+	    throw new RuntimeException(e.getMessage());
+	}
+    }
 }
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServlet.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServlet.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServlet.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,24 +1,19 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet.http;
 
 import java.io.IOException;
@@ -37,924 +32,988 @@
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 
+
 /**
- * Provides an abstract class to be subclassed to create an HTTP servlet
- * suitable for a Web site. A subclass of <code>HttpServlet</code> must
- * override at least one method, usually one of these:
+ *
+ * Provides an abstract class to be subclassed to create
+ * an HTTP servlet suitable for a Web site. A subclass of
+ * <code>HttpServlet</code> must override at least 
+ * one method, usually one of these:
+ *
  * <ul>
  * <li> <code>doGet</code>, if the servlet supports HTTP GET requests
  * <li> <code>doPost</code>, for HTTP POST requests
  * <li> <code>doPut</code>, for HTTP PUT requests
  * <li> <code>doDelete</code>, for HTTP DELETE requests
- * <li> <code>init</code> and <code>destroy</code>, to manage resources
- * that are held for the life of the servlet
- * <li> <code>getServletInfo</code>, which the servlet uses to provide
- * information about itself
+ * <li> <code>init</code> and <code>destroy</code>, 
+ * to manage resources that are held for the life of the servlet
+ * <li> <code>getServletInfo</code>, which the servlet uses to
+ * provide information about itself 
  * </ul>
- * <p>
- * There's almost no reason to override the <code>service</code> method.
- * <code>service</code> handles standard HTTP requests by dispatching them to
- * the handler methods for each HTTP request type (the <code>do</code><i>XXX</i>
+ *
+ * <p>There's almost no reason to override the <code>service</code>
+ * method. <code>service</code> handles standard HTTP
+ * requests by dispatching them to the handler methods
+ * for each HTTP request type (the <code>do</code><i>XXX</i>
  * methods listed above).
- * <p>
- * Likewise, there's almost no reason to override the <code>doOptions</code>
- * and <code>doTrace</code> methods.
- * <p>
- * Servlets typically run on multithreaded servers, so be aware that a servlet
- * must handle concurrent requests and be careful to synchronize access to
- * shared resources. Shared resources include in-memory data such as instance or
- * class variables and external objects such as files, database connections, and
- * network connections. See the <a
- * href="http://java.sun.com/Series/Tutorial/java/threads/multithreaded.html">
- * Java Tutorial on Multithreaded Programming</a> for more information on
- * handling multiple threads in a Java program.
+ *
+ * <p>Likewise, there's almost no reason to override the 
+ * <code>doOptions</code> and <code>doTrace</code> methods.
  * 
- * @author Various
+ * <p>Servlets typically run on multithreaded servers,
+ * so be aware that a servlet must handle concurrent
+ * requests and be careful to synchronize access to shared resources.
+ * Shared resources include in-memory data such as
+ * instance or class variables and external objects
+ * such as files, database connections, and network 
+ * connections.
+ * See the
+ * <a href="http://java.sun.com/Series/Tutorial/java/threads/multithreaded.html">
+ * Java Tutorial on Multithreaded Programming</a> for more
+ * information on handling multiple threads in a Java program.
+ *
+ * @author	Various
+ * @version	$Version$
+ *
  */
 
-public abstract class HttpServlet extends GenericServlet implements java.io.Serializable
-{
-   private static final String METHOD_DELETE = "DELETE";
 
-   private static final String METHOD_HEAD = "HEAD";
 
-   private static final String METHOD_GET = "GET";
+public abstract class HttpServlet extends GenericServlet
+    implements java.io.Serializable
+{
+    private static final String METHOD_DELETE = "DELETE";
+    private static final String METHOD_HEAD = "HEAD";
+    private static final String METHOD_GET = "GET";
+    private static final String METHOD_OPTIONS = "OPTIONS";
+    private static final String METHOD_POST = "POST";
+    private static final String METHOD_PUT = "PUT";
+    private static final String METHOD_TRACE = "TRACE";
 
-   private static final String METHOD_OPTIONS = "OPTIONS";
+    private static final String HEADER_IFMODSINCE = "If-Modified-Since";
+    private static final String HEADER_LASTMOD = "Last-Modified";
+    
+    private static final String LSTRING_FILE =
+	"javax.servlet.http.LocalStrings";
+    private static ResourceBundle lStrings =
+	ResourceBundle.getBundle(LSTRING_FILE);
+   
+   
+   
+    
+    /**
+     * Does nothing, because this is an abstract class.
+     * 
+     */
 
-   private static final String METHOD_POST = "POST";
+    public HttpServlet() { }
+    
+    
 
-   private static final String METHOD_PUT = "PUT";
+    /**
+     *
+     * Called by the server (via the <code>service</code> method) to
+     * allow a servlet to handle a GET request. 
+     *
+     * <p>Overriding this method to support a GET request also
+     * automatically supports an HTTP HEAD request. A HEAD
+     * request is a GET request that returns no body in the
+     * response, only the request header fields.
+     *
+     * <p>When overriding this method, read the request data,
+     * write the response headers, get the response's writer or 
+     * output stream object, and finally, write the response data.
+     * It's best to include content type and encoding. When using
+     * a <code>PrintWriter</code> object to return the response,
+     * set the content type before accessing the
+     * <code>PrintWriter</code> object.
+     *
+     * <p>The servlet container must write the headers before
+     * committing the response, because in HTTP the headers must be sent
+     * before the response body.
+     *
+     * <p>Where possible, set the Content-Length header (with the
+     * {@link javax.servlet.ServletResponse#setContentLength} method),
+     * to allow the servlet container to use a persistent connection 
+     * to return its response to the client, improving performance.
+     * The content length is automatically set if the entire response fits
+     * inside the response buffer.
+     *
+     * <p>When using HTTP 1.1 chunked encoding (which means that the response
+     * has a Transfer-Encoding header), do not set the Content-Length header.
+     *
+     * <p>The GET method should be safe, that is, without
+     * any side effects for which users are held responsible.
+     * For example, most form queries have no side effects.
+     * If a client request is intended to change stored data,
+     * the request should use some other HTTP method.
+     *
+     * <p>The GET method should also be idempotent, meaning
+     * that it can be safely repeated. Sometimes making a
+     * method safe also makes it idempotent. For example, 
+     * repeating queries is both safe and idempotent, but
+     * buying a product online or modifying data is neither
+     * safe nor idempotent. 
+     *
+     * <p>If the request is incorrectly formatted, <code>doGet</code>
+     * returns an HTTP "Bad Request" message.
+     * 
+     *
+     * @param req	an {@link HttpServletRequest} object that
+     *			contains the request the client has made
+     *			of the servlet
+     *
+     * @param resp	an {@link HttpServletResponse} object that
+     *			contains the response the servlet sends
+     *			to the client
+     * 
+     * @exception IOException	if an input or output error is 
+     *				detected when the servlet handles
+     *				the GET request
+     *
+     * @exception ServletException	if the request for the GET
+     *					could not be handled
+     *
+     * 
+     * @see javax.servlet.ServletResponse#setContentType
+     *
+     */
 
-   private static final String METHOD_TRACE = "TRACE";
+    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
+	throws ServletException, IOException
+    {
+	String protocol = req.getProtocol();
+	String msg = lStrings.getString("http.method_get_not_supported");
+	if (protocol.endsWith("1.1")) {
+	    resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg);
+	} else {
+	    resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg);
+	}
+    }
 
-   private static final String HEADER_IFMODSINCE = "If-Modified-Since";
 
-   private static final String HEADER_LASTMOD = "Last-Modified";
 
-   private static final String LSTRING_FILE = "javax.servlet.http.LocalStrings";
 
-   private static ResourceBundle lStrings = ResourceBundle.getBundle(LSTRING_FILE);
 
-   /**
-    * Does nothing, because this is an abstract class.
-    */
+    /**
+     *
+     * Returns the time the <code>HttpServletRequest</code>
+     * object was last modified,
+     * in milliseconds since midnight January 1, 1970 GMT.
+     * If the time is unknown, this method returns a negative
+     * number (the default).
+     *
+     * <p>Servlets that support HTTP GET requests and can quickly determine
+     * their last modification time should override this method.
+     * This makes browser and proxy caches work more effectively,
+     * reducing the load on server and network resources.
+     *
+     *
+     * @param req	the <code>HttpServletRequest</code> 
+     *			object that is sent to the servlet
+     *
+     * @return		a <code>long</code> integer specifying
+     *			the time the <code>HttpServletRequest</code>
+     *			object was last modified, in milliseconds
+     *			since midnight, January 1, 1970 GMT, or
+     *			-1 if the time is not known
+     *
+     */
 
-   public HttpServlet()
-   {
-   }
+    protected long getLastModified(HttpServletRequest req) {
+	return -1;
+    }
 
-   /**
-    * Called by the server (via the <code>service</code> method) to allow a
-    * servlet to handle a GET request.
-    * <p>
-    * Overriding this method to support a GET request also automatically
-    * supports an HTTP HEAD request. A HEAD request is a GET request that
-    * returns no body in the response, only the request header fields.
-    * <p>
-    * When overriding this method, read the request data, write the response
-    * headers, get the response's writer or output stream object, and finally,
-    * write the response data. It's best to include content type and encoding.
-    * When using a <code>PrintWriter</code> object to return the response, set
-    * the content type before accessing the <code>PrintWriter</code> object.
-    * <p>
-    * The servlet container must write the headers before committing the
-    * response, because in HTTP the headers must be sent before the response
-    * body.
-    * <p>
-    * Where possible, set the Content-Length header (with the
-    * {@link javax.servlet.ServletResponse#setContentLength} method), to allow
-    * the servlet container to use a persistent connection to return its
-    * response to the client, improving performance. The content length is
-    * automatically set if the entire response fits inside the response buffer.
-    * <p>
-    * When using HTTP 1.1 chunked encoding (which means that the response has a
-    * Transfer-Encoding header), do not set the Content-Length header.
-    * <p>
-    * The GET method should be safe, that is, without any side effects for which
-    * users are held responsible. For example, most form queries have no side
-    * effects. If a client request is intended to change stored data, the
-    * request should use some other HTTP method.
-    * <p>
-    * The GET method should also be idempotent, meaning that it can be safely
-    * repeated. Sometimes making a method safe also makes it idempotent. For
-    * example, repeating queries is both safe and idempotent, but buying a
-    * product online or modifying data is neither safe nor idempotent.
-    * <p>
-    * If the request is incorrectly formatted, <code>doGet</code> returns an
-    * HTTP "Bad Request" message.
-    * 
-    * @param req
-    *           an {@link HttpServletRequest} object that contains the request
-    *           the client has made of the servlet
-    * @param resp
-    *           an {@link HttpServletResponse} object that contains the response
-    *           the servlet sends to the client
-    * @exception IOException
-    *               if an input or output error is detected when the servlet
-    *               handles the GET request
-    * @exception ServletException
-    *               if the request for the GET could not be handled
-    * @see javax.servlet.ServletResponse#setContentType
-    */
 
-   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
-   {
-      String protocol = req.getProtocol();
-      String msg = lStrings.getString("http.method_get_not_supported");
-      if (protocol.endsWith("1.1"))
-      {
-         resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg);
-      }
-      else
-      {
-         resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg);
-      }
-   }
 
-   /**
-    * Returns the time the <code>HttpServletRequest</code> object was last
-    * modified, in milliseconds since midnight January 1, 1970 GMT. If the time
-    * is unknown, this method returns a negative number (the default).
-    * <p>
-    * Servlets that support HTTP GET requests and can quickly determine their
-    * last modification time should override this method. This makes browser and
-    * proxy caches work more effectively, reducing the load on server and
-    * network resources.
-    * 
-    * @param req
-    *           the <code>HttpServletRequest</code> object that is sent to the
-    *           servlet
-    * @return a <code>long</code> integer specifying the time the
-    *         <code>HttpServletRequest</code> object was last modified, in
-    *         milliseconds since midnight, January 1, 1970 GMT, or -1 if the
-    *         time is not known
-    */
 
-   protected long getLastModified(HttpServletRequest req)
-   {
-      return -1;
-   }
+    /**
+     * 
+     *
+     * <p>Receives an HTTP HEAD request from the protected
+     * <code>service</code> method and handles the
+     * request.
+     * The client sends a HEAD request when it wants
+     * to see only the headers of a response, such as
+     * Content-Type or Content-Length. The HTTP HEAD
+     * method counts the output bytes in the response
+     * to set the Content-Length header accurately.
+     *
+     * <p>If you override this method, you can avoid computing
+     * the response body and just set the response headers
+     * directly to improve performance. Make sure that the
+     * <code>doHead</code> method you write is both safe
+     * and idempotent (that is, protects itself from being
+     * called multiple times for one HTTP HEAD request).
+     *
+     * <p>If the HTTP HEAD request is incorrectly formatted,
+     * <code>doHead</code> returns an HTTP "Bad Request"
+     * message.
+     *
+     *
+     * @param req	the request object that is passed
+     *			to the servlet
+     *			
+     * @param resp	the response object that the servlet
+     *			uses to return the headers to the clien
+     *
+     * @exception IOException		if an input or output error occurs
+     *
+     * @exception ServletException	if the request for the HEAD
+     *					could not be handled
+     */
 
-   /**
-    * <p>
-    * Receives an HTTP HEAD request from the protected <code>service</code>
-    * method and handles the request. The client sends a HEAD request when it
-    * wants to see only the headers of a response, such as Content-Type or
-    * Content-Length. The HTTP HEAD method counts the output bytes in the
-    * response to set the Content-Length header accurately.
-    * <p>
-    * If you override this method, you can avoid computing the response body and
-    * just set the response headers directly to improve performance. Make sure
-    * that the <code>doHead</code> method you write is both safe and
-    * idempotent (that is, protects itself from being called multiple times for
-    * one HTTP HEAD request).
-    * <p>
-    * If the HTTP HEAD request is incorrectly formatted, <code>doHead</code>
-    * returns an HTTP "Bad Request" message.
-    * 
-    * @param req
-    *           the request object that is passed to the servlet
-    * @param resp
-    *           the response object that the servlet uses to return the headers
-    *           to the clien
-    * @exception IOException
-    *               if an input or output error occurs
-    * @exception ServletException
-    *               if the request for the HEAD could not be handled
-    */
+    protected void doHead(HttpServletRequest req, HttpServletResponse resp)
+	throws ServletException, IOException
+    {
+	NoBodyResponse response = new NoBodyResponse(resp);
+	
+	doGet(req, response);
+	response.setContentLength();
+    }
+    
 
-   protected void doHead(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
-   {
-      NoBodyResponse response = new NoBodyResponse(resp);
 
-      doGet(req, response);
-      response.setContentLength();
-   }
 
-   /**
-    * Called by the server (via the <code>service</code> method) to allow a
-    * servlet to handle a POST request. The HTTP POST method allows the client
-    * to send data of unlimited length to the Web server a single time and is
-    * useful when posting information such as credit card numbers.
-    * <p>
-    * When overriding this method, read the request data, write the response
-    * headers, get the response's writer or output stream object, and finally,
-    * write the response data. It's best to include content type and encoding.
-    * When using a <code>PrintWriter</code> object to return the response, set
-    * the content type before accessing the <code>PrintWriter</code> object.
-    * <p>
-    * The servlet container must write the headers before committing the
-    * response, because in HTTP the headers must be sent before the response
-    * body.
-    * <p>
-    * Where possible, set the Content-Length header (with the
-    * {@link javax.servlet.ServletResponse#setContentLength} method), to allow
-    * the servlet container to use a persistent connection to return its
-    * response to the client, improving performance. The content length is
-    * automatically set if the entire response fits inside the response buffer.
-    * <p>
-    * When using HTTP 1.1 chunked encoding (which means that the response has a
-    * Transfer-Encoding header), do not set the Content-Length header.
-    * <p>
-    * This method does not need to be either safe or idempotent. Operations
-    * requested through POST can have side effects for which the user can be
-    * held accountable, for example, updating stored data or buying items
-    * online.
-    * <p>
-    * If the HTTP POST request is incorrectly formatted, <code>doPost</code>
-    * returns an HTTP "Bad Request" message.
-    * 
-    * @param req
-    *           an {@link HttpServletRequest} object that contains the request
-    *           the client has made of the servlet
-    * @param resp
-    *           an {@link HttpServletResponse} object that contains the response
-    *           the servlet sends to the client
-    * @exception IOException
-    *               if an input or output error is detected when the servlet
-    *               handles the request
-    * @exception ServletException
-    *               if the request for the POST could not be handled
-    * @see javax.servlet.ServletOutputStream
-    * @see javax.servlet.ServletResponse#setContentType
-    */
 
-   protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
-   {
-      String protocol = req.getProtocol();
-      String msg = lStrings.getString("http.method_post_not_supported");
-      if (protocol.endsWith("1.1"))
-      {
-         resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg);
-      }
-      else
-      {
-         resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg);
-      }
-   }
+    /**
+     *
+     * Called by the server (via the <code>service</code> method)
+     * to allow a servlet to handle a POST request.
+     *
+     * The HTTP POST method allows the client to send
+     * data of unlimited length to the Web server a single time
+     * and is useful when posting information such as
+     * credit card numbers.
+     *
+     * <p>When overriding this method, read the request data,
+     * write the response headers, get the response's writer or output
+     * stream object, and finally, write the response data. It's best 
+     * to include content type and encoding. When using a
+     * <code>PrintWriter</code> object to return the response, set the 
+     * content type before accessing the <code>PrintWriter</code> object. 
+     *
+     * <p>The servlet container must write the headers before committing the
+     * response, because in HTTP the headers must be sent before the 
+     * response body.
+     *
+     * <p>Where possible, set the Content-Length header (with the
+     * {@link javax.servlet.ServletResponse#setContentLength} method),
+     * to allow the servlet container to use a persistent connection 
+     * to return its response to the client, improving performance.
+     * The content length is automatically set if the entire response fits
+     * inside the response buffer.  
+     *
+     * <p>When using HTTP 1.1 chunked encoding (which means that the response
+     * has a Transfer-Encoding header), do not set the Content-Length header. 
+     *
+     * <p>This method does not need to be either safe or idempotent.
+     * Operations requested through POST can have side effects for
+     * which the user can be held accountable, for example, 
+     * updating stored data or buying items online.
+     *
+     * <p>If the HTTP POST request is incorrectly formatted,
+     * <code>doPost</code> returns an HTTP "Bad Request" message.
+     *
+     *
+     * @param req	an {@link HttpServletRequest} object that
+     *			contains the request the client has made
+     *			of the servlet
+     *
+     * @param resp	an {@link HttpServletResponse} object that
+     *			contains the response the servlet sends
+     *			to the client
+     * 
+     * @exception IOException	if an input or output error is 
+     *				detected when the servlet handles
+     *				the request
+     *
+     * @exception ServletException	if the request for the POST
+     *					could not be handled
+     *
+     *
+     * @see javax.servlet.ServletOutputStream
+     * @see javax.servlet.ServletResponse#setContentType
+     *
+     *
+     */
 
-   /**
-    * Called by the server (via the <code>service</code> method) to allow a
-    * servlet to handle a PUT request. The PUT operation allows a client to
-    * place a file on the server and is similar to sending a file by FTP.
-    * <p>
-    * When overriding this method, leave intact any content headers sent with
-    * the request (including Content-Length, Content-Type,
-    * Content-Transfer-Encoding, Content-Encoding, Content-Base,
-    * Content-Language, Content-Location, Content-MD5, and Content-Range). If
-    * your method cannot handle a content header, it must issue an error message
-    * (HTTP 501 - Not Implemented) and discard the request. For more information
-    * on HTTP 1.1, see RFC 2616 <a href="http://www.ietf.org/rfc/rfc2616.txt"></a>.
-    * <p>
-    * This method does not need to be either safe or idempotent. Operations that
-    * <code>doPut</code> performs can have side effects for which the user can
-    * be held accountable. When using this method, it may be useful to save a
-    * copy of the affected URL in temporary storage.
-    * <p>
-    * If the HTTP PUT request is incorrectly formatted, <code>doPut</code>
-    * returns an HTTP "Bad Request" message.
-    * 
-    * @param req
-    *           the {@link HttpServletRequest} object that contains the request
-    *           the client made of the servlet
-    * @param resp
-    *           the {@link HttpServletResponse} object that contains the
-    *           response the servlet returns to the client
-    * @exception IOException
-    *               if an input or output error occurs while the servlet is
-    *               handling the PUT request
-    * @exception ServletException
-    *               if the request for the PUT cannot be handled
-    */
+    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
+	throws ServletException, IOException
+    {
+	String protocol = req.getProtocol();
+	String msg = lStrings.getString("http.method_post_not_supported");
+	if (protocol.endsWith("1.1")) {
+	    resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg);
+	} else {
+	    resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg);
+	}
+    }
 
-   protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
-   {
-      String protocol = req.getProtocol();
-      String msg = lStrings.getString("http.method_put_not_supported");
-      if (protocol.endsWith("1.1"))
-      {
-         resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg);
-      }
-      else
-      {
-         resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg);
-      }
-   }
 
-   /**
-    * Called by the server (via the <code>service</code> method) to allow a
-    * servlet to handle a DELETE request. The DELETE operation allows a client
-    * to remove a document or Web page from the server.
-    * <p>
-    * This method does not need to be either safe or idempotent. Operations
-    * requested through DELETE can have side effects for which users can be held
-    * accountable. When using this method, it may be useful to save a copy of
-    * the affected URL in temporary storage.
-    * <p>
-    * If the HTTP DELETE request is incorrectly formatted, <code>doDelete</code>
-    * returns an HTTP "Bad Request" message.
-    * 
-    * @param req
-    *           the {@link HttpServletRequest} object that contains the request
-    *           the client made of the servlet
-    * @param resp
-    *           the {@link HttpServletResponse} object that contains the
-    *           response the servlet returns to the client
-    * @exception IOException
-    *               if an input or output error occurs while the servlet is
-    *               handling the DELETE request
-    * @exception ServletException
-    *               if the request for the DELETE cannot be handled
-    */
 
-   protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
-   {
-      String protocol = req.getProtocol();
-      String msg = lStrings.getString("http.method_delete_not_supported");
-      if (protocol.endsWith("1.1"))
-      {
-         resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg);
-      }
-      else
-      {
-         resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg);
-      }
-   }
 
-   private Method[] getAllDeclaredMethods(Class c)
-   {
+    /**
+     * Called by the server (via the <code>service</code> method)
+     * to allow a servlet to handle a PUT request.
+     *
+     * The PUT operation allows a client to 
+     * place a file on the server and is similar to 
+     * sending a file by FTP.
+     *
+     * <p>When overriding this method, leave intact
+     * any content headers sent with the request (including
+     * Content-Length, Content-Type, Content-Transfer-Encoding,
+     * Content-Encoding, Content-Base, Content-Language, Content-Location,
+     * Content-MD5, and Content-Range). If your method cannot
+     * handle a content header, it must issue an error message
+     * (HTTP 501 - Not Implemented) and discard the request.
+     * For more information on HTTP 1.1, see RFC 2616
+     * <a href="http://www.ietf.org/rfc/rfc2616.txt"></a>.
+     *
+     * <p>This method does not need to be either safe or idempotent.
+     * Operations that <code>doPut</code> performs can have side
+     * effects for which the user can be held accountable. When using
+     * this method, it may be useful to save a copy of the
+     * affected URL in temporary storage.
+     *
+     * <p>If the HTTP PUT request is incorrectly formatted,
+     * <code>doPut</code> returns an HTTP "Bad Request" message.
+     *
+     *
+     * @param req	the {@link HttpServletRequest} object that
+     *			contains the request the client made of
+     *			the servlet
+     *
+     * @param resp	the {@link HttpServletResponse} object that
+     *			contains the response the servlet returns
+     *			to the client
+     *
+     * @exception IOException	if an input or output error occurs
+     *				while the servlet is handling the
+     *				PUT request
+     *
+     * @exception ServletException	if the request for the PUT
+     *					cannot be handled
+     *
+     */
+  
+    protected void doPut(HttpServletRequest req, HttpServletResponse resp)
+	throws ServletException, IOException
+    {
+	String protocol = req.getProtocol();
+	String msg = lStrings.getString("http.method_put_not_supported");
+	if (protocol.endsWith("1.1")) {
+	    resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg);
+	} else {
+	    resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg);
+	}
+    }
 
-      if (c.equals(javax.servlet.http.HttpServlet.class))
-      {
-         return null;
-      }
 
-      Method[] parentMethods = getAllDeclaredMethods(c.getSuperclass());
-      Method[] thisMethods = c.getDeclaredMethods();
 
-      if ((parentMethods != null) && (parentMethods.length > 0))
-      {
-         Method[] allMethods = new Method[parentMethods.length + thisMethods.length];
-         System.arraycopy(parentMethods, 0, allMethods, 0, parentMethods.length);
-         System.arraycopy(thisMethods, 0, allMethods, parentMethods.length, thisMethods.length);
 
-         thisMethods = allMethods;
-      }
+    /**
+     * 
+     * Called by the server (via the <code>service</code> method)
+     * to allow a servlet to handle a DELETE request.
+     *
+     * The DELETE operation allows a client to remove a document
+     * or Web page from the server.
+     * 
+     * <p>This method does not need to be either safe
+     * or idempotent. Operations requested through
+     * DELETE can have side effects for which users
+     * can be held accountable. When using
+     * this method, it may be useful to save a copy of the
+     * affected URL in temporary storage.
+     *
+     * <p>If the HTTP DELETE request is incorrectly formatted,
+     * <code>doDelete</code> returns an HTTP "Bad Request"
+     * message.
+     *
+     *
+     * @param req	the {@link HttpServletRequest} object that
+     *			contains the request the client made of
+     *			the servlet
+     *
+     *
+     * @param resp	the {@link HttpServletResponse} object that
+     *			contains the response the servlet returns
+     *			to the client				
+     *
+     *
+     * @exception IOException	if an input or output error occurs
+     *				while the servlet is handling the
+     *				DELETE request
+     *
+     * @exception ServletException	if the request for the
+     *					DELETE cannot be handled
+     *
+     */
+     
+    protected void doDelete(HttpServletRequest req,
+			    HttpServletResponse resp)
+	throws ServletException, IOException
+    {
+	String protocol = req.getProtocol();
+	String msg = lStrings.getString("http.method_delete_not_supported");
+	if (protocol.endsWith("1.1")) {
+	    resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg);
+	} else {
+	    resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg);
+	}
+    }
+    
 
-      return thisMethods;
-   }
+    private static Method[] getAllDeclaredMethods(Class c) {
 
-   /**
-    * Called by the server (via the <code>service</code> method) to allow a
-    * servlet to handle a OPTIONS request. The OPTIONS request determines which
-    * HTTP methods the server supports and returns an appropriate header. For
-    * example, if a servlet overrides <code>doGet</code>, this method returns
-    * the following header:
-    * <p>
-    * <code>Allow: GET, HEAD, TRACE, OPTIONS</code>
-    * <p>
-    * There's no need to override this method unless the servlet implements new
-    * HTTP methods, beyond those implemented by HTTP 1.1.
-    * 
-    * @param req
-    *           the {@link HttpServletRequest} object that contains the request
-    *           the client made of the servlet
-    * @param resp
-    *           the {@link HttpServletResponse} object that contains the
-    *           response the servlet returns to the client
-    * @exception IOException
-    *               if an input or output error occurs while the servlet is
-    *               handling the OPTIONS request
-    * @exception ServletException
-    *               if the request for the OPTIONS cannot be handled
-    */
+        if (c.equals(javax.servlet.http.HttpServlet.class)) {
+            return null;
+        }
 
-   protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
-   {
-      Method[] methods = getAllDeclaredMethods(this.getClass());
+        Method[] parentMethods = getAllDeclaredMethods(c.getSuperclass());
+        Method[] thisMethods = c.getDeclaredMethods();
+	
+        if ((parentMethods != null) && (parentMethods.length > 0)) {
+            Method[] allMethods =
+                new Method[parentMethods.length + thisMethods.length];
+	    System.arraycopy(parentMethods, 0, allMethods, 0,
+                             parentMethods.length);
+	    System.arraycopy(thisMethods, 0, allMethods, parentMethods.length,
+                             thisMethods.length);
 
-      boolean ALLOW_GET = false;
-      boolean ALLOW_HEAD = false;
-      boolean ALLOW_POST = false;
-      boolean ALLOW_PUT = false;
-      boolean ALLOW_DELETE = false;
-      boolean ALLOW_TRACE = true;
-      boolean ALLOW_OPTIONS = true;
+	    thisMethods = allMethods;
+	}
 
-      for (int i = 0; i < methods.length; i++)
-      {
-         Method m = methods[i];
+	return thisMethods;
+    }
 
-         if (m.getName().equals("doGet"))
-         {
-            ALLOW_GET = true;
-            ALLOW_HEAD = true;
-         }
-         if (m.getName().equals("doPost"))
-            ALLOW_POST = true;
-         if (m.getName().equals("doPut"))
-            ALLOW_PUT = true;
-         if (m.getName().equals("doDelete"))
-            ALLOW_DELETE = true;
 
-      }
+    /**
+     * Called by the server (via the <code>service</code> method)
+     * to allow a servlet to handle a OPTIONS request.
+     *
+     * The OPTIONS request determines which HTTP methods 
+     * the server supports and
+     * returns an appropriate header. For example, if a servlet
+     * overrides <code>doGet</code>, this method returns the
+     * following header:
+     *
+     * <p><code>Allow: GET, HEAD, TRACE, OPTIONS</code>
+     *
+     * <p>There's no need to override this method unless the
+     * servlet implements new HTTP methods, beyond those 
+     * implemented by HTTP 1.1.
+     *
+     * @param req	the {@link HttpServletRequest} object that
+     *			contains the request the client made of
+     *			the servlet
+     *
+     *
+     * @param resp	the {@link HttpServletResponse} object that
+     *			contains the response the servlet returns
+     *			to the client				
+     *
+     *
+     * @exception IOException	if an input or output error occurs
+     *				while the servlet is handling the
+     *				OPTIONS request
+     *
+     * @exception ServletException	if the request for the
+     *					OPTIONS cannot be handled
+     *
+     */
+         
+    protected void doOptions(HttpServletRequest req, HttpServletResponse resp)
+	throws ServletException, IOException
+    {
+	Method[] methods = getAllDeclaredMethods(this.getClass());
+	
+	boolean ALLOW_GET = false;
+	boolean ALLOW_HEAD = false;
+	boolean ALLOW_POST = false;
+	boolean ALLOW_PUT = false;
+	boolean ALLOW_DELETE = false;
+	boolean ALLOW_TRACE = true;
+	boolean ALLOW_OPTIONS = true;
+	
+	for (int i=0; i<methods.length; i++) {
+	    Method m = methods[i];
+	    
+	    if (m.getName().equals("doGet")) {
+		ALLOW_GET = true;
+		ALLOW_HEAD = true;
+	    }
+	    if (m.getName().equals("doPost")) 
+		ALLOW_POST = true;
+	    if (m.getName().equals("doPut"))
+		ALLOW_PUT = true;
+	    if (m.getName().equals("doDelete"))
+		ALLOW_DELETE = true;
+	    
+	}
+	
+	String allow = null;
+	if (ALLOW_GET)
+	    if (allow==null) allow=METHOD_GET;
+	if (ALLOW_HEAD)
+	    if (allow==null) allow=METHOD_HEAD;
+	    else allow += ", " + METHOD_HEAD;
+	if (ALLOW_POST)
+	    if (allow==null) allow=METHOD_POST;
+	    else allow += ", " + METHOD_POST;
+	if (ALLOW_PUT)
+	    if (allow==null) allow=METHOD_PUT;
+	    else allow += ", " + METHOD_PUT;
+	if (ALLOW_DELETE)
+	    if (allow==null) allow=METHOD_DELETE;
+	    else allow += ", " + METHOD_DELETE;
+	if (ALLOW_TRACE)
+	    if (allow==null) allow=METHOD_TRACE;
+	    else allow += ", " + METHOD_TRACE;
+	if (ALLOW_OPTIONS)
+	    if (allow==null) allow=METHOD_OPTIONS;
+	    else allow += ", " + METHOD_OPTIONS;
+	
+	resp.setHeader("Allow", allow);
+    }
+    
+    
+    
+    
+    /**
+     * Called by the server (via the <code>service</code> method)
+     * to allow a servlet to handle a TRACE request.
+     *
+     * A TRACE returns the headers sent with the TRACE
+     * request to the client, so that they can be used in
+     * debugging. There's no need to override this method. 
+     *
+     *
+     *
+     * @param req	the {@link HttpServletRequest} object that
+     *			contains the request the client made of
+     *			the servlet
+     *
+     *
+     * @param resp	the {@link HttpServletResponse} object that
+     *			contains the response the servlet returns
+     *			to the client				
+     *
+     *
+     * @exception IOException	if an input or output error occurs
+     *				while the servlet is handling the
+     *				TRACE request
+     *
+     * @exception ServletException	if the request for the
+     *					TRACE cannot be handled
+     *
+     */
 
-      String allow = null;
-      if (ALLOW_GET)
-         if (allow == null)
-            allow = METHOD_GET;
-      if (ALLOW_HEAD)
-         if (allow == null)
-            allow = METHOD_HEAD;
-         else
-            allow += ", " + METHOD_HEAD;
-      if (ALLOW_POST)
-         if (allow == null)
-            allow = METHOD_POST;
-         else
-            allow += ", " + METHOD_POST;
-      if (ALLOW_PUT)
-         if (allow == null)
-            allow = METHOD_PUT;
-         else
-            allow += ", " + METHOD_PUT;
-      if (ALLOW_DELETE)
-         if (allow == null)
-            allow = METHOD_DELETE;
-         else
-            allow += ", " + METHOD_DELETE;
-      if (ALLOW_TRACE)
-         if (allow == null)
-            allow = METHOD_TRACE;
-         else
-            allow += ", " + METHOD_TRACE;
-      if (ALLOW_OPTIONS)
-         if (allow == null)
-            allow = METHOD_OPTIONS;
-         else
-            allow += ", " + METHOD_OPTIONS;
+    protected void doTrace(HttpServletRequest req, HttpServletResponse resp) 
+	throws ServletException, IOException
+    {
+	
+	int responseLength;
+	
+	String CRLF = "\r\n";
+	String responseString = "TRACE "+ req.getRequestURI()+
+	    " " + req.getProtocol();
+	
+	Enumeration reqHeaderEnum = req.getHeaderNames();
+	
+	while( reqHeaderEnum.hasMoreElements() ) {
+	    String headerName = (String)reqHeaderEnum.nextElement();
+	    responseString += CRLF + headerName + ": " +
+		req.getHeader(headerName); 
+	}
+	
+	responseString += CRLF;
+	
+	responseLength = responseString.length();
+	
+	resp.setContentType("message/http");
+	resp.setContentLength(responseLength);
+	ServletOutputStream out = resp.getOutputStream();
+	out.print(responseString);	
+	out.close();
+	return;
+    }		
 
-      resp.setHeader("Allow", allow);
-   }
 
-   /**
-    * Called by the server (via the <code>service</code> method) to allow a
-    * servlet to handle a TRACE request. A TRACE returns the headers sent with
-    * the TRACE request to the client, so that they can be used in debugging.
-    * There's no need to override this method.
-    * 
-    * @param req
-    *           the {@link HttpServletRequest} object that contains the request
-    *           the client made of the servlet
-    * @param resp
-    *           the {@link HttpServletResponse} object that contains the
-    *           response the servlet returns to the client
-    * @exception IOException
-    *               if an input or output error occurs while the servlet is
-    *               handling the TRACE request
-    * @exception ServletException
-    *               if the request for the TRACE cannot be handled
-    */
 
-   protected void doTrace(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
-   {
 
-      int responseLength;
 
-      String CRLF = "\r\n";
-      String responseString = "TRACE " + req.getRequestURI() + " " + req.getProtocol();
+    /**
+     *
+     * Receives standard HTTP requests from the public
+     * <code>service</code> method and dispatches
+     * them to the <code>do</code><i>XXX</i> methods defined in 
+     * this class. This method is an HTTP-specific version of the 
+     * {@link javax.servlet.Servlet#service} method. There's no
+     * need to override this method.
+     *
+     *
+     *
+     * @param req	the {@link HttpServletRequest} object that
+     *			contains the request the client made of
+     *			the servlet
+     *
+     *
+     * @param resp	the {@link HttpServletResponse} object that
+     *			contains the response the servlet returns
+     *			to the client				
+     *
+     *
+     * @exception IOException	if an input or output error occurs
+     *				while the servlet is handling the
+     *				HTTP request
+     *
+     * @exception ServletException	if the HTTP request
+     *					cannot be handled
+     * 
+     * @see 				javax.servlet.Servlet#service
+     *
+     */
 
-      Enumeration reqHeaderEnum = req.getHeaderNames();
+    protected void service(HttpServletRequest req, HttpServletResponse resp)
+	throws ServletException, IOException
+    {
+	String method = req.getMethod();
 
-      while (reqHeaderEnum.hasMoreElements())
-      {
-         String headerName = (String) reqHeaderEnum.nextElement();
-         responseString += CRLF + headerName + ": " + req.getHeader(headerName);
-      }
+	if (method.equals(METHOD_GET)) {
+	    long lastModified = getLastModified(req);
+	    if (lastModified == -1) {
+		// servlet doesn't support if-modified-since, no reason
+		// to go through further expensive logic
+		doGet(req, resp);
+	    } else {
+		long ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE);
+		if (ifModifiedSince < (lastModified / 1000 * 1000)) {
+		    // If the servlet mod time is later, call doGet()
+                    // Round down to the nearest second for a proper compare
+                    // A ifModifiedSince of -1 will always be less
+		    maybeSetLastModified(resp, lastModified);
+		    doGet(req, resp);
+		} else {
+		    resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
+		}
+	    }
 
-      responseString += CRLF;
+	} else if (method.equals(METHOD_HEAD)) {
+	    long lastModified = getLastModified(req);
+	    maybeSetLastModified(resp, lastModified);
+	    doHead(req, resp);
 
-      responseLength = responseString.length();
+	} else if (method.equals(METHOD_POST)) {
+	    doPost(req, resp);
+	    
+	} else if (method.equals(METHOD_PUT)) {
+	    doPut(req, resp);	
+	    
+	} else if (method.equals(METHOD_DELETE)) {
+	    doDelete(req, resp);
+	    
+	} else if (method.equals(METHOD_OPTIONS)) {
+	    doOptions(req,resp);
+	    
+	} else if (method.equals(METHOD_TRACE)) {
+	    doTrace(req,resp);
+	    
+	} else {
+	    //
+	    // Note that this means NO servlet supports whatever
+	    // method was requested, anywhere on this server.
+	    //
 
-      resp.setContentType("message/http");
-      resp.setContentLength(responseLength);
-      ServletOutputStream out = resp.getOutputStream();
-      out.print(responseString);
-      out.close();
-      return;
-   }
+	    String errMsg = lStrings.getString("http.method_not_implemented");
+	    Object[] errArgs = new Object[1];
+	    errArgs[0] = method;
+	    errMsg = MessageFormat.format(errMsg, errArgs);
+	    
+	    resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED, errMsg);
+	}
+    }
+    
 
-   /**
-    * Receives standard HTTP requests from the public <code>service</code>
-    * method and dispatches them to the <code>do</code><i>XXX</i> methods
-    * defined in this class. This method is an HTTP-specific version of the
-    * {@link javax.servlet.Servlet#service} method. There's no need to override
-    * this method.
-    * 
-    * @param req
-    *           the {@link HttpServletRequest} object that contains the request
-    *           the client made of the servlet
-    * @param resp
-    *           the {@link HttpServletResponse} object that contains the
-    *           response the servlet returns to the client
-    * @exception IOException
-    *               if an input or output error occurs while the servlet is
-    *               handling the HTTP request
-    * @exception ServletException
-    *               if the HTTP request cannot be handled
-    * @see javax.servlet.Servlet#service
-    */
 
-   protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
-   {
-      String method = req.getMethod();
 
-      if (method.equals(METHOD_GET))
-      {
-         long lastModified = getLastModified(req);
-         if (lastModified == -1)
-         {
-            // servlet doesn't support if-modified-since, no reason
-            // to go through further expensive logic
-            doGet(req, resp);
-         }
-         else
-         {
-            long ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE);
-            if (ifModifiedSince < (lastModified / 1000 * 1000))
-            {
-               // If the servlet mod time is later, call doGet()
-               // Round down to the nearest second for a proper compare
-               // A ifModifiedSince of -1 will always be less
-               maybeSetLastModified(resp, lastModified);
-               doGet(req, resp);
-            }
-            else
-            {
-               resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
-            }
-         }
 
-      }
-      else if (method.equals(METHOD_HEAD))
-      {
-         long lastModified = getLastModified(req);
-         maybeSetLastModified(resp, lastModified);
-         doHead(req, resp);
+    /*
+     * Sets the Last-Modified entity header field, if it has not
+     * already been set and if the value is meaningful.  Called before
+     * doGet, to ensure that headers are set before response data is
+     * written.  A subclass might have set this header already, so we
+     * check.
+     */
 
-      }
-      else if (method.equals(METHOD_POST))
-      {
-         doPost(req, resp);
+    private void maybeSetLastModified(HttpServletResponse resp,
+				      long lastModified) {
+	if (resp.containsHeader(HEADER_LASTMOD))
+	    return;
+	if (lastModified >= 0)
+	    resp.setDateHeader(HEADER_LASTMOD, lastModified);
+    }
+   
+   
+   
+    
+    /**
+     *
+     * Dispatches client requests to the protected
+     * <code>service</code> method. There's no need to
+     * override this method.
+     *
+     * 
+     * @param req	the {@link HttpServletRequest} object that
+     *			contains the request the client made of
+     *			the servlet
+     *
+     *
+     * @param res	the {@link HttpServletResponse} object that
+     *			contains the response the servlet returns
+     *			to the client				
+     *
+     *
+     * @exception IOException	if an input or output error occurs
+     *				while the servlet is handling the
+     *				HTTP request
+     *
+     * @exception ServletException	if the HTTP request cannot
+     *					be handled
+     *
+     * 
+     * @see javax.servlet.Servlet#service
+     *
+     */
 
-      }
-      else if (method.equals(METHOD_PUT))
-      {
-         doPut(req, resp);
+    public void service(ServletRequest req, ServletResponse res)
+	throws ServletException, IOException
+    {
+	HttpServletRequest	request;
+	HttpServletResponse	response;
+	
+	try {
+	    request = (HttpServletRequest) req;
+	    response = (HttpServletResponse) res;
+	} catch (ClassCastException e) {
+	    throw new ServletException("non-HTTP request or response");
+	}
+	service(request, response);
+    }
+}
 
-      }
-      else if (method.equals(METHOD_DELETE))
-      {
-         doDelete(req, resp);
 
-      }
-      else if (method.equals(METHOD_OPTIONS))
-      {
-         doOptions(req, resp);
 
-      }
-      else if (method.equals(METHOD_TRACE))
-      {
-         doTrace(req, resp);
 
-      }
-      else
-      {
-         //
-         // Note that this means NO servlet supports whatever
-         // method was requested, anywhere on this server.
-         //
-
-         String errMsg = lStrings.getString("http.method_not_implemented");
-         Object[] errArgs = new Object[1];
-         errArgs[0] = method;
-         errMsg = MessageFormat.format(errMsg, errArgs);
-
-         resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED, errMsg);
-      }
-   }
-
-   /*
-    * Sets the Last-Modified entity header field, if it has not already been set
-    * and if the value is meaningful. Called before doGet, to ensure that
-    * headers are set before response data is written. A subclass might have set
-    * this header already, so we check.
-    */
-
-   private void maybeSetLastModified(HttpServletResponse resp, long lastModified)
-   {
-      if (resp.containsHeader(HEADER_LASTMOD))
-         return;
-      if (lastModified >= 0)
-         resp.setDateHeader(HEADER_LASTMOD, lastModified);
-   }
-
-   /**
-    * Dispatches client requests to the protected <code>service</code> method.
-    * There's no need to override this method.
-    * 
-    * @param req
-    *           the {@link HttpServletRequest} object that contains the request
-    *           the client made of the servlet
-    * @param res
-    *           the {@link HttpServletResponse} object that contains the
-    *           response the servlet returns to the client
-    * @exception IOException
-    *               if an input or output error occurs while the servlet is
-    *               handling the HTTP request
-    * @exception ServletException
-    *               if the HTTP request cannot be handled
-    * @see javax.servlet.Servlet#service
-    */
-
-   public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException
-   {
-      HttpServletRequest request;
-      HttpServletResponse response;
-
-      try
-      {
-         request = (HttpServletRequest) req;
-         response = (HttpServletResponse) res;
-      }
-      catch (ClassCastException e)
-      {
-         throw new ServletException("non-HTTP request or response");
-      }
-      service(request, response);
-   }
-}
-
 /*
- * A response that includes no body, for use in (dumb) "HEAD" support. This just
- * swallows that body, counting the bytes in order to set the content length
- * appropriately. All other methods delegate directly to the HTTP Servlet
- * Response object used to construct this one.
+ * A response that includes no body, for use in (dumb) "HEAD" support.
+ * This just swallows that body, counting the bytes in order to set
+ * the content length appropriately.  All other methods delegate directly
+ * to the HTTP Servlet Response object used to construct this one.
  */
 // file private
-class NoBodyResponse implements HttpServletResponse
-{
-   private HttpServletResponse resp;
+class NoBodyResponse implements HttpServletResponse {
+    private HttpServletResponse		resp;
+    private NoBodyOutputStream		noBody;
+    private PrintWriter			writer;
+    private boolean			didSetContentLength;
 
-   private NoBodyOutputStream noBody;
+    // file private
+    NoBodyResponse(HttpServletResponse r) {
+	resp = r;
+	noBody = new NoBodyOutputStream();
+    }
 
-   private PrintWriter writer;
+    // file private
+    void setContentLength() {
+	if (!didSetContentLength)
+	  resp.setContentLength(noBody.getContentLength());
+    }
 
-   private boolean didSetContentLength;
 
-   // file private
-   NoBodyResponse(HttpServletResponse r)
-   {
-      resp = r;
-      noBody = new NoBodyOutputStream();
-   }
+    // SERVLET RESPONSE interface methods
 
-   // file private
-   void setContentLength()
-   {
-      if (!didSetContentLength)
-         resp.setContentLength(noBody.getContentLength());
-   }
+    public void setContentLength(int len) {
+	resp.setContentLength(len);
+	didSetContentLength = true;
+    }
 
-   // SERVLET RESPONSE interface methods
+    public void setCharacterEncoding(String charset)
+      { resp.setCharacterEncoding(charset); }
 
-   public void setContentLength(int len)
-   {
-      resp.setContentLength(len);
-      didSetContentLength = true;
-   }
+    public void setContentType(String type)
+      { resp.setContentType(type); }
 
-   public void setCharacterEncoding(String charset)
-   {
-      resp.setCharacterEncoding(charset);
-   }
+    public String getContentType()
+      { return resp.getContentType(); }
 
-   public void setContentType(String type)
-   {
-      resp.setContentType(type);
-   }
+    public ServletOutputStream getOutputStream() throws IOException
+      { return noBody; }
 
-   public String getContentType()
-   {
-      return resp.getContentType();
-   }
+    public String getCharacterEncoding()
+	{ return resp.getCharacterEncoding(); }
 
-   public ServletOutputStream getOutputStream() throws IOException
-   {
-      return noBody;
-   }
+    public PrintWriter getWriter() throws UnsupportedEncodingException
+    {
+	if (writer == null) {
+	    OutputStreamWriter	w;
 
-   public String getCharacterEncoding()
-   {
-      return resp.getCharacterEncoding();
-   }
+	    w = new OutputStreamWriter(noBody, getCharacterEncoding());
+	    writer = new PrintWriter(w);
+	}
+	return writer;
+    }
 
-   public PrintWriter getWriter() throws UnsupportedEncodingException
-   {
-      if (writer == null)
-      {
-         OutputStreamWriter w;
+    public void setBufferSize(int size) throws IllegalStateException
+      { resp.setBufferSize(size); }
 
-         w = new OutputStreamWriter(noBody, getCharacterEncoding());
-         writer = new PrintWriter(w);
-      }
-      return writer;
-   }
+    public int getBufferSize()
+      { return resp.getBufferSize(); }
 
-   public void setBufferSize(int size) throws IllegalStateException
-   {
-      resp.setBufferSize(size);
-   }
+    public void reset() throws IllegalStateException
+      { resp.reset(); }
+      
+      public void resetBuffer() throws IllegalStateException
+      { resp.resetBuffer(); }
 
-   public int getBufferSize()
-   {
-      return resp.getBufferSize();
-   }
+    public boolean isCommitted()
+      { return resp.isCommitted(); }
 
-   public void reset() throws IllegalStateException
-   {
-      resp.reset();
-   }
+    public void flushBuffer() throws IOException
+      { resp.flushBuffer(); }
 
-   public void resetBuffer() throws IllegalStateException
-   {
-      resp.resetBuffer();
-   }
+    public void setLocale(Locale loc)
+      { resp.setLocale(loc); }
 
-   public boolean isCommitted()
-   {
-      return resp.isCommitted();
-   }
+    public Locale getLocale()
+      { return resp.getLocale(); }
 
-   public void flushBuffer() throws IOException
-   {
-      resp.flushBuffer();
-   }
 
-   public void setLocale(Locale loc)
-   {
-      resp.setLocale(loc);
-   }
+    // HTTP SERVLET RESPONSE interface methods
 
-   public Locale getLocale()
-   {
-      return resp.getLocale();
-   }
+    public void addCookie(Cookie cookie)
+      { resp.addCookie(cookie); }
 
-   // HTTP SERVLET RESPONSE interface methods
+    public boolean containsHeader(String name)
+      { return resp.containsHeader(name); }
 
-   public void addCookie(Cookie cookie)
-   {
-      resp.addCookie(cookie);
-   }
+    /** @deprecated */
+    public void setStatus(int sc, String sm)
+      { resp.setStatus(sc, sm); }
 
-   public boolean containsHeader(String name)
-   {
-      return resp.containsHeader(name);
-   }
+    public void setStatus(int sc)
+      { resp.setStatus(sc); }
 
-   /** @deprecated */
-   public void setStatus(int sc, String sm)
-   {
-      resp.setStatus(sc, sm);
-   }
+    public void setHeader(String name, String value)
+      { resp.setHeader(name, value); }
 
-   public void setStatus(int sc)
-   {
-      resp.setStatus(sc);
-   }
+    public void setIntHeader(String name, int value)
+      { resp.setIntHeader(name, value); }
 
-   public void setHeader(String name, String value)
-   {
-      resp.setHeader(name, value);
-   }
+    public void setDateHeader(String name, long date)
+      { resp.setDateHeader(name, date); }
 
-   public void setIntHeader(String name, int value)
-   {
-      resp.setIntHeader(name, value);
-   }
+    public void sendError(int sc, String msg) throws IOException
+      { resp.sendError(sc, msg); }
 
-   public void setDateHeader(String name, long date)
-   {
-      resp.setDateHeader(name, date);
-   }
+    public void sendError(int sc) throws IOException
+      { resp.sendError(sc); }
 
-   public void sendError(int sc, String msg) throws IOException
-   {
-      resp.sendError(sc, msg);
-   }
+    public void sendRedirect(String location) throws IOException
+      { resp.sendRedirect(location); }
+    
+    public String encodeURL(String url) 
+      { return resp.encodeURL(url); }
 
-   public void sendError(int sc) throws IOException
-   {
-      resp.sendError(sc);
-   }
+    public String encodeRedirectURL(String url)
+      { return resp.encodeRedirectURL(url); }
+      
+    public void addHeader(String name, String value)
+      { resp.addHeader(name, value); }
+      
+    public void addDateHeader(String name, long value)
+      { resp.addDateHeader(name, value); }
+      
+    public void addIntHeader(String name, int value)
+      { resp.addIntHeader(name, value); }
+      
+      
+      
 
-   public void sendRedirect(String location) throws IOException
-   {
-      resp.sendRedirect(location);
-   }
+    /**
+     * @deprecated	As of Version 2.1, replaced by
+     * 			{@link HttpServletResponse#encodeURL}.
+     *
+     */
+     
+     
+    public String encodeUrl(String url) 
+      { return this.encodeURL(url); }
+      
+      
+      
+      
+      
+      
+      
 
-   public String encodeURL(String url)
-   {
-      return resp.encodeURL(url);
-   }
+    /**
+     * @deprecated	As of Version 2.1, replaced by
+     *			{@link HttpServletResponse#encodeRedirectURL}.
+     *
+     */
+     
+     
+    public String encodeRedirectUrl(String url)
+      { return this.encodeRedirectURL(url); }
 
-   public String encodeRedirectURL(String url)
-   {
-      return resp.encodeRedirectURL(url);
-   }
+}
 
-   public void addHeader(String name, String value)
-   {
-      resp.addHeader(name, value);
-   }
 
-   public void addDateHeader(String name, long value)
-   {
-      resp.addDateHeader(name, value);
-   }
 
-   public void addIntHeader(String name, int value)
-   {
-      resp.addIntHeader(name, value);
-   }
 
-   /**
-    * @deprecated As of Version 2.1, replaced by
-    *             {@link HttpServletResponse#encodeURL}.
-    */
 
-   public String encodeUrl(String url)
-   {
-      return this.encodeURL(url);
-   }
 
-   /**
-    * @deprecated As of Version 2.1, replaced by
-    *             {@link HttpServletResponse#encodeRedirectURL}.
-    */
 
-   public String encodeRedirectUrl(String url)
-   {
-      return this.encodeRedirectURL(url);
-   }
-
-}
-
 /*
  * Servlet output stream that gobbles up all its data.
  */
-
+ 
 // file private
-class NoBodyOutputStream extends ServletOutputStream
-{
+class NoBodyOutputStream extends ServletOutputStream {
 
-   private static final String LSTRING_FILE = "javax.servlet.http.LocalStrings";
+    private static final String LSTRING_FILE =
+	"javax.servlet.http.LocalStrings";
+    private static ResourceBundle lStrings =
+	ResourceBundle.getBundle(LSTRING_FILE);
 
-   private static ResourceBundle lStrings = ResourceBundle.getBundle(LSTRING_FILE);
+    private int		contentLength = 0;
 
-   private int contentLength = 0;
+    // file private
+    NoBodyOutputStream() {}
 
-   // file private
-   NoBodyOutputStream()
-   {
-   }
+    // file private
+    int getContentLength() {
+	return contentLength;
+    }
 
-   // file private
-   int getContentLength()
-   {
-      return contentLength;
-   }
+    public void write(int b) {
+	contentLength++;
+    }
 
-   public void write(int b)
-   {
-      contentLength++;
-   }
-
-   public void write(byte buf[], int offset, int len) throws IOException
-   {
-      if (len >= 0)
-      {
-         contentLength += len;
-      }
-      else
-      {
-         // XXX
-         // isn't this really an IllegalArgumentException?
-
-         String msg = lStrings.getString("err.io.negativelength");
-         throw new IOException(msg);
-      }
-   }
+    public void write(byte buf[], int offset, int len)
+	throws IOException
+    {
+	if (len >= 0) {
+	    contentLength += len;
+	} else {
+	    // XXX
+	    // isn't this really an IllegalArgumentException?
+	    
+	    String msg = lStrings.getString("err.io.negativelength");
+	    throw new IOException("negative length");
+	}
+    }
 }

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServletRequest.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServletRequest.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServletRequest.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,465 +1,661 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet.http;
 
 import javax.servlet.ServletRequest;
 import java.util.Enumeration;
 
 /**
- * Extends the {@link javax.servlet.ServletRequest} interface to provide request
- * information for HTTP servlets.
- * <p>
- * The servlet container creates an <code>HttpServletRequest</code> object and
- * passes it as an argument to the servlet's service methods (<code>doGet</code>,
- * <code>doPost</code>, etc).
- * 
- * @author Various
+ *
+ * Extends the {@link javax.servlet.ServletRequest} interface
+ * to provide request information for HTTP servlets. 
+ *
+ * <p>The servlet container creates an <code>HttpServletRequest</code> 
+ * object and passes it as an argument to the servlet's service
+ * methods (<code>doGet</code>, <code>doPost</code>, etc).
+ *
+ *
+ * @author 	Various
+ * @version	$Version$
+ *
+ *
  */
 
-public interface HttpServletRequest extends ServletRequest
-{
+public interface HttpServletRequest extends ServletRequest {
 
-   /**
+    /**
     * String identifier for Basic authentication. Value "BASIC"
     */
-   public static final String BASIC_AUTH = "BASIC";
-
-   /**
+    public static final String BASIC_AUTH = "BASIC";
+    /**
     * String identifier for Form authentication. Value "FORM"
     */
-   public static final String FORM_AUTH = "FORM";
-
-   /**
-    * String identifier for Client Certificate authentication. Value
-    * "CLIENT_CERT"
+    public static final String FORM_AUTH = "FORM";
+    /**
+    * String identifier for Client Certificate authentication. Value "CLIENT_CERT"
     */
-   public static final String CLIENT_CERT_AUTH = "CLIENT_CERT";
-
-   /**
+    public static final String CLIENT_CERT_AUTH = "CLIENT_CERT";
+    /**
     * String identifier for Digest authentication. Value "DIGEST"
     */
-   public static final String DIGEST_AUTH = "DIGEST";
+    public static final String DIGEST_AUTH = "DIGEST";
 
-   /**
-    * Returns the name of the authentication scheme used to protect the servlet.
-    * All servlet containers support basic, form and client certificate
-    * authentication, and may additionally support digest authentication. If the
-    * servlet is not authenticated <code>null</code> is returned.
-    * <p>
-    * Same as the value of the CGI variable AUTH_TYPE.
-    * 
-    * @return one of the static members BASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH,
-    *         DIGEST_AUTH (suitable for == comparison) or the container-specific
-    *         string indicating the authentication scheme, or <code>null</code>
-    *         if the request was not authenticated.
-    */
+    /**
+     * Returns the name of the authentication scheme used to protect
+     * the servlet. All servlet containers support basic, form and client 
+     * certificate authentication, and may additionally support digest 
+     * authentication.
+     * If the servlet is not authenticated <code>null</code> is returned. 
+     *
+     * <p>Same as the value of the CGI variable AUTH_TYPE.
+     *
+     *
+     * @return		one of the static members BASIC_AUTH, 
+     *			FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH
+     *			(suitable for == comparison) or
+     *			the container-specific string indicating
+     *			the authentication scheme, or
+     *			<code>null</code> if the request was 
+     *			not authenticated.     
+     *
+     */
+   
+    public String getAuthType();
+    
+   
+    
 
-   public String getAuthType();
+    /**
+     *
+     * Returns an array containing all of the <code>Cookie</code>
+     * objects the client sent with this request.
+     * This method returns <code>null</code> if no cookies were sent.
+     *
+     * @return		an array of all the <code>Cookies</code>
+     *			included with this request, or <code>null</code>
+     *			if the request has no cookies
+     *
+     *
+     */
 
-   /**
-    * Returns an array containing all of the <code>Cookie</code> objects the
-    * client sent with this request. This method returns <code>null</code> if
-    * no cookies were sent.
-    * 
-    * @return an array of all the <code>Cookies</code> included with this
-    *         request, or <code>null</code> if the request has no cookies
-    */
+    public Cookie[] getCookies();
+    
+    
+    
 
-   public Cookie[] getCookies();
+    /**
+     *
+     * Returns the value of the specified request header
+     * as a <code>long</code> value that represents a 
+     * <code>Date</code> object. Use this method with
+     * headers that contain dates, such as
+     * <code>If-Modified-Since</code>. 
+     *
+     * <p>The date is returned as
+     * the number of milliseconds since January 1, 1970 GMT.
+     * The header name is case insensitive.
+     *
+     * <p>If the request did not have a header of the
+     * specified name, this method returns -1. If the header
+     * can't be converted to a date, the method throws
+     * an <code>IllegalArgumentException</code>.
+     *
+     * @param name		a <code>String</code> specifying the
+     *				name of the header
+     *
+     * @return			a <code>long</code> value
+     *				representing the date specified
+     *				in the header expressed as
+     *				the number of milliseconds
+     *				since January 1, 1970 GMT,
+     *				or -1 if the named header
+     *				was not included with the
+     *				request
+     *
+     * @exception	IllegalArgumentException	If the header value
+     *							can't be converted
+     *							to a date
+     *
+     */
 
-   /**
-    * Returns the value of the specified request header as a <code>long</code>
-    * value that represents a <code>Date</code> object. Use this method with
-    * headers that contain dates, such as <code>If-Modified-Since</code>.
-    * <p>
-    * The date is returned as the number of milliseconds since January 1, 1970
-    * GMT. The header name is case insensitive.
-    * <p>
-    * If the request did not have a header of the specified name, this method
-    * returns -1. If the header can't be converted to a date, the method throws
-    * an <code>IllegalArgumentException</code>.
-    * 
-    * @param name
-    *           a <code>String</code> specifying the name of the header
-    * @return a <code>long</code> value representing the date specified in the
-    *         header expressed as the number of milliseconds since January 1,
-    *         1970 GMT, or -1 if the named header was not included with the
-    *         request
-    * @exception IllegalArgumentException
-    *               If the header value can't be converted to a date
-    */
+    public long getDateHeader(String name);
+    
+    
+    
 
-   public long getDateHeader(String name);
+    /**
+     *
+     * Returns the value of the specified request header
+     * as a <code>String</code>. If the request did not include a header
+     * of the specified name, this method returns <code>null</code>.
+     * If there are multiple headers with the same name, this method
+     * returns the first head in the request.
+     * The header name is case insensitive. You can use
+     * this method with any request header.
+     *
+     * @param name		a <code>String</code> specifying the
+     *				header name
+     *
+     * @return			a <code>String</code> containing the
+     *				value of the requested
+     *				header, or <code>null</code>
+     *				if the request does not
+     *				have a header of that name
+     *
+     */			
 
-   /**
-    * Returns the value of the specified request header as a <code>String</code>.
-    * If the request did not include a header of the specified name, this method
-    * returns <code>null</code>. If there are multiple headers with the same
-    * name, this method returns the first head in the request. The header name
-    * is case insensitive. You can use this method with any request header.
-    * 
-    * @param name
-    *           a <code>String</code> specifying the header name
-    * @return a <code>String</code> containing the value of the requested
-    *         header, or <code>null</code> if the request does not have a
-    *         header of that name
-    */
+    public String getHeader(String name); 
 
-   public String getHeader(String name);
 
-   /**
-    * Returns all the values of the specified request header as an
-    * <code>Enumeration</code> of <code>String</code> objects.
-    * <p>
-    * Some headers, such as <code>Accept-Language</code> can be sent by
-    * clients as several headers each with a different value rather than sending
-    * the header as a comma separated list.
-    * <p>
-    * If the request did not include any headers of the specified name, this
-    * method returns an empty <code>Enumeration</code>. The header name is
-    * case insensitive. You can use this method with any request header.
-    * 
-    * @param name
-    *           a <code>String</code> specifying the header name
-    * @return an <code>Enumeration</code> containing the values of the
-    *         requested header. If the request does not have any headers of that
-    *         name return an empty enumeration. If the container does not allow
-    *         access to header information, return null
-    */
 
-   public Enumeration getHeaders(String name);
 
-   /**
-    * Returns an enumeration of all the header names this request contains. If
-    * the request has no headers, this method returns an empty enumeration.
-    * <p>
-    * Some servlet containers do not allow servlets to access headers using this
-    * method, in which case this method returns <code>null</code>
-    * 
-    * @return an enumeration of all the header names sent with this request; if
-    *         the request has no headers, an empty enumeration; if the servlet
-    *         container does not allow servlets to use this method,
-    *         <code>null</code>
-    */
+    /**
+     *
+     * Returns all the values of the specified request header
+     * as an <code>Enumeration</code> of <code>String</code> objects.
+     *
+     * <p>Some headers, such as <code>Accept-Language</code> can be sent
+     * by clients as several headers each with a different value rather than
+     * sending the header as a comma separated list.
+     *
+     * <p>If the request did not include any headers
+     * of the specified name, this method returns an empty
+     * <code>Enumeration</code>.
+     * The header name is case insensitive. You can use
+     * this method with any request header.
+     *
+     * @param name		a <code>String</code> specifying the
+     *				header name
+     *
+     * @return			an <code>Enumeration</code> containing
+     *                  	the values of the requested header. If
+     *                  	the request does not have any headers of
+     *                  	that name return an empty
+     *                  	enumeration. If 
+     *                  	the container does not allow access to
+     *                  	header information, return null
+     *
+     */			
 
-   public Enumeration getHeaderNames();
+    public Enumeration getHeaders(String name); 
+    
+    
+    
+    
 
-   /**
-    * Returns the value of the specified request header as an <code>int</code>.
-    * If the request does not have a header of the specified name, this method
-    * returns -1. If the header cannot be converted to an integer, this method
-    * throws a <code>NumberFormatException</code>.
-    * <p>
-    * The header name is case insensitive.
-    * 
-    * @param name
-    *           a <code>String</code> specifying the name of a request header
-    * @return an integer expressing the value of the request header or -1 if the
-    *         request doesn't have a header of this name
-    * @exception NumberFormatException
-    *               If the header value can't be converted to an
-    *               <code>int</code>
-    */
+    /**
+     *
+     * Returns an enumeration of all the header names
+     * this request contains. If the request has no
+     * headers, this method returns an empty enumeration.
+     *
+     * <p>Some servlet containers do not allow
+     * servlets to access headers using this method, in
+     * which case this method returns <code>null</code>
+     *
+     * @return			an enumeration of all the
+     *				header names sent with this
+     *				request; if the request has
+     *				no headers, an empty enumeration;
+     *				if the servlet container does not
+     *				allow servlets to use this method,
+     *				<code>null</code>
+     *				
+     *
+     */
 
-   public int getIntHeader(String name);
+    public Enumeration getHeaderNames();
+    
+    
+    
 
-   /**
-    * Returns the name of the HTTP method with which this request was made, for
-    * example, GET, POST, or PUT. Same as the value of the CGI variable
-    * REQUEST_METHOD.
-    * 
-    * @return a <code>String</code> specifying the name of the method with
-    *         which this request was made
-    */
+    /**
+     *
+     * Returns the value of the specified request header
+     * as an <code>int</code>. If the request does not have a header
+     * of the specified name, this method returns -1. If the
+     * header cannot be converted to an integer, this method
+     * throws a <code>NumberFormatException</code>.
+     *
+     * <p>The header name is case insensitive.
+     *
+     * @param name		a <code>String</code> specifying the name
+     *				of a request header
+     *
+     * @return			an integer expressing the value 
+     * 				of the request header or -1
+     *				if the request doesn't have a
+     *				header of this name
+     *
+     * @exception	NumberFormatException		If the header value
+     *							can't be converted
+     *							to an <code>int</code>
+     */
 
-   public String getMethod();
+    public int getIntHeader(String name);
+    
+    
+    
 
-   /**
-    * Returns any extra path information associated with the URL the client sent
-    * when it made this request. The extra path information follows the servlet
-    * path but precedes the query string and will start with a "/" character.
-    * <p>
-    * This method returns <code>null</code> if there was no extra path
-    * information.
-    * <p>
-    * Same as the value of the CGI variable PATH_INFO.
-    * 
-    * @return a <code>String</code>, decoded by the web container, specifying
-    *         extra path information that comes after the servlet path but
-    *         before the query string in the request URL; or <code>null</code>
-    *         if the URL does not have any extra path information
-    */
+    /**
+     *
+     * Returns the name of the HTTP method with which this 
+     * request was made, for example, GET, POST, or PUT.
+     * Same as the value of the CGI variable REQUEST_METHOD.
+     *
+     * @return			a <code>String</code> 
+     *				specifying the name
+     *				of the method with which
+     *				this request was made
+     *
+     */
+ 
+    public String getMethod();
+    
+    
+    
 
-   public String getPathInfo();
+    /**
+     *
+     * Returns any extra path information associated with
+     * the URL the client sent when it made this request.
+     * The extra path information follows the servlet path
+     * but precedes the query string and will start with
+     * a "/" character.
+     *
+     * <p>This method returns <code>null</code> if there
+     * was no extra path information.
+     *
+     * <p>Same as the value of the CGI variable PATH_INFO.
+     *
+     *
+     * @return		a <code>String</code>, decoded by the
+     *			web container, specifying 
+     *			extra path information that comes
+     *			after the servlet path but before
+     *			the query string in the request URL;
+     *			or <code>null</code> if the URL does not have
+     *			any extra path information
+     *
+     */
+     
+    public String getPathInfo();
+    
 
-   /**
-    * Returns any extra path information after the servlet name but before the
-    * query string, and translates it to a real path. Same as the value of the
-    * CGI variable PATH_TRANSLATED.
-    * <p>
-    * If the URL does not have any extra path information, this method returns
-    * <code>null</code> or the servlet container cannot translate the virtual
-    * path to a real path for any reason (such as when the web application is
-    * executed from an archive). The web container does not decode this string.
-    * 
-    * @return a <code>String</code> specifying the real path, or
-    *         <code>null</code> if the URL does not have any extra path
-    *         information
-    */
+ 
 
-   public String getPathTranslated();
+    /**
+     *
+     * Returns any extra path information after the servlet name
+     * but before the query string, and translates it to a real
+     * path. Same as the value of the CGI variable PATH_TRANSLATED.
+     *
+     * <p>If the URL does not have any extra path information,
+     * this method returns <code>null</code> or the servlet container
+     * cannot translate the virtual path to a real path for any reason
+     * (such as when the web application is executed from an archive).
+     *
+     * The web container does not decode this string.
+     *
+     *
+     * @return		a <code>String</code> specifying the
+     *			real path, or <code>null</code> if
+     *			the URL does not have any extra path
+     *			information
+     *
+     *
+     */
 
-   /**
-    * Returns the portion of the request URI that indicates the context of the
-    * request. The context path always comes first in a request URI. The path
-    * starts with a "/" character but does not end with a "/" character. For
-    * servlets in the default (root) context, this method returns "". The
-    * container does not decode this string.
-    * <p>
-    * It is possible that a servlet container may match a context by more than
-    * one context path. In such cases this method will return the actual context
-    * path used by the request and it may differ from the path returned by the
-    * {@link javax.servlet.ServletContext#getContextPath()} method. The context
-    * path returned by {@link javax.servlet.ServletContext#getContextPath()}
-    * should be considered as the prime or preferred context path of the
-    * application.
-    * 
-    * @return a <code>String</code> specifying the portion of the request URI
-    *         that indicates the context of the request
-    * @see javax.servlet.ServletContext#getContextPath()
-    */
+    public String getPathTranslated();
+    
 
-   public String getContextPath();
+ 
 
-   /**
-    * Returns the query string that is contained in the request URL after the
-    * path. This method returns <code>null</code> if the URL does not have a
-    * query string. Same as the value of the CGI variable QUERY_STRING.
-    * 
-    * @return a <code>String</code> containing the query string or
-    *         <code>null</code> if the URL contains no query string. The value
-    *         is not decoded by the container.
-    */
+    /**
+     *
+     * Returns the portion of the request URI that indicates the context
+     * of the request.  The context path always comes first in a request
+     * URI.  The path starts with a "/" character but does not end with a "/"
+     * character.  For servlets in the default (root) context, this method
+     * returns "". The container does not decode this string.
+     *
+     *
+     * @return		a <code>String</code> specifying the
+     *			portion of the request URI that indicates the context
+     *			of the request
+     *
+     *
+     */
 
-   public String getQueryString();
+    public String getContextPath();
+    
+    
+    
 
-   /**
-    * Returns the login of the user making this request, if the user has been
-    * authenticated, or <code>null</code> if the user has not been
-    * authenticated. Whether the user name is sent with each subsequent request
-    * depends on the browser and type of authentication. Same as the value of
-    * the CGI variable REMOTE_USER.
-    * 
-    * @return a <code>String</code> specifying the login of the user making
-    *         this request, or <code>null</code> if the user login is not
-    *         known
-    */
+    /**
+     *
+     * Returns the query string that is contained in the request
+     * URL after the path. This method returns <code>null</code>
+     * if the URL does not have a query string. Same as the value
+     * of the CGI variable QUERY_STRING. 
+     *
+     * @return		a <code>String</code> containing the query
+     *			string or <code>null</code> if the URL 
+     *			contains no query string. The value is not
+     *			decoded by the container.
+     *
+     */
 
-   public String getRemoteUser();
+    public String getQueryString();
+    
+    
+    
 
-   /**
-    * Returns a boolean indicating whether the authenticated user is included in
-    * the specified logical "role". Roles and role membership can be defined
-    * using deployment descriptors. If the user has not been authenticated, the
-    * method returns <code>false</code>.
-    * 
-    * @param role
-    *           a <code>String</code> specifying the name of the role
-    * @return a <code>boolean</code> indicating whether the user making this
-    *         request belongs to a given role; <code>false</code> if the user
-    *         has not been authenticated
-    */
+    /**
+     *
+     * Returns the login of the user making this request, if the
+     * user has been authenticated, or <code>null</code> if the user 
+     * has not been authenticated.
+     * Whether the user name is sent with each subsequent request
+     * depends on the browser and type of authentication. Same as the 
+     * value of the CGI variable REMOTE_USER.
+     *
+     * @return		a <code>String</code> specifying the login
+     *			of the user making this request, or <code>null</code>
+     *			if the user login is not known
+     *
+     */
 
-   public boolean isUserInRole(String role);
+    public String getRemoteUser();
+    
+    
+    
 
-   /**
-    * Returns a <code>java.security.Principal</code> object containing the
-    * name of the current authenticated user. If the user has not been
-    * authenticated, the method returns <code>null</code>.
-    * 
-    * @return a <code>java.security.Principal</code> containing the name of
-    *         the user making this request; <code>null</code> if the user has
-    *         not been authenticated
-    */
+    /**
+     *
+     * Returns a boolean indicating whether the authenticated user is included
+     * in the specified logical "role".  Roles and role membership can be
+     * defined using deployment descriptors.  If the user has not been
+     * authenticated, the method returns <code>false</code>.
+     *
+     * @param role		a <code>String</code> specifying the name
+     *				of the role
+     *
+     * @return		a <code>boolean</code> indicating whether
+     *			the user making this request belongs to a given role;
+     *			<code>false</code> if the user has not been 
+     *			authenticated
+     *
+     */
 
-   public java.security.Principal getUserPrincipal();
+    public boolean isUserInRole(String role);
+    
+    
+    
 
-   /**
-    * Returns the session ID specified by the client. This may not be the same
-    * as the ID of the current valid session for this request. If the client did
-    * not specify a session ID, this method returns <code>null</code>.
-    * 
-    * @return a <code>String</code> specifying the session ID, or
-    *         <code>null</code> if the request did not specify a session ID
-    * @see #isRequestedSessionIdValid
-    */
+    /**
+     *
+     * Returns a <code>java.security.Principal</code> object containing
+     * the name of the current authenticated user. If the user has not been
+     * authenticated, the method returns <code>null</code>.
+     *
+     * @return		a <code>java.security.Principal</code> containing
+     *			the name of the user making this request;
+     *			<code>null</code> if the user has not been 
+     *			authenticated
+     *
+     */
 
-   public String getRequestedSessionId();
+    public java.security.Principal getUserPrincipal();
+    
+    
+    
 
-   /**
-    * Returns the part of this request's URL from the protocol name up to the
-    * query string in the first line of the HTTP request. The web container does
-    * not decode this String. For example: <table summary="Examples of Returned
-    * Values">
-    * <tr align=left>
-    * <th>First line of HTTP request </th>
-    * <th> Returned Value</th>
-    * <tr>
-    * <td>POST /some/path.html HTTP/1.1
-    * <td>
-    * <td>/some/path.html
-    * <tr>
-    * <td>GET http://foo.bar/a.html HTTP/1.0
-    * <td>
-    * <td>/a.html
-    * <tr>
-    * <td>HEAD /xyz?a=b HTTP/1.1
-    * <td>
-    * <td>/xyz </table>
-    * <p>
-    * To reconstruct an URL with a scheme and host, use
-    * {@link HttpUtils#getRequestURL}.
-    * 
-    * @return a <code>String</code> containing the part of the URL from the
-    *         protocol name up to the query string
-    * @see HttpUtils#getRequestURL
-    */
+    /**
+     *
+     * Returns the session ID specified by the client. This may
+     * not be the same as the ID of the current valid session
+     * for this request.
+     * If the client did not specify a session ID, this method returns
+     * <code>null</code>.
+     *
+     *
+     * @return		a <code>String</code> specifying the session
+     *			ID, or <code>null</code> if the request did
+     *			not specify a session ID
+     *
+     * @see		#isRequestedSessionIdValid
+     *
+     */
 
-   public String getRequestURI();
+    public String getRequestedSessionId();
+    
+    
+    
+    
+    /**
+     *
+     * Returns the part of this request's URL from the protocol
+     * name up to the query string in the first line of the HTTP request.
+     * The web container does not decode this String.
+     * For example:
+     *
+     * 
 
-   /**
-    * Reconstructs the URL the client used to make the request. The returned URL
-    * contains a protocol, server name, port number, and server path, but it
-    * does not include query string parameters.
-    * <p>
-    * If this request has been forwarded using
-    * {@link javax.servlet.RequestDispatcher#forward}, the server path in the
-    * reconstructed URL must reflect the path used to obtain the
-    * RequestDispatcher, and not the server path specified by the client.
-    * <p>
-    * Because this method returns a <code>StringBuffer</code>, not a string,
-    * you can modify the URL easily, for example, to append query parameters.
-    * <p>
-    * This method is useful for creating redirect messages and for reporting
-    * errors.
-    * 
-    * @return a <code>StringBuffer</code> object containing the reconstructed
-    *         URL
-    */
-   public StringBuffer getRequestURL();
+     * <table summary="Examples of Returned Values">
+     * <tr align=left><th>First line of HTTP request      </th>
+     * <th>     Returned Value</th>
+     * <tr><td>POST /some/path.html HTTP/1.1<td><td>/some/path.html
+     * <tr><td>GET http://foo.bar/a.html HTTP/1.0
+     * <td><td>/a.html
+     * <tr><td>HEAD /xyz?a=b HTTP/1.1<td><td>/xyz
+     * </table>
+     *
+     * <p>To reconstruct an URL with a scheme and host, use
+     * {@link HttpUtils#getRequestURL}.
+     *
+     * @return		a <code>String</code> containing
+     *			the part of the URL from the 
+     *			protocol name up to the query string
+     *
+     * @see		HttpUtils#getRequestURL
+     *
+     */
 
-   /**
-    * Returns the part of this request's URL that calls the servlet. This path
-    * starts with a "/" character and includes either the servlet name or a path
-    * to the servlet, but does not include any extra path information or a query
-    * string. Same as the value of the CGI variable SCRIPT_NAME.
-    * <p>
-    * This method will return an empty string ("") if the servlet used to
-    * process this request was matched using the "/*" pattern.
-    * 
-    * @return a <code>String</code> containing the name or path of the servlet
-    *         being called, as specified in the request URL, decoded, or an
-    *         empty string if the servlet used to process the request is matched
-    *         using the "/*" pattern.
-    */
+    public String getRequestURI();
+    
+    /**
+     *
+     * Reconstructs the URL the client used to make the request.
+     * The returned URL contains a protocol, server name, port
+     * number, and server path, but it does not include query
+     * string parameters.
+     *
+     * <p>Because this method returns a <code>StringBuffer</code>,
+     * not a string, you can modify the URL easily, for example,
+     * to append query parameters.
+     *
+     * <p>This method is useful for creating redirect messages
+     * and for reporting errors.
+     *
+     * @return		a <code>StringBuffer</code> object containing
+     *			the reconstructed URL
+     *
+     */
+    public StringBuffer getRequestURL();
+    
 
-   public String getServletPath();
+    /**
+     *
+     * Returns the part of this request's URL that calls
+     * the servlet. This path starts with a "/" character
+     * and includes either the servlet name or a path to
+     * the servlet, but does not include any extra path
+     * information or a query string. Same as the value of
+     * the CGI variable SCRIPT_NAME.
+     *
+     * <p>This method will return an empty string ("") if the
+     * servlet used to process this request was matched using
+     * the "/*" pattern.
+     *
+     * @return		a <code>String</code> containing
+     *			the name or path of the servlet being
+     *			called, as specified in the request URL,
+     *			decoded, or an empty string if the servlet
+     *			used to process the request is matched
+     *			using the "/*" pattern.
+     *
+     */
 
-   /**
-    * Returns the current <code>HttpSession</code> associated with this
-    * request or, if there is no current session and <code>create</code> is
-    * true, returns a new session.
-    * <p>
-    * If <code>create</code> is <code>false</code> and the request has no
-    * valid <code>HttpSession</code>, this method returns <code>null</code>.
-    * <p>
-    * To make sure the session is properly maintained, you must call this method
-    * before the response is committed. If the container is using cookies to
-    * maintain session integrity and is asked to create a new session when the
-    * response is committed, an IllegalStateException is thrown.
-    * 
-    * @param create
-    *           <code>true</code> to create a new session for this request if
-    *           necessary; <code>false</code> to return <code>null</code> if
-    *           there's no current session
-    * @return the <code>HttpSession</code> associated with this request or
-    *         <code>null</code> if <code>create</code> is <code>false</code>
-    *         and the request has no valid session
-    * @see #getSession()
-    */
+    public String getServletPath();
+    
+    
+    
 
-   public HttpSession getSession(boolean create);
+    /**
+     *
+     * Returns the current <code>HttpSession</code>
+     * associated with this request or, if there is no
+     * current session and <code>create</code> is true, returns 
+     * a new session.
+     *
+     * <p>If <code>create</code> is <code>false</code>
+     * and the request has no valid <code>HttpSession</code>,
+     * this method returns <code>null</code>.
+     *
+     * <p>To make sure the session is properly maintained,
+     * you must call this method before 
+     * the response is committed. If the container is using cookies
+     * to maintain session integrity and is asked to create a new session
+     * when the response is committed, an IllegalStateException is thrown.
+     *
+     *
+     *
+     *
+     * @param create	<code>true</code> to create
+     *			a new session for this request if necessary; 
+     *			<code>false</code> to return <code>null</code>
+     *			if there's no current session
+     *			
+     *
+     * @return 		the <code>HttpSession</code> associated 
+     *			with this request or <code>null</code> if
+     * 			<code>create</code> is <code>false</code>
+     *			and the request has no valid session
+     *
+     * @see	#getSession()
+     *
+     *
+     */
 
-   /**
-    * Returns the current session associated with this request, or if the
-    * request does not have a session, creates one.
-    * 
-    * @return the <code>HttpSession</code> associated with this request
-    * @see #getSession(boolean)
-    */
+    public HttpSession getSession(boolean create);
+    
+    
+    
+   
 
-   public HttpSession getSession();
+    /**
+     *
+     * Returns the current session associated with this request,
+     * or if the request does not have a session, creates one.
+     * 
+     * @return		the <code>HttpSession</code> associated
+     *			with this request
+     *
+     * @see	#getSession(boolean)
+     *
+     */
 
-   /**
-    * Checks whether the requested session ID is still valid.
-    * <p>
-    * If the client did not specify any session ID, this method returns
-    * <code>false</code>.
-    * 
-    * @return <code>true</code> if this request has an id for a valid session
-    *         in the current session context; <code>false</code> otherwise
-    * @see #getRequestedSessionId
-    * @see #getSession
-    * @see HttpSessionContext
-    */
+    public HttpSession getSession();
+    
+    
+    
+    
+    
 
-   public boolean isRequestedSessionIdValid();
+    /**
+     *
+     * Checks whether the requested session ID is still valid.
+     *
+     * @return			<code>true</code> if this
+     *				request has an id for a valid session
+     *				in the current session context;
+     *				<code>false</code> otherwise
+     *
+     * @see			#getRequestedSessionId
+     * @see			#getSession
+     * @see			HttpSessionContext
+     *
+     */
 
-   /**
-    * Checks whether the requested session ID came in as a cookie.
-    * 
-    * @return <code>true</code> if the session ID came in as a cookie;
-    *         otherwise, <code>false</code>
-    * @see #getSession
-    */
+    public boolean isRequestedSessionIdValid();
+    
+    
+    
 
-   public boolean isRequestedSessionIdFromCookie();
+    /**
+     *
+     * Checks whether the requested session ID came in as a cookie.
+     *
+     * @return			<code>true</code> if the session ID
+     *				came in as a
+     *				cookie; otherwise, <code>false</code>
+     *
+     *
+     * @see			#getSession
+     *
+     */ 
 
-   /**
-    * Checks whether the requested session ID came in as part of the request
-    * URL.
-    * 
-    * @return <code>true</code> if the session ID came in as part of a URL;
-    *         otherwise, <code>false</code>
-    * @see #getSession
-    */
+    public boolean isRequestedSessionIdFromCookie();
+    
+    
+    
 
-   public boolean isRequestedSessionIdFromURL();
+    /**
+     *
+     * Checks whether the requested session ID came in as part of the 
+     * request URL.
+     *
+     * @return			<code>true</code> if the session ID
+     *				came in as part of a URL; otherwise,
+     *				<code>false</code>
+     *
+     *
+     * @see			#getSession
+     *
+     */
+    
+    public boolean isRequestedSessionIdFromURL();
+    
+    
+    
+    
+    
+    /**
+     *
+     * @deprecated		As of Version 2.1 of the Java Servlet
+     *				API, use {@link #isRequestedSessionIdFromURL}
+     *				instead.
+     *
+     */
 
-   /**
-    * @deprecated As of Version 2.1 of the Java Servlet API, use
-    *             {@link #isRequestedSessionIdFromURL} instead.
-    */
+    public boolean isRequestedSessionIdFromUrl();
 
-   public boolean isRequestedSessionIdFromUrl();
 
+    
 }

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServletRequestWrapper.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServletRequestWrapper.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServletRequestWrapper.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,290 +1,263 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet.http;
 
 import javax.servlet.ServletRequestWrapper;
 import java.util.Enumeration;
 
 /**
+ * 
  * Provides a convenient implementation of the HttpServletRequest interface that
  * can be subclassed by developers wishing to adapt the request to a Servlet.
  * This class implements the Wrapper or Decorator pattern. Methods default to
  * calling through to the wrapped request object.
  * 
- * @see javax.servlet.http.HttpServletRequest
- * @since v 2.3
+ *
+ * @see 	javax.servlet.http.HttpServletRequest
+  * @since	v 2.3
+ *
  */
 
-public class HttpServletRequestWrapper extends ServletRequestWrapper implements HttpServletRequest
-{
 
-   /**
-    * Constructs a request object wrapping the given request.
-    * 
-    * @throws java.lang.IllegalArgumentException
-    *            if the request is null
-    */
-   public HttpServletRequestWrapper(HttpServletRequest request)
-   {
-      super(request);
-   }
+public class HttpServletRequestWrapper extends ServletRequestWrapper implements HttpServletRequest {
 
-   private HttpServletRequest _getHttpServletRequest()
-   {
-      return (HttpServletRequest) super.getRequest();
-   }
+	/** 
+	* Constructs a request object wrapping the given request.
+	* @throws java.lang.IllegalArgumentException if the request is null
+	*/
+    public HttpServletRequestWrapper(HttpServletRequest request) {
+	    super(request);
+    }
+    
+    private HttpServletRequest _getHttpServletRequest() {
+	return (HttpServletRequest) super.getRequest();
+    }
 
-   /**
-    * The default behavior of this method is to return getAuthType() on the
-    * wrapped request object.
-    */
+    /**
+     * The default behavior of this method is to return getAuthType()
+     * on the wrapped request object.
+     */
 
-   public String getAuthType()
-   {
-      return this._getHttpServletRequest().getAuthType();
-   }
+    public String getAuthType() {
+	return this._getHttpServletRequest().getAuthType();
+    }
+   
+    /**
+     * The default behavior of this method is to return getCookies()
+     * on the wrapped request object.
+     */
+    public Cookie[] getCookies() {
+	return this._getHttpServletRequest().getCookies();
+    }
 
-   /**
-    * The default behavior of this method is to return getCookies() on the
-    * wrapped request object.
-    */
-   public Cookie[] getCookies()
-   {
-      return this._getHttpServletRequest().getCookies();
-   }
+    /**
+     * The default behavior of this method is to return getDateHeader(String name)
+     * on the wrapped request object.
+     */
+    public long getDateHeader(String name) {
+	return this._getHttpServletRequest().getDateHeader(name);
+    }
+        	
+    /**
+     * The default behavior of this method is to return getHeader(String name)
+     * on the wrapped request object.
+     */
+    public String getHeader(String name) {
+	return this._getHttpServletRequest().getHeader(name);
+    }
+    
+    /**
+     * The default behavior of this method is to return getHeaders(String name)
+     * on the wrapped request object.
+     */
+    public Enumeration getHeaders(String name) {
+	return this._getHttpServletRequest().getHeaders(name);
+    }  
 
-   /**
-    * The default behavior of this method is to return getDateHeader(String
-    * name) on the wrapped request object.
-    */
-   public long getDateHeader(String name)
-   {
-      return this._getHttpServletRequest().getDateHeader(name);
-   }
+    /**
+     * The default behavior of this method is to return getHeaderNames()
+     * on the wrapped request object.
+     */
+  
+    public Enumeration getHeaderNames() {
+	return this._getHttpServletRequest().getHeaderNames();
+    }
+    
+    /**
+     * The default behavior of this method is to return getIntHeader(String name)
+     * on the wrapped request object.
+     */
 
-   /**
-    * The default behavior of this method is to return getHeader(String name) on
-    * the wrapped request object.
-    */
-   public String getHeader(String name)
-   {
-      return this._getHttpServletRequest().getHeader(name);
-   }
+     public int getIntHeader(String name) {
+	return this._getHttpServletRequest().getIntHeader(name);
+    }
+    
+    /**
+     * The default behavior of this method is to return getMethod()
+     * on the wrapped request object.
+     */
+    public String getMethod() {
+	return this._getHttpServletRequest().getMethod();
+    }
+    
+    /**
+     * The default behavior of this method is to return getPathInfo()
+     * on the wrapped request object.
+     */
+    public String getPathInfo() {
+	return this._getHttpServletRequest().getPathInfo();
+    }
 
-   /**
-    * The default behavior of this method is to return getHeaders(String name)
-    * on the wrapped request object.
-    */
-   public Enumeration getHeaders(String name)
-   {
-      return this._getHttpServletRequest().getHeaders(name);
-   }
+    /**
+     * The default behavior of this method is to return getPathTranslated()
+     * on the wrapped request object.
+     */
 
-   /**
-    * The default behavior of this method is to return getHeaderNames() on the
-    * wrapped request object.
-    */
+     public String getPathTranslated() {
+	return this._getHttpServletRequest().getPathTranslated();
+    }
 
-   public Enumeration getHeaderNames()
-   {
-      return this._getHttpServletRequest().getHeaderNames();
-   }
+    /**
+     * The default behavior of this method is to return getContextPath()
+     * on the wrapped request object.
+     */
+    public String getContextPath() {
+	return this._getHttpServletRequest().getContextPath();
+    }
+    
+    /**
+     * The default behavior of this method is to return getQueryString()
+     * on the wrapped request object.
+     */
+    public String getQueryString() {
+	return this._getHttpServletRequest().getQueryString();
+    }
+    
+    /**
+     * The default behavior of this method is to return getRemoteUser()
+     * on the wrapped request object.
+     */
+    public String getRemoteUser() {
+	return this._getHttpServletRequest().getRemoteUser();
+    }
+    
+ 
+    /**
+     * The default behavior of this method is to return isUserInRole(String role)
+     * on the wrapped request object.
+     */
+    public boolean isUserInRole(String role) {
+	return this._getHttpServletRequest().isUserInRole(role);
+    }
+    
+    
+    
+    /**
+     * The default behavior of this method is to return getUserPrincipal()
+     * on the wrapped request object.
+     */
+    public java.security.Principal getUserPrincipal() {
+	return this._getHttpServletRequest().getUserPrincipal();
+    }
+    
+   
+    /**
+     * The default behavior of this method is to return getRequestedSessionId()
+     * on the wrapped request object.
+     */
+    public String getRequestedSessionId() {
+	return this._getHttpServletRequest().getRequestedSessionId();
+    }
+    
+    /**
+     * The default behavior of this method is to return getRequestURI()
+     * on the wrapped request object.
+     */
+    public String getRequestURI() {
+	return this._getHttpServletRequest().getRequestURI();
+    }
+	/**
+     * The default behavior of this method is to return getRequestURL()
+     * on the wrapped request object.
+     */
+    public StringBuffer getRequestURL() {
+	return this._getHttpServletRequest().getRequestURL();
+    }
+	
+    
+    /**
+     * The default behavior of this method is to return getServletPath()
+     * on the wrapped request object.
+     */
+    public String getServletPath() {
+	return this._getHttpServletRequest().getServletPath();
+    }
+    
+    
+    /**
+     * The default behavior of this method is to return getSession(boolean create)
+     * on the wrapped request object.
+     */
+    public HttpSession getSession(boolean create) {
+	return this._getHttpServletRequest().getSession(create);
+    }
+    
+    /**
+     * The default behavior of this method is to return getSession()
+     * on the wrapped request object.
+     */
+    public HttpSession getSession() {
+	return this._getHttpServletRequest().getSession();
+    }
+    
+    /**
+     * The default behavior of this method is to return isRequestedSessionIdValid()
+     * on the wrapped request object.
+     */ 
 
-   /**
-    * The default behavior of this method is to return getIntHeader(String name)
-    * on the wrapped request object.
-    */
+    public boolean isRequestedSessionIdValid() {
+	return this._getHttpServletRequest().isRequestedSessionIdValid();
+    }
+     
+    
+    /**
+     * The default behavior of this method is to return isRequestedSessionIdFromCookie()
+     * on the wrapped request object.
+     */
+    public boolean isRequestedSessionIdFromCookie() {
+	return this._getHttpServletRequest().isRequestedSessionIdFromCookie();
+    }
+    
+    	  /**
+     * The default behavior of this method is to return isRequestedSessionIdFromURL()
+     * on the wrapped request object.
+     */ 
+    public boolean isRequestedSessionIdFromURL() {
+	return this._getHttpServletRequest().isRequestedSessionIdFromURL();
+    }
+    
+    /**
+     * The default behavior of this method is to return isRequestedSessionIdFromUrl()
+     * on the wrapped request object.
+     */
+    public boolean isRequestedSessionIdFromUrl() {
+	return this._getHttpServletRequest().isRequestedSessionIdFromUrl();
+    }
 
-   public int getIntHeader(String name)
-   {
-      return this._getHttpServletRequest().getIntHeader(name);
-   }
 
-   /**
-    * The default behavior of this method is to return getMethod() on the
-    * wrapped request object.
-    */
-   public String getMethod()
-   {
-      return this._getHttpServletRequest().getMethod();
-   }
-
-   /**
-    * The default behavior of this method is to return getPathInfo() on the
-    * wrapped request object.
-    */
-   public String getPathInfo()
-   {
-      return this._getHttpServletRequest().getPathInfo();
-   }
-
-   /**
-    * The default behavior of this method is to return getPathTranslated() on
-    * the wrapped request object.
-    */
-
-   public String getPathTranslated()
-   {
-      return this._getHttpServletRequest().getPathTranslated();
-   }
-
-   /**
-    * The default behavior of this method is to return getContextPath() on the
-    * wrapped request object.
-    */
-   public String getContextPath()
-   {
-      return this._getHttpServletRequest().getContextPath();
-   }
-
-   /**
-    * The default behavior of this method is to return getQueryString() on the
-    * wrapped request object.
-    */
-   public String getQueryString()
-   {
-      return this._getHttpServletRequest().getQueryString();
-   }
-
-   /**
-    * The default behavior of this method is to return getRemoteUser() on the
-    * wrapped request object.
-    */
-   public String getRemoteUser()
-   {
-      return this._getHttpServletRequest().getRemoteUser();
-   }
-
-   /**
-    * The default behavior of this method is to return isUserInRole(String role)
-    * on the wrapped request object.
-    */
-   public boolean isUserInRole(String role)
-   {
-      return this._getHttpServletRequest().isUserInRole(role);
-   }
-
-   /**
-    * The default behavior of this method is to return getUserPrincipal() on the
-    * wrapped request object.
-    */
-   public java.security.Principal getUserPrincipal()
-   {
-      return this._getHttpServletRequest().getUserPrincipal();
-   }
-
-   /**
-    * The default behavior of this method is to return getRequestedSessionId()
-    * on the wrapped request object.
-    */
-   public String getRequestedSessionId()
-   {
-      return this._getHttpServletRequest().getRequestedSessionId();
-   }
-
-   /**
-    * The default behavior of this method is to return getRequestURI() on the
-    * wrapped request object.
-    */
-   public String getRequestURI()
-   {
-      return this._getHttpServletRequest().getRequestURI();
-   }
-
-   /**
-    * The default behavior of this method is to return getRequestURL() on the
-    * wrapped request object.
-    */
-   public StringBuffer getRequestURL()
-   {
-      return this._getHttpServletRequest().getRequestURL();
-   }
-
-   /**
-    * The default behavior of this method is to return getServletPath() on the
-    * wrapped request object.
-    */
-   public String getServletPath()
-   {
-      return this._getHttpServletRequest().getServletPath();
-   }
-
-   /**
-    * The default behavior of this method is to return getSession(boolean
-    * create) on the wrapped request object.
-    */
-   public HttpSession getSession(boolean create)
-   {
-      return this._getHttpServletRequest().getSession(create);
-   }
-
-   /**
-    * The default behavior of this method is to return getSession() on the
-    * wrapped request object.
-    */
-   public HttpSession getSession()
-   {
-      return this._getHttpServletRequest().getSession();
-   }
-
-   /**
-    * The default behavior of this method is to return
-    * isRequestedSessionIdValid() on the wrapped request object.
-    */
-
-   public boolean isRequestedSessionIdValid()
-   {
-      return this._getHttpServletRequest().isRequestedSessionIdValid();
-   }
-
-   /**
-    * The default behavior of this method is to return
-    * isRequestedSessionIdFromCookie() on the wrapped request object.
-    */
-   public boolean isRequestedSessionIdFromCookie()
-   {
-      return this._getHttpServletRequest().isRequestedSessionIdFromCookie();
-   }
-
-   /**
-    * The default behavior of this method is to return
-    * isRequestedSessionIdFromURL() on the wrapped request object.
-    */
-   public boolean isRequestedSessionIdFromURL()
-   {
-      return this._getHttpServletRequest().isRequestedSessionIdFromURL();
-   }
-
-   /**
-    * The default behavior of this method is to return
-    * isRequestedSessionIdFromUrl() on the wrapped request object. *
-    * 
-    * @deprecated As of Version 2.1 of the Java Servlet API, use
-    *             {@link #isRequestedSessionIdFromURL} instead.
-    */
-   @Deprecated
-   public boolean isRequestedSessionIdFromUrl()
-   {
-      return this._getHttpServletRequest().isRequestedSessionIdFromUrl();
-   }
-
+    
 }

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServletResponse.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServletResponse.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServletResponse.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,24 +1,19 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet.http;
 
 import java.io.IOException;
@@ -26,596 +21,617 @@
 import javax.servlet.ServletResponse;
 
 /**
+ *
  * Extends the {@link ServletResponse} interface to provide HTTP-specific
- * functionality in sending a response. For example, it has methods to access
- * HTTP headers and cookies.
- * <p>
- * The servlet container creates an <code>HttpServletResponse</code> object
- * and passes it as an argument to the servlet's service methods (<code>doGet</code>,
- * <code>doPost</code>, etc).
+ * functionality in sending a response.  For example, it has methods
+ * to access HTTP headers and cookies.
+ *
+ * <p>The servlet container creates an <code>HttpServletResponse</code> object
+ * and passes it as an argument to the servlet's service methods
+ * (<code>doGet</code>, <code>doPost</code>, etc).
+ *
  * 
- * @author Various
- * @see javax.servlet.ServletResponse
+ * @author	Various
+ * @version	$Version$
+ *
+ * @see		javax.servlet.ServletResponse
+ *
  */
 
-public interface HttpServletResponse extends ServletResponse
-{
 
-   /**
-    * 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
-    */
 
-   public void addCookie(Cookie cookie);
+public interface HttpServletResponse extends ServletResponse {
 
-   /**
-    * 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
-    */
+    /**
+     * 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
+     *
+     */
 
-   public boolean containsHeader(String name);
+    public void addCookie(Cookie cookie);
 
-   /**
-    * 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.
-    */
+    /**
+     * 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
+     */
 
-   public String encodeURL(String url);
+    public boolean containsHeader(String name);
 
-   /**
-    * Encodes the specified URL for use in the <code>sendRedirect</code>
-    * method 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. Because the rules for making
-    * this determination can differ from those used to decide whether to encode
-    * a normal link, this method is separated from the <code>encodeURL</code>
-    * method.
-    * <p>
-    * All URLs sent to the <code>HttpServletResponse.sendRedirect</code>
-    * method 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.
-    * @see #sendRedirect
-    * @see #encodeUrl
-    */
+    /**
+     * 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.
+     */
 
-   public String encodeRedirectURL(String url);
+    public String encodeURL(String url);
 
-   /**
-    * @deprecated As of version 2.1, use encodeURL(String url) instead
-    * @param url
-    *           the url to be encoded.
-    * @return the encoded URL if encoding is needed; the unchanged URL
-    *         otherwise.
-    */
+    /**
+     * Encodes the specified URL for use in the
+     * <code>sendRedirect</code> method 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.  Because the rules for making
+     * this determination can differ from those used to decide whether to
+     * encode a normal link, this method is separated from the
+     * <code>encodeURL</code> method.
+     * 
+     * <p>All URLs sent to the <code>HttpServletResponse.sendRedirect</code>
+     * method 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.
+     *
+     * @see #sendRedirect
+     * @see #encodeUrl
+     */
 
-   public String encodeUrl(String url);
+    public String encodeRedirectURL(String url);
 
-   /**
-    * @deprecated As of version 2.1, use encodeRedirectURL(String url) instead
-    * @param url
-    *           the url to be encoded.
-    * @return the encoded URL if encoding is needed; the unchanged URL
-    *         otherwise.
-    */
+    /**
+     * @deprecated	As of version 2.1, use encodeURL(String url) instead
+     *
+     * @param	url	the url to be encoded.
+     * @return		the encoded URL if encoding is needed; 
+     * 			the unchanged URL otherwise.
+     */
 
-   public String encodeRedirectUrl(String url);
+    public String encodeUrl(String url);
+    
+    /**
+     * @deprecated	As of version 2.1, use 
+     *			encodeRedirectURL(String url) instead
+     *
+     * @param	url	the url to be encoded.
+     * @return		the encoded URL if encoding is needed; 
+     * 			the unchanged URL otherwise.
+     */
 
-   /**
-    * Sends an error response to the client using the specified status. The
-    * server defaults to creating the response to look like an HTML-formatted
-    * server error page containing the specified message, setting the content
-    * type to "text/html", leaving cookies and other headers unmodified. If an
-    * error-page declaration has been made for the web application corresponding
-    * to the status code passed in, it will be served back in preference to the
-    * suggested msg parameter.
-    * <p>
-    * If the response has already been committed, this method throws an
-    * IllegalStateException. After using this method, the response should be
-    * considered to be committed and should not be written to.
-    * 
-    * @param sc
-    *           the error status code
-    * @param msg
-    *           the descriptive message
-    * @exception IOException
-    *               If an input or output exception occurs
-    * @exception IllegalStateException
-    *               If the response was committed
-    */
+    public String encodeRedirectUrl(String url);
 
-   public void sendError(int sc, String msg) throws IOException;
+    /**
+     * Sends an error response to the client using the specified
+     * status.  The server defaults to creating the
+     * response to look like an HTML-formatted server error page
+     * containing the specified message, setting the content type
+     * to "text/html", leaving cookies and other headers unmodified.
+     *
+     * If an error-page declaration has been made for the web application
+     * corresponding to the status code passed in, it will be served back in 
+     * preference to the suggested msg parameter. 
+     *
+     * <p>If the response has already been committed, this method throws 
+     * an IllegalStateException.
+     * After using this method, the response should be considered
+     * to be committed and should not be written to.
+     *
+     * @param	sc	the error status code
+     * @param	msg	the descriptive message
+     * @exception	IOException	If an input or output exception occurs
+     * @exception	IllegalStateException	If the response was committed
+     */
+   
+    public void sendError(int sc, String msg) throws IOException;
 
-   /**
-    * Sends an error response to the client using the specified status code and
-    * clearing the buffer.
-    * <p>
-    * If the response has already been committed, this method throws an
-    * IllegalStateException. After using this method, the response should be
-    * considered to be committed and should not be written to.
-    * 
-    * @param sc
-    *           the error status code
-    * @exception IOException
-    *               If an input or output exception occurs
-    * @exception IllegalStateException
-    *               If the response was committed before this method call
-    */
+    /**
+     * Sends an error response to the client using the specified status
+     * code and clearing the buffer. 
+     * <p>If the response has already been committed, this method throws 
+     * an IllegalStateException.
+     * After using this method, the response should be considered
+     * to be committed and should not be written to.
+     *
+     * @param	sc	the error status code
+     * @exception	IOException	If an input or output exception occurs
+     * @exception	IllegalStateException	If the response was committed
+     *						before this method call
+     */
 
-   public void sendError(int sc) throws IOException;
+    public void sendError(int sc) throws IOException;
 
-   /**
-    * Sends a temporary redirect response to the client using the specified
-    * redirect location URL. This method can accept relative URLs; the servlet
-    * container must convert the relative URL to an absolute URL before sending
-    * the response to the client. If the location is relative without a leading
-    * '/' the container interprets it as relative to the current request URI. If
-    * the location is relative with a leading '/' the container interprets it as
-    * relative to the servlet container root.
-    * <p>
-    * If the response has already been committed, this method throws an
-    * IllegalStateException. After using this method, the response should be
-    * considered to be committed and should not be written to.
-    * 
-    * @param location
-    *           the redirect location URL
-    * @exception IOException
-    *               If an input or output exception occurs
-    * @exception IllegalStateException
-    *               If the response was committed or if a partial URL is given
-    *               and cannot be converted into a valid URL
-    */
+    /**
+     * Sends a temporary redirect response to the client using the
+     * specified redirect location URL.  This method can accept relative URLs;
+     * the servlet container must convert the relative URL to an absolute URL
+     * before sending the response to the client. If the location is relative 
+     * without a leading '/' the container interprets it as relative to
+     * the current request URI. If the location is relative with a leading
+     * '/' the container interprets it as relative to the servlet container root.
+     *
+     * <p>If the response has already been committed, this method throws 
+     * an IllegalStateException.
+     * After using this method, the response should be considered
+     * to be committed and should not be written to.
+     *
+     * @param		location	the redirect location URL
+     * @exception	IOException	If an input or output exception occurs
+     * @exception	IllegalStateException	If the response was committed or
+ if a partial URL is given and cannot be converted into a valid URL
+     */
 
-   public void sendRedirect(String location) throws IOException;
+    public void sendRedirect(String location) throws IOException;
+    
+    /**
+     * 
+     * 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
+     * @see #addDateHeader
+     */
 
-   /**
-    * 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
-    * @see #addDateHeader
-    */
+    public 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
+     */
 
-   public void setDateHeader(String name, long date);
+    public 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  If it contains octet string,
+     *		it should be encoded according to RFC 2047
+     *		(http://www.ietf.org/rfc/rfc2047.txt)
+     *
+     * @see #containsHeader
+     * @see #addHeader
+     */
 
-   /**
-    * 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
-    */
+    public 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   If it contains
+     *		octet string, it should be encoded
+     *		according to RFC 2047
+     *		(http://www.ietf.org/rfc/rfc2047.txt)
+     *
+     * @see #setHeader
+     */
 
-   public void addDateHeader(String name, long date);
+    public void addHeader(String name, String value);
 
-   /**
-    * 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 If it contains octet string, it should be
-    *           encoded according to RFC 2047
-    *           (http://www.ietf.org/rfc/rfc2047.txt)
-    * @see #containsHeader
-    * @see #addHeader
-    */
+    /**
+     * Sets a response header with the given name and
+     * integer 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 assigned integer value
+     *
+     * @see #containsHeader
+     * @see #addIntHeader
+     */
 
-   public void setHeader(String name, String value);
+    public void setIntHeader(String name, int 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 If it contains octet string, it
-    *           should be encoded according to RFC 2047
-    *           (http://www.ietf.org/rfc/rfc2047.txt)
-    * @see #setHeader
-    */
+    /**
+     * Adds a response header with the given name and
+     * integer value.  This method allows response headers to have multiple
+     * values.
+     *
+     * @param	name	the name of the header
+     * @param	value	the assigned integer value
+     *
+     * @see #setIntHeader
+     */
 
-   public void addHeader(String name, String value);
+    public void addIntHeader(String name, int value);
 
-   /**
-    * Sets a response header with the given name and integer 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 assigned integer value
-    * @see #containsHeader
-    * @see #addIntHeader
-    */
 
-   public void setIntHeader(String name, int value);
+    
+    /**
+     * Sets the status code for this response.  This method is used to
+     * set the return status code when there is no error (for example,
+     * for the status codes SC_OK or SC_MOVED_TEMPORARILY).  If there
+     * is an error, and the caller wishes to invoke an error-page defined
+     * in the web application, the <code>sendError</code> method should be used
+     * instead.
+     * <p> The container clears the buffer and sets the Location header, preserving
+     * cookies and other headers.
+     *
+     * @param	sc	the status code
+     *
+     * @see #sendError
+     */
 
-   /**
-    * Adds a response header with the given name and integer value. This method
-    * allows response headers to have multiple values.
-    * 
-    * @param name
-    *           the name of the header
-    * @param value
-    *           the assigned integer value
-    * @see #setIntHeader
-    */
+    public void setStatus(int sc);
+  
+    /**
+     * @deprecated As of version 2.1, due to ambiguous meaning of the 
+     * message parameter. To set a status code 
+     * use <code>setStatus(int)</code>, to send an error with a description
+     * use <code>sendError(int, String)</code>.
+     *
+     * Sets the status code and message for this response.
+     * 
+     * @param	sc	the status code
+     * @param	sm	the status message
+     */
 
-   public void addIntHeader(String name, int value);
+    public void setStatus(int sc, String sm);
 
-   /**
-    * Sets the status code for this response. This method is used to set the
-    * return status code when there is no error (for example, for the status
-    * codes SC_OK or SC_MOVED_TEMPORARILY). If there is an error, and the caller
-    * wishes to invoke an error-page defined in the web application, the
-    * <code>sendError</code> method should be used instead.
-    * <p>
-    * The container clears the buffer and sets the Location header, preserving
-    * cookies and other headers.
-    * 
-    * @param sc
-    *           the status code
-    * @see #sendError
-    */
+    
+    /*
+     * Server status codes; see RFC 2068.
+     */
 
-   public void setStatus(int sc);
+    /**
+     * Status code (100) indicating the client can continue.
+     */
 
-   /**
-    * @deprecated As of version 2.1, due to ambiguous meaning of the message
-    *             parameter. To set a status code use
-    *             <code>setStatus(int)</code>, to send an error with a
-    *             description use <code>sendError(int, String)</code>. Sets
-    *             the status code and message for this response.
-    * @param sc
-    *           the status code
-    * @param sm
-    *           the status message
-    */
+    public static final int SC_CONTINUE = 100;
 
-   public void setStatus(int sc, String sm);
+    
+    /**
+     * Status code (101) indicating the server is switching protocols
+     * according to Upgrade header.
+     */
 
-   /*
-    * Server status codes; see RFC 2068.
-    */
+    public static final int SC_SWITCHING_PROTOCOLS = 101;
 
-   /**
-    * Status code (100) indicating the client can continue.
-    */
+    /**
+     * Status code (200) indicating the request succeeded normally.
+     */
 
-   public static final int SC_CONTINUE = 100;
+    public static final int SC_OK = 200;
 
-   /**
-    * Status code (101) indicating the server is switching protocols according
-    * to Upgrade header.
-    */
+    /**
+     * Status code (201) indicating the request succeeded and created
+     * a new resource on the server.
+     */
 
-   public static final int SC_SWITCHING_PROTOCOLS = 101;
+    public static final int SC_CREATED = 201;
 
-   /**
-    * Status code (200) indicating the request succeeded normally.
-    */
+    /**
+     * Status code (202) indicating that a request was accepted for
+     * processing, but was not completed.
+     */
 
-   public static final int SC_OK = 200;
+    public static final int SC_ACCEPTED = 202;
 
-   /**
-    * Status code (201) indicating the request succeeded and created a new
-    * resource on the server.
-    */
+    /**
+     * Status code (203) indicating that the meta information presented
+     * by the client did not originate from the server.
+     */
 
-   public static final int SC_CREATED = 201;
+    public static final int SC_NON_AUTHORITATIVE_INFORMATION = 203;
 
-   /**
-    * Status code (202) indicating that a request was accepted for processing,
-    * but was not completed.
-    */
+    /**
+     * Status code (204) indicating that the request succeeded but that
+     * there was no new information to return.
+     */
 
-   public static final int SC_ACCEPTED = 202;
+    public static final int SC_NO_CONTENT = 204;
 
-   /**
-    * Status code (203) indicating that the meta information presented by the
-    * client did not originate from the server.
-    */
+    /**
+     * Status code (205) indicating that the agent <em>SHOULD</em> reset
+     * the document view which caused the request to be sent.
+     */
 
-   public static final int SC_NON_AUTHORITATIVE_INFORMATION = 203;
+    public static final int SC_RESET_CONTENT = 205;
 
-   /**
-    * Status code (204) indicating that the request succeeded but that there was
-    * no new information to return.
-    */
+    /**
+     * Status code (206) indicating that the server has fulfilled
+     * the partial GET request for the resource.
+     */
 
-   public static final int SC_NO_CONTENT = 204;
+    public static final int SC_PARTIAL_CONTENT = 206;
 
-   /**
-    * Status code (205) indicating that the agent <em>SHOULD</em> reset the
-    * document view which caused the request to be sent.
-    */
+    /**
+     * Status code (300) indicating that the requested resource
+     * corresponds to any one of a set of representations, each with
+     * its own specific location.
+     */
 
-   public static final int SC_RESET_CONTENT = 205;
+    public static final int SC_MULTIPLE_CHOICES = 300;
 
-   /**
-    * Status code (206) indicating that the server has fulfilled the partial GET
-    * request for the resource.
-    */
+    /**
+     * Status code (301) indicating that the resource has permanently
+     * moved to a new location, and that future references should use a
+     * new URI with their requests.
+     */
 
-   public static final int SC_PARTIAL_CONTENT = 206;
+    public static final int SC_MOVED_PERMANENTLY = 301;
 
-   /**
-    * Status code (300) indicating that the requested resource corresponds to
-    * any one of a set of representations, each with its own specific location.
-    */
+    /**
+     * Status code (302) indicating that the resource has temporarily
+     * moved to another location, but that future references should
+     * still use the original URI to access the resource.
+     *
+     * This definition is being retained for backwards compatibility.
+     * SC_FOUND is now the preferred definition.
+     */
 
-   public static final int SC_MULTIPLE_CHOICES = 300;
+    public static final int SC_MOVED_TEMPORARILY = 302;
 
-   /**
-    * Status code (301) indicating that the resource has permanently moved to a
-    * new location, and that future references should use a new URI with their
-    * requests.
+    /**
+    * Status code (302) indicating that the resource reside
+    * temporarily under a different URI. Since the redirection might
+    * be altered on occasion, the client should continue to use the
+    * Request-URI for future requests.(HTTP/1.1) To represent the
+    * status code (302), it is recommended to use this variable.
     */
 
-   public static final int SC_MOVED_PERMANENTLY = 301;
+    public static final int SC_FOUND = 302;
 
-   /**
-    * Status code (302) indicating that the resource has temporarily moved to
-    * another location, but that future references should still use the original
-    * URI to access the resource. This definition is being retained for
-    * backwards compatibility. SC_FOUND is now the preferred definition.
-    */
+    /**
+     * Status code (303) indicating that the response to the request
+     * can be found under a different URI.
+     */
 
-   public static final int SC_MOVED_TEMPORARILY = 302;
+    public static final int SC_SEE_OTHER = 303;
 
-   /**
-    * Status code (302) indicating that the resource reside temporarily under a
-    * different URI. Since the redirection might be altered on occasion, the
-    * client should continue to use the Request-URI for future
-    * requests.(HTTP/1.1) To represent the status code (302), it is recommended
-    * to use this variable.
-    */
+    /**
+     * Status code (304) indicating that a conditional GET operation
+     * found that the resource was available and not modified.
+     */
 
-   public static final int SC_FOUND = 302;
+    public static final int SC_NOT_MODIFIED = 304;
 
-   /**
-    * Status code (303) indicating that the response to the request can be found
-    * under a different URI.
-    */
+    /**
+     * Status code (305) indicating that the requested resource
+     * <em>MUST</em> be accessed through the proxy given by the
+     * <code><em>Location</em></code> field.
+     */
 
-   public static final int SC_SEE_OTHER = 303;
+    public static final int SC_USE_PROXY = 305;
 
-   /**
-    * Status code (304) indicating that a conditional GET operation found that
-    * the resource was available and not modified.
-    */
+     /**
+     * Status code (307) indicating that the requested resource 
+     * resides temporarily under a different URI. The temporary URI
+     * <em>SHOULD</em> be given by the <code><em>Location</em></code> 
+     * field in the response.
+     */
 
-   public static final int SC_NOT_MODIFIED = 304;
+     public static final int SC_TEMPORARY_REDIRECT = 307;
 
-   /**
-    * Status code (305) indicating that the requested resource <em>MUST</em>
-    * be accessed through the proxy given by the <code><em>Location</em></code>
-    * field.
-    */
+    /**
+     * Status code (400) indicating the request sent by the client was
+     * syntactically incorrect.
+     */
 
-   public static final int SC_USE_PROXY = 305;
+    public static final int SC_BAD_REQUEST = 400;
 
-   /**
-    * Status code (307) indicating that the requested resource resides
-    * temporarily under a different URI. The temporary URI <em>SHOULD</em> be
-    * given by the <code><em>Location</em></code> field in the response.
-    */
+    /**
+     * Status code (401) indicating that the request requires HTTP
+     * authentication.
+     */
 
-   public static final int SC_TEMPORARY_REDIRECT = 307;
+    public static final int SC_UNAUTHORIZED = 401;
 
-   /**
-    * Status code (400) indicating the request sent by the client was
-    * syntactically incorrect.
-    */
+    /**
+     * Status code (402) reserved for future use.
+     */
 
-   public static final int SC_BAD_REQUEST = 400;
+    public static final int SC_PAYMENT_REQUIRED = 402;
 
-   /**
-    * Status code (401) indicating that the request requires HTTP
-    * authentication.
-    */
+    /**
+     * Status code (403) indicating the server understood the request
+     * but refused to fulfill it.
+     */
 
-   public static final int SC_UNAUTHORIZED = 401;
+    public static final int SC_FORBIDDEN = 403;
 
-   /**
-    * Status code (402) reserved for future use.
-    */
+    /**
+     * Status code (404) indicating that the requested resource is not
+     * available.
+     */
 
-   public static final int SC_PAYMENT_REQUIRED = 402;
+    public static final int SC_NOT_FOUND = 404;
 
-   /**
-    * Status code (403) indicating the server understood the request but refused
-    * to fulfill it.
-    */
+    /**
+     * Status code (405) indicating that the method specified in the
+     * <code><em>Request-Line</em></code> is not allowed for the resource
+     * identified by the <code><em>Request-URI</em></code>.
+     */
 
-   public static final int SC_FORBIDDEN = 403;
+    public static final int SC_METHOD_NOT_ALLOWED = 405;
 
-   /**
-    * Status code (404) indicating that the requested resource is not available.
-    */
+    /**
+     * Status code (406) indicating that the resource identified by the
+     * request is only capable of generating response entities which have
+     * content characteristics not acceptable according to the accept
+     * headers sent in the request.
+     */
 
-   public static final int SC_NOT_FOUND = 404;
+    public static final int SC_NOT_ACCEPTABLE = 406;
 
-   /**
-    * Status code (405) indicating that the method specified in the
-    * <code><em>Request-Line</em></code> is not allowed for the resource
-    * identified by the <code><em>Request-URI</em></code>.
-    */
+    /**
+     * Status code (407) indicating that the client <em>MUST</em> first
+     * authenticate itself with the proxy.
+     */
 
-   public static final int SC_METHOD_NOT_ALLOWED = 405;
+    public static final int SC_PROXY_AUTHENTICATION_REQUIRED = 407;
 
-   /**
-    * Status code (406) indicating that the resource identified by the request
-    * is only capable of generating response entities which have content
-    * characteristics not acceptable according to the accept headers sent in the
-    * request.
-    */
+    /**
+     * Status code (408) indicating that the client did not produce a
+     * request within the time that the server was prepared to wait.
+     */
 
-   public static final int SC_NOT_ACCEPTABLE = 406;
+    public static final int SC_REQUEST_TIMEOUT = 408;
 
-   /**
-    * Status code (407) indicating that the client <em>MUST</em> first
-    * authenticate itself with the proxy.
-    */
+    /**
+     * Status code (409) indicating that the request could not be
+     * completed due to a conflict with the current state of the
+     * resource.
+     */
 
-   public static final int SC_PROXY_AUTHENTICATION_REQUIRED = 407;
+    public static final int SC_CONFLICT = 409;
 
-   /**
-    * Status code (408) indicating that the client did not produce a request
-    * within the time that the server was prepared to wait.
-    */
+    /**
+     * Status code (410) indicating that the resource is no longer
+     * available at the server and no forwarding address is known.
+     * This condition <em>SHOULD</em> be considered permanent.
+     */
 
-   public static final int SC_REQUEST_TIMEOUT = 408;
+    public static final int SC_GONE = 410;
 
-   /**
-    * Status code (409) indicating that the request could not be completed due
-    * to a conflict with the current state of the resource.
-    */
+    /**
+     * Status code (411) indicating that the request cannot be handled
+     * without a defined <code><em>Content-Length</em></code>.
+     */
 
-   public static final int SC_CONFLICT = 409;
+    public static final int SC_LENGTH_REQUIRED = 411;
 
-   /**
-    * Status code (410) indicating that the resource is no longer available at
-    * the server and no forwarding address is known. This condition
-    * <em>SHOULD</em> be considered permanent.
-    */
+    /**
+     * Status code (412) indicating that the precondition given in one
+     * or more of the request-header fields evaluated to false when it
+     * was tested on the server.
+     */
 
-   public static final int SC_GONE = 410;
+    public static final int SC_PRECONDITION_FAILED = 412;
 
-   /**
-    * Status code (411) indicating that the request cannot be handled without a
-    * defined <code><em>Content-Length</em></code>.
-    */
+    /**
+     * Status code (413) indicating that the server is refusing to process
+     * the request because the request entity is larger than the server is
+     * willing or able to process.
+     */
 
-   public static final int SC_LENGTH_REQUIRED = 411;
+    public static final int SC_REQUEST_ENTITY_TOO_LARGE = 413;
 
-   /**
-    * Status code (412) indicating that the precondition given in one or more of
-    * the request-header fields evaluated to false when it was tested on the
-    * server.
-    */
+    /**
+     * Status code (414) indicating that the server is refusing to service
+     * the request because the <code><em>Request-URI</em></code> is longer
+     * than the server is willing to interpret.
+     */
 
-   public static final int SC_PRECONDITION_FAILED = 412;
+    public static final int SC_REQUEST_URI_TOO_LONG = 414;
 
-   /**
-    * Status code (413) indicating that the server is refusing to process the
-    * request because the request entity is larger than the server is willing or
-    * able to process.
-    */
+    /**
+     * Status code (415) indicating that the server is refusing to service
+     * the request because the entity of the request is in a format not
+     * supported by the requested resource for the requested method.
+     */
 
-   public static final int SC_REQUEST_ENTITY_TOO_LARGE = 413;
+    public static final int SC_UNSUPPORTED_MEDIA_TYPE = 415;
 
-   /**
-    * Status code (414) indicating that the server is refusing to service the
-    * request because the <code><em>Request-URI</em></code> is longer than
-    * the server is willing to interpret.
-    */
+    /**
+     * Status code (416) indicating that the server cannot serve the
+     * requested byte range.
+     */
 
-   public static final int SC_REQUEST_URI_TOO_LONG = 414;
+    public static final int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
 
-   /**
-    * Status code (415) indicating that the server is refusing to service the
-    * request because the entity of the request is in a format not supported by
-    * the requested resource for the requested method.
-    */
+    /**
+     * Status code (417) indicating that the server could not meet the
+     * expectation given in the Expect request header.
+     */
 
-   public static final int SC_UNSUPPORTED_MEDIA_TYPE = 415;
+    public static final int SC_EXPECTATION_FAILED = 417;
 
-   /**
-    * Status code (416) indicating that the server cannot serve the requested
-    * byte range.
-    */
+    /**
+     * Status code (500) indicating an error inside the HTTP server
+     * which prevented it from fulfilling the request.
+     */
 
-   public static final int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
+    public static final int SC_INTERNAL_SERVER_ERROR = 500;
 
-   /**
-    * Status code (417) indicating that the server could not meet the
-    * expectation given in the Expect request header.
-    */
+    /**
+     * Status code (501) indicating the HTTP server does not support
+     * the functionality needed to fulfill the request.
+     */
 
-   public static final int SC_EXPECTATION_FAILED = 417;
+    public static final int SC_NOT_IMPLEMENTED = 501;
 
-   /**
-    * Status code (500) indicating an error inside the HTTP server which
-    * prevented it from fulfilling the request.
-    */
+    /**
+     * Status code (502) indicating that the HTTP server received an
+     * invalid response from a server it consulted when acting as a
+     * proxy or gateway.
+     */
 
-   public static final int SC_INTERNAL_SERVER_ERROR = 500;
+    public static final int SC_BAD_GATEWAY = 502;
 
-   /**
-    * Status code (501) indicating the HTTP server does not support the
-    * functionality needed to fulfill the request.
-    */
+    /**
+     * Status code (503) indicating that the HTTP server is
+     * temporarily overloaded, and unable to handle the request.
+     */
 
-   public static final int SC_NOT_IMPLEMENTED = 501;
+    public static final int SC_SERVICE_UNAVAILABLE = 503;
 
-   /**
-    * Status code (502) indicating that the HTTP server received an invalid
-    * response from a server it consulted when acting as a proxy or gateway.
-    */
+    /**
+     * Status code (504) indicating that the server did not receive
+     * a timely response from the upstream server while acting as
+     * a gateway or proxy.
+     */
 
-   public static final int SC_BAD_GATEWAY = 502;
+    public static final int SC_GATEWAY_TIMEOUT = 504;
 
-   /**
-    * Status code (503) indicating that the HTTP server is temporarily
-    * overloaded, and unable to handle the request.
-    */
+    /**
+     * Status code (505) indicating that the server does not support
+     * or refuses to support the HTTP protocol version that was used
+     * in the request message.
+     */
 
-   public static final int SC_SERVICE_UNAVAILABLE = 503;
-
-   /**
-    * Status code (504) indicating that the server did not receive a timely
-    * response from the upstream server while acting as a gateway or proxy.
-    */
-
-   public static final int SC_GATEWAY_TIMEOUT = 504;
-
-   /**
-    * Status code (505) indicating that the server does not support or refuses
-    * to support the HTTP protocol version that was used in the request message.
-    */
-
-   public static final int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
+    public static final int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
 }

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServletResponseWrapper.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServletResponseWrapper.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpServletResponseWrapper.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,24 +1,19 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet.http;
 
 import java.io.IOException;
@@ -26,202 +21,176 @@
 import javax.servlet.ServletResponseWrapper;
 
 /**
- * Provides a convenient implementation of the HttpServletResponse interface
- * that can be subclassed by developers wishing to adapt the response from a
- * Servlet. This class implements the Wrapper or Decorator pattern. Methods
- * default to calling through to the wrapped response object.
  * 
- * @author Various
- * @since v 2.3
- * @see javax.servlet.http.HttpServletResponse
+ * Provides a convenient implementation of the HttpServletResponse interface that
+ * can be subclassed by developers wishing to adapt the response from a Servlet.
+ * This class implements the Wrapper or Decorator pattern. Methods default to
+ * calling through to the wrapped response object.
+ * 
+ * @author 	Various
+ * @version 	$Version$
+  * @since	v 2.3
+ *
+ * @see 	javax.servlet.http.HttpServletResponse
+ *
  */
 
-public class HttpServletResponseWrapper extends ServletResponseWrapper implements HttpServletResponse
-{
+public class HttpServletResponseWrapper extends ServletResponseWrapper implements HttpServletResponse {
 
-   /**
+
+    /** 
     * Constructs a response adaptor wrapping the given response.
-    * 
-    * @throws java.lang.IllegalArgumentException
-    *            if the response is null
+    * @throws java.lang.IllegalArgumentException if the response is null
     */
-   public HttpServletResponseWrapper(HttpServletResponse response)
-   {
-      super(response);
-   }
+    public HttpServletResponseWrapper(HttpServletResponse response) {
+	    super(response);
+    }
+    
+    private HttpServletResponse _getHttpServletResponse() {
+	return (HttpServletResponse) super.getResponse();
+    }
+    
+    /**
+     * The default behavior of this method is to call addCookie(Cookie cookie)
+     * on the wrapped response object.
+     */
+    public void addCookie(Cookie cookie) {
+	this._getHttpServletResponse().addCookie(cookie);
+    }
 
-   private HttpServletResponse _getHttpServletResponse()
-   {
-      return (HttpServletResponse) super.getResponse();
-   }
+    /**
+     * The default behavior of this method is to call containsHeader(String name)
+     * on the wrapped response object.
+     */
 
-   /**
-    * The default behavior of this method is to call addCookie(Cookie cookie) on
-    * the wrapped response object.
-    */
-   public void addCookie(Cookie cookie)
-   {
-      this._getHttpServletResponse().addCookie(cookie);
-   }
+ 
+    public boolean containsHeader(String name) {
+	return this._getHttpServletResponse().containsHeader(name);
+    }
+    
+    /**
+     * The default behavior of this method is to call encodeURL(String url)
+     * on the wrapped response object.
+     */
+    public String encodeURL(String url) {
+	return this._getHttpServletResponse().encodeURL(url);
+    }
 
-   /**
-    * The default behavior of this method is to call containsHeader(String name)
-    * on the wrapped response object.
-    */
+    /**
+     * The default behavior of this method is to return encodeRedirectURL(String url)
+     * on the wrapped response object.
+     */
+    public String encodeRedirectURL(String url) {
+	return this._getHttpServletResponse().encodeRedirectURL(url);
+    }
 
-   public boolean containsHeader(String name)
-   {
-      return this._getHttpServletResponse().containsHeader(name);
-   }
+    /**
+     * The default behavior of this method is to call encodeUrl(String url)
+     * on the wrapped response object.
+     */
+    public String encodeUrl(String url) {
+	return this._getHttpServletResponse().encodeUrl(url);
+    }
+    
+    /**
+     * The default behavior of this method is to return encodeRedirectUrl(String url)
+     * on the wrapped response object.
+     */
+    public String encodeRedirectUrl(String url) {
+	return this._getHttpServletResponse().encodeRedirectUrl(url);
+    }
+    
+    /**
+     * The default behavior of this method is to call sendError(int sc, String msg)
+     * on the wrapped response object.
+     */
+    public void sendError(int sc, String msg) throws IOException {
+	this._getHttpServletResponse().sendError(sc, msg);
+    }
 
-   /**
-    * The default behavior of this method is to call encodeURL(String url) on
-    * the wrapped response object.
-    */
-   public String encodeURL(String url)
-   {
-      return this._getHttpServletResponse().encodeURL(url);
-   }
+    /**
+     * The default behavior of this method is to call sendError(int sc)
+     * on the wrapped response object.
+     */
 
-   /**
-    * The default behavior of this method is to return encodeRedirectURL(String
-    * url) on the wrapped response object.
-    */
-   public String encodeRedirectURL(String url)
-   {
-      return this._getHttpServletResponse().encodeRedirectURL(url);
-   }
 
-   /**
-    * The default behavior of this method is to call encodeUrl(String url) on
-    * the wrapped response object. *
-    * 
-    * @deprecated As of version 2.1, use encodeURL(String url) instead
-    */
-   @Deprecated
-   public String encodeUrl(String url)
-   {
-      return this._getHttpServletResponse().encodeUrl(url);
-   }
+    public void sendError(int sc) throws IOException {
+	this._getHttpServletResponse().sendError(sc);
+    }
 
-   /**
-    * The default behavior of this method is to return encodeRedirectUrl(String
-    * url) on the wrapped response object.
-    * 
-    * @deprecated As of version 2.1, use encodeURL(String url) instead
-    */
-   @Deprecated
-   public String encodeRedirectUrl(String url)
-   {
-      return this._getHttpServletResponse().encodeRedirectUrl(url);
-   }
+    /**
+     * The default behavior of this method is to return sendRedirect(String location)
+     * on the wrapped response object.
+     */
+    public void sendRedirect(String location) throws IOException {
+	this._getHttpServletResponse().sendRedirect(location);
+    }
+    
+    /**
+     * The default behavior of this method is to call setDateHeader(String name, long date)
+     * on the wrapped response object.
+     */
+    public void setDateHeader(String name, long date) {
+	this._getHttpServletResponse().setDateHeader(name, date);
+    }
+    
+    /**
+     * The default behavior of this method is to call addDateHeader(String name, long date)
+     * on the wrapped response object.
+     */
+   public void addDateHeader(String name, long date) {
+	this._getHttpServletResponse().addDateHeader(name, date);
+    }
+    
+    /**
+     * The default behavior of this method is to return setHeader(String name, String value)
+     * on the wrapped response object.
+     */
+    public void setHeader(String name, String value) {
+	this._getHttpServletResponse().setHeader(name, value);
+    }
+    
+    /**
+     * The default behavior of this method is to return addHeader(String name, String value)
+     * on the wrapped response object.
+     */
+     public void addHeader(String name, String value) {
+	this._getHttpServletResponse().addHeader(name, value);
+    }
+    
+    /**
+     * The default behavior of this method is to call setIntHeader(String name, int value)
+     * on the wrapped response object.
+     */
+    public void setIntHeader(String name, int value) {
+	this._getHttpServletResponse().setIntHeader(name, value);
+    }
+    
+    /**
+     * The default behavior of this method is to call addIntHeader(String name, int value)
+     * on the wrapped response object.
+     */
+    public void addIntHeader(String name, int value) {
+	this._getHttpServletResponse().addIntHeader(name, value);
+    }
 
-   /**
-    * The default behavior of this method is to call sendError(int sc, String
-    * msg) on the wrapped response object.
-    */
-   public void sendError(int sc, String msg) throws IOException
-   {
-      this._getHttpServletResponse().sendError(sc, msg);
-   }
+    /**
+     * The default behavior of this method is to call setStatus(int sc)
+     * on the wrapped response object.
+     */
 
-   /**
-    * The default behavior of this method is to call sendError(int sc) on the
-    * wrapped response object.
-    */
 
-   public void sendError(int sc) throws IOException
-   {
-      this._getHttpServletResponse().sendError(sc);
-   }
+    public void setStatus(int sc) {
+	this._getHttpServletResponse().setStatus(sc);
+    }
+    
+    /**
+     * The default behavior of this method is to call setStatus(int sc, String sm)
+     * on the wrapped response object.
+     */
+     public void setStatus(int sc, String sm) {
+	this._getHttpServletResponse().setStatus(sc, sm);
+    }
 
-   /**
-    * The default behavior of this method is to return sendRedirect(String
-    * location) on the wrapped response object.
-    */
-   public void sendRedirect(String location) throws IOException
-   {
-      this._getHttpServletResponse().sendRedirect(location);
-   }
-
-   /**
-    * The default behavior of this method is to call setDateHeader(String name,
-    * long date) on the wrapped response object.
-    */
-   public void setDateHeader(String name, long date)
-   {
-      this._getHttpServletResponse().setDateHeader(name, date);
-   }
-
-   /**
-    * The default behavior of this method is to call addDateHeader(String name,
-    * long date) on the wrapped response object.
-    */
-   public void addDateHeader(String name, long date)
-   {
-      this._getHttpServletResponse().addDateHeader(name, date);
-   }
-
-   /**
-    * The default behavior of this method is to return setHeader(String name,
-    * String value) on the wrapped response object.
-    */
-   public void setHeader(String name, String value)
-   {
-      this._getHttpServletResponse().setHeader(name, value);
-   }
-
-   /**
-    * The default behavior of this method is to return addHeader(String name,
-    * String value) on the wrapped response object.
-    */
-   public void addHeader(String name, String value)
-   {
-      this._getHttpServletResponse().addHeader(name, value);
-   }
-
-   /**
-    * The default behavior of this method is to call setIntHeader(String name,
-    * int value) on the wrapped response object.
-    */
-   public void setIntHeader(String name, int value)
-   {
-      this._getHttpServletResponse().setIntHeader(name, value);
-   }
-
-   /**
-    * The default behavior of this method is to call addIntHeader(String name,
-    * int value) on the wrapped response object.
-    */
-   public void addIntHeader(String name, int value)
-   {
-      this._getHttpServletResponse().addIntHeader(name, value);
-   }
-
-   /**
-    * The default behavior of this method is to call setStatus(int sc) on the
-    * wrapped response object.
-    */
-
-   public void setStatus(int sc)
-   {
-      this._getHttpServletResponse().setStatus(sc);
-   }
-
-   /**
-    * The default behavior of this method is to call setStatus(int sc, String
-    * sm) on the wrapped response object.
-    * 
-    * @deprecated As of version 2.1, due to ambiguous meaning of the message
-    *             parameter. To set a status code use
-    *             <code>setStatus(int)</code>, to send an error with a
-    *             description use <code>sendError(int, String)</code>. Sets
-    *             the status code and message for this response.
-    */
-   @Deprecated
-   public void setStatus(int sc, String sm)
-   {
-      this._getHttpServletResponse().setStatus(sc, sm);
-   }
-
+   
 }

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSession.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSession.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSession.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,299 +1,424 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet.http;
 
 import java.util.Enumeration;
 import javax.servlet.ServletContext;
 
 /**
- * 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>
- * The servlet container uses this interface to create a session between an HTTP
- * client and an HTTP 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 servlets to
+ *
+ * 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>The servlet container uses this interface to create a session
+ * between an HTTP client and an HTTP 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 servlets 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
+ * <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>
- * When an application stores an object in or removes an object from a session,
- * the session checks whether the object implements
- * {@link HttpSessionBindingListener}. If it does, the servlet notifies the
- * object that it has been bound to or unbound from the session. Notifications
- * are sent after the binding methods complete. For session that are invalidated
- * or expire, notifications are sent after the session has been invalidated or
- * expired.
- * <p>
- * When container migrates a session between VMs in a distributed container
- * setting, all session attributes implementing the
- * {@link HttpSessionActivationListener} interface are notified.
- * <p>
- * A servlet should be able to handle cases in which the client does not choose
- * to join a session, such as when cookies are intentionally turned off. Until
- * the client joins the session, <code>isNew</code> returns <code>true</code>.
- * If the client chooses not to join the session, <code>getSession</code> will
- * return a different session on each request, and <code>isNew</code> will
- * always return <code>true</code>.
- * <p>
- * Session information is scoped only to the current web application (<code>ServletContext</code>),
- * so information stored in one context will not be directly visible in another.
+ *
+ * <p>When an application stores an object in or removes an object from a
+ * session, the session checks whether the object implements
+ * {@link HttpSessionBindingListener}. If it does, 
+ * the servlet notifies the object that it has been bound to or unbound 
+ * from the session. Notifications are sent after the binding methods complete. 
+ * For session that are invalidated or expire, notifications are sent after
+ * the session has been invalidated or expired.
+ *
+ * <p> When container migrates a session between VMs in a distributed container
+ * setting, all session attributes implementing the {@link HttpSessionActivationListener}
+ * interface are notified.
  * 
- * @author Various
- * @see HttpSessionBindingListener
- * @see HttpSessionContext
+ * <p>A servlet should be able to handle cases in which
+ * the client does not choose to join a session, such as when cookies are
+ * intentionally turned off. Until the client joins the session,
+ * <code>isNew</code> returns <code>true</code>.  If the client chooses 
+ * not to join
+ * the session, <code>getSession</code> will return a different session
+ * on each request, and <code>isNew</code> will always return
+ * <code>true</code>.
+ *
+ * <p>Session information is scoped only to the current web application
+ * (<code>ServletContext</code>), so information stored in one context
+ * will not be directly visible in another.
+ *
+ * @author	Various
+ * @version	$Version$
+ *
+ *
+ * @see 	HttpSessionBindingListener
+ * @see 	HttpSessionContext
+ *
  */
 
-public interface HttpSession
-{
+public interface HttpSession {
 
-   /**
-    * 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
-    */
 
-   public long getCreationTime();
 
-   /**
-    * Returns a string containing the unique identifier assigned to this
-    * session. The identifier is assigned by the servlet container and is
-    * implementation dependent.
-    * 
-    * @return a string specifying the identifier assigned to this session
-    */
 
-   public String getId();
+    /**
+     *
+     * 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
+     *
+     */
 
-   /**
-    * Returns the last time the client sent a request associated with this
-    * session, as the number of milliseconds since midnight January 1, 1970 GMT,
-    * and marked by the time the container received the request.
-    * <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
-    * @exception IllegalStateException
-    *               if this method is called on an invalidated session
-    */
+    public long getCreationTime();
+    
+    
+    
+    
+    /**
+     *
+     * Returns a string containing the unique identifier assigned 
+     * to this session. The identifier is assigned 
+     * by the servlet container and is implementation dependent.
+     * 
+     * @return				a string specifying the identifier
+     *					assigned to this session
+     *
+     * @exception IllegalStateException	if this method is called on an
+     *					invalidated session
+     *
+     */
 
-   public long getLastAccessedTime();
+    public 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, and marked by the time the container received the request. 
+     *
+     * <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
+     *
+     * @exception IllegalStateException	if this method is called on an
+     *					invalidated session
+     *
+     */
+
+    public long getLastAccessedTime();
+    
+    
+    /**
     * Returns the ServletContext to which this session belongs.
-    * 
+    *    
     * @return The ServletContext object for the web application
     * @since 2.3
     */
 
-   public ServletContext getServletContext();
+    public ServletContext getServletContext();
 
-   /**
-    * Specifies the time, in seconds, between client requests before the servlet
-    * container will invalidate this session. A negative time indicates the
-    * session should never timeout.
-    * 
-    * @param interval
-    *           An integer specifying the number of seconds
-    */
 
-   public void setMaxInactiveInterval(int interval);
+    /**
+     *
+     * Specifies the time, in seconds, between client requests before the 
+     * servlet container will invalidate this session.  A negative time
+     * indicates the session should never timeout.
+     *
+     * @param interval		An integer specifying the number
+     * 				of seconds 
+     *
+     */
+    
+    public void setMaxInactiveInterval(int interval);
 
+
+
+
    /**
-    * Returns the maximum time interval, in seconds, that the servlet container
-    * will keep this session open between client accesses. After this interval,
-    * the servlet container will invalidate the session. The maximum time
-    * interval can be set with the <code>setMaxInactiveInterval</code> method.
+    * Returns the maximum time interval, in seconds, that 
+    * the servlet container will keep this session open between 
+    * client accesses. After this interval, the servlet 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
+    *  
+    *
+    * @return		an integer specifying the number of
+    *			seconds this session remains open
+    *			between client requests
+    *
+    * @see		#setMaxInactiveInterval
+    *
+    *
     */
 
-   public int getMaxInactiveInterval();
+    public int getMaxInactiveInterval();
+    
+    
 
+
    /**
-    * @deprecated As of Version 2.1, this method is deprecated and has no
-    *             replacement. It will be removed in a future version of the
-    *             Java Servlet API.
+    *
+    * @deprecated 	As of Version 2.1, this method is
+    *			deprecated and has no replacement.
+    *			It will be removed in a future
+    *			version of the Java Servlet API.
+    *
     */
 
-   public HttpSessionContext getSessionContext();
+    public HttpSessionContext getSessionContext();
+    
+    
+    
+    
+    /**
+     *
+     * 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
+     *
+     */
+  
+    public Object getAttribute(String name);
+    
+    
+    
+    
+    /**
+     *
+     * @deprecated 	As of Version 2.2, this method is
+     * 			replaced by {@link #getAttribute}.
+     *
+     * @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
+     *
+     */
+  
+    public Object getValue(String name);
+    
+    
+    
 
-   /**
-    * 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
-    */
+    /**
+     *
+     * 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
+     *
+     */
+    
+    public Enumeration getAttributeNames();
+    
+    
+    
 
-   public Object getAttribute(String name);
+    /**
+     *
+     * @deprecated 	As of Version 2.2, this method is
+     * 			replaced by {@link #getAttributeNames}
+     *
+     * @return				an array 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
+     *
+     */
+    
+    public String[] getValueNames();
+    
+    
+    
 
-   /**
-    * @deprecated As of Version 2.2, this method is replaced by
-    *             {@link #getAttribute}.
-    * @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
-    */
+    /**
+     * 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.
+     *
+     * <p>After this method executes, and if the new object
+     * implements <code>HttpSessionBindingListener</code>,
+     * the container calls 
+     * <code>HttpSessionBindingListener.valueBound</code>. The container then   
+     * notifies any <code>HttpSessionAttributeListener</code>s in the web 
+     * application.
+     
+     * <p>If an object was already bound to this session of this name
+     * that implements <code>HttpSessionBindingListener</code>, its 
+     * <code>HttpSessionBindingListener.valueUnbound</code> method is called.
+     *
+     * <p>If the value passed in is null, this has the same effect as calling 
+     * <code>removeAttribute()<code>.
+     *
+     *
+     * @param name			the name to which the object is bound;
+     *					cannot be null
+     *
+     * @param value			the object to be bound
+     *
+     * @exception IllegalStateException	if this method is called on an
+     *					invalidated session
+     *
+     */
+ 
+    public void setAttribute(String name, Object value);
+    
 
-   public Object getValue(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
-    */
 
-   public Enumeration getAttributeNames();
+    
+    /**
+     *
+     * @deprecated 	As of Version 2.2, this method is
+     * 			replaced by {@link #setAttribute}
+     *
+     * @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
+     *
+     */
+ 
+    public void putValue(String name, Object value);
 
-   /**
-    * @deprecated As of Version 2.2, this method is replaced by
-    *             {@link #getAttributeNames}
-    * @return an array 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
-    */
 
-   public String[] getValueNames();
 
-   /**
-    * 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.
-    * <p>
-    * After this method executes, and if the new object implements
-    * <code>HttpSessionBindingListener</code>, the container calls
-    * <code>HttpSessionBindingListener.valueBound</code>. The container then
-    * notifies any <code>HttpSessionAttributeListener</code>s in the web
-    * application.
-    * <p>
-    * If an object was already bound to this session of this name that
-    * implements <code>HttpSessionBindingListener</code>, its
-    * <code>HttpSessionBindingListener.valueUnbound</code> method is called.
-    * <p>
-    * If the value passed in is null, this has the same effect as calling
-    * <code>removeAttribute()<code>.
-    *
-    *
-    * @param name			the name to which the object is bound;
-    *					cannot be null
-    *
-    * @param value			the object to be bound
-    *
-    * @exception IllegalStateException	if this method is called on an
-    *					invalidated session
-    */
 
-   public void setAttribute(String name, Object value);
 
-   /**
-    * @deprecated As of Version 2.2, this method is replaced by
-    *             {@link #setAttribute}
-    * @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
-    */
+    /**
+     *
+     * 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.
+     *
+     * <p>After this method executes, and if the object
+     * implements <code>HttpSessionBindingListener</code>,
+     * the container calls 
+     * <code>HttpSessionBindingListener.valueUnbound</code>. The container
+     * then notifies any <code>HttpSessionAttributeListener</code>s in the web 
+     * application.
+     * 
+     * 
+     *
+     * @param name				the name of the object to
+     *						remove from this session
+     *
+     * @exception IllegalStateException	if this method is called on an
+     *					invalidated session
+     */
 
-   public void putValue(String name, Object value);
+    public void removeAttribute(String name);
 
-   /**
-    * 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.
-    * <p>
-    * After this method executes, and if the object implements
-    * <code>HttpSessionBindingListener</code>, the container calls
-    * <code>HttpSessionBindingListener.valueUnbound</code>. The container
-    * then notifies any <code>HttpSessionAttributeListener</code>s in the web
-    * application.
-    * 
-    * @param name
-    *           the name of the object to remove from this session
-    * @exception IllegalStateException
-    *               if this method is called on an invalidated session
-    */
 
-   public void removeAttribute(String name);
 
-   /**
-    * @deprecated As of Version 2.2, this method is replaced by
-    *             {@link #removeAttribute}
-    * @param name
-    *           the name of the object to remove from this session
-    * @exception IllegalStateException
-    *               if this method is called on an invalidated session
-    */
 
-   public void removeValue(String name);
 
-   /**
-    * Invalidates this session then unbinds any objects bound to it.
-    * 
-    * @exception IllegalStateException
-    *               if this method is called on an already invalidated session
-    */
+    /**
+     *
+     * @deprecated 	As of Version 2.2, this method is
+     * 			replaced by {@link #removeAttribute}
+     *
+     * @param name				the name of the object to
+     *						remove from this session
+     *
+     * @exception IllegalStateException	if this method is called on an
+     *					invalidated session
+     */
 
-   public void invalidate();
+    public void removeValue(String name);
 
-   /**
-    * 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
-    */
 
-   public boolean isNew();
 
+
+    /**
+     *
+     * Invalidates this session then unbinds any objects bound
+     * to it. 
+     *
+     * @exception IllegalStateException	if this method is called on an
+     *					already invalidated session
+     *
+     */
+
+    public 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
+     *
+     */
+
+    public boolean isNew();
+
+
+
 }
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionActivationListener.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionActivationListener.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionActivationListener.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,44 +1,37 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet.http;
 
 import java.util.EventListener;
 
-/**
- * Objects that are bound to a session may listen to container * events
- * notifying them that sessions will be passivated and that * session will be
- * activated. A container that migrates session between VMs * or persists
- * sessions is required to notify all attributes bound to sessions *
- * implementing HttpSessionActivationListener. *
- * 
- * @since 2.3
- */
+    /** Objects that are bound to a session may listen to container
+    ** events notifying them that sessions will be passivated and that
+    ** session will be activated. A container that migrates session between VMs
+    ** or persists sessions is required to notify all attributes bound to sessions
+    ** implementing HttpSessionActivationListener.
+    **
+    * @since 2.3
+    */
+    
+public interface HttpSessionActivationListener extends EventListener { 
 
-public interface HttpSessionActivationListener extends EventListener
-{
+    /** Notification that the session is about to be passivated.*/
+    public void sessionWillPassivate(HttpSessionEvent se); 
+    /** Notification that the session has just been activated.*/
+    public void sessionDidActivate(HttpSessionEvent se);
+} 
 
-   /** Notification that the session is about to be passivated. */
-   public void sessionWillPassivate(HttpSessionEvent se);
-
-   /** Notification that the session has just been activated. */
-   public void sessionDidActivate(HttpSessionEvent se);
-}

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionAttributeListener.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionAttributeListener.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionAttributeListener.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,53 +1,36 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet.http;
 
 import java.util.EventListener;
 
-/**
- * This listener interface can be implemented in order to get notifications of
- * changes to the attribute lists of sessions within this web application.
- * 
- * @since v 2.3
- */
+	/** This listener interface can be implemented in order to
+	* get notifications of changes to the attribute lists of sessions within
+	* this web application.
+	* @since	v 2.3
+*/
 
-public interface HttpSessionAttributeListener extends EventListener
-{
-   /**
-    * Notification that an attribute has been added to a session. Called after
-    * the attribute is added.
-    */
-   public void attributeAdded(HttpSessionBindingEvent se);
+public interface HttpSessionAttributeListener extends EventListener {
+	/** Notification that an attribute has been added to a session. Called after the attribute is added.*/
+    public void attributeAdded ( HttpSessionBindingEvent se );
+	/** Notification that an attribute has been removed from a session. Called after the attribute is removed. */
+    public void attributeRemoved ( HttpSessionBindingEvent se );
+	/** Notification that an attribute has been replaced in a session. Called after the attribute is replaced. */
+    public void attributeReplaced ( HttpSessionBindingEvent se );
 
-   /**
-    * Notification that an attribute has been removed from a session. Called
-    * after the attribute is removed.
-    */
-   public void attributeRemoved(HttpSessionBindingEvent se);
-
-   /**
-    * Notification that an attribute has been replaced in a session. Called
-    * after the attribute is replaced.
-    */
-   public void attributeReplaced(HttpSessionBindingEvent se);
-
 }
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionBindingEvent.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionBindingEvent.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionBindingEvent.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,125 +1,152 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet.http;
 
+
+
 /**
+ *
  * Events of this type are either sent to an object that implements
- * {@link HttpSessionBindingListener} when it is bound or unbound from a
- * session, or to a {@link HttpSessionAttributeListener} that has been
- * configured in the deployment descriptor when any attribute is bound, unbound
- * or replaced in a session.
- * <p>
- * The session binds the object by a call to
- * <code>HttpSession.setAttribute</code> and unbinds the object by a call to
- * <code>HttpSession.removeAttribute</code>.
+ * {@link HttpSessionBindingListener} when it is bound or 
+ * unbound from a session, or to a {@link HttpSessionAttributeListener} 
+ * that has been configured in the deployment descriptor when any attribute is
+ * bound, unbound or replaced in a session.
+ *
+ * <p>The session binds the object by a call to
+ * <code>HttpSession.setAttribute</code> and unbinds the object
+ * by a call to <code>HttpSession.removeAttribute</code>.
+ *
+ *
+ *
+ * @author		Various
+ * @version		$Version$
  * 
- * @author Various
- * @see HttpSession
- * @see HttpSessionBindingListener
- * @see HttpSessionAttributeListener
+ * @see 		HttpSession
+ * @see 		HttpSessionBindingListener
+ * @see			HttpSessionAttributeListener
  */
 
-public class HttpSessionBindingEvent extends HttpSessionEvent
-{
+public class HttpSessionBindingEvent extends HttpSessionEvent {
 
-   /* The name to which the object is being bound or unbound */
 
-   private String name;
 
-   /* The object is being bound or unbound */
 
-   private Object value;
+    /* The name to which the object is being bound or unbound */
 
-   /**
-    * Constructs an event that notifies an object that it has been bound to or
-    * unbound from a session. To receive the event, the object must implement
-    * {@link HttpSessionBindingListener}.
-    * 
-    * @param session
-    *           the session to which the object is bound or unbound
-    * @param name
-    *           the name with which the object is bound or unbound
-    * @see #getName
-    * @see #getSession
-    */
+    private String name;
+    
+    /* The object is being bound or unbound */
 
-   public HttpSessionBindingEvent(HttpSession session, String name)
-   {
-      super(session);
-      this.name = name;
-   }
+    private Object value;
+    
+  
 
-   /**
-    * Constructs an event that notifies an object that it has been bound to or
-    * unbound from a session. To receive the event, the object must implement
-    * {@link HttpSessionBindingListener}.
-    * 
-    * @param session
-    *           the session to which the object is bound or unbound
-    * @param name
-    *           the name with which the object is bound or unbound
-    * @see #getName
-    * @see #getSession
-    */
+    /**
+     *
+     * Constructs an event that notifies an object that it
+     * has been bound to or unbound from a session. 
+     * To receive the event, the object must implement
+     * {@link HttpSessionBindingListener}.
+     *
+     *
+     *
+     * @param session 	the session to which the object is bound or unbound
+     *
+     * @param name 	the name with which the object is bound or unbound
+     *
+     * @see			#getName
+     * @see			#getSession
+     *
+     */
 
-   public HttpSessionBindingEvent(HttpSession session, String name, Object value)
-   {
-      super(session);
-      this.name = name;
-      this.value = value;
-   }
+    public HttpSessionBindingEvent(HttpSession session, String name) {
+	super(session);
+	this.name = name;
+    }
+    
+    /**
+     *
+     * Constructs an event that notifies an object that it
+     * has been bound to or unbound from a session. 
+     * To receive the event, the object must implement
+     * {@link HttpSessionBindingListener}.
+     *
+     *
+     *
+     * @param session 	the session to which the object is bound or unbound
+     *
+     * @param name 	the name with which the object is bound or unbound
+     *
+     * @see			#getName
+     * @see			#getSession
+     *
+     */
+    
+    public HttpSessionBindingEvent(HttpSession session, String name, Object value) {
+	super(session);
+	this.name = name;
+	this.value = value;
+    }
+    
+    
+   	/** Return the session that changed. */
+    public HttpSession getSession () { 
+	return super.getSession();
+    }
+ 
+   
+  
+    
+    /**
+     *
+     * Returns the name with which the attribute is bound to or
+     * unbound from the session.
+     *
+     *
+     * @return		a string specifying the name with which
+     *			the object is bound to or unbound from
+     *			the session
+     *
+     *
+     */
 
-   /** Return the session that changed. */
-   public HttpSession getSession()
-   {
-      return super.getSession();
-   }
+    public String getName() {
+	return name;
+    }
+    
+    /**
+	* Returns the value of the attribute that has been added, removed or replaced.
+	* If the attribute was added (or bound), this is the value of the attribute. If the attribute was
+	* removed (or unbound), this is the value of the removed attribute. If the attribute was replaced, this
+	* is the old value of the attribute.
+	*
+        * @since 2.3
+	*/
+	
+	public Object getValue() {
+	    return this.value;   
+	}
+    
+}
 
-   /**
-    * Returns the name with which the attribute is bound to or unbound from the
-    * session.
-    * 
-    * @return a string specifying the name with which the object is bound to or
-    *         unbound from the session
-    */
 
-   public String getName()
-   {
-      return name;
-   }
 
-   /**
-    * Returns the value of the attribute that has been added, removed or
-    * replaced. If the attribute was added (or bound), this is the value of the
-    * attribute. If the attribute was removed (or unbound), this is the value of
-    * the removed attribute. If the attribute was replaced, this is the old
-    * value of the attribute.
-    * 
-    * @since 2.3
-    */
 
-   public Object getValue()
-   {
-      return this.value;
-   }
 
-}
+
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionBindingListener.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionBindingListener.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionBindingListener.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,63 +1,78 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet.http;
 
 import java.util.EventListener;
 
+
+ 
+ 
+
 /**
- * Causes an object to be notified when it is bound to or unbound from a
- * session. The object is notified by an {@link HttpSessionBindingEvent} object.
- * This may be as a result of a servlet programmer explicitly unbinding an
- * attribute from a session, due to a session being invalidated, or due to a
- * session timing out.
- * 
- * @author Various
+ * Causes an object to be notified when it is bound to
+ * or unbound from a session. The object is notified
+ * by an {@link HttpSessionBindingEvent} object. This may be as a result
+ * of a servlet programmer explicitly unbinding an attribute from a session,
+ * due to a session being invalidated, or due to a session timing out.
+ *
+ *
+ * @author		Various
+ * @version		$Version$
+ *
  * @see HttpSession
  * @see HttpSessionBindingEvent
+ *
  */
 
-public interface HttpSessionBindingListener extends EventListener
-{
+public interface HttpSessionBindingListener extends EventListener {
 
-   /**
-    * Notifies the object that it is being bound to a session and identifies the
-    * session.
-    * 
-    * @param event
-    *           the event that identifies the session
-    * @see #valueUnbound
-    */
 
-   public void valueBound(HttpSessionBindingEvent event);
 
-   /**
-    * Notifies the object that it is being unbound from a session and identifies
-    * the session.
-    * 
-    * @param event
-    *           the event that identifies the session
-    * @see #valueBound
-    */
+    /**
+     *
+     * Notifies the object that it is being bound to
+     * a session and identifies the session.
+     *
+     * @param event		the event that identifies the
+     *				session 
+     *
+     * @see #valueUnbound
+     *
+     */ 
 
-   public void valueUnbound(HttpSessionBindingEvent event);
+    public void valueBound(HttpSessionBindingEvent event);
+    
+    
 
+    /**
+     *
+     * Notifies the object that it is being unbound
+     * from a session and identifies the session.
+     *
+     * @param event		the event that identifies
+     *				the session 
+     *	
+     * @see #valueBound
+     *
+     */
+
+    public void valueUnbound(HttpSessionBindingEvent event);
+    
+    
 }
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionContext.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionContext.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionContext.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,54 +1,71 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet.http;
 
 import java.util.Enumeration;
 
 /**
- * @author Various
- * @deprecated As of Java(tm) Servlet API 2.1 for security reasons, with no
- *             replacement. This interface will be removed in a future version
- *             of this API.
- * @see HttpSession
- * @see HttpSessionBindingEvent
- * @see HttpSessionBindingListener
+ *
+ * @author		Various
+ * @version		$Version$
+ *
+ * @deprecated		As of Java(tm) Servlet API 2.1
+ *			for security reasons, with no replacement.
+ *			This interface will be removed in a future
+ *			version of this API.
+ *
+ * @see			HttpSession
+ * @see			HttpSessionBindingEvent
+ * @see			HttpSessionBindingListener
+ *
  */
 
-public interface HttpSessionContext
-{
 
-   /**
-    * @deprecated As of Java Servlet API 2.1 with no replacement. This method
-    *             must return null and will be removed in a future version of
-    *             this API.
-    */
+public interface HttpSessionContext {
 
-   public HttpSession getSession(String sessionId);
+    /**
+     *
+     * @deprecated 	As of Java Servlet API 2.1 with
+     *			no replacement. This method must 
+     *			return null and will be removed in
+     *			a future version of this API.
+     *
+     */
 
-   /**
-    * @deprecated As of Java Servlet API 2.1 with no replacement. This method
-    *             must return an empty <code>Enumeration</code> and will be
-    *             removed in a future version of this API.
-    */
+    public HttpSession getSession(String sessionId);
+    
+    
+    
+  
+    /**
+     *
+     * @deprecated	As of Java Servlet API 2.1 with
+     *			no replacement. This method must return 
+     *			an empty <code>Enumeration</code> and will be removed
+     *			in a future version of this API.
+     *
+     */
 
-   public Enumeration getIds();
+    public Enumeration getIds();
 }
+
+
+
+
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionEvent.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionEvent.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionEvent.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,43 +1,34 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet.http;
 
-/**
- * This is the class representing event notifications for changes to sessions
- * within a web application.
- * 
- * @since v 2.3
- */
-public class HttpSessionEvent extends java.util.EventObject
-{
-   /** Construct a session event from the given source. */
-   public HttpSessionEvent(HttpSession source)
-   {
-      super(source);
-   }
 
-   /** Return the session that changed. */
-   public HttpSession getSession()
-   {
-      return (HttpSession) super.getSource();
-   }
+	/** This is the class representing event notifications for
+	* changes to sessions within a web application.
+	 * @since	v 2.3
+	*/
+public class HttpSessionEvent extends java.util.EventObject {
+	/** Construct a session event from the given source.*/
+	 public HttpSessionEvent(HttpSession source) {
+		super(source);
 }
+	/** Return the session that changed.*/
+    public HttpSession getSession () { 
+	return (HttpSession) super.getSource();
+    }
+}
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionListener.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionListener.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpSessionListener.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,55 +1,45 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet.http;
 
 import java.util.EventListener;
 
-/**
- * Implementations of this interface are notified of changes to the list of
- * active sessions in a web application. To receive notification events, the
- * implementation class must be configured in the deployment descriptor for the
- * web application.
- * 
- * @see HttpSessionEvent
- * @since v 2.3
- */
+	/** 
+	* Implementations of this interface are notified of changes to the 
+	* list of active sessions in a web application.
+	* To receive notification events, the implementation class
+	* must be configured in the deployment descriptor for the web application.
+	* @see HttpSessionEvent
+	 * @since	v 2.3
+	*/
 
-public interface HttpSessionListener extends EventListener
-{
-
-   /**
-    * Notification that a session was created.
-    * 
-    * @param se
-    *           the notification event
-    */
-   public void sessionCreated(HttpSessionEvent se);
-
-   /**
-    * Notification that a session is about to be invalidated.
-    * 
-    * @param se
-    *           the notification event
-    */
-   public void sessionDestroyed(HttpSessionEvent se);
-
+public interface HttpSessionListener extends EventListener {
+    
+	/** 
+	* Notification that a session was created.
+	* @param se the notification event
+	*/
+    public void sessionCreated ( HttpSessionEvent se );
+    
+	/** 
+	* Notification that a session is about to be invalidated.
+	* @param se the notification event
+	*/
+    public void sessionDestroyed ( HttpSessionEvent se );
+    
 }
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpUtils.java
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpUtils.java	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/HttpUtils.java	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,24 +1,20 @@
 /*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 javax.servlet.http;
 
 import javax.servlet.ServletInputStream;
@@ -28,262 +24,284 @@
 import java.io.IOException;
 
 /**
- * @deprecated As of Java(tm) Servlet API 2.3. These methods were only useful
- *             with the default encoding and have been moved to the request
- *             interfaces.
- */
+ * @deprecated		As of Java(tm) Servlet API 2.3. 
+ *			These methods were only useful
+ *			with the default encoding and have been moved
+ *			to the request interfaces.
+ *
+*/
 
-public class HttpUtils
-{
 
-   private static final String LSTRING_FILE = "javax.servlet.http.LocalStrings";
+public class HttpUtils {
 
-   private static ResourceBundle lStrings = ResourceBundle.getBundle(LSTRING_FILE);
+    private static final String LSTRING_FILE =
+	"javax.servlet.http.LocalStrings";
+    private static ResourceBundle lStrings =
+	ResourceBundle.getBundle(LSTRING_FILE);
+        
+    
+    
+    /**
+     * Constructs an empty <code>HttpUtils</code> object.
+     *
+     */
 
-   /**
-    * Constructs an empty <code>HttpUtils</code> object.
-    */
+    public HttpUtils() {}
+    
+    
+    
+    
 
-   public HttpUtils()
-   {
-   }
+    /**
+     *
+     * Parses a query string passed from the client to the
+     * server and builds a <code>HashTable</code> object
+     * with key-value pairs. 
+     * The query string should be in the form of a string
+     * packaged by the GET or POST method, that is, it
+     * should have key-value pairs in the form <i>key=value</i>,
+     * with each pair separated from the next by a &amp; character.
+     *
+     * <p>A key can appear more than once in the query string
+     * with different values. However, the key appears only once in 
+     * the hashtable, with its value being
+     * an array of strings containing the multiple values sent
+     * by the query string.
+     * 
+     * <p>The keys and values in the hashtable are stored in their
+     * decoded form, so
+     * any + characters are converted to spaces, and characters
+     * sent in hexadecimal notation (like <i>%xx</i>) are
+     * converted to ASCII characters.
+     *
+     * @param s		a string containing the query to be parsed
+     *
+     * @return		a <code>HashTable</code> object built
+     * 			from the parsed key-value pairs
+     *
+     * @exception IllegalArgumentException	if the query string 
+     *						is invalid
+     *
+     */
 
-   /**
-    * Parses a query string passed from the client to the server and builds a
-    * <code>HashTable</code> object with key-value pairs. The query string
-    * should be in the form of a string packaged by the GET or POST method, that
-    * is, it should have key-value pairs in the form <i>key=value</i>, with
-    * each pair separated from the next by a &amp; character.
-    * <p>
-    * A key can appear more than once in the query string with different values.
-    * However, the key appears only once in the hashtable, with its value being
-    * an array of strings containing the multiple values sent by the query
-    * string.
-    * <p>
-    * The keys and values in the hashtable are stored in their decoded form, so
-    * any + characters are converted to spaces, and characters sent in
-    * hexadecimal notation (like <i>%xx</i>) are converted to ASCII characters.
-    * 
-    * @param s
-    *           a string containing the query to be parsed
-    * @return a <code>HashTable</code> object built from the parsed key-value
-    *         pairs
-    * @exception IllegalArgumentException
-    *               if the query string is invalid
-    */
+    static public Hashtable parseQueryString(String s) {
 
-   static public Hashtable parseQueryString(String s)
-   {
+	String valArray[] = null;
+	
+	if (s == null) {
+	    throw new IllegalArgumentException();
+	}
+	Hashtable ht = new Hashtable();
+	StringBuffer sb = new StringBuffer();
+	StringTokenizer st = new StringTokenizer(s, "&");
+	while (st.hasMoreTokens()) {
+	    String pair = (String)st.nextToken();
+	    int pos = pair.indexOf('=');
+	    if (pos == -1) {
+		// XXX
+		// should give more detail about the illegal argument
+		throw new IllegalArgumentException();
+	    }
+	    String key = parseName(pair.substring(0, pos), sb);
+	    String val = parseName(pair.substring(pos+1, pair.length()), sb);
+	    if (ht.containsKey(key)) {
+		String oldVals[] = (String []) ht.get(key);
+		valArray = new String[oldVals.length + 1];
+		for (int i = 0; i < oldVals.length; i++) 
+		    valArray[i] = oldVals[i];
+		valArray[oldVals.length] = val;
+	    } else {
+		valArray = new String[1];
+		valArray[0] = val;
+	    }
+	    ht.put(key, valArray);
+	}
+	return ht;
+    }
 
-      String valArray[] = null;
 
-      if (s == null)
-      {
-         throw new IllegalArgumentException();
-      }
-      Hashtable<String, String[]> ht = new Hashtable<String, String[]>();
-      StringBuffer sb = new StringBuffer();
-      StringTokenizer st = new StringTokenizer(s, "&");
-      while (st.hasMoreTokens())
-      {
-         String pair = (String) st.nextToken();
-         int pos = pair.indexOf('=');
-         if (pos == -1)
-         {
-            // XXX
-            // should give more detail about the illegal argument
-            throw new IllegalArgumentException();
-         }
-         String key = parseName(pair.substring(0, pos), sb);
-         String val = parseName(pair.substring(pos + 1, pair.length()), sb);
-         if (ht.containsKey(key))
-         {
-            String oldVals[] = (String[]) ht.get(key);
-            valArray = new String[oldVals.length + 1];
-            for (int i = 0; i < oldVals.length; i++)
-               valArray[i] = oldVals[i];
-            valArray[oldVals.length] = val;
-         }
-         else
-         {
-            valArray = new String[1];
-            valArray[0] = val;
-         }
-         ht.put(key, valArray);
-      }
-      return ht;
-   }
 
-   /**
-    * Parses data from an HTML form that the client sends to the server using
-    * the HTTP POST method and the <i>application/x-www-form-urlencoded</i>
-    * MIME type.
-    * <p>
-    * The data sent by the POST method contains key-value pairs. A key can
-    * appear more than once in the POST data with different values. However, the
-    * key appears only once in the hashtable, with its value being an array of
-    * strings containing the multiple values sent by the POST method.
-    * <p>
-    * The keys and values in the hashtable are stored in their decoded form, so
-    * any + characters are converted to spaces, and characters sent in
-    * hexadecimal notation (like <i>%xx</i>) are converted to ASCII characters.
-    * 
-    * @param len
-    *           an integer specifying the length, in characters, of the
-    *           <code>ServletInputStream</code> object that is also passed to
-    *           this method
-    * @param in
-    *           the <code>ServletInputStream</code> object that contains the
-    *           data sent from the client
-    * @return a <code>HashTable</code> object built from the parsed key-value
-    *         pairs
-    * @exception IllegalArgumentException
-    *               if the data sent by the POST method is invalid
-    */
 
-   static public Hashtable parsePostData(int len, ServletInputStream in)
-   {
-      // XXX
-      // should a length of 0 be an IllegalArgumentException
+    /**
+     *
+     * Parses data from an HTML form that the client sends to 
+     * the server using the HTTP POST method and the 
+     * <i>application/x-www-form-urlencoded</i> MIME type.
+     *
+     * <p>The data sent by the POST method contains key-value
+     * pairs. A key can appear more than once in the POST data
+     * with different values. However, the key appears only once in 
+     * the hashtable, with its value being
+     * an array of strings containing the multiple values sent
+     * by the POST method.
+     *
+     * <p>The keys and values in the hashtable are stored in their
+     * decoded form, so
+     * any + characters are converted to spaces, and characters
+     * sent in hexadecimal notation (like <i>%xx</i>) are
+     * converted to ASCII characters.
+     *
+     *
+     *
+     * @param len	an integer specifying the length,
+     *			in characters, of the 
+     *			<code>ServletInputStream</code>
+     *			object that is also passed to this
+     *			method
+     *
+     * @param in	the <code>ServletInputStream</code>
+     *			object that contains the data sent
+     *			from the client
+     * 
+     * @return		a <code>HashTable</code> object built
+     *			from the parsed key-value pairs
+     *
+     *
+     * @exception IllegalArgumentException	if the data
+     *			sent by the POST method is invalid
+     *
+     */
+     
 
-      if (len <= 0)
-         return new Hashtable(); // cheap hack to return an empty hash
+    static public Hashtable parsePostData(int len, 
+					  ServletInputStream in)
+    {
+	// XXX
+	// should a length of 0 be an IllegalArgumentException
+	
+	if (len <=0)
+	    return new Hashtable(); // cheap hack to return an empty hash
 
-      if (in == null)
-      {
-         throw new IllegalArgumentException();
-      }
+	if (in == null) {
+	    throw new IllegalArgumentException();
+	}
+	
+	//
+	// Make sure we read the entire POSTed body.
+	//
+        byte[] postedBytes = new byte [len];
+        try {
+            int offset = 0;
+       
+	    do {
+		int inputLen = in.read (postedBytes, offset, len - offset);
+		if (inputLen <= 0) {
+		    String msg = lStrings.getString("err.io.short_read");
+		    throw new IllegalArgumentException (msg);
+		}
+		offset += inputLen;
+	    } while ((len - offset) > 0);
 
-      //
-      // Make sure we read the entire POSTed body.
-      //
-      byte[] postedBytes = new byte[len];
-      try
-      {
-         int offset = 0;
+	} catch (IOException e) {
+	    throw new IllegalArgumentException(e.getMessage());
+	}
 
-         do
-         {
-            int inputLen = in.read(postedBytes, offset, len - offset);
-            if (inputLen <= 0)
-            {
-               String msg = lStrings.getString("err.io.short_read");
-               throw new IllegalArgumentException(msg);
-            }
-            offset += inputLen;
-         }
-         while ((len - offset) > 0);
+        // XXX we shouldn't assume that the only kind of POST body
+        // is FORM data encoded using ASCII or ISO Latin/1 ... or
+        // that the body should always be treated as FORM data.
+        //
 
-      }
-      catch (IOException e)
-      {
-         throw new IllegalArgumentException(e.getMessage());
-      }
+        try {
+            String postedBody = new String(postedBytes, 0, len, "8859_1");
+            return parseQueryString(postedBody);
+        } catch (java.io.UnsupportedEncodingException e) {
+            // XXX function should accept an encoding parameter & throw this
+            // exception.  Otherwise throw something expected.
+            throw new IllegalArgumentException(e.getMessage());
+        }
+    }
 
-      // XXX we shouldn't assume that the only kind of POST body
-      // is FORM data encoded using ASCII or ISO Latin/1 ... or
-      // that the body should always be treated as FORM data.
-      //
 
-      try
-      {
-         String postedBody = new String(postedBytes, 0, len, "8859_1");
-         return parseQueryString(postedBody);
-      }
-      catch (java.io.UnsupportedEncodingException e)
-      {
-         // XXX function should accept an encoding parameter & throw this
-         // exception. Otherwise throw something expected.
-         throw new IllegalArgumentException(e.getMessage());
-      }
-   }
 
-   /*
-    * Parse a name in the query string.
-    */
 
-   static private String parseName(String s, StringBuffer sb)
-   {
-      sb.setLength(0);
-      for (int i = 0; i < s.length(); i++)
-      {
-         char c = s.charAt(i);
-         switch (c)
-         {
-            case '+' :
-               sb.append(' ');
-               break;
-            case '%' :
-               try
-               {
-                  sb.append((char) Integer.parseInt(s.substring(i + 1, i + 3), 16));
-                  i += 2;
-               }
-               catch (NumberFormatException e)
-               {
-                  // XXX
-                  // need to be more specific about illegal arg
-                  throw new IllegalArgumentException();
-               }
-               catch (StringIndexOutOfBoundsException e)
-               {
-                  String rest = s.substring(i);
-                  sb.append(rest);
-                  if (rest.length() == 2)
-                     i++;
-               }
+    /*
+     * Parse a name in the query string.
+     */
 
-               break;
-            default :
-               sb.append(c);
-               break;
-         }
-      }
-      return sb.toString();
-   }
+    static private String parseName(String s, StringBuffer sb) {
+	sb.setLength(0);
+	for (int i = 0; i < s.length(); i++) {
+	    char c = s.charAt(i); 
+	    switch (c) {
+	    case '+':
+		sb.append(' ');
+		break;
+	    case '%':
+		try {
+		    sb.append((char) Integer.parseInt(s.substring(i+1, i+3), 
+						      16));
+		    i += 2;
+		} catch (NumberFormatException e) {
+		    // XXX
+		    // need to be more specific about illegal arg
+		    throw new IllegalArgumentException();
+		} catch (StringIndexOutOfBoundsException e) {
+		    String rest  = s.substring(i);
+		    sb.append(rest);
+		    if (rest.length()==2)
+			i++;
+		}
+		
+		break;
+	    default:
+		sb.append(c);
+		break;
+	    }
+	}
+	return sb.toString();
+    }
 
-   /**
-    * Reconstructs the URL the client used to make the request, using
-    * information in the <code>HttpServletRequest</code> object. The returned
-    * URL contains a protocol, server name, port number, and server path, but it
-    * does not include query string parameters.
-    * <p>
-    * Because this method returns a <code>StringBuffer</code>, not a string,
-    * you can modify the URL easily, for example, to append query parameters.
-    * <p>
-    * This method is useful for creating redirect messages and for reporting
-    * errors.
-    * 
-    * @param req
-    *           a <code>HttpServletRequest</code> object containing the
-    *           client's request
-    * @return a <code>StringBuffer</code> object containing the reconstructed
-    *         URL
-    */
 
-   public static StringBuffer getRequestURL(HttpServletRequest req)
-   {
-      StringBuffer url = new StringBuffer();
-      String scheme = req.getScheme();
-      int port = req.getServerPort();
-      String urlPath = req.getRequestURI();
 
-      // String servletPath = req.getServletPath ();
-      // String pathInfo = req.getPathInfo ();
 
-      url.append(scheme); // http, https
-      url.append("://");
-      url.append(req.getServerName());
-      if ((scheme.equals("http") && port != 80) || (scheme.equals("https") && port != 443))
-      {
-         url.append(':');
-         url.append(req.getServerPort());
-      }
-      // if (servletPath != null)
-      // url.append (servletPath);
-      // if (pathInfo != null)
-      // url.append (pathInfo);
-      url.append(urlPath);
-      return url;
-   }
+    /**
+     *
+     * Reconstructs the URL the client used to make the request,
+     * using information in the <code>HttpServletRequest</code> object.
+     * The returned URL contains a protocol, server name, port
+     * number, and server path, but it does not include query
+     * string parameters.
+     * 
+     * <p>Because this method returns a <code>StringBuffer</code>,
+     * not a string, you can modify the URL easily, for example,
+     * to append query parameters.
+     *
+     * <p>This method is useful for creating redirect messages
+     * and for reporting errors.
+     *
+     * @param req	a <code>HttpServletRequest</code> object
+     *			containing the client's request
+     * 
+     * @return		a <code>StringBuffer</code> object containing
+     *			the reconstructed URL
+     *
+     */
+
+    public static StringBuffer getRequestURL (HttpServletRequest req) {
+	StringBuffer url = new StringBuffer ();
+	String scheme = req.getScheme ();
+	int port = req.getServerPort ();
+	String urlPath = req.getRequestURI();
+	
+	//String		servletPath = req.getServletPath ();
+	//String		pathInfo = req.getPathInfo ();
+
+	url.append (scheme);		// http, https
+	url.append ("://");
+	url.append (req.getServerName ());
+	if ((scheme.equals ("http") && port != 80)
+		|| (scheme.equals ("https") && port != 443)) {
+	    url.append (':');
+	    url.append (req.getServerPort ());
+	}
+	//if (servletPath != null)
+	//    url.append (servletPath);
+	//if (pathInfo != null)
+	//    url.append (pathInfo);
+	url.append(urlPath);
+	return url;
+    }
 }
+
+
+

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/LocalStrings.properties
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/LocalStrings.properties	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/LocalStrings.properties	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,3 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 # Default localized string information
 # Localized for Locale en_US
 

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/LocalStrings_es.properties
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/LocalStrings_es.properties	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/LocalStrings_es.properties	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+# $Id: LocalStrings_es.properties 467222 2006-10-24 03:17:11Z markt $
+#
 # Default localized string information
 # Localized para Locale es_ES
 

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/LocalStrings_fr.properties
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/LocalStrings_fr.properties	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/LocalStrings_fr.properties	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,3 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 # Default localized string information
 # Localized for Locale fr_FR
 

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/LocalStrings_ja.properties
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/LocalStrings_ja.properties	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/LocalStrings_ja.properties	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,3 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 # Default localized string information
 # Localized for Locale ja_JP
 

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/package.html
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/package.html	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/http/package.html	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,11 +1,23 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
 <HTML>
 <HEAD>
+<!--
+
+  Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+
+  This software is the proprietary information of Sun Microsystems, Inc.  
+  Use is subject to license terms.
+
+-->
+
 </HEAD>
 <BODY BGCOLOR="white">
+
 The javax.servlet.http package contains a number of classes and interfaces
 that describe and define the contracts between a servlet class
 running under the HTTP protocol and the runtime environment provided
 for an instance of such a class by a conforming servlet container.
+
+
 </BODY>
 </HTML>

Modified: projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/package.html
===================================================================
--- projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/package.html	2007-12-06 22:01:02 UTC (rev 68006)
+++ projects/javaee/trunk/jboss-servlet-api/src/main/javax/servlet/package.html	2007-12-06 22:01:53 UTC (rev 68007)
@@ -1,11 +1,23 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
 <HTML>
 <HEAD>
+<!--
+
+  Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+
+  This software is the proprietary information of Sun Microsystems, Inc.  
+  Use is subject to license terms.
+
+-->
+
 </HEAD>
 <BODY BGCOLOR="white">
-	The javax.servlet package contains a number of classes and interfaces that
-	describe and define the contracts between a servlet class and the
-	runtime environment provided for an instance of such a class by a
-	conforming servlet container.
+
+The javax.servlet package contains a number of classes and interfaces that
+describe and define the contracts between a servlet class and the
+runtime environment provided for an instance of such a class by a
+conforming servlet container.
+
+
 </BODY>
 </HTML>




More information about the jboss-cvs-commits mailing list