[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