Directory Studio
  1. Directory Studio
  2. DIRSTUDIO-123

Refactor IConnection interface and Connection class

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Critical Critical
    • Resolution: Fixed
    • Affects Version/s: 0.8.0, 0.8.1, 0.8.2, 1.0.0
    • Fix Version/s: 1.1.0
    • Component/s: studio-ldapbrowser
    • Labels:
      None

      Description

      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.

        Activity

        Stefan Seelmann created issue -
        Hide
        Emmanuel Lecharny added a comment -

        Just perfect ! We are waiting for tye confluence page

        Thanks Stefan

        Show
        Emmanuel Lecharny added a comment - Just perfect ! We are waiting for tye confluence page Thanks Stefan
        Hide
        Ersin Er added a comment -

        I am interested. So, where is the page?

        Show
        Ersin Er added a comment - I am interested. So, where is the page?
        Hide
        Pierre-Arnaud Marcelot added a comment -

        I think, it could be a good thing to build a separate plugin for the connections handling.
        This way, connections defined in this plugin can be shared by several plugins: the LDAP Browser plugin of course, but the dynamic online schema editor plugin also, etc.

        Since you plan to refactor this class and interface, it could be the good timing to build such a plugin.

        Show
        Pierre-Arnaud Marcelot added a comment - I think, it could be a good thing to build a separate plugin for the connections handling. This way, connections defined in this plugin can be shared by several plugins: the LDAP Browser plugin of course, but the dynamic online schema editor plugin also, etc. Since you plan to refactor this class and interface, it could be the good timing to build such a plugin.
        Hide
        Stefan Seelmann added a comment -

        Thanks, very good point PAM.

        Show
        Stefan Seelmann added a comment - Thanks, very good point PAM.
        Hide
        Christine Koppelt added a comment -

        As Stefan and Enrique offered their help i would like to start implementing the SASL authentication after the
        refactoring has been finished.

        Show
        Christine Koppelt added a comment - As Stefan and Enrique offered their help i would like to start implementing the SASL authentication after the refactoring has been finished.
        Stefan Seelmann made changes -
        Field Original Value New Value
        Assignee Stefan Seelmann [ seelmann ]
        Affects Version/s 1.0.0 [ 12312288 ]
        Fix Version/s 1.1.0 [ 12312701 ]
        Affects Version/s 0.8.2 [ 12312689 ]
        Affects Version/s 0.8.1 [ 12312562 ]
        Stefan Seelmann made changes -
        Status Open [ 1 ] In Progress [ 3 ]
        Hide
        Stefan Seelmann added a comment -
        • Created two plugins dedicated for conntections: studio-connection-core and studio-connection-ui
        • Moved connection handling and modification logs to the studio-connection-core plugin
        • Moved search and modify operations to the job classes
        • Removed LDIF layer
        Show
        Stefan Seelmann added a comment - Created two plugins dedicated for conntections: studio-connection-core and studio-connection-ui Moved connection handling and modification logs to the studio-connection-core plugin Moved search and modify operations to the job classes Removed LDIF layer
        Stefan Seelmann made changes -
        Resolution Fixed [ 1 ]
        Status In Progress [ 3 ] Resolved [ 5 ]
        Hide
        Pierre-Arnaud Marcelot added a comment -

        Version 1.1.0 has been released.
        Closing this issue.

        Show
        Pierre-Arnaud Marcelot added a comment - Version 1.1.0 has been released. Closing this issue.
        Pierre-Arnaud Marcelot made changes -
        Status Resolved [ 5 ] Closed [ 6 ]

          People

          • Assignee:
            Stefan Seelmann
            Reporter:
            Stefan Seelmann
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development