Vadim Kirilchuk created CXF-5008:
------------------------------------

             Summary: PhaseInterceptorChain insertInterceptor gives wrong 
ordering
                 Key: CXF-5008
                 URL: https://issues.apache.org/jira/browse/CXF-5008
             Project: CXF
          Issue Type: Bug
            Reporter: Vadim Kirilchuk
            Priority: Minor


Hi everyone, 

I am playing along with PhaseInterceptorChain#insertInterceptor and confused by 
ordering. As i understand this code have to order interceptors according to 
their before/after dependencies. 

I have 5 interceptors with names "0","1","2","3","4"
"0" must be before "1" and "4"
"1" must be before "2" but after "0"
"2" must be before "4" but after "1"
"3" must be after "1" and "2"
"4" has no befors or afters
as you can see the rule is very simple
n-th element befors can be any from n + 1
n-th element afters can be any from 0, n

Now i try to add this interceptors in shuffled order: 4, 2, 0, 1, 3
Here is what i get in the chain step by step
4
2, 4
2, 0, 4
1, 2, 0, 4
1, 2, 0, 4, 3

as you can see constraint for "0" is broken, it must be at the head!

Also i don't see any checks for case when you met firstBefore and then met 
lastAfter which means that your interceptors have conflicting dependencies. Is 
it OK? 

Example: interceptor C must be before D but after B, and interceptor B must be 
after D
when you start adding them as D B C you first add D to chain
D
then B, and see that it have to be after D
D B
then you try to add C and see, that it must be before D but after B
c D B c
and no exceptions or something is thrown.

I am attaching tests as well.

Please check them and tell me if i just doing something wrong.

Thanks in advance.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to