Dobri, It think that fault behavior is not yet part of the test suite. Of course, documentation is always welcome :-)
Andreas On Wed, Mar 18, 2009 at 09:33, Dobri Kitipov <kdobrik.ax...@googlemail.com> wrote: > Hi Andreas, > I am curious if you have tested this with a custom transport listener? I > suppose a test case and a documentation update (e.g. JavaDoc) will be > something worth having? > > thanks, > dobri > > On Tue, Mar 17, 2009 at 11:32 PM, Andreas Veithen > <andreas.veit...@gmail.com> wrote: >> >> On Tue, Mar 17, 2009 at 12:33, Amila Suriarachchi >> <amilasuriarach...@gmail.com> wrote: >> > >> > >> > On Tue, Mar 17, 2009 at 3:52 PM, Dobri Kitipov >> > <kdobrik.ax...@googlemail.com> wrote: >> >> >> >> Hi everyone, >> >> I want to direct your attention to how OUT_FAULT_FLOW is triggered in >> >> Axis2. >> >> >> >> 1) The short story >> >> >> >> When a request is received by the TransportListener (TL) (e.g. >> >> AxisServlet) then it invokes the AxisEngine (i.e. >> >> AxisEngine#receive(msgContext)). If there is a fault condition it is >> >> thrown >> >> by the engine and caught by the TransportListener. What happens is that >> >> the >> >> whole logic about triggering the OUT_FAULT_FLOW phases is placed into >> >> the >> >> TL, but not into the engine itself. >> >> You can refer to the AxisEngine#doPost() which in turn invokes its >> >> private >> >> processAxisFault() when there is a fault condition. >> > >> > I also got the same feeling when I saw this code for the first time. >> > >> >> >> >> >> >> 2) The problem >> >> >> >> IMHO we can meet the following issue. If someone wants to create a >> >> custom >> >> TL then it should have the "processAxisFault" logic implemented into >> >> it. >> >> Since this is not well documented (I did not find a proper docu about >> >> this) >> >> it come out that the TL is missing this logic need and will not work >> >> properly. >> >> >> >> >> >> 3) The proposal >> >> >> >> a) I did a short research and did not find any obstacle to include the >> >> the >> >> "processAxisFault" logic into the engine itself (basically >> >> AxisEngine#sendFault(faultContext) should be called). IMHO doing so the >> >> architecture of Axis2 will be simplified and the fault logic will be >> >> decoupled from the TL implementation. Of course some >> >> HttpServletResponse >> >> processing should take place into the TL, but this is something more >> >> natural >> >> to do ( ;) better known and/or understanded/documented). >> > >> > Did you have a time to look at how JMS, SMTP and other transport have >> > implemented the Fault handling part. IMHO this code at least should go >> > to >> > transport base module so that all the transports can use it. >> >> There is some generic code in >> AbstractTransportListener#handleIncomingMessage. It is used by the JMS >> and mail transports and does the same as the code in AxisServlet >> (except for the decision logic on the HTTP status code). >> >> >> >> >> >> >> I think that this is worth having to be discussed. >> > >> > +1 >> > >> > thanks, >> > Amila. >> >> >> >> >> >> Please share your comments/opinions. >> >> >> >> Thank you in advance, >> >> Dobri >> > >> > >> > >> > -- >> > Amila Suriarachchi >> > WSO2 Inc. >> > blog: http://amilachinthaka.blogspot.com/ >> > > >