You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kk...@apache.org on 2014/06/03 14:18:17 UTC
svn commit: r1599505 - in /tomcat/tc7.0.x/trunk: ./
java/org/apache/coyote/ajp/AbstractAjpProcessor.java
java/org/apache/coyote/ajp/AjpAprProcessor.java
java/org/apache/coyote/ajp/AjpNioProcessor.java
java/org/apache/coyote/ajp/AjpProcessor.java
Author: kkolinko
Date: Tue Jun 3 12:18:17 2014
New Revision: 1599505
URL: http://svn.apache.org/r1599505
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=56582
Convert implementations of ActionHook.action(..) to use switch(enum) operator.
Part 1/2: AJP processors.
It is backport of r1599395 from tomcat/trunk.
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java
tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java
tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.java
tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpProcessor.java
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
Merged /tomcat/trunk:r1599395
Modified: tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java?rev=1599505&r1=1599504&r2=1599505&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java Tue Jun 3 12:18:17 2014
@@ -319,8 +319,8 @@ public abstract class AbstractAjpProcess
@Override
public final void action(ActionCode actionCode, Object param) {
- if (actionCode == ActionCode.COMMIT) {
-
+ switch (actionCode) {
+ case COMMIT: {
if (response.isCommitted())
return;
@@ -338,9 +338,9 @@ public abstract class AbstractAjpProcess
// Set error flag
error = true;
}
-
- } else if (actionCode == ActionCode.CLIENT_FLUSH) {
-
+ break;
+ }
+ case CLIENT_FLUSH: {
if (!response.isCommitted()) {
// Validate and write response headers
try {
@@ -358,16 +358,19 @@ public abstract class AbstractAjpProcess
// Set error flag
error = true;
}
-
- } else if (actionCode == ActionCode.IS_ERROR) {
+ break;
+ }
+ case IS_ERROR: {
((AtomicBoolean) param).set(error);
-
- } else if (actionCode == ActionCode.DISABLE_SWALLOW_INPUT) {
+ break;
+ }
+ case DISABLE_SWALLOW_INPUT: {
// TODO: Do not swallow request input but
// make sure we are closing the connection
error = true;
-
- } else if (actionCode == ActionCode.CLOSE) {
+ break;
+ }
+ case CLOSE: {
// Close
// End the processing of the current request, and stop any further
// transactions with the client
@@ -378,9 +381,9 @@ public abstract class AbstractAjpProcess
// Set error flag
error = true;
}
-
- } else if (actionCode == ActionCode.REQ_SSL_ATTRIBUTE ) {
-
+ break;
+ }
+ case REQ_SSL_ATTRIBUTE: {
if (!certificates.isNull()) {
ByteChunk certData = certificates.getByteChunk();
X509Certificate jsseCerts[] = null;
@@ -419,9 +422,9 @@ public abstract class AbstractAjpProcess
}
request.setAttribute(SSLSupport.CERTIFICATE_KEY, jsseCerts);
}
-
- } else if (actionCode == ActionCode.REQ_HOST_ATTRIBUTE) {
-
+ break;
+ }
+ case REQ_HOST_ATTRIBUTE: {
// Get remote host name using a DNS resolution
if (request.remoteHost().isNull()) {
try {
@@ -431,14 +434,14 @@ public abstract class AbstractAjpProcess
// Ignore
}
}
-
- } else if (actionCode == ActionCode.REQ_LOCAL_ADDR_ATTRIBUTE) {
-
+ break;
+ }
+ case REQ_LOCAL_ADDR_ATTRIBUTE: {
// Copy from local name for now, which should simply be an address
request.localAddr().setString(request.localName().toString());
-
- } else if (actionCode == ActionCode.REQ_SET_BODY_REPLAY) {
-
+ break;
+ }
+ case REQ_SET_BODY_REPLAY: {
// Set the given bytes as the content
ByteChunk bc = (ByteChunk) param;
int length = bc.getLength();
@@ -448,35 +451,60 @@ public abstract class AbstractAjpProcess
empty = false;
replay = true;
endOfStream = false;
-
- } else if (actionCode == ActionCode.ASYNC_START) {
+ break;
+ }
+ case ASYNC_START: {
asyncStateMachine.asyncStart((AsyncContextCallback) param);
// Async time out is based on SocketWrapper access time
getSocketWrapper().access();
- } else if (actionCode == ActionCode.ASYNC_DISPATCHED) {
+ break;
+ }
+ case ASYNC_DISPATCHED: {
asyncStateMachine.asyncDispatched();
- } else if (actionCode == ActionCode.ASYNC_TIMEOUT) {
+ break;
+ }
+ case ASYNC_TIMEOUT: {
AtomicBoolean result = (AtomicBoolean) param;
result.set(asyncStateMachine.asyncTimeout());
- } else if (actionCode == ActionCode.ASYNC_RUN) {
+ break;
+ }
+ case ASYNC_RUN: {
asyncStateMachine.asyncRun((Runnable) param);
- } else if (actionCode == ActionCode.ASYNC_ERROR) {
+ break;
+ }
+ case ASYNC_ERROR: {
asyncStateMachine.asyncError();
- } else if (actionCode == ActionCode.ASYNC_IS_STARTED) {
+ break;
+ }
+ case ASYNC_IS_STARTED: {
((AtomicBoolean) param).set(asyncStateMachine.isAsyncStarted());
- } else if (actionCode == ActionCode.ASYNC_IS_DISPATCHING) {
+ break;
+ }
+ case ASYNC_IS_DISPATCHING: {
((AtomicBoolean) param).set(asyncStateMachine.isAsyncDispatching());
- } else if (actionCode == ActionCode.ASYNC_IS_ASYNC) {
+ break;
+ }
+ case ASYNC_IS_ASYNC: {
((AtomicBoolean) param).set(asyncStateMachine.isAsync());
- } else if (actionCode == ActionCode.ASYNC_IS_TIMINGOUT) {
+ break;
+ }
+ case ASYNC_IS_TIMINGOUT: {
((AtomicBoolean) param).set(asyncStateMachine.isAsyncTimingOut());
- } else if (actionCode == ActionCode.ASYNC_IS_ERROR) {
+ break;
+ }
+ case ASYNC_IS_ERROR: {
((AtomicBoolean) param).set(asyncStateMachine.isAsyncError());
- } else if (actionCode == ActionCode.UPGRADE_TOMCAT) {
+ break;
+ }
+ case UPGRADE_TOMCAT: {
// HTTP connections only. Unsupported for AJP.
// NOOP
- } else {
+ break;
+ }
+ default: {
actionInternal(actionCode, param);
+ break;
+ }
}
}
Modified: tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java?rev=1599505&r1=1599504&r2=1599505&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java Tue Jun 3 12:18:17 2014
@@ -249,24 +249,30 @@ public class AjpAprProcessor extends Abs
* @param param Action parameter
*/
@Override
+ @SuppressWarnings("incomplete-switch") // Other cases are handled by action()
protected void actionInternal(ActionCode actionCode, Object param) {
- if (actionCode == ActionCode.ASYNC_COMPLETE) {
+ switch (actionCode) {
+ case ASYNC_COMPLETE: {
if (asyncStateMachine.asyncComplete()) {
((AprEndpoint)endpoint).processSocketAsync(this.socketWrapper,
SocketStatus.OPEN_READ);
}
-
- } else if (actionCode == ActionCode.ASYNC_SETTIMEOUT) {
+ break;
+ }
+ case ASYNC_SETTIMEOUT: {
if (param == null) return;
long timeout = ((Long)param).longValue();
socketWrapper.setTimeout(timeout);
-
- } else if (actionCode == ActionCode.ASYNC_DISPATCH) {
+ break;
+ }
+ case ASYNC_DISPATCH: {
if (asyncStateMachine.asyncDispatch()) {
((AprEndpoint)endpoint).processSocketAsync(this.socketWrapper,
SocketStatus.OPEN_READ);
}
+ break;
+ }
}
}
Modified: tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.java?rev=1599505&r1=1599504&r2=1599505&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.java Tue Jun 3 12:18:17 2014
@@ -241,26 +241,32 @@ public class AjpNioProcessor extends Abs
* @param param Action parameter
*/
@Override
+ @SuppressWarnings("incomplete-switch") // Other cases are handled by action()
protected void actionInternal(ActionCode actionCode, Object param) {
- if (actionCode == ActionCode.ASYNC_COMPLETE) {
+ switch (actionCode) {
+ case ASYNC_COMPLETE: {
if (asyncStateMachine.asyncComplete()) {
((NioEndpoint)endpoint).processSocket(this.socketWrapper.getSocket(),
SocketStatus.OPEN_READ, false);
}
-
- } else if (actionCode == ActionCode.ASYNC_SETTIMEOUT) {
+ break;
+ }
+ case ASYNC_SETTIMEOUT: {
if (param == null) return;
long timeout = ((Long)param).longValue();
final KeyAttachment ka =
(KeyAttachment)socketWrapper.getSocket().getAttachment(false);
ka.setTimeout(timeout);
-
- } else if (actionCode == ActionCode.ASYNC_DISPATCH) {
+ break;
+ }
+ case ASYNC_DISPATCH: {
if (asyncStateMachine.asyncDispatch()) {
((NioEndpoint)endpoint).processSocket(this.socketWrapper.getSocket(),
SocketStatus.OPEN_READ, true);
}
+ break;
+ }
}
}
Modified: tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpProcessor.java?rev=1599505&r1=1599504&r2=1599505&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpProcessor.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpProcessor.java Tue Jun 3 12:18:17 2014
@@ -259,25 +259,31 @@ public class AjpProcessor extends Abstra
* @param param Action parameter
*/
@Override
+ @SuppressWarnings("incomplete-switch") // Other cases are handled by action()
protected void actionInternal(ActionCode actionCode, Object param) {
- if (actionCode == ActionCode.ASYNC_COMPLETE) {
+ switch (actionCode) {
+ case ASYNC_COMPLETE: {
if (asyncStateMachine.asyncComplete()) {
((JIoEndpoint)endpoint).processSocketAsync(this.socketWrapper,
SocketStatus.OPEN_READ);
}
-
- } else if (actionCode == ActionCode.ASYNC_SETTIMEOUT) {
+ break;
+ }
+ case ASYNC_SETTIMEOUT: {
if (param == null) return;
long timeout = ((Long)param).longValue();
// if we are not piggy backing on a worker thread, set the timeout
socketWrapper.setTimeout(timeout);
-
- } else if (actionCode == ActionCode.ASYNC_DISPATCH) {
+ break;
+ }
+ case ASYNC_DISPATCH: {
if (asyncStateMachine.asyncDispatch()) {
((JIoEndpoint)endpoint).processSocketAsync(this.socketWrapper,
SocketStatus.OPEN_READ);
}
+ break;
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org