[ http://issues.apache.org/jira/browse/DIRMINA-131?page=comments#action_12358761 ]
Niklas Therning commented on DIRMINA-131: ----------------------------------------- About the utility classes. Why not have a DefaultIoFilterChainBuilder which has all the add/remove methods IoFilterChain has. Internally it will keep a list of IoFilters. In DefaultIoFilterChainBuilder.build(chain) the filters in the internal list would simply be added last to the chain being built. The SimpleServiceRegistry would use DefaultIoFilterChainBuilder which would make it quite simple to migrate old code: reg.getAcceptor( TransportType.SOCKET ).getFilterChain().addLast( "foo", fooFilter ) would become ( ( DefaultIoFilterChainBuilder ) reg.getAcceptor( TransportType.SOCKET ).getFilterChainBuilder() ).addLast( "foo", fooFilter ) Instead of the NOOP chain builder the concrete SessionManagers which come with MINA could use DefaultIoFilterChainBuilder by default. > Get rid of complexity of the current IoFilterChain. > --------------------------------------------------- > > Key: DIRMINA-131 > URL: http://issues.apache.org/jira/browse/DIRMINA-131 > Project: Directory MINA > Type: Improvement > Versions: 0.8 > Reporter: Trustin Lee > Assignee: Trustin Lee > Fix For: 0.9 > > This issue is the summary of these threads in the Apache Directory Project > mailing list: > http://www.nabble.com/-mina-Refactoring-MINA-IoFilterChain-%28Was%3A-IoFilters%3A-DIRMINA-121-122%29-t553121.html > http://www.nabble.com/-mina-IoFilters%3A-DIRMINA-121-122-t548297.html > Currently, IoFilterChains are categorized into two; one is > IoSessionManagerFilterChain, and the other is IoSessionFilterChain. > IoSessionManagerFilterChain is shared by all sessions managed by the same > IoSessionManager, and IoSessionFilterChain is individual for each session. > But this design made the internal architecture of MINA filter chain very > complex comparing its usefulness. > What about just getting rid of the original IoSessionManagerFilterChain, and > provide a simple data structure which just stores a list of filters but still > implements IoFilter interface? By doing so, we can simply copy the chain > into the IoSessionFilterChain before we start the communication, so the chain > implementation gets simplified dramatically. > Besides that, we have another option instead of using a simple data structure > that implements IoFilterChain. It is called 'IoFilterChainBuilder'. It is a > kind of command pattern which configures the filter chain instead of simply > appending the filter list the chain. It provides great flexibility. For > example, you can override the settings of per-manager filter chain in your > per-port (or per-session) chain builder. > I think it will be best if we can combine these two approach by providing an > IoFilterChainBuilder implementation which simply appends the specified filter > list to the per-session chain. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
