Add GIOP stream dump debug code for better problem determination

git-svn-id: https://svn.apache.org/repos/asf/geronimo/yoko/trunk@1359557 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/yoko-core/src/main/java/org/apache/yoko/orb/OB/GIOPConnectionThreaded.java b/yoko-core/src/main/java/org/apache/yoko/orb/OB/GIOPConnectionThreaded.java
index a72998d..4f70cf2 100644
--- a/yoko-core/src/main/java/org/apache/yoko/orb/OB/GIOPConnectionThreaded.java
+++ b/yoko-core/src/main/java/org/apache/yoko/orb/OB/GIOPConnectionThreaded.java
@@ -448,7 +448,13 @@
                     processException(State.Closed, ex, false);
                     break;
                 }
-                logger.fine("Message body received "); 
+                if (logger.isLoggable(Level.FINE)) {
+                    logger.fine("Message body received ");
+                    int currentpos = buf.pos_;
+                    buf.pos_ = 0;
+                    logger.fine("Received message are: \n" + buf.dumpData());
+                    buf.pos_ = currentpos;
+                }
             }
 
             //
@@ -611,6 +617,7 @@
             // Get the request timeout
             //
             int t = down.policies().requestTimeout;
+            int msgcount = 0;
 
             //
             // now we can start sending off the messages
@@ -671,11 +678,22 @@
                         && !nextDown.operation().equals("_locate")) {
                     msgSentMarked = true;
                     properties_ |= Property.RequestSent;
+                    // debug
+                    if (logger.isLoggable(Level.FINE)) {
+                        int currentpos = buf.pos_;
+                        buf.pos_ = 0;
+                        logger.fine("Sent message in blocking at msgcount="
+                                + msgcount + ", size=" + buf.len_
+                                + ", the message piece is: \n" + buf.dumpData());
+                        buf.pos_ = currentpos;
+                        msgcount++;
+                    }
                 }
             }
         } else // Non blocking
         {
             synchronized (this) {
+            	int msgcount = 0;
                 while (true) {
                     if (!down.unsent())
                         break;
@@ -720,6 +738,19 @@
                                 && dummy.operation().equals("_locate")) {
                             msgSentMarked = true;
                             properties_ |= Property.RequestSent;
+                            // debug
+                            if (logger.isLoggable(Level.FINE)) {
+                                int currentpos = buf.pos_;
+                                buf.pos_ = 0;
+                                logger.fine("Sent message in non-blocking at msgcount="
+                                        + msgcount
+                                        + ", size="
+                                        + buf.len_
+                                        + ", the message piece is: \n"
+                                        + buf.dumpData());
+                                buf.pos_ = currentpos;
+                                msgcount++;
+                            }
                         }
                     }
                 }
diff --git a/yoko-core/src/main/java/org/apache/yoko/orb/OB/ValueReader.java b/yoko-core/src/main/java/org/apache/yoko/orb/OB/ValueReader.java
index 448c861..4fb0a34 100644
--- a/yoko-core/src/main/java/org/apache/yoko/orb/OB/ValueReader.java
+++ b/yoko-core/src/main/java/org/apache/yoko/orb/OB/ValueReader.java
@@ -366,7 +366,8 @@
     }
 
     private void readHeader(Header h) {
-        logger.fine("Reading header with tag value " + Integer.toHexString(h.tag)); 
+        logger.fine("Reading header with tag value " + Integer.toHexString(h.tag) + " at pos=" 
+        		+ in_.buf_.pos_); 
         
         //
         // Special cases are handled elsewhere
@@ -965,8 +966,21 @@
         if (remoteCodeBase instanceof CodeBaseProxy) {
             remoteCodeBase = ((CodeBaseProxy) remoteCodeBase).getCodeBase();
         }
+        
+        java.io.Serializable serobj = null;
+        try {
+        	serobj = valueHandler.readValue(in_, h.headerPos, repoClass, repid, remoteCodeBase);
+        } catch (RuntimeException ex) {
+            logger.log(Level.FINE, "RuntimeException happens when reading GIOP stream coming to pos_=" + in_.buf_.pos_);
+            logger.log(Level.FINE, "Wrong data section: \n" + in_.dumpData());
+            int currentpos = in_.buf_.pos_;
+            in_.buf_.pos_ = 0;
+            logger.log(Level.FINE, "Full GIOP stream dump: \n" + in_.dumpData());
+            in_.buf_.pos_ = currentpos;
+            throw ex;
+        }
 
-        return valueHandler.readValue(in_, h.headerPos, repoClass, repid, remoteCodeBase);
+        return serobj;
     }
     
     private Class resolveRepoClass(String name, String codebase)