diff options
author | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2007-04-01 16:34:13 +0000 |
---|---|---|
committer | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2007-04-01 16:34:13 +0000 |
commit | 307da2e11dfb3d34aaf7db8e141c91c1a28e78db (patch) | |
tree | 1882c38fca14e64add282d070bf204c42fea89ac /gnu/javax/management | |
parent | 3e09b88a6a2073f52ba900514c3373c531e62f29 (diff) | |
download | classpath-307da2e11dfb3d34aaf7db8e141c91c1a28e78db.tar.gz |
2007-04-01 Andrew John Hughes <gnu_andrew@member.fsf.org>
* gnu/javax/management/Translator.java:
(fromJava(Object[],Method)): Use the array from the
parameter not the newly created one...
(fromJava(Object, Type)): Support MXBeans.
* javax/management/JMX.java:
(newMXBeanProxy(MBeanServerConnection,ObjectName,Class)):
Call newMXBeanProxy rather than newMBeanProxy.
* javax/management/StandardMBean.java:
(setAttribute(Attribute)): Use InvocationTargetException
as cause.
Diffstat (limited to 'gnu/javax/management')
-rw-r--r-- | gnu/javax/management/Translator.java | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/gnu/javax/management/Translator.java b/gnu/javax/management/Translator.java index e9940cf21..163fdd4fd 100644 --- a/gnu/javax/management/Translator.java +++ b/gnu/javax/management/Translator.java @@ -39,6 +39,7 @@ package gnu.javax.management; import java.lang.reflect.Array; import java.lang.reflect.Method; +import java.lang.reflect.Proxy; import java.lang.reflect.Type; import java.util.ArrayList; @@ -49,6 +50,9 @@ import java.util.Set; import java.util.SortedMap; import java.util.SortedSet; +import javax.management.JMX; +import javax.management.MBeanServerInvocationHandler; + import javax.management.openmbean.ArrayType; import javax.management.openmbean.CompositeData; import javax.management.openmbean.CompositeDataSupport; @@ -88,7 +92,7 @@ public final class Translator Type[] gtypes = method.getGenericParameterTypes(); Object[] otypes = new Object[jtypes.length]; for (int a = 0; a < jtypes.length; ++a) - jtypes[a] = fromJava(otypes[a], (Class<?>) gtypes[a]); + otypes[a] = fromJava(jtypes[a], (Class<?>) gtypes[a]); return otypes; } @@ -210,7 +214,28 @@ public final class Translator } return data; } - /* FIXME: Handle MXBean and other types */ + if (JMX.isMXBeanInterface(jclass)) + { + try + { + MBeanServerInvocationHandler ih = (MBeanServerInvocationHandler) + Proxy.getInvocationHandler(jtype); + return ih.getObjectName(); + } + catch (IllegalArgumentException e) + { + throw new IllegalArgumentException("For a MXBean to be translated " + + "to an open type, it must be a " + + "proxy.", e); + } + catch (ClassCastException e) + { + throw new IllegalArgumentException("For a MXBean to be translated " + + "to an open type, it must have a " + + "MBeanServerInvocationHandler.", e); + } + } + /* FIXME: Handle other types */ throw new IllegalArgumentException("The type, " + jtype + ", is not convertible."); } |