Author: markt Date: Mon Apr 29 20:01:59 2013 New Revision: 1477306 URL: http://svn.apache.org/r1477306 Log: Simplify 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/CoyoteOutputStream.java tomcat/trunk/java/org/apache/catalina/connector/LocalStrings.properties tomcat/trunk/java/org/apache/catalina/connector/OutputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteOutputStream.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CoyoteOutputStream.java?rev=1477306&r1=1477305&r2=1477306&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/connector/CoyoteOutputStream.java (original) +++ tomcat/trunk/java/org/apache/catalina/connector/CoyoteOutputStream.java Mon Apr 29 20:01:59 2013 @@ -119,7 +119,5 @@ public class CoyoteOutputStream public void setWriteListener(WriteListener listener) { ob.setWriteListener(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=1477306&r1=1477305&r2=1477306&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/connector/LocalStrings.properties (original) +++ tomcat/trunk/java/org/apache/catalina/connector/LocalStrings.properties Mon Apr 29 20:01:59 2013 @@ -62,6 +62,10 @@ inputBuffer.notAsync=It is only valid to inputBuffer.nullListener=The listener passed to setReadListener() may not be null inputBuffer.streamClosed=Stream closed +outputBuffer.listenerSet=The non-blocking write listener has already been set +outputBuffer.notAsync=It is only valid to switch to non-blocking IO within async processing or HTTP upgrade processing +outputBuffer.nullListener=The listener passed to setWriteListener() may not be null + requestFacade.nullRequest=The request object has been recycled and is no longer associated with this facade responseFacade.nullResponse=The response object has been recycled and is no longer associated with this facade Modified: tomcat/trunk/java/org/apache/catalina/connector/OutputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/OutputBuffer.java?rev=1477306&r1=1477305&r2=1477306&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/connector/OutputBuffer.java (original) +++ tomcat/trunk/java/org/apache/catalina/connector/OutputBuffer.java Mon Apr 29 20:01:59 2013 @@ -33,6 +33,7 @@ import org.apache.coyote.Response; import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.buf.C2BConverter; import org.apache.tomcat.util.buf.CharChunk; +import org.apache.tomcat.util.res.StringManager; /** @@ -46,9 +47,11 @@ import org.apache.tomcat.util.buf.CharCh public class OutputBuffer extends Writer implements ByteChunk.ByteOutputChannel, CharChunk.CharOutputChannel { + private static final StringManager sm = + StringManager.getManager(Constants.Package); - // -------------------------------------------------------------- Constants + // -------------------------------------------------------------- Constants public static final String DEFAULT_ENCODING = org.apache.coyote.Constants.DEFAULT_CHARACTER_ENCODING; @@ -57,7 +60,6 @@ public class OutputBuffer extends Writer // ----------------------------------------------------- Instance Variables - /** * The byte buffer. */ @@ -664,9 +666,26 @@ public class OutputBuffer extends Writer private volatile WriteListener listener; public void setWriteListener(WriteListener listener) { - if (getWriteListener()!=null) throw new IllegalStateException("Write listener already set."); + if (listener == null) { + throw new NullPointerException( + sm.getString("outputBuffer.nullListener")); + } + if (getWriteListener() != null) { + throw new IllegalStateException( + sm.getString("outputBuffer.listenerSet")); + } + // Note: This class is not used for HTTP upgrade so only need to test + // for async + AtomicBoolean result = new AtomicBoolean(false); + coyoteResponse.action(ActionCode.ASYNC_IS_ASYNC, result); + if (!result.get()) { + throw new IllegalStateException( + sm.getString("outputBuffer.notAsync")); + } + this.listener = listener; - coyoteResponse.action(ActionCode.SET_WRITE_LISTENER, listener); + coyoteResponse.setWriteListener(listener); + coyoteResponse.action(ActionCode.SET_WRITE_LISTENER, null); } public WriteListener getWriteListener() { 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=1477306&r1=1477305&r2=1477306&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Mon Apr 29 20:01:59 2013 @@ -24,7 +24,6 @@ import java.util.concurrent.atomic.Atomi import javax.net.ssl.SSLEngine; import javax.servlet.RequestDispatcher; -import javax.servlet.WriteListener; import org.apache.coyote.ActionCode; import org.apache.coyote.RequestInfo; @@ -600,9 +599,7 @@ public class Http11NioProcessor extends ((NioEndpoint)endpoint).dispatchForEvent(this.socket.getSocket(),SocketStatus.OPEN_READ, true); } } else if (actionCode == ActionCode.SET_WRITE_LISTENER) { - WriteListener listener = (WriteListener)param; - response.setWriteListener(listener); - outputBuffer.setBlocking(listener==null); + outputBuffer.setBlocking(false); } else if (actionCode == ActionCode.NB_READ_INTEREST) { if (socket==null || socket.getSocket().getAttachment(false)==null) { return; --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org