Hi Amila!

Amila Suriarachchi wrote:
    <module name="Security">
       <InFlow>
         <!-- Add Decrypt phase if not already present.  If it's there -->
         <!-- already, just confirm that it matches these rules ( i.e.  -->
         <!-- after Transport)                                         -->
         <phase name="Decrypt" after="Transport">
           <handler name="DecryptionHandler" class="..."/>
         </phase>
         <handler name="OtherHandler" class="...">
           <order phase="Dispatch"/>
         </handler>
       </InFlow>
       ...
</module>

I am not sure the practical limitations of doing this but,
+1 for adding Phases in InFlow and OutFlow and placing them using the phase order rules like in handlers. I belive this would allow us to develop modules as real pluggable components.

This is relatively easy to do (I've already written the code once), and I agree 100% this is what is needed to make Modules sufficiently... well, modular. :) This was absolutely the design center that I had in mind even from the outset of the Axis2 discussions.

Essentially you have a list of Constraints - a Constraint is like "A must come before B" or "A must be in Phase Q". Whenever you deploy a thing (Handler or Phase) with Constraints, you check its Constraints against the current state of the ExecutionChain. If everything is either satisfied or "open" (we'll come back to this in a sec) then that deployment was successful. "Open" means that one of the referents of the Constraint didn't exist at the time - so for instance if we're deploying "A" and it says "A before B" but there's no "B" yet, we can put A in and it works. Then later if we deploy "B", there is a check at that time for any open Constraints involving B. If we find one that says "A before B" we'll know we have to satisfy that as well as whatever B's native Constraints are in order to succeed.

This process isn't that computationally expensive, since our handler/phase chains aren't ever going to be that long (I would guess it will be VERY rare to see even a 20-Handler chain, let alone hundreds) and the code can be written quite efficiently.

I also believe this will result in cleaner and more comprehensible Handler-wrangling code.

--Glen

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to