axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Deepal jayasinghe <>
Subject Re: [Axis2]Proposal:Change to Handler order resolution Implementation
Date Tue, 23 Dec 2008 19:11:45 GMT

> Hi All;
> As far as I understood, with current handler order resolution in the
> Phase (see org.apache.axis2.engine.Phase) the order of Handlers are
> depended on the order they are added. For an example, if there are
> handlers A and B and there is a rules in B says B after A, the order
> is preserved only if B is added after A. if handlers are added B,A
> then since A does not have rules, it is added to somewhere. AFAIK
> current code only check rules for the new handler, but does not check
> rules in the existing Handlers.
hmm this can be easily solved by adding dependencies to both handlers,
for example in handler A we can tell it needs to be after B, and B we
can tell it needs to be before A.  So you can get this easily done with
current impl. I know which will not solve 100% of the problem, but the
system is capable of handling that.

One other suggestion wold be to add new phases and put the handler
there, then that will make sure handlers are in order.
> I noticed this problem while developing a Handler, and walk though the
> code also verified it.
> However, there is a standard way to solve this problem. The solution
> is creating a graph assigning dependencies as edges in a graph--which
> is a directed acyclic graph--and then doing a topology sort
> . The algorithm takes
> O(n) time and space where n is number of entities + number of rules,
> which is pretty reasonable.
> If people agree, I would like to redo the Handler resolution algorithm
> in the Phase class with topology sort. Please comment. (Please note I
> can not commit for a time line, but will do it when I get a free
> time.)
I am -0 on this, I know how many issues I have fixed alone the way
specially in handlers and phases. You can see what we are doing is
simple, but in different scenarios you have different issues, like
engaging, dis-engaging and etc... Just because we have fixed so many
issues I am nit going to tell that we should not make any changes, it is
ok (and we should) do changes. But .... , if we have a way around to
solve the problem then we should not take this as a high priority item.

Adding something, the initial implementation of Axis2 did support what
you ask for, but later we decided to change into this structure. And
after implementation of Dynamic Phases most of the problem were able to
solve very easily. Even your problem can be easily solve with that.

> Thanks very much
> Srinath

Thank you!

View raw message