[ 
https://issues.apache.org/jira/browse/VELOCITY-998?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Peter SEVERIN updated VELOCITY-998:
-----------------------------------
    Description: 
The EventHandlerUtil.methodException method can swallow the exception if there 
is a context EventCartrige with no method exception handler attached. The 
following code calls EventCartrige#methodException method:
{code:java}
            EventCartridge contextCartridge = context.getEventCartridge();
            if (contextCartridge != null)
            {
                contextCartridge.setRuntimeServices(rsvc);
                return contextCartridge.methodException(context, claz, method, 
e, info);

{code}
Which looks like this:

{{        if (methodExceptionHandler != null)}}
{{        {}}
{{            return methodExceptionHandler.methodException(context, claz, 
method, e, info);}}
{\{        }}}
{{        return null;}}

When no method exception handler is set the method returns null and the 
exception is lost. This should not be the case as the behavior is different 
when there is no context EventCartrige.

The fix should looks like this:

{{            EventCartridge contextCartridge = context.getEventCartridge();}}
{{            if (contextCartridge != null{color:#de350b} && 
contextCartridge.hasMethodExceptionEventHandler(){color})}}
{{            {}}
{{                contextCartridge.setRuntimeServices(rsvc);}}
{{                return contextCartridge.methodException(context, claz, 
method, e, info);}}
{\{            }}}

 

  was:
The EventHandlerUtil.methodException method can swallow the exception if there 
is a context EventCartrige with no method exception handler attached. The 
following code calls EventCartrige#methodException method:

{{            EventCartridge contextCartridge = context.getEventCartridge();}}
{{            if (contextCartridge != null)}}
{{            {}}
{{                contextCartridge.setRuntimeServices(rsvc);}}
{{                return contextCartridge.methodException(context, claz, 
method, e, info);}}
{{            }}}

Which looks like this:

{{        if (methodExceptionHandler != null)}}
{{        {}}
{{            return methodExceptionHandler.methodException(context, claz, 
method, e, info);}}
{{        }}}
{{        return null;}}

When no method exception handler is set the method returns null and the 
exception is lost. This should not be the case as the behavior is different 
when there is no context EventCartrige.

The fix should looks like this:

{{            EventCartridge contextCartridge = context.getEventCartridge();}}
{{            if (contextCartridge != null{color:#de350b} && 
contextCartridge.hasMethodExceptionEventHandler(){color})}}
{{            {}}
{{                contextCartridge.setRuntimeServices(rsvc);}}
{{                return contextCartridge.methodException(context, claz, 
method, e, info);}}
{{            }}}

 


> Exception swallowed when context cartrige with no method exception handler
> --------------------------------------------------------------------------
>
>                 Key: VELOCITY-998
>                 URL: https://issues.apache.org/jira/browse/VELOCITY-998
>             Project: Velocity
>          Issue Type: Bug
>          Components: Engine
>    Affects Versions: 2.4.1
>            Reporter: Peter SEVERIN
>            Priority: Minor
>
> The EventHandlerUtil.methodException method can swallow the exception if 
> there is a context EventCartrige with no method exception handler attached. 
> The following code calls EventCartrige#methodException method:
> {code:java}
>             EventCartridge contextCartridge = context.getEventCartridge();
>             if (contextCartridge != null)
>             {
>                 contextCartridge.setRuntimeServices(rsvc);
>                 return contextCartridge.methodException(context, claz, 
> method, e, info);
> {code}
> Which looks like this:
> {{        if (methodExceptionHandler != null)}}
> {{        {}}
> {{            return methodExceptionHandler.methodException(context, claz, 
> method, e, info);}}
> {\{        }}}
> {{        return null;}}
> When no method exception handler is set the method returns null and the 
> exception is lost. This should not be the case as the behavior is different 
> when there is no context EventCartrige.
> The fix should looks like this:
> {{            EventCartridge contextCartridge = context.getEventCartridge();}}
> {{            if (contextCartridge != null{color:#de350b} && 
> contextCartridge.hasMethodExceptionEventHandler(){color})}}
> {{            {}}
> {{                contextCartridge.setRuntimeServices(rsvc);}}
> {{                return contextCartridge.methodException(context, claz, 
> method, e, info);}}
> {\{            }}}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to