You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by tr...@apache.org on 2005/05/13 07:10:00 UTC
svn commit: r169939 - in /directory/network:
branches/api_integration/src/java/org/apache/mina/filter/codec/DemuxingProtocolCodecFactory.java
trunk/src/java/org/apache/mina/protocol/codec/DemuxingProtocolCodecFactory.java
Author: trustin
Date: Thu May 12 22:09:59 2005
New Revision: 169939
URL: http://svn.apache.org/viewcvs?rev=169939&view=rev
Log:
Added DemuxingProtocolCodecFactory.register( Class ) for convenience
Modified:
directory/network/branches/api_integration/src/java/org/apache/mina/filter/codec/DemuxingProtocolCodecFactory.java
directory/network/trunk/src/java/org/apache/mina/protocol/codec/DemuxingProtocolCodecFactory.java
Modified: directory/network/branches/api_integration/src/java/org/apache/mina/filter/codec/DemuxingProtocolCodecFactory.java
URL: http://svn.apache.org/viewcvs/directory/network/branches/api_integration/src/java/org/apache/mina/filter/codec/DemuxingProtocolCodecFactory.java?rev=169939&r1=169938&r2=169939&view=diff
==============================================================================
--- directory/network/branches/api_integration/src/java/org/apache/mina/filter/codec/DemuxingProtocolCodecFactory.java (original)
+++ directory/network/branches/api_integration/src/java/org/apache/mina/filter/codec/DemuxingProtocolCodecFactory.java Thu May 12 22:09:59 2005
@@ -50,6 +50,22 @@
{
}
+ public void register( Class encoderOrDecoderClass )
+ {
+ if( MessageEncoder.class.isAssignableFrom( encoderOrDecoderClass ) )
+ {
+ register( new DefaultConstructorMessageEncoderFactory( encoderOrDecoderClass ) );
+ }
+ else if( MessageDecoder.class.isAssignableFrom( encoderOrDecoderClass ) )
+ {
+ register( new DefaultConstructorMessageDecoderFactory( encoderOrDecoderClass ) );
+ }
+ else
+ {
+ throw new IllegalArgumentException();
+ }
+ }
+
public void register( MessageEncoder encoder )
{
register( new SingletonMessageEncoderFactory( encoder ) );
@@ -68,7 +84,7 @@
this.encoderFactories = newEncoderFactories;
}
- public void register( final MessageDecoder decoder )
+ public void register( MessageDecoder decoder )
{
register( new SingletonMessageDecoderFactory( decoder ) );
}
@@ -286,6 +302,69 @@
public MessageDecoder newDecoder()
{
return decoder;
+ }
+ }
+
+
+ private static class DefaultConstructorMessageEncoderFactory implements MessageEncoderFactory
+ {
+ private final Class encoderClass;
+
+ private DefaultConstructorMessageEncoderFactory( Class encoderClass )
+ {
+ if( encoderClass == null )
+ {
+ throw new NullPointerException( "encoderClass" );
+ }
+
+ if( !MessageEncoder.class.isAssignableFrom( encoderClass ) )
+ {
+ throw new IllegalArgumentException( "encoderClass is not assignable to MessageEncoder" );
+ }
+ this.encoderClass = encoderClass;
+ }
+
+ public MessageEncoder newEncoder()
+ {
+ try
+ {
+ return ( MessageEncoder ) encoderClass.newInstance();
+ }
+ catch( Exception e )
+ {
+ throw new RuntimeException( "Failed to create a new instance of " + encoderClass, e );
+ }
+ }
+ }
+
+ private static class DefaultConstructorMessageDecoderFactory implements MessageDecoderFactory
+ {
+ private final Class decoderClass;
+
+ private DefaultConstructorMessageDecoderFactory( Class decoderClass )
+ {
+ if( decoderClass == null )
+ {
+ throw new NullPointerException( "decoderClass" );
+ }
+
+ if( !MessageDecoder.class.isAssignableFrom( decoderClass ) )
+ {
+ throw new IllegalArgumentException( "decoderClass is not assignable to MessageDecoder" );
+ }
+ this.decoderClass = decoderClass;
+ }
+
+ public MessageDecoder newDecoder()
+ {
+ try
+ {
+ return ( MessageDecoder ) decoderClass.newInstance();
+ }
+ catch( Exception e )
+ {
+ throw new RuntimeException( "Failed to create a new instance of " + decoderClass, e );
+ }
}
}
}
Modified: directory/network/trunk/src/java/org/apache/mina/protocol/codec/DemuxingProtocolCodecFactory.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/java/org/apache/mina/protocol/codec/DemuxingProtocolCodecFactory.java?rev=169939&r1=169938&r2=169939&view=diff
==============================================================================
--- directory/network/trunk/src/java/org/apache/mina/protocol/codec/DemuxingProtocolCodecFactory.java (original)
+++ directory/network/trunk/src/java/org/apache/mina/protocol/codec/DemuxingProtocolCodecFactory.java Thu May 12 22:09:59 2005
@@ -56,6 +56,22 @@
{
}
+ public void register( Class encoderOrDecoderClass )
+ {
+ if( MessageEncoder.class.isAssignableFrom( encoderOrDecoderClass ) )
+ {
+ register( new DefaultConstructorMessageEncoderFactory( encoderOrDecoderClass ) );
+ }
+ else if( MessageDecoder.class.isAssignableFrom( encoderOrDecoderClass ) )
+ {
+ register( new DefaultConstructorMessageDecoderFactory( encoderOrDecoderClass ) );
+ }
+ else
+ {
+ throw new IllegalArgumentException();
+ }
+ }
+
public void register( MessageEncoder encoder )
{
register( new SingletonMessageEncoderFactory( encoder ) );
@@ -74,7 +90,7 @@
this.encoderFactories = newEncoderFactories;
}
- public void register( final MessageDecoder decoder )
+ public void register( MessageDecoder decoder )
{
register( new SingletonMessageDecoderFactory( decoder ) );
}
@@ -292,6 +308,68 @@
public MessageDecoder newDecoder()
{
return decoder;
+ }
+ }
+
+ private static class DefaultConstructorMessageEncoderFactory implements MessageEncoderFactory
+ {
+ private final Class encoderClass;
+
+ private DefaultConstructorMessageEncoderFactory( Class encoderClass )
+ {
+ if( encoderClass == null )
+ {
+ throw new NullPointerException( "encoderClass" );
+ }
+
+ if( !MessageEncoder.class.isAssignableFrom( encoderClass ) )
+ {
+ throw new IllegalArgumentException( "encoderClass is not assignable to MessageEncoder" );
+ }
+ this.encoderClass = encoderClass;
+ }
+
+ public MessageEncoder newEncoder()
+ {
+ try
+ {
+ return ( MessageEncoder ) encoderClass.newInstance();
+ }
+ catch( Exception e )
+ {
+ throw new RuntimeException( "Failed to create a new instance of " + encoderClass, e );
+ }
+ }
+ }
+
+ private static class DefaultConstructorMessageDecoderFactory implements MessageDecoderFactory
+ {
+ private final Class decoderClass;
+
+ private DefaultConstructorMessageDecoderFactory( Class decoderClass )
+ {
+ if( decoderClass == null )
+ {
+ throw new NullPointerException( "decoderClass" );
+ }
+
+ if( !MessageDecoder.class.isAssignableFrom( decoderClass ) )
+ {
+ throw new IllegalArgumentException( "decoderClass is not assignable to MessageDecoder" );
+ }
+ this.decoderClass = decoderClass;
+ }
+
+ public MessageDecoder newDecoder()
+ {
+ try
+ {
+ return ( MessageDecoder ) decoderClass.newInstance();
+ }
+ catch( Exception e )
+ {
+ throw new RuntimeException( "Failed to create a new instance of " + decoderClass, e );
+ }
}
}
}