Enrique Rodriguez a écrit :
Hi, Directory developers,
Every handler in the LDAP protocol provider implements
LdapMessageHandler. The sole purpose of LdapMessageHandler is to
init() the handler with config. Turns out, config is only ever
actually used by the SearchHandler. Also, in the new world of MINA,
config is typically set in the IoSession as attributes. I suspect
this is a relic from before MINA, since you can add config as
attributes to the IoSession. Any objections to removing this
interface?
Enrique
I bet that would not be a good idea to remove LdapMessageHandler : it's
use to initialize MINA. We iterate through all the declared handler in
LdapProtocolProvider and initialize each handler using reflection.
Having an interface allow this class to be agnostic about each specific
handler :
...
Iterator requestTypes = DEFAULT_HANDLERS.keySet().iterator();
while ( requestTypes.hasNext() )
{
LdapMessageHandler handler = null;
String type = ( String ) requestTypes.next();
Class clazz = null;
if ( copy.containsKey( type ) )
{
try
{
clazz = Class.forName( ( String ) copy.get( type ) );
}
catch ( ClassNotFoundException e )
{
...
}
}
else
{
clazz = ( Class ) DEFAULT_HANDLERS.get( type );
}
try
{
Class typeClass = Class.forName( type );
handler = ( LdapMessageHandler ) clazz.newInstance();
handler.init( cfg );
this.handler.addMessageHandler( typeClass, handler );
}
...
I don't mean that the way it's done in the LdapProtocolProvider is the
best ever, but removing the interface is not as simple as it seems.
So far, my point is that the interface don't harm a lot. May be we can
simply remove the init() method from it. Otherwise, "don't fix something
that works if there is not a valuable improvment doing so ..."
2cts.
Emmanuel