[
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)