Author: trustin
Date: Wed Dec 20 17:47:59 2006
New Revision: 489243

URL: http://svn.apache.org/viewvc?view=rev&rev=489243
Log:
Resolved issue: DIRMINA-327 (sanity-check for MessageEncoder in 
DemuxingProtocolCodecFactory)
* Added a code that checks if MessageEncoder.getMessageTypes() returns null.


Modified:
    
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/demux/DemuxingProtocolCodecFactory.java
    
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/demux/MessageEncoder.java
    
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java

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?view=diff&rev=489243&r1=489242&r2=489243
==============================================================================
--- 
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
 Wed Dec 20 17:47:59 2006
@@ -178,7 +178,13 @@
             for( int i = encoderFactories.length - 1; i >= 0; i-- )
             {
                 MessageEncoder encoder = encoderFactories[ i ].getEncoder();
-                Iterator it = encoder.getMessageTypes().iterator();
+                Set messageTypes = encoder.getMessageTypes();
+                if (messageTypes == null) {
+                    throw new IllegalStateException(
+                            encoder.getClass().getName() + "#getMessageTypes() 
may not return null.");
+                }
+                
+                Iterator it = messageTypes.iterator();
                 while( it.hasNext() )
                 {
                     Class type = ( Class ) it.next();

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?view=diff&rev=489243&r1=489242&r2=489243
==============================================================================
--- 
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
 Wed Dec 20 17:47:59 2006
@@ -170,7 +170,7 @@
     
     private class ProtocolEncoderImpl implements ProtocolEncoder
     {
-        private final Map encoders = new IdentityHashMap();
+        private final Map<Class, MessageEncoder> encoders = new 
IdentityHashMap<Class, MessageEncoder>();
         
         private ProtocolEncoderImpl() throws Exception
         {
@@ -178,7 +178,13 @@
             for( int i = encoderFactories.length - 1; i >= 0; i-- )
             {
                 MessageEncoder encoder = encoderFactories[ i ].getEncoder();
-                Iterator it = encoder.getMessageTypes().iterator();
+                Set<Class> messageTypes = encoder.getMessageTypes();
+                if (messageTypes == null) {
+                    throw new IllegalStateException(
+                            encoder.getClass().getName() + "#getMessageTypes() 
may not return null.");
+                }
+                
+                Iterator it = messageTypes.iterator();
                 while( it.hasNext() )
                 {
                     Class type = ( Class ) it.next();
@@ -202,16 +208,16 @@
         
         private MessageEncoder findEncoder( Class type )
         {
-            MessageEncoder encoder = ( MessageEncoder ) encoders.get( type );
+            MessageEncoder encoder = encoders.get( type );
             if( encoder == null )
             {
-                encoder = findEncoder( type, new IdentityHashSet() );
+                encoder = findEncoder( type, new IdentityHashSet<Class>() );
             }
 
             return encoder;
         }
 
-        private MessageEncoder findEncoder( Class type, Set triedClasses )
+        private MessageEncoder findEncoder( Class type, Set<Class> 
triedClasses )
         {
             MessageEncoder encoder;
 
@@ -219,7 +225,7 @@
                 return null;
             triedClasses.add( type );
 
-            encoder = ( MessageEncoder ) encoders.get( type );
+            encoder = encoders.get( type );
             if( encoder == null )
             {
                 encoder = findEncoder( type, triedClasses );

Modified: 
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/demux/MessageEncoder.java
URL: 
http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/demux/MessageEncoder.java?view=diff&rev=489243&r1=489242&r2=489243
==============================================================================
--- 
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/demux/MessageEncoder.java
 (original)
+++ 
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/demux/MessageEncoder.java
 Wed Dec 20 17:47:59 2006
@@ -39,7 +39,7 @@
     /**
      * Returns the set of message classes this encoder can encode.
      */
-    Set getMessageTypes();
+    Set<Class> getMessageTypes();
 
     /**
      * Encodes higher-level message objects into binary or protocol-specific 
data.

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java?view=diff&rev=489243&r1=489242&r2=489243
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java
 Wed Dec 20 17:47:59 2006
@@ -178,7 +178,13 @@
             for( int i = encoderFactories.length - 1; i >= 0; i-- )
             {
                 MessageEncoder encoder = encoderFactories[ i ].getEncoder();
-                Iterator it = encoder.getMessageTypes().iterator();
+                Set<Class> messageTypes = encoder.getMessageTypes();
+                if (messageTypes == null) {
+                    throw new IllegalStateException(
+                            encoder.getClass().getName() + "#getMessageTypes() 
may not return null.");
+                }
+                
+                Iterator it = messageTypes.iterator();
                 while( it.hasNext() )
                 {
                     Class type = ( Class ) it.next();


Reply via email to