[jboss-remoting-commits] JBoss Remoting SVN: r5393 - in remoting2/branches/2.2/src/main/org/jboss/remoting: transport/coyote and 1 other directories.

jboss-remoting-commits at lists.jboss.org jboss-remoting-commits at lists.jboss.org
Wed Aug 26 15:46:44 EDT 2009


Author: ron.sigal at jboss.com
Date: 2009-08-26 15:46:43 -0400 (Wed, 26 Aug 2009)
New Revision: 5393

Modified:
   remoting2/branches/2.2/src/main/org/jboss/remoting/marshal/http/HTTPUnMarshaller.java
   remoting2/branches/2.2/src/main/org/jboss/remoting/transport/coyote/CoyoteInvoker.java
   remoting2/branches/2.2/src/main/org/jboss/remoting/transport/http/HTTPClientInvoker.java
   remoting2/branches/2.2/src/main/org/jboss/remoting/transport/http/HTTPMetadataConstants.java
Log:
JBREM-1145: Made use of new content type test optional.

Modified: remoting2/branches/2.2/src/main/org/jboss/remoting/marshal/http/HTTPUnMarshaller.java
===================================================================
--- remoting2/branches/2.2/src/main/org/jboss/remoting/marshal/http/HTTPUnMarshaller.java	2009-08-26 19:44:41 UTC (rev 5392)
+++ remoting2/branches/2.2/src/main/org/jboss/remoting/marshal/http/HTTPUnMarshaller.java	2009-08-26 19:46:43 UTC (rev 5393)
@@ -26,6 +26,7 @@
 import org.jboss.remoting.marshal.UnMarshaller;
 import org.jboss.remoting.marshal.serializable.SerializableUnMarshaller;
 import org.jboss.remoting.transport.http.HTTPMetadataConstants;
+import org.jboss.remoting.transport.web.WebUtil;
 
 import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
@@ -228,11 +229,56 @@
 
    private boolean isBinaryData(Map metadata) throws IOException
    {
+      String useRemotingContentType = (String) metadata.get(HTTPMetadataConstants.USE_REMOTING_CONTENT_TYPE);
+      if (Boolean.valueOf(useRemotingContentType).booleanValue())
+      {
+         return isBinaryDataNew(metadata);
+      }
+      else
+      {
+         return isBinaryDataOld(metadata);
+      }
+   }
+   
+   private boolean isBinaryDataOld(Map metadata) throws IOException
+   {
+      if (log.isTraceEnabled()) log.trace(this + " using isBinaryDataOld()");
       boolean isBinary = false;
 
       if(metadata != null)
       {
          // need to get the content type
+         Object value = metadata.get("Content-Type");
+         if(value == null)
+         {
+            value = metadata.get("content-type");
+         }
+         if(value != null)
+         {
+            if(value instanceof List)
+            {
+               List valueList = (List) value;
+               if(valueList != null && valueList.size() > 0)
+               {
+                  value = valueList.get(0);
+               }
+            }
+            isBinary = WebUtil.isBinary((String) value);
+         }
+      }
+      
+      if (log.isTraceEnabled()) log.trace(this + " isBinary: " + isBinary);
+      return isBinary;
+   }
+   
+   private boolean isBinaryDataNew(Map metadata) throws IOException
+   {
+      if (log.isTraceEnabled()) log.trace(this + " using isBinaryDataNew()");
+      boolean isBinary = true;
+      
+      if(metadata != null)
+      {
+         // need to get the content type
          String remotingContentType = null;
          Object o = metadata.get(HTTPMetadataConstants.REMOTING_CONTENT_TYPE);
          if (o instanceof List)
@@ -245,11 +291,29 @@
          }
          else 
          {
-            log.warn(this + " unrecognized remotingContentType: " + o);
+            o = metadata.get(HTTPMetadataConstants.REMOTING_CONTENT_TYPE_LC);
+            if (o instanceof List)
+            {
+               remotingContentType = (String) ((List) o).get(0);
+            }
+            else if (o instanceof String)
+            {
+               remotingContentType = (String) o;
+            }
+            else if (o != null)
+            {
+               log.debug(this + " unrecognized remotingContentType: " + o);
+            }  
          }
-
-         isBinary = HTTPMetadataConstants.REMOTING_CONTENT_TYPE_NON_STRING.equals(remotingContentType);
+         
+         if (log.isTraceEnabled()) log.trace(this + " remotingContentType: " + remotingContentType);
+         if (remotingContentType != null)
+         {
+            isBinary = HTTPMetadataConstants.REMOTING_CONTENT_TYPE_NON_STRING.equals(remotingContentType);
+         }
       }
+      
+      if (log.isTraceEnabled()) log.trace(this + " isBinary: " + isBinary);
       return isBinary;
    }
 

Modified: remoting2/branches/2.2/src/main/org/jboss/remoting/transport/coyote/CoyoteInvoker.java
===================================================================
--- remoting2/branches/2.2/src/main/org/jboss/remoting/transport/coyote/CoyoteInvoker.java	2009-08-26 19:44:41 UTC (rev 5392)
+++ remoting2/branches/2.2/src/main/org/jboss/remoting/transport/coyote/CoyoteInvoker.java	2009-08-26 19:46:43 UTC (rev 5393)
@@ -80,6 +80,8 @@
    protected ProtocolHandler protocolHandler = null;
 
    protected String URIEncoding = null;
+   
+   protected String useRemotingContentType = "false";
 
    /** Indicates if client is HTTPClientInvoker */
    protected boolean isRemotingUserAgent;
@@ -178,7 +180,17 @@
       {
          URIEncoding = String.valueOf(value);
       }
-
+      
+      value = config.get(HTTPMetadataConstants.USE_REMOTING_CONTENT_TYPE);
+      if (value != null && value instanceof String)
+      {
+         useRemotingContentType = (String) value;
+      }
+      else
+      {
+         log.warn(HTTPMetadataConstants.USE_REMOTING_CONTENT_TYPE + " value should be a String: " + value);
+      }
+      log.debug(this + " useRemotingContentType: " + useRemotingContentType);
    }
 
    protected ServerSocketFactory getDefaultServerSocketFactory() throws IOException
@@ -481,6 +493,7 @@
             {
                // must be POST or PUT
                UnMarshaller unmarshaller = getUnMarshaller();
+               request.put(HTTPMetadataConstants.USE_REMOTING_CONTENT_TYPE, useRemotingContentType);
                Object obj = null;
                if (unmarshaller instanceof VersionedUnMarshaller)
                   obj = ((VersionedUnMarshaller)unmarshaller).read(request.getInputStream(), request, version);

Modified: remoting2/branches/2.2/src/main/org/jboss/remoting/transport/http/HTTPClientInvoker.java
===================================================================
--- remoting2/branches/2.2/src/main/org/jboss/remoting/transport/http/HTTPClientInvoker.java	2009-08-26 19:44:41 UTC (rev 5392)
+++ remoting2/branches/2.2/src/main/org/jboss/remoting/transport/http/HTTPClientInvoker.java	2009-08-26 19:46:43 UTC (rev 5393)
@@ -102,7 +102,8 @@
    protected static final Logger log = Logger.getLogger(HTTPClientInvoker.class);
    
    protected boolean unmarshalNullStream = true;
-      
+   protected boolean useRemotingContentType = false;
+   
    private Object timeoutThreadPoolLock = new Object();
    private ThreadPool timeoutThreadPool;
 
@@ -272,6 +273,8 @@
          {
             conn.setRequestProperty(HTTPMetadataConstants.CONTENTTYPE, WebUtil.getContentType(invocation));
          }
+         
+         metadata.put(HTTPMetadataConstants.USE_REMOTING_CONTENT_TYPE, Boolean.toString(useRemotingContentType));
 
          // set the remoting version
          conn.setRequestProperty(HTTPMetadataConstants.REMOTING_VERSION_HEADER, new Integer(Version.getDefaultVersion()).toString());
@@ -549,6 +552,8 @@
             map.put(HTTPUnMarshaller.PRESERVE_LINES, o);
       }
       
+      map.put(HTTPMetadataConstants.USE_REMOTING_CONTENT_TYPE, Boolean.toString(useRemotingContentType));
+      
       try
       {
          if (unmarshaller instanceof VersionedUnMarshaller)
@@ -562,6 +567,7 @@
       }
       catch (IOException e)
       {
+         log.trace(this + " unable to read response", e);
          if (-1 == is.read())
          {
             throw new EOFException();
@@ -936,6 +942,22 @@
                      val + " to a boolean value.");
          }
       }
+
+      val = configuration.get(HTTPMetadataConstants.USE_REMOTING_CONTENT_TYPE);
+      if (val != null)
+      {
+         try
+         {
+            useRemotingContentType = Boolean.valueOf((String)val).booleanValue();
+            log.debug(this + " setting useRemotingContent to " + useRemotingContentType);
+         }
+         catch (Exception e)
+         {
+            log.warn(this + " could not convert " + 
+                     HTTPMetadataConstants.USE_REMOTING_CONTENT_TYPE + " value of " +
+                     val + " to a boolean value.");
+         }
+      }
    }
    
    /**

Modified: remoting2/branches/2.2/src/main/org/jboss/remoting/transport/http/HTTPMetadataConstants.java
===================================================================
--- remoting2/branches/2.2/src/main/org/jboss/remoting/transport/http/HTTPMetadataConstants.java	2009-08-26 19:44:41 UTC (rev 5392)
+++ remoting2/branches/2.2/src/main/org/jboss/remoting/transport/http/HTTPMetadataConstants.java	2009-08-26 19:46:43 UTC (rev 5393)
@@ -65,8 +65,11 @@
    
    /** Used to distinguish special case of payload of type String. */
    public static final String REMOTING_CONTENT_TYPE = "remotingContentType";
+   public static final String REMOTING_CONTENT_TYPE_LC = "remotingcontenttype";
    
    public static final String REMOTING_CONTENT_TYPE_STRING = "remotingContentTypeString";
    
    public static final String REMOTING_CONTENT_TYPE_NON_STRING = "remotingContentTypeNonString";
+   
+   public static final String USE_REMOTING_CONTENT_TYPE = "useRemotingContentType";
 }
\ No newline at end of file



More information about the jboss-remoting-commits mailing list