summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew John Hughes <gnu_andrew@member.fsf.org>2007-04-01 16:34:13 +0000
committerAndrew John Hughes <gnu_andrew@member.fsf.org>2007-04-01 16:34:13 +0000
commit307da2e11dfb3d34aaf7db8e141c91c1a28e78db (patch)
tree1882c38fca14e64add282d070bf204c42fea89ac
parent3e09b88a6a2073f52ba900514c3373c531e62f29 (diff)
downloadclasspath-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.
-rw-r--r--ChangeLog13
-rw-r--r--gnu/javax/management/Translator.java29
-rw-r--r--javax/management/JMX.java2
-rw-r--r--javax/management/StandardMBean.java4
4 files changed, 43 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 41fcfb0cd..3f58e44c1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+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.
+
2007-03-31 Jeroen Frijters <jeroen@frijters.net>
PR classpath/31402:
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.");
}
diff --git a/javax/management/JMX.java b/javax/management/JMX.java
index fb3bd2b66..a435d3e6b 100644
--- a/javax/management/JMX.java
+++ b/javax/management/JMX.java
@@ -298,7 +298,7 @@ public class JMX
public static <T> T newMXBeanProxy(MBeanServerConnection conn,
ObjectName name, Class<T> iface)
{
- return newMBeanProxy(conn, name, iface, false);
+ return newMXBeanProxy(conn, name, iface, false);
}
/**
diff --git a/javax/management/StandardMBean.java b/javax/management/StandardMBean.java
index d466b5af6..374838453 100644
--- a/javax/management/StandardMBean.java
+++ b/javax/management/StandardMBean.java
@@ -874,8 +874,8 @@ public class StandardMBean
}
catch (InvocationTargetException e)
{
- throw new MBeanException((Exception) e.getCause(), "The getter of "
- + name + " threw an exception");
+ throw new MBeanException(e, "The getter of " + name +
+ " threw an exception");
}
}