[jboss-cvs] JBossRemoting/src/main/org/jboss/remoting/transport/coyote ...
Ron Sigal
ron_sigal at yahoo.com
Thu Sep 21 03:31:02 EDT 2006
User: rsigal
Date: 06/09/21 03:31:02
Modified: src/main/org/jboss/remoting/transport/coyote
CoyoteInvoker.java
Log:
JBREM-601: If client is HTTPClientInvoker, behaves like other invokers: wraps response in InvocationResponse.
Revision Changes Path
1.20 +36 -3 JBossRemoting/src/main/org/jboss/remoting/transport/coyote/CoyoteInvoker.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: CoyoteInvoker.java
===================================================================
RCS file: /cvsroot/jboss/JBossRemoting/src/main/org/jboss/remoting/transport/coyote/CoyoteInvoker.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- CoyoteInvoker.java 21 Sep 2006 04:43:06 -0000 1.19
+++ CoyoteInvoker.java 21 Sep 2006 07:31:02 -0000 1.20
@@ -27,6 +27,7 @@
import org.apache.tomcat.util.buf.MessageBytes;
import org.apache.tomcat.util.http.MimeHeaders;
import org.jboss.remoting.InvocationRequest;
+import org.jboss.remoting.InvocationResponse;
import org.jboss.remoting.InvokerLocator;
import org.jboss.remoting.Version;
import org.jboss.remoting.marshal.Marshaller;
@@ -69,6 +70,9 @@
protected String URIEncoding = null;
+ /** Indicates if client is HTTPClientInvoker */
+ protected boolean isRemotingUserAgent;
+
public CoyoteInvoker(InvokerLocator locator)
{
super(locator);
@@ -278,6 +282,14 @@
int version = getVersion(request);
+ // Check if client is HTTPClientInvoker
+ Object userAgentObj = request.get(HTTPMetadataConstants.REMOTING_USER_AGENT);
+ if (userAgentObj != null)
+ {
+ String userAgent = (String) userAgentObj;
+ isRemotingUserAgent = userAgent.startsWith("JBossRemoting");
+ }
+
InvocationRequest invocationRequest = versionedRead(req, request, response, version);
// FIXME: OPTIONS method handling ?
@@ -294,8 +306,9 @@
}
//Start with response code of 204 (no content), then if is a return from handler, change to 200 (ok)
- int status = 204;
- String message = "No Content";
+ int status;
+ String message = "";
+
if(responseObject != null)
{
if(isError)
@@ -309,6 +322,19 @@
message = "OK";
}
}
+ else
+ {
+ if (isRemotingUserAgent)
+ {
+ status = 200;
+ message = "OK";
+ }
+ else
+ {
+ status = 204;
+ message = "No Content";
+ }
+ }
// extract response code/message if exists
Map responseMap = invocationRequest.getReturnPayload();
@@ -328,6 +354,13 @@
res.setStatus(status);
res.setMessage(message);
+ if (isRemotingUserAgent)
+ {
+ responseMap = ((ResponseMap) responseMap).getMap();
+ responseObject = new InvocationResponse(invocationRequest.getSessionId(),
+ responseObject, isError, responseMap);
+ }
+
if(responseObject != null)
{
versionedWrite(version, responseObject, req, res, response);
More information about the jboss-cvs-commits
mailing list