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

Gerhard Petracek resolved DELTASPIKE-984.
-----------------------------------------
       Resolution: Fixed
    Fix Version/s: 1.5.1

> DynamicMBeanWrapper throws misleading MBeanException saying that the required 
> action does not exist when MBean method (deliberately) throws an exception
> --------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DELTASPIKE-984
>                 URL: https://issues.apache.org/jira/browse/DELTASPIKE-984
>             Project: DeltaSpike
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.0.2
>            Reporter: Falko Modler
>             Fix For: 1.5.1
>
>
> See {{org.apache.deltaspike.core.impl.jmx.DynamicMBeanWrapper.invoke(String, 
> Object[], String[])}}:
> {code:java}
>         if (operations.containsKey(actionName))
>         {
>             final ClassLoader oldCl = 
> Thread.currentThread().getContextClassLoader();
>             Thread.currentThread().setContextClassLoader(classloader);
>             try
>             {
>                 return operations.get(actionName).invoke(instance(), params);
>             }
>             catch (IllegalArgumentException e)
>             {
>                 LOGGER.log(Level.SEVERE, actionName + "can't be invoked", e);
>             }
>             catch (IllegalAccessException e)
>             {
>                 LOGGER.log(Level.SEVERE, actionName + "can't be invoked", e);
>             }
>             catch (InvocationTargetException e)
>             {
>                 LOGGER.log(Level.SEVERE, actionName + "can't be invoked", e);
>             }
>             finally
>             {
>                 Thread.currentThread().setContextClassLoader(oldCl);
>             }
>         }
>         throw new MBeanException(new IllegalArgumentException(), actionName + 
> " doesn't exist");
> {code}
> When the MBean method throws an exception, the wrapper catches and logs the 
> {{InvocationTargetException}}. But as the last step a {{MBeanException}} with 
> cause {{actionName + " doesn't exist"}} is thrown, regardless of what went 
> wrong actually!
> The "doesn't exist" exception should be moved into an else block.
> The specificly caught exception should be wrapped into a new 
> {{MBeanException}} which should be thrown afterwards. If wrapping is not 
> possible due to classloadings constraints, at least the message of the 
> original exception should be retained.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to