Version 25

    Current model

     

     

    This current model is applied to:

     

    • Connection

    • Session

    • Browser

    • Consumer

    • Producer

     

    Where we aways have JMSFacade -> Delegates -> ServerEndpoints. This pattern requires at least 6 entities for each JMS component.

     

    Our current delegates is sort of disconnected and complicated (complicated != complex) because of the unnecessary Aspect.

     

    On the server side, we aways have Advised classes to play the AOP side.

     

    Goals on this refactoring

     

    • Simplify code & make it easier to understand

    • Use traditional OO modeling

     

    Proposed Model

     

    As discussed on Forums

     

    JMS           Agnostic         MINA
    ---           --------         ----
    
                                   IoConnector  IoAcceptor
                                       \            /
                                        \ IoSession/
    Connection----Connection------------------
        |                |
        |                |
      Session          Session
       / \                \
    Producer Consumer     Consumer
         

     

    • The current client delegate model will become the agnostic implementation.

    • Interception

      • The current interception we currently need (Failover for instance) will be placed inside the RemoteComponent that is encapsulating IO (encapsulation of MINA)

     

    Proposed Diagram

    !proposedModel.jpg!

     

     

    Refactoring Roadmap

    I - Remove Aspects

    II - Place interceptors as valves on MINA components (Failover)

     

     

     

    Update on this document: Server and Clients don't share a common interface any more. The client is bound to the Server through our new transport layer. Each packet will be responsible to find the appropriate call on the server side.