You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by tr...@apache.org on 2008/01/15 07:16:35 UTC

svn commit: r612026 - in /mina: branches/1.0/core/src/main/java/org/apache/mina/filter/codec/ branches/1.0/core/src/main/java/org/apache/mina/filter/codec/demux/ branches/1.1/core/src/main/java/org/apache/mina/filter/codec/ branches/1.1/core/src/main/j...

Author: trustin
Date: Mon Jan 14 22:16:14 2008
New Revision: 612026

URL: http://svn.apache.org/viewvc?rev=612026&view=rev
Log:
Fixed issue: DIRMINA-512 (ProtocolDecoderException.getHexDump always returns 'empty')
* Forgot to set hexdump in DemuxingProtocolCodecFactory
* Improved ProtocolCodecFilter not to set hexdump if already set


Modified:
    mina/branches/1.0/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
    mina/branches/1.0/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java
    mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
    mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolDecoder.java

Modified: mina/branches/1.0/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/1.0/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java?rev=612026&r1=612025&r2=612026&view=diff
==============================================================================
--- mina/branches/1.0/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java (original)
+++ mina/branches/1.0/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java Mon Jan 14 22:16:14 2008
@@ -148,6 +148,7 @@
         ProtocolDecoder decoder = getDecoder(session);
         ProtocolDecoderOutput decoderOut = getDecoderOut(session, nextFilter);
 
+        int oldPos = in.position();
         try {
             synchronized (decoderOut) {
                 decoder.decode(session, in, decoderOut);
@@ -159,7 +160,13 @@
             } else {
                 pde = new ProtocolDecoderException(t);
             }
-            pde.setHexdump(in.getHexDump());
+            
+            if (pde.getHexdump() == null) {
+                int curPos = in.position();
+                in.position(oldPos);
+                pde.setHexdump(in.getHexDump());
+                in.position(curPos);
+            }
             throw pde;
         } finally {
             try {

Modified: mina/branches/1.0/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java
URL: http://svn.apache.org/viewvc/mina/branches/1.0/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java?rev=612026&r1=612025&r2=612026&view=diff
==============================================================================
--- mina/branches/1.0/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java (original)
+++ mina/branches/1.0/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java Mon Jan 14 22:16:14 2008
@@ -275,8 +275,10 @@
                     // Throw an exception if all decoders cannot decode data.
                     String dump = in.getHexDump();
                     in.position(in.limit()); // Skip data
-                    throw new ProtocolDecoderException(
+                    ProtocolDecoderException e = new ProtocolDecoderException(
                             "No appropriate message decoder: " + dump);
+                    e.setHexdump(dump);
+                    throw e;
                 }
 
                 if (currentDecoder == null) {

Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java?rev=612026&r1=612025&r2=612026&view=diff
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java Mon Jan 14 22:16:14 2008
@@ -152,6 +152,7 @@
         ProtocolDecoder decoder = getDecoder(session);
         ProtocolDecoderOutput decoderOut = getDecoderOut(session, nextFilter);
 
+        int oldPos = in.position();
         try {
             synchronized (decoderOut) {
                 decoder.decode(session, in, decoderOut);
@@ -163,7 +164,13 @@
             } else {
                 pde = new ProtocolDecoderException(t);
             }
-            pde.setHexdump(in.getHexDump());
+
+            if (pde.getHexdump() == null) {
+                int curPos = in.position();
+                in.position(oldPos);
+                pde.setHexdump(in.getHexDump());
+                in.position(curPos);
+            }
             throw pde;
         } finally {
             try {

Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java?rev=612026&r1=612025&r2=612026&view=diff
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java Mon Jan 14 22:16:14 2008
@@ -242,6 +242,7 @@
             }
         }
 
+        @Override
         protected boolean doDecode(IoSession session, ByteBuffer in,
                 ProtocolDecoderOutput out) throws Exception {
             if (currentDecoder == null) {
@@ -276,8 +277,10 @@
                     // Throw an exception if all decoders cannot decode data.
                     String dump = in.getHexDump();
                     in.position(in.limit()); // Skip data
-                    throw new ProtocolDecoderException(
+                    ProtocolDecoderException e = new ProtocolDecoderException(
                             "No appropriate message decoder: " + dump);
+                    e.setHexdump(dump);
+                    throw e;
                 }
 
                 if (currentDecoder == null) {
@@ -305,6 +308,7 @@
             }
         }
 
+        @Override
         public void finishDecode(IoSession session, ProtocolDecoderOutput out)
                 throws Exception {
             if (currentDecoder == null) {
@@ -314,6 +318,7 @@
             currentDecoder.finishDecode(session, out);
         }
 
+        @Override
         public void dispose(IoSession session) throws Exception {
             super.dispose(session);
 

Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java?rev=612026&r1=612025&r2=612026&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java Mon Jan 14 22:16:14 2008
@@ -175,7 +175,13 @@
                 } else {
                     pde = new ProtocolDecoderException(t);
                 }
-                pde.setHexdump(in.getHexDump());
+                
+                if (pde.getHexdump() == null) {
+                    int curPos = in.position();
+                    in.position(oldPos);
+                    pde.setHexdump(in.getHexDump());
+                    in.position(curPos);
+                }
 
                 // Fire the exceptionCaught event.
                 decoderOut.flush();

Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolDecoder.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolDecoder.java?rev=612026&r1=612025&r2=612026&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolDecoder.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolDecoder.java Mon Jan 14 22:16:14 2008
@@ -157,8 +157,10 @@
                 // Throw an exception if all decoders cannot decode data.
                 String dump = in.getHexDump();
                 in.position(in.limit()); // Skip data
-                throw new ProtocolDecoderException(
+                ProtocolDecoderException e = new ProtocolDecoderException(
                         "No appropriate message decoder: " + dump);
+                e.setHexdump(dump);
+                throw e;
             }
 
             if (state.currentDecoder == null) {