Author: markt
Date: Mon Apr 29 19:49:24 2013
New Revision: 1477301
URL: http://svn.apache.org/r1477301
Log:
Remove unnecessary ActionCode.SET_READ_LISTENER
Add missing tests when setting a non-blocking ReadListener and use i18n for all
exception messages if a test fails
Modified:
tomcat/trunk/java/org/apache/catalina/connector/InputBuffer.java
tomcat/trunk/java/org/apache/catalina/connector/LocalStrings.properties
tomcat/trunk/java/org/apache/coyote/ActionCode.java
tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
Modified: tomcat/trunk/java/org/apache/catalina/connector/InputBuffer.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/InputBuffer.java?rev=1477301&r1=1477300&r2=1477301&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/InputBuffer.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/InputBuffer.java Mon Apr 29
19:49:24 2013
@@ -22,6 +22,7 @@ import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.util.HashMap;
+import java.util.concurrent.atomic.AtomicBoolean;
import javax.servlet.ReadListener;
@@ -252,9 +253,25 @@ public class InputBuffer extends Reader
private volatile ReadListener listener;
public void setReadListener(ReadListener listener) {
- if (getReadListener()!=null) throw new IllegalStateException("Read
listener already set.");
+ if (listener == null) {
+ throw new NullPointerException(
+ sm.getString("inputBuffer.nullListener"));
+ }
+ if (getReadListener() != null) {
+ throw new IllegalStateException(
+ sm.getString("inputBuffer.listenerSet"));
+ }
+ // Note: This class is not used for HTTP upgrade so only need to test
+ // for async
+ AtomicBoolean result = new AtomicBoolean(false);
+ coyoteRequest.action(ActionCode.ASYNC_IS_ASYNC, result);
+ if (!result.get()) {
+ throw new IllegalStateException(
+ sm.getString("inputBuffer.notAsync"));
+ }
+
this.listener = listener;
- coyoteRequest.action(ActionCode.SET_READ_LISTENER, listener);
+ coyoteRequest.setReadListener(listener);
}
Modified:
tomcat/trunk/java/org/apache/catalina/connector/LocalStrings.properties
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/LocalStrings.properties?rev=1477301&r1=1477300&r2=1477301&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/LocalStrings.properties
(original)
+++ tomcat/trunk/java/org/apache/catalina/connector/LocalStrings.properties Mon
Apr 29 19:49:24 2013
@@ -13,10 +13,12 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+cometEvent.nullRequest=The event object has been recycled and is no longer
associated with a request
+
+coyoteAdapter.parsePathParam=Unable to parse the path parameters using
encoding [{0}]. The path parameters in the URL will be ignored.
+coyoteAdapter.debug=The variable [{0}] has value [{1}]
+coyoteAdapter.accesslogFail=Exception while attempting to add an entry to the
access log
-#
-# CoyoteConnector
-#
coyoteConnector.invalidPort=The connector cannot start since the specified
port value of [{0}] is invalid
coyoteConnector.protocolHandlerDestroyFailed=Protocol handler destroy failed
coyoteConnector.protocolHandlerInitializationFailed=Protocol handler
initialization failed
@@ -27,28 +29,9 @@ coyoteConnector.protocolHandlerPauseFail
coyoteConnector.protocolHandlerResumeFailed=Protocol handler resume failed
coyoteConnector.parseBodyMethodNoTrace=TRACE method MUST NOT include an entity
(see RFC 2616 Section 9.6)
-#
-# CoyoteAdapter
-#
-coyoteAdapter.parsePathParam=Unable to parse the path parameters using
encoding [{0}]. The path parameters in the URL will be ignored.
-coyoteAdapter.debug=The variable [{0}] has value [{1}]
-coyoteAdapter.accesslogFail=Exception while attempting to add an entry to the
access log
-
-#
-# CoyoteResponse
-#
-coyoteResponse.getOutputStream.ise=getWriter() has already been called for
this response
-coyoteResponse.getWriter.ise=getOutputStream() has already been called for
this response
-coyoteResponse.reset.ise=Cannot call reset() after response has been committed
-coyoteResponse.resetBuffer.ise=Cannot reset buffer after response has been
committed
-coyoteResponse.sendError.ise=Cannot call sendError() after the response has
been committed
-coyoteResponse.sendRedirect.ise=Cannot call sendRedirect() after the response
has been committed
-coyoteResponse.sendRedirect.note=<html><body><p>Redirecting to <a
href="{0}">{0}</a></p></body></html>
-coyoteResponse.setBufferSize.ise=Cannot change buffer size after data has been
written
+inputBuffer.listenerSet=The non-blocking read listener has already been set
+inputBuffer.nullListener=The listener passed to setReadListener() may not be
null
-#
-# CoyoteRequest
-#
coyoteRequest.getInputStream.ise=getReader() has already been called for this
request
coyoteRequest.getReader.ise=getInputStream() has already been called for this
request
coyoteRequest.sessionCreateCommitted=Cannot create a session after the
response has been committed
@@ -65,10 +48,20 @@ coyoteRequest.sessionEndAccessFail=Excep
coyoteRequest.sendfileNotCanonical=Unable to determine canonical name of file
[{0}] specified for use with sendfile
coyoteRequest.maxPostSizeExceeded=The multi-part request contained parameter
data (excluding uploaded files) that exceeded the limit for maxPostSize set on
the associated connector
-requestFacade.nullRequest=The request object has been recycled and is no
longer associated with this facade
+coyoteResponse.getOutputStream.ise=getWriter() has already been called for
this response
+coyoteResponse.getWriter.ise=getOutputStream() has already been called for
this response
+coyoteResponse.reset.ise=Cannot call reset() after response has been committed
+coyoteResponse.resetBuffer.ise=Cannot reset buffer after response has been
committed
+coyoteResponse.sendError.ise=Cannot call sendError() after the response has
been committed
+coyoteResponse.sendRedirect.ise=Cannot call sendRedirect() after the response
has been committed
+coyoteResponse.sendRedirect.note=<html><body><p>Redirecting to <a
href="{0}">{0}</a></p></body></html>
+coyoteResponse.setBufferSize.ise=Cannot change buffer size after data has been
written
-responseFacade.nullResponse=The response object has been recycled and is no
longer associated with this facade
+inputBuffer.listenerSet=The non-blocking read listener has already been set
+inputBuffer.notAsync=It is only valid to switch to non-blocking IO within
async processing or HTTP upgrade processing
+inputBuffer.nullListener=The listener passed to setReadListener() may not be
null
+inputBuffer.streamClosed=Stream closed
-cometEvent.nullRequest=The event object has been recycled and is no longer
associated with a request
+requestFacade.nullRequest=The request object has been recycled and is no
longer associated with this facade
-inputBuffer.streamClosed=Stream closed
+responseFacade.nullResponse=The response object has been recycled and is no
longer associated with this facade
Modified: tomcat/trunk/java/org/apache/coyote/ActionCode.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ActionCode.java?rev=1477301&r1=1477300&r2=1477301&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ActionCode.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ActionCode.java Mon Apr 29 19:49:24 2013
@@ -206,11 +206,6 @@ public enum ActionCode {
UPGRADE,
/**
- * Callback to trigger setting the ReadListener
- */
- SET_READ_LISTENER,
-
- /**
* Callback to trigger setting the WriteListener
*/
SET_WRITE_LISTENER,
Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java?rev=1477301&r1=1477300&r2=1477301&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Mon Apr
29 19:49:24 2013
@@ -23,7 +23,6 @@ import java.nio.channels.SelectionKey;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.net.ssl.SSLEngine;
-import javax.servlet.ReadListener;
import javax.servlet.RequestDispatcher;
import javax.servlet.WriteListener;
@@ -600,9 +599,6 @@ public class Http11NioProcessor extends
if (asyncStateMachine.asyncDispatch()) {
((NioEndpoint)endpoint).dispatchForEvent(this.socket.getSocket(),SocketStatus.OPEN_READ,
true);
}
- } else if (actionCode == ActionCode.SET_READ_LISTENER) {
- ReadListener listener = (ReadListener)param;
- request.setReadListener(listener);
} else if (actionCode == ActionCode.SET_WRITE_LISTENER) {
WriteListener listener = (WriteListener)param;
response.setWriteListener(listener);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]