The IConnection interface and the Connection class (and its dependent classes) needs to be refactored:
- They are just too big: The IConnection interface defines 65 methods, the Connection class has more than 1000 LOC and no line of Javadoc
- The procedure of opening a connection (connect, bind, load RootDSE, cache/refresh schema, load base entries) is just horrible
- The Connection class uses LDIF as an interface between the browser classes and the JNDI layer to retrieve information from the directory or to commit modifications. This causes heavy CPU consumption and slows down mass operations.
- In order to support new features lik strong authentication with SASL, extended operations and controls we also have to extend the IConnection interface.
I will create an confluence page that shows the current design. It would be cool if we could discuss the needed requirements and improve the design.