geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ga...@apache.org
Subject svn commit: r1491469 - in /geronimo/specs/trunk/geronimo-servlet_3.1_spec: ./ src/main/java/javax/servlet/ src/main/java/javax/servlet/http/
Date Mon, 10 Jun 2013 14:37:58 GMT
Author: gawor
Date: Mon Jun 10 14:37:57 2013
New Revision: 1491469

URL: http://svn.apache.org/r1491469
Log:
GERONIMO-6453: Create servlet 3.1 project with initial content. Patch from Adny McCright

Added:
    geronimo/specs/trunk/geronimo-servlet_3.1_spec/
      - copied from r1490867, geronimo/specs/trunk/geronimo-servlet_3.0_spec/
    geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ReadListener.java   (with props)
    geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/WriteListener.java   (with props)
    geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpSessionIdListener.java   (with props)
    geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpUpgradeHandler.java   (with props)
    geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/WebConnection.java   (with props)
Modified:
    geronimo/specs/trunk/geronimo-servlet_3.1_spec/pom.xml
    geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletInputStream.java
    geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletOutputStream.java
    geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletRequest.java
    geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletRequestWrapper.java
    geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletResponse.java
    geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletResponseWrapper.java
    geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpServlet.java
    geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpServletRequest.java
    geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpServletRequestWrapper.java
    geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/Part.java

Modified: geronimo/specs/trunk/geronimo-servlet_3.1_spec/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-servlet_3.1_spec/pom.xml?rev=1491469&r1=1490867&r2=1491469&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-servlet_3.1_spec/pom.xml (original)
+++ geronimo/specs/trunk/geronimo-servlet_3.1_spec/pom.xml Mon Jun 10 14:37:57 2013
@@ -27,16 +27,16 @@
     <parent>
         <groupId>org.apache.geronimo.genesis</groupId>
         <artifactId>genesis-java5-flava</artifactId>
-        <version>2.0</version>
+        <version>2.1</version>
     </parent>
 
     <groupId>org.apache.geronimo.specs</groupId>
-    <artifactId>geronimo-servlet_3.0_spec</artifactId>
+    <artifactId>geronimo-servlet_3.1_spec</artifactId>
     <packaging>bundle</packaging>
-    <name>Apache Geronimo Servlet Spec 3.0</name>
-    <version>1.1-SNAPSHOT</version>
+    <name>Apache Geronimo Servlet Spec 3.1</name>
+    <version>1.0-SNAPSHOT</version>
 
-    <description>Servlet 3.0 API</description>
+    <description>Servlet 3.1 API</description>
 
     <url>http://geronimo.apache.org/maven/${siteId}/${version}</url>
 
@@ -52,9 +52,9 @@
     </properties>
 
     <scm>
-        <connection>scm:svn:https://svn.apache.org/repos/asf/geronimo/specs/trunk/geronimo-servlet_3.0_spec/</connection>
-        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/geronimo/specs/trunk/geronimo-servlet_3.0_spec/</developerConnection>
-        <url>http://svn.apache.org/viewcvs.cgi/geronimo/specs/trunk/geronimo-servlet_3.0_spec/</url>
+        <connection>scm:svn:https://svn.apache.org/repos/asf/geronimo/specs/trunk/geronimo-servlet_3.1_spec/</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/geronimo/specs/trunk/geronimo-servlet_3.1_spec/</developerConnection>
+        <url>http://svn.apache.org/viewcvs.cgi/geronimo/specs/trunk/geronimo-servlet_3.1_spec/</url>
     </scm>
 
     <build>
@@ -65,27 +65,27 @@
                 <configuration>
                     <instructions>
                         <!-- The OSGi Alliance defined package numbers don't match up
-                             necessarily with the Java EE versions.  Servlet 3.0 needs to
-                             be exported as 2.6 -->
+                             necessarily with the Java EE versions.  Servlet 3.1 needs to
+                             be exported as 2.7 -->
                         <Export-Package>
-                            javax.servlet;version=2.6,
-                            javax.servlet.annotation;version=2.6,
-                            javax.servlet.descriptor;version=2.6,
-                            javax.servlet.http;version=2.6,
-                            javax.servlet.resources;version=2.6,
-                            javax.servlet;version=3.0,
-                            javax.servlet.annotation;version=3.0,
-                            javax.servlet.descriptor;version=3.0,
-                            javax.servlet.http;version=3.0,
-                            javax.servlet.resources;version=3.0,
+                            javax.servlet;version=2.7,
+                            javax.servlet.annotation;version=2.7,
+                            javax.servlet.descriptor;version=2.7,
+                            javax.servlet.http;version=2.7,
+                            javax.servlet.resources;version=2.7,
+                            javax.servlet;version=3.1,
+                            javax.servlet.annotation;version=3.1,
+                            javax.servlet.descriptor;version=3.1,
+                            javax.servlet.http;version=3.1,
+                            javax.servlet.resources;version=3.1,
                         </Export-Package>
                         <!-- Because of the duplicate exports, explicit imports are required -->
                         <Import-Package>
-                            javax.servlet;version=2.6,
-                            javax.servlet.annotation;version=2.6,
-                            javax.servlet.descriptor;version=2.6,
-                            javax.servlet.http;version=2.6,
-                            javax.servlet.resources;version=2.6,
+                            javax.servlet;version=2.7,
+                            javax.servlet.annotation;version=2.7,
+                            javax.servlet.descriptor;version=2.7,
+                            javax.servlet.http;version=2.7,
+                            javax.servlet.resources;version=2.7,
                         </Import-Package>
                     </instructions>
                 </configuration>

Added: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ReadListener.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ReadListener.java?rev=1491469&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ReadListener.java (added)
+++ geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ReadListener.java Mon Jun 10 14:37:57 2013
@@ -0,0 +1,57 @@
+/*
+ * 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.EventListener;
+
+/**
+ * This class represents a call-back mechanism that will notify implementations as HTTP request data becomes available
+ * to be read without blocking.
+ * 
+ * @since Servlet 3.1
+ */
+public interface ReadListener extends EventListener {
+
+    /**
+     * When an instance of the ReadListener is registered with a ServletInputStream, this method will be invoked by the
+     * container the first time when it is possible to read data. Subsequently the container will invoke this method if
+     * and only if ServletInputStream.isReady() method has been called and has returned false.
+     * 
+     * @throws IOException
+     *             - if an I/O related error has occurred during processing
+     */
+    void onAllDataRead() throws IOException;
+
+    /**
+     * When an instance of the ReadListener is registered with a ServletInputStream, this method will be invoked by the
+     * container the first time when it is possible to read data. Subsequently the container will invoke this method if
+     * and only if ServletInputStream.isReady() method has been called and has returned false.
+     * 
+     * @throws IOException
+     *             - if an I/O related error has occurred during processing
+     */
+    void onDataAvailable() throws IOException;
+
+    /**
+     * Invoked when an error occurs processing the request.
+     */
+    void onError(Throwable t);
+}

Propchange: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ReadListener.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ReadListener.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ReadListener.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletInputStream.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletInputStream.java?rev=1491469&r1=1490867&r2=1491469&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletInputStream.java (original)
+++ geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletInputStream.java Mon Jun 10 14:37:57 2013
@@ -50,22 +50,37 @@ public abstract class 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.
+     * Returns true when all the data from the stream has been read else it returns false.
+     * 
+     * @return true when all data for this particular request has been read, otherwise returns false.
+     * @since Servlet 3.1
+     */
+    public abstract boolean isFinished();
+
+    /**
+     * Returns true if data can be read without blocking else returns false.
+     * 
+     * @return true if data can be obtained without blocking, otherwise returns false.
+     * @since Servlet 3.1
+     */
+    public abstract boolean isReady();
+
+    /**
+     * 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/>
-     * <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
-     * @throws IOException if an input or output exception has occurred
-     * @return an integer specifying the actual number of bytes
-     * read, or -1 if the end of the stream is reached
+     * <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
+     * @throws IOException
+     *             if an input or output exception has occurred
+     * @return an integer specifying the actual number of bytes read, or -1 if the end of the stream is reached
      */
     public int readLine(byte[] b, int off, int len) throws IOException {
 
@@ -83,8 +98,21 @@ public abstract class ServletInputStream
         }
         return count > 0 ? count : -1;
     }
-    
-}
-
-
 
+    /**
+     * Instructs the ServletInputStream to invoke the provided ReadListener when it is possible to read.
+     * 
+     * @param readListener
+     *            - the ReadListener that should be notified when it's possible to read.
+     * @throws IllegalStateException
+     *             - if one of the following conditions is true
+     *             <ul>
+     *             <li>the associated request is neither upgraded nor the async started</li>
+     *             <li>setReadListener is called more than once within the scope of the same request.</li>
+     *             </ul>
+     * @throws NullPointerException
+     *             - if readListener is null
+     * @since Servlet 3.1
+     */
+    public abstract void setReadListener(ReadListener readListener);
+}

Modified: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletOutputStream.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletOutputStream.java?rev=1491469&r1=1490867&r2=1491469&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletOutputStream.java (original)
+++ geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletOutputStream.java Mon Jun 10 14:37:57 2013
@@ -51,26 +51,35 @@ public abstract class ServletOutputStrea
     }
 
     /**
-     * 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
-     * @throws IOException if an input or output exception occurred
+     * This method can be used to determine if data can be written without blocking.
+     * 
+     * @return true if a write to this ServletOutputStream will succeed, otherwise returns false.
+     * @since Servlet 3.1
+     */
+    public abstract boolean isReady();
+
+    /**
+     * 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
+     * @throws IOException
+     *             if an input or output exception occurred
      */
     public void print(String s) throws IOException {
-        if (s == null) s = "null";
+        if (s == null)
+            s = "null";
         int len = s.length();
         for (int i = 0; i < len; i++) {
             char c = s.charAt(i);
 
             //
-            // XXX NOTE:  This is clearly incorrect for many strings,
+            // 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
+            // servlet framework. It must suffice until servlet output
             // streams properly encode their output.
             //
-            if ((c & 0xff00) != 0) {        // high order byte must be zero
+            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] = c;
@@ -82,13 +91,12 @@ public abstract class ServletOutputStrea
     }
 
     /**
-     * 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
-     * @throws IOException if an input or output exception occurred
+     * 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
+     * @throws IOException
+     *             if an input or output exception occurred
      */
     public void print(boolean b) throws IOException {
         String msg;
@@ -101,82 +109,82 @@ public abstract class ServletOutputStrea
     }
 
     /**
-     * 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
-     * @throws IOException if an input or output exception occurred
+     * 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
+     * @throws IOException
+     *             if an input or output exception occurred
      */
     public void print(char c) throws IOException {
         print(String.valueOf(c));
     }
 
     /**
-     * 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
-     * @throws 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
+     * @throws IOException
+     *             if an input or output exception occurred
      */
     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
-     * @throws 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
+     * @throws IOException
+     *             if an input or output exception occurred
      */
     public void print(long l) throws IOException {
         print(String.valueOf(l));
     }
 
     /**
-     * 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
-     * @throws 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
+     * @throws IOException
+     *             if an input or output exception occurred
      */
     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
-     * @throws 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
+     * @throws 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.
-     *
-     * @throws IOException if an input or output exception occurred
+     * Writes a carriage return-line feed (CRLF) to the client.
+     * 
+     * @throws 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
-     * @throws IOException if an input or output exception occurred
+     * 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
+     * @throws IOException
+     *             if an input or output exception occurred
      */
     public void println(String s) throws IOException {
         print(s);
@@ -184,13 +192,12 @@ public abstract class ServletOutputStrea
     }
 
     /**
-     * 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
-     * @throws IOException if an input or output exception occurred
+     * 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
+     * @throws IOException
+     *             if an input or output exception occurred
      */
     public void println(boolean b) throws IOException {
         print(b);
@@ -198,11 +205,12 @@ public abstract class ServletOutputStrea
     }
 
     /**
-     * Writes a character to the client, followed by a carriage
-     * return-line feed (CRLF).
-     *
-     * @param c the character to write to the client
-     * @throws IOException if an input or output exception occurred
+     * Writes a character to the client, followed by a carriage return-line feed (CRLF).
+     * 
+     * @param c
+     *            the character to write to the client
+     * @throws IOException
+     *             if an input or output exception occurred
      */
     public void println(char c) throws IOException {
         print(c);
@@ -210,11 +218,12 @@ public abstract class ServletOutputStrea
     }
 
     /**
-     * Writes an int to the client, followed by a
-     * carriage return-line feed (CRLF) character.
-     *
-     * @param i the int to write to the client
-     * @throws IOException if an input or output exception occurred
+     * Writes an int to the client, followed by a carriage return-line feed (CRLF) character.
+     * 
+     * @param i
+     *            the int to write to the client
+     * @throws IOException
+     *             if an input or output exception occurred
      */
     public void println(int i) throws IOException {
         print(i);
@@ -222,11 +231,12 @@ public abstract class ServletOutputStrea
     }
 
     /**
-     * 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
-     * @throws IOException if an input or output exception occurred
+     * 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
+     * @throws IOException
+     *             if an input or output exception occurred
      */
     public void println(long l) throws IOException {
         print(l);
@@ -234,13 +244,12 @@ public abstract class ServletOutputStrea
     }
 
     /**
-     * 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
-     * @throws IOException if an input or output exception
-     *                     occurred
+     * 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
+     * @throws IOException
+     *             if an input or output exception occurred
      */
     public void println(float f) throws IOException {
         print(f);
@@ -248,16 +257,31 @@ public abstract class ServletOutputStrea
     }
 
     /**
-     * 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
-     * @throws IOException if an input or output exception occurred
+     * 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
+     * @throws IOException
+     *             if an input or output exception occurred
      */
     public void println(double d) throws IOException {
         print(d);
         println();
     }
 
+    /**
+     * Instructs the ServletOutputStream to invoke the provided WriteListener when it is possible to write.
+     * 
+     * @param writeListener
+     *            the WriteListener that should be notified when it's possible to write
+     * @throws IllegalStateException
+     *             if one of the following conditions is true
+     *             <ul>
+     *             <li>the associated request is neither upgraded nor the async started</li>
+     *             <li>setWriteListener is called more than once within the scope of the same request.</li>
+     *             </ul>
+     * @throws NullPointerException
+     *             if writeListener is null
+     */
+    public abstract void setWriteListener(WriteListener writeListener);
 }

Modified: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletRequest.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletRequest.java?rev=1491469&r1=1490867&r2=1491469&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletRequest.java (original)
+++ geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletRequest.java Mon Jun 10 14:37:57 2013
@@ -108,6 +108,15 @@ public interface ServletRequest {
     int getContentLength();
 
     /**
+     * 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.
+     * 
+     * @since Servlet 3.1
+     * @return a long containing the length of the request body or -1L if the length is not known
+     */
+    long getContentLengthLong();
+
+    /**
      * 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.

Modified: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletRequestWrapper.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletRequestWrapper.java?rev=1491469&r1=1490867&r2=1491469&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletRequestWrapper.java (original)
+++ geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletRequestWrapper.java Mon Jun 10 14:37:57 2013
@@ -118,6 +118,17 @@ public class ServletRequestWrapper imple
     }
 
     /**
+     * The default behavior of this method is to return getContentLengthLong() on the wrapped request object.
+     * 
+     * @return a long containing the length of the request body or -1L if the length is not known
+     * @since Servlet 3.1
+     */
+    @Override
+    public long getContentLengthLong() {
+        return this.request.getContentLengthLong();
+    }
+
+    /**
      * The default behavior of this method is to return getContentType()
      * on the wrapped request object.
      */

Modified: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletResponse.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletResponse.java?rev=1491469&r1=1490867&r2=1491469&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletResponse.java (original)
+++ geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletResponse.java Mon Jun 10 14:37:57 2013
@@ -299,6 +299,17 @@ public interface ServletResponse {
     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
+     *            - a long specifying the length of the content being returned to the client; sets the Content-Length
+     *            header
+     * @since Servlet 3.1
+     */
+    void setContentLengthLong(long len);
+
+    /**
      * 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

Modified: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletResponseWrapper.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletResponseWrapper.java?rev=1491469&r1=1490867&r2=1491469&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletResponseWrapper.java (original)
+++ geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/ServletResponseWrapper.java Mon Jun 10 14:37:57 2013
@@ -117,6 +117,16 @@ public class ServletResponseWrapper impl
     }
 
     /**
+     * The default behavior of this method is to call setContentLengthLong(long len) on the wrapped response object.
+     * @param len - a long specifying the length of the content being returned to the client; sets the Content-Length header
+     * @since Servlet 3.1
+     */
+    @Override
+    public void setContentLengthLong(long len) {
+        this.response.setContentLengthLong(len);
+    }
+
+    /**
      * The default behavior of this method is to call setContentType(String type)
      * on the wrapped response object.
      */

Added: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/WriteListener.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/WriteListener.java?rev=1491469&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/WriteListener.java (added)
+++ geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/WriteListener.java Mon Jun 10 14:37:57 2013
@@ -0,0 +1,47 @@
+/*
+ * 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.EventListener;
+
+/**
+ * Callback notification mechanism that signals to the developer it's possible to write content without blocking.
+ * 
+ * 
+ * @since Servlet 3.1
+ */
+public interface WriteListener extends EventListener {
+
+    /**
+     * Invoked when an error occurs writing data using the non-blocking APIs.
+     */
+    void onError(Throwable t);
+
+    /**
+     * When an instance of the WriteListener is registered with a ServletOutputStream, this method will be invoked by
+     * the container the first time when it is possible to write data. Subsequently the container will invoke this
+     * method if and only if ServletOutputStream.isReady() method has been called and has returned false.
+     * 
+     * @throws IOException
+     *             - if an I/O related error has occurred during processing
+     */
+    void onWritePossible() throws IOException;
+}

Propchange: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/WriteListener.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/WriteListener.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/WriteListener.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpServlet.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpServlet.java?rev=1491469&r1=1490867&r2=1491469&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpServlet.java (original)
+++ geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpServlet.java Mon Jun 10 14:37:57 2013
@@ -34,6 +34,7 @@ import javax.servlet.ServletException;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
+import javax.servlet.WriteListener;
 
 
 /**
@@ -731,6 +732,8 @@ class NoBodyOutputStream extends Servlet
 
     private int contentLength = 0;
 
+    private WriteListener writeListener;
+
     // file private
     NoBodyOutputStream() {
     }
@@ -753,7 +756,26 @@ class NoBodyOutputStream extends Servlet
             // isn't this really an IllegalArgumentException?
 
             String msg = lStrings.getString("err.io.negativelength");
-            throw new IOException("negative length");
+            IOException ioex = new IOException("negative length");
+            if (writeListener != null) {
+                writeListener.onError(ioex);
+            }
+            throw ioex;
+        }
+    }
+
+    @Override
+    public boolean isReady() {
+        return true;
+    }
+
+    @Override
+    public void setWriteListener(WriteListener writeListener) {
+        this.writeListener = writeListener;
+        try {
+            writeListener.onWritePossible();
+        } catch (IOException e) {
+            // ignore
         }
     }
 }

Modified: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpServletRequest.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpServletRequest.java?rev=1491469&r1=1490867&r2=1491469&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpServletRequest.java (original)
+++ geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpServletRequest.java Mon Jun 10 14:37:57 2013
@@ -58,435 +58,361 @@ public interface HttpServletRequest exte
 
     /**
      * authenticate user using container facilities
-     *
-     * @param response response to use to conduct a dialog if necessary
+     * 
+     * @param response
+     *            response to use to conduct a dialog if necessary
      * @return whether authentication was successful
-     * @throws javax.servlet.ServletException if something goes wrong
-     * @throws java.io.IOException if something IO related goes wrong
+     * @throws javax.servlet.ServletException
+     *             if something goes wrong
+     * @throws java.io.IOException
+     *             if something IO related goes wrong
      * @since 3.0
      */
     boolean authenticate(HttpServletResponse response) throws IOException, ServletException;
 
     /**
-     * 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/>
-     * <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.
+     * Change the session id of the current session associated with this request and return the new session id.
+     * 
+     * @return the new session id
+     * @throws IllegalStateException
+     *             - if there is no session associated with the request
+     * @since Servlet 3.1
+     */
+    String changeSessionId();
+
+    /**
+     * 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/>
+     * <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.
      */
     String getAuthType();
 
     /**
-     * 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
+     * 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
      */
     String getContextPath();
 
     /**
-     * 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
      */
     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/>
-     * <p>The date is returned as
-     * the number of milliseconds since January 1, 1970 GMT.
-     * The header name is case insensitive.
-     * <p/>
-     * <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
-     * @throws 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/>
+     * <p>
+     * The date is returned as the number of milliseconds since January 1, 1970 GMT. The header name is case
+     * insensitive.
+     * <p/>
+     * <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
+     * @throws IllegalArgumentException
+     *             If the header value can't be converted to a date
      */
     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
      */
     String getHeader(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/>
-     * <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 an enumeration of all the header names this request contains. If the request has no headers, this method
+     * returns an empty enumeration.
+     * <p/>
+     * <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>
      */
     Enumeration<String> getHeaderNames();
 
     /**
-     * Returns all the values of the specified request header
-     * as an <code>Enumeration</code> of <code>String</code> objects.
+     * Returns all the values of the specified request header as an <code>Enumeration</code> of <code>String</code>
+     * objects.
      * <p/>
-     * <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/>
-     * <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
+     * <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/>
+     * <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
      */
     Enumeration<String> 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
+     * 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/>
-     * <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
-     * @throws NumberFormatException If the header value
-     *                               can't be converted
-     *                               to an <code>int</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
+     * @throws NumberFormatException
+     *             If the header value can't be converted to an <code>int</code>
      */
     int getIntHeader(String name);
 
     /**
-     * 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 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
      */
     String getMethod();
 
     /**
-     * @param name part name
+     * @param name
+     *            part name
      * @return named part
-     * @throws java.io.IOException if something IO related goes wrong
-     * @throws javax.servlet.ServletException if something goes wrong
+     * @throws java.io.IOException
+     *             if something IO related goes wrong
+     * @throws javax.servlet.ServletException
+     *             if something goes wrong
      * @since 3.0
      */
     Part getPart(String name) throws IOException, ServletException;
 
     /**
      * @return all the parts
-     * @throws java.io.IOException if something IO related goes wrong
-     * @throws javax.servlet.ServletException if something goes wrong
+     * @throws java.io.IOException
+     *             if something IO related goes wrong
+     * @throws javax.servlet.ServletException
+     *             if something goes wrong
      * @since 3.0
      */
     Collection<Part> getParts() throws IOException, ServletException;
 
     /**
-     * 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/>
-     * <p>This method returns <code>null</code> if there
-     * was no extra path information.
-     * <p/>
-     * <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 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/>
+     * <p>
+     * This method returns <code>null</code> if there was no extra path information.
+     * <p/>
+     * <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
      */
     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/>
-     * <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).
+     * 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/>
+     * <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).
      * <p/>
      * 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
+     * 
+     * @return a <code>String</code> specifying the real path, or <code>null</code> if the URL does not have any extra
+     *         path information
      */
     String getPathTranslated();
 
     /**
-     * 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 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.
      */
     String getQueryString();
 
     /**
-     * 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 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
      */
     String getRemoteUser();
 
     /**
-     * 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
+     * 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
      */
     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:
+     * 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:
      * <p/>
      * <p/>
      * <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
+     * <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/>
-     * <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
+     * <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
      */
     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/>
-     * <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/>
-     * <p>This method is useful for creating redirect messages
-     * and for reporting errors.
-     *
-     * @return a <code>StringBuffer</code> object containing
-     *         the reconstructed URL
+     * 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/>
+     * <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/>
+     * <p>
+     * This method is useful for creating redirect messages and for reporting errors.
+     * 
+     * @return a <code>StringBuffer</code> object containing the reconstructed URL
      */
     StringBuffer 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/>
-     * <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 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/>
+     * <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.
      */
     String getServletPath();
 
     /**
-     * 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
+     * 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)
      */
     HttpSession getSession();
 
     /**
-     * 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/>
-     * <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/>
-     * <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
+     * 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/>
+     * <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/>
+     * <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()
      */
     HttpSession getSession(boolean create);
 
     /**
-     * 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 <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
      */
     java.security.Principal getUserPrincipal();
 
     /**
      * 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>
+     * 
+     * @return <code>true</code> if the session ID came in as a cookie; otherwise, <code>false</code>
      * @see #getSession
      */
     boolean isRequestedSessionIdFromCookie();
 
     /**
-     * @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.
      */
     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>
+     * 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
      */
     boolean isRequestedSessionIdFromURL();
 
     /**
      * 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;
+     * 
+     * @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
@@ -495,33 +421,46 @@ public interface HttpServletRequest exte
     boolean isRequestedSessionIdValid();
 
     /**
-     * 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 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
      */
     boolean isUserInRole(String role);
 
     /**
-     * @param username username
-     * @param password password
+     * @param username
+     *            username
+     * @param password
+     *            password
      * @since 3.0
-     * @throws javax.servlet.ServletException if username/password authentication not supported,
-     * if a user has already been established, or if authentication fails.
+     * @throws javax.servlet.ServletException
+     *             if username/password authentication not supported, if a user has already been established, or if
+     *             authentication fails.
      */
     void login(String username, String password) throws ServletException;
 
     /**
      * @since 3.0
-     * @throws javax.servlet.ServletException if logout fails
+     * @throws javax.servlet.ServletException
+     *             if logout fails
      */
     void logout() throws ServletException;
 
+    /**
+     * Create an instance of HttpUpgradeHandler for an given class and uses it for the http protocol upgrade processing.
+     * 
+     * @param handlerClass
+     *            The HttpUpgradeHandler class used for the upgrade.
+     * @return an instance of the HttpUpgradeHandler
+     * @throws IOException
+     *             if an I/O error occurred during the upgrade
+     * @throws ServletException
+     *             if the given handlerClass fails to be instantiated
+     */
+    <T extends HttpUpgradeHandler> T upgrade(Class<T> handlerClass) throws IOException, ServletException;
 }

Modified: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpServletRequestWrapper.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpServletRequestWrapper.java?rev=1491469&r1=1490867&r2=1491469&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpServletRequestWrapper.java (original)
+++ geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpServletRequestWrapper.java Mon Jun 10 14:37:57 2013
@@ -60,6 +60,16 @@ public class HttpServletRequestWrapper e
     }
 
     /**
+     * The default behavior of this method is to return changeSessionId() on the wrapped request object.
+     * @return the new session id
+     * @since Servlet 3.1
+     */
+    @Override
+    public String changeSessionId() {
+        return getHttpServletRequest().changeSessionId();
+    }
+
+    /**
      * The default behavior of this method is to return getAuthType()
      * on the wrapped request object.
      */
@@ -279,4 +289,16 @@ public class HttpServletRequestWrapper e
         return getHttpServletRequest().isRequestedSessionIdFromUrl();
     }
 
+    /**
+     * Create an instance of HttpUpgradeHandler for an given class and uses it for the http protocol upgrade processing.
+     * @param handlerClass - The HttpUpgradeHandler class used for the upgrade.
+     * @return an instance of the HttpUpgradeHandler
+     * @throws IOException - if an I/O error occurred during the upgrade
+     * @throws ServletException - if the given handlerClass fails to be instantiated
+     * @since Servlet 3.1
+     * @see HttpUpgradeHandler, WebConnection
+     */
+    public <T extends HttpUpgradeHandler> T upgrade(Class<T> handlerClass) throws IOException, ServletException {
+        return getHttpServletRequest().upgrade(handlerClass);
+    }
 }

Added: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpSessionIdListener.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpSessionIdListener.java?rev=1491469&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpSessionIdListener.java (added)
+++ geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpSessionIdListener.java Mon Jun 10 14:37:57 2013
@@ -0,0 +1,47 @@
+/*
+ * 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;
+
+/**
+ * Interface for receiving notification events about HttpSession id changes.
+ * <p/>
+ * In order to receive these notification events, the implementation class must be either declared in the deployment
+ * descriptor of the web application, annotated with WebListener, or registered via one of the addListener methods
+ * defined on ServletContext.
+ * <p/>
+ * The order in which implementations of this interface are invoked is unspecified.
+ * 
+ * @since Servlet 3.1
+ */
+public interface HttpSessionIdListener extends EventListener {
+
+    /**
+     * Receives notification that session id has been changed in a session.
+     * 
+     * @param event
+     *            the HttpSessionBindingEvent containing the session and the name and (old) value of the attribute that
+     *            was replaced
+     * @param oldSessionId
+     *            the old session id
+     */
+    void sessionIdChanged(HttpSessionEvent event, String oldSessionId);
+}

Propchange: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpSessionIdListener.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpSessionIdListener.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpSessionIdListener.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpUpgradeHandler.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpUpgradeHandler.java?rev=1491469&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpUpgradeHandler.java (added)
+++ geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpUpgradeHandler.java Mon Jun 10 14:37:57 2013
@@ -0,0 +1,44 @@
+/*
+ * 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 interface encapsulates the upgrade protocol processing. A HttpUpgradeHandler implementation would allow the
+ * servlet container to communicate with it.
+ * 
+ * @since Servlet 3.1
+ */
+public interface HttpUpgradeHandler {
+
+    /**
+     * It is called when the client is disconnected.
+     */
+    void destroy();
+
+    /**
+     * It is called once the HTTP Upgrade process has been completed and the upgraded connection is ready to start using
+     * the new protocol.
+     * 
+     * @param wc
+     *            - the WebConnection object associated to this upgrade request
+     */
+    void init(WebConnection wc);
+}

Propchange: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpUpgradeHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpUpgradeHandler.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/HttpUpgradeHandler.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/Part.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/Part.java?rev=1491469&r1=1490867&r2=1491469&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/Part.java (original)
+++ geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/Part.java Mon Jun 10 14:37:57 2013
@@ -17,7 +17,6 @@
  * under the License.
  */
 
-
 package javax.servlet.http;
 
 import java.io.IOException;
@@ -32,22 +31,102 @@ import java.util.Collection;
  */
 public interface Part {
 
+    /**
+     * Deletes the underlying storage for a file item, including deleting any associated temporary disk file.
+     * 
+     * @throws IOException
+     *             if an error occurs.
+     */
     void delete() throws IOException;
 
+    /**
+     * Gets the content type of this part.
+     * 
+     * @return The content type of this part.
+     */
     String getContentType();
 
+    /**
+     * Returns the value of the specified mime header as a String. If the Part did not include a header of the specified
+     * name, this method returns null. If there are multiple headers with the same name, this method returns the first
+     * header in the part. The header name is case insensitive. You can use this method with any request header.
+     * 
+     * @param headerName
+     *            a String specifying the header name
+     * @return a String containing the value of the requested header, or null if the part does not have a header of that
+     *         name
+     */
     String getHeader(String headerName);
 
+    /**
+     * Gets the header names of this Part.
+     * <p>
+     * Some servlet containers do not allow servlets to access headers using this method, in which case this method
+     * returns null
+     * <p/>
+     * Any changes to the returned Collection must not affect this Part.
+     * 
+     * @return a (possibly empty) Collection of the header names of this Part
+     */
     Collection<String> getHeaderNames();
 
+    /**
+     * Gets the values of the Part header with the given name.
+     * <p/>
+     * Any changes to the returned Collection must not affect this Part.
+     * <p/>
+     * Part header names are case insensitive.
+     * 
+     * @param headerNamethe
+     *            header name whose values to return
+     * @return a (possibly empty) Collection of the values of the header with the given name
+     */
     Collection<String> getHeaders(String headerName);
 
+    /**
+     * Gets the content of this part as an InputStream
+     * 
+     * @return The content of this part as an InputStream
+     * @throws IOException
+     *             If an error occurs in retrieving the contet as an InputStream
+     */
     InputStream getInputStream() throws IOException;
 
+    /**
+     * Gets the name of this part
+     * 
+     * @return The name of this part as a String
+     */
     String getName();
 
+    /**
+     * Returns the size of this fille.
+     * 
+     * @return a long specifying the size of this part, in bytes.
+     */
     long getSize();
 
+    /**
+     * Gets the file name specified by the client.
+     * 
+     * @return the submitted file name
+     * @since Servlet 3.1
+     */
+    String getSubmittedFileName();
+
+    /**
+     * A convenience method to write this uploaded item to disk.
+     * <p/>
+     * This method is not guaranteed to succeed if called more than once for the same part. This allows a particular
+     * implementation to use, for example, file renaming, where possible, rather than copying all of the underlying
+     * data, thus gaining a significant performance benefit.
+     * 
+     * @param fileName
+     *            the name of the file to which the stream will be written. The file is created relative to the location
+     *            as specified in the MultipartConfig
+     * @throws IOException
+     *             if an error occurs.
+     */
     void write(String fileName) throws IOException;
-
+    
 }

Added: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/WebConnection.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/WebConnection.java?rev=1491469&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/WebConnection.java (added)
+++ geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/WebConnection.java Mon Jun 10 14:37:57 2013
@@ -0,0 +1,53 @@
+/*
+ * 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;
+
+import javax.servlet.ServletInputStream;
+import javax.servlet.ServletOutputStream;
+
+/**
+ * 
+ * This interface encapsulates the connection for an upgrade request. It allows the protocol handler to send service
+ * requests and status queries to the container.
+ * 
+ * @since Servlet 3.1
+ */
+public interface WebConnection extends AutoCloseable {
+
+    /**
+     * Returns an input stream for this web connection.
+     * 
+     * @return a ServletInputStream for reading binary data
+     * @throws IOException
+     *             if an I/O error occurs
+     */
+    ServletInputStream getInputStream() throws IOException;
+
+    /**
+     * Returns an output stream for this web connection.
+     * 
+     * @return a ServletOutputStream for writing binary data
+     * @throws IOException
+     *             if an I/O error occurs
+     */
+    ServletOutputStream getOutputStream() throws IOException;
+}

Propchange: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/WebConnection.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/WebConnection.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/specs/trunk/geronimo-servlet_3.1_spec/src/main/java/javax/servlet/http/WebConnection.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain



Mime
View raw message