I suspected this was an oversigth. Looking forward for the definitive fix.

Thanks for the feedback Łukasz.
Best regards,
Thim.

On 12/19/2014 09:56 AM, Lukasz Lenart wrote:
Thanks Tim!

Great that you was able to find the same solution as described here [1] - to put some more details here: - the issue was with default implementation of UnknownHandler which was throwing NPE by default (throw null) - that's why everything was fine before 2.3.20, DefaultActionInvocation always got an exception when was calling UnknownHandlers - because of NPE it wasn't possible to have any other UnknownHandlers - the default one was always breaking the flow - after fixing NPE, I've overlooked this flow in DAI - it was expecting an exception

In the mentioned issue I've already proposed solution and Senen de Diego has also proposed some additional idea - I'm working on this right now and it will be released soon.

[1] https://issues.apache.org/jira/browse/WW-4433


Regards
--
Łukasz
+ 48 606 323 122 http://www.lenart.org.pl/

2014-12-19 8:48 GMT+01:00 Thim Anneessens <t.anneess...@ictjob.be <mailto:t.anneess...@ictjob.be>>:

    After a little fiddling we succeeded to migrate from 2.3.16 to
    2.3.20. Everything seemed fine until we had an exception in one
    action and noticed that something had changed.

    Exception thrown from an action got lost. It did not reach the
    interceptor in charge of exception handling because...

* The DefaultActionInvocation catched the exception and tried the unkownHandlerManager.handleUnknownMethod method.
      * DefaultActionInvocation tried the
        unkownHandlerManager.handleUnknownMethod method because we use
        the struts-convention plugin (same version) and that this
        plugin define the ConventionUnknownHandler bean.
      * Because the ConventionUnkownHandler.handleUnknownActionMethod
        does not do anything (it return null and has a big comment
        saying "Not used", which is obviously wrong :) ), the result
        code for the action is null.

    So we fixed this by adding our own UnkownHandler which throws a
    NoSuchMethodException which makes the DefaultActionInvocation
    throw our original exception. Problem solved, but (there is always
    a but)

     1. Maybe somebody could use this patch
     2. I do not understand why the "convention" behavior should be to
        ignore action exception and stopping them to spread through
        the interceptor stack as they did
     3. I think that this behavior should be changed in the
        DefaultActionInvocation. It feels unnatural to have to throw a
        NoSuchMethodException from an UnkownHandler in order to force
        the DefaultActionInvocation to throw our original exception.


    Anyway great release, allot of great improvements. Thanks to all
    committers for a great release.


-- *Thim Anneessens
    IT Department *

    ictjob group



--
*Thim Anneessens
IT Department *

ictjob group

Reply via email to