summaryrefslogtreecommitdiffstats
path: root/libjava/classpath/gnu/javax/management
diff options
context:
space:
mode:
authordoko <doko@138bc75d-0d04-0410-961f-82ee72b054a4>2008-06-28 13:29:13 +0000
committerdoko <doko@138bc75d-0d04-0410-961f-82ee72b054a4>2008-06-28 13:29:13 +0000
commit1020ce5944edde4364baef4d371cd4f9b0dae721 (patch)
tree602cd7aa7c947386134690d8e0f6b53abcdeacb9 /libjava/classpath/gnu/javax/management
parent9f41ce98ce6f4f7c8ac5e2c4b6e5d27e10201015 (diff)
downloadppe42-gcc-1020ce5944edde4364baef4d371cd4f9b0dae721.tar.gz
ppe42-gcc-1020ce5944edde4364baef4d371cd4f9b0dae721.zip
libjava/
2008-06-28 Matthias Klose <doko@ubuntu.com> Import GNU Classpath (classpath-0_97_2-release). * Regenerate class and header files. * Regenerate auto* files. * gcj/javaprims.h: Define jobjectRefType. * jni.cc (_Jv_JNI_GetObjectRefType): New (stub only). (_Jv_JNIFunctions): Initialize GetObjectRefType. * gnu/classpath/jdwp/VMVirtualMachine.java, java/security/VMSecureRandom.java: Merge from classpath. * HACKING: Fix typo. * ChangeLog-2007: New file. * configure.ac: Set JAVAC, pass --disable-regen-headers to classpath. libjava/classpath/ 2008-06-28 Matthias Klose <doko@ubuntu.com> * m4/ac_prog_javac.m4: Disable check for JAVAC, when not configured with --enable-java-maintainer-mode. * aclocal.m4, configure: Regenerate. * native/jni/gstreamer-peer/Makefile.am: Do not link with libclasspathnative. * native/jni/gstreamer-peer/Makefile.in: Regenerate. * tools/Makefile.am, lib/Makefile.am: Use JAVAC for setting JCOMPILER, drop flags not understood by gcj. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@137223 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/classpath/gnu/javax/management')
-rw-r--r--libjava/classpath/gnu/javax/management/Server.java21
-rw-r--r--libjava/classpath/gnu/javax/management/Translator.java78
2 files changed, 56 insertions, 43 deletions
diff --git a/libjava/classpath/gnu/javax/management/Server.java b/libjava/classpath/gnu/javax/management/Server.java
index 616854e95bd..8e8d826c00f 100644
--- a/libjava/classpath/gnu/javax/management/Server.java
+++ b/libjava/classpath/gnu/javax/management/Server.java
@@ -169,7 +169,7 @@ public class Server
* Constructs a new management server using the specified
* default domain, delegate bean and outer server.
*
- * @param domain the default domain to use for beans constructed
+ * @param defaultDomain the default domain to use for beans constructed
* with no specified domain.
* @param outer an {@link javax.management.MBeanServer} to pass
* to beans implementing the {@link MBeanRegistration}
@@ -229,8 +229,8 @@ public class Server
if (name != null)
{
Object bean = getBean(name);
- Method method = bean.getClass().getMethod("getMBeanInfo", null);
- info = (MBeanInfo) method.invoke(bean, null);
+ Method method = bean.getClass().getMethod("getMBeanInfo");
+ info = (MBeanInfo) method.invoke(bean);
}
sm.checkPermission(new MBeanPermission((info == null) ?
null : info.getClassName(),
@@ -1031,13 +1031,20 @@ public class Server
checkSecurity(name, null, "getMBeanInfo");
try
{
- Method method = bean.getClass().getMethod("getMBeanInfo", null);
- return (MBeanInfo) method.invoke(bean, null);
+ Method method = bean.getClass().getMethod("getMBeanInfo");
+ return (MBeanInfo) method.invoke(bean);
}
catch (NoSuchMethodException e)
{
- throw new IntrospectionException("The getMBeanInfo method " +
- "could not be found.");
+ try
+ {
+ return new StandardMBean(bean, null).getMBeanInfo();
+ }
+ catch (NotCompliantMBeanException ex)
+ {
+ throw new IntrospectionException("An error occurred in executing " +
+ "getMBeanInfo on the bean: " + ex + ".");
+ }
}
catch (IllegalAccessException e)
{
diff --git a/libjava/classpath/gnu/javax/management/Translator.java b/libjava/classpath/gnu/javax/management/Translator.java
index 69191d43f86..4ede3743088 100644
--- a/libjava/classpath/gnu/javax/management/Translator.java
+++ b/libjava/classpath/gnu/javax/management/Translator.java
@@ -39,11 +39,15 @@ package gnu.javax.management;
import java.lang.reflect.Array;
import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Proxy;
import java.lang.reflect.Type;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -92,7 +96,7 @@ public final class Translator
Type[] gtypes = method.getGenericParameterTypes();
Object[] otypes = new Object[jtypes.length];
for (int a = 0; a < jtypes.length; ++a)
- otypes[a] = fromJava(jtypes[a], (Class<?>) gtypes[a]);
+ otypes[a] = fromJava(jtypes[a], gtypes[a]);
return otypes;
}
@@ -131,11 +135,10 @@ public final class Translator
if (jtype instanceof List || jtype instanceof Set ||
jtype instanceof SortedSet)
{
- String elemType = tName.substring(tName.indexOf("<") + 1,
- tName.indexOf(">")).trim();
if (jtype instanceof SortedSet)
{
- Class<?> elemClass = Class.forName(elemType);
+ ParameterizedType ptype = (ParameterizedType) type;
+ Class<?> elemClass = (Class<?>) ptype.getActualTypeArguments()[0];
if (!Comparable.class.isAssignableFrom(elemClass))
throw new IllegalArgumentException(jtype + " has a " +
"non-comparable element " +
@@ -144,11 +147,13 @@ public final class Translator
throw new IllegalArgumentException(jtype + " does not " +
"use natural ordering.");
}
- List elems = (List) jtype;
- Object[] celems = new Object[elems.size()];
- for (int a = 0; a < elems.size(); ++a)
+ Collection<Object> elems = (Collection<Object>) jtype;
+ int numElems = elems.size();
+ Object[] celems = new Object[numElems];
+ Iterator<Object> i = elems.iterator();
+ for (int a = 0; a < numElems; ++a)
{
- Object elem = elems.get(a);
+ Object elem = i.next();
celems[a] = fromJava(elem, elem.getClass());
}
return makeArraySpecific(celems);
@@ -440,33 +445,6 @@ public final class Translator
SimpleType.STRING,
null, names);
}
- try
- {
- c.getMethod("from", new Class[] { CompositeData.class });
- Method[] methods = c.getDeclaredMethods();
- List<String> names = new ArrayList<String>();
- List<OpenType> types = new ArrayList<OpenType>();
- for (int a = 0; a < methods.length; ++a)
- {
- String name = methods[a].getName();
- if (name.startsWith("get"))
- {
- names.add(name.substring(3));
- types.add(getTypeFromClass(methods[a].getReturnType()));
- }
- }
- String[] fields = names.toArray(new String[names.size()]);
- CompositeType ctype = new CompositeType(c.getName(), c.getName(),
- fields, fields,
- types.toArray(new OpenType[types.size()]));
- return new OpenMBeanParameterInfoSupport("TransParam",
- "Translated parameter",
- ctype);
- }
- catch (NoSuchMethodException e)
- {
- /* Ignored; we expect this if this isn't a from(CompositeData) class */
- }
if (c.isArray())
{
int depth;
@@ -478,7 +456,35 @@ public final class Translator
new ArrayType(depth, ot)
);
}
- throw new InternalError("The type used does not have an open type translation.");
+ Method[] methods = c.getDeclaredMethods();
+ List<String> names = new ArrayList<String>();
+ List<OpenType> types = new ArrayList<OpenType>();
+ for (int a = 0; a < methods.length; ++a)
+ {
+ String name = methods[a].getName();
+ if (Modifier.isPublic(methods[a].getModifiers()))
+ {
+ if (name.startsWith("get"))
+ {
+ names.add(name.substring(3));
+ types.add(getTypeFromClass(methods[a].getReturnType()));
+ }
+ else if (name.startsWith("is"))
+ {
+ names.add(name.substring(2));
+ types.add(getTypeFromClass(methods[a].getReturnType()));
+ }
+ }
+ }
+ if (names.isEmpty())
+ throw new OpenDataException("The type used does not have an open type translation.");
+ String[] fields = names.toArray(new String[names.size()]);
+ CompositeType ctype = new CompositeType(c.getName(), c.getName(),
+ fields, fields,
+ types.toArray(new OpenType[types.size()]));
+ return new OpenMBeanParameterInfoSupport("TransParam",
+ "Translated parameter",
+ ctype);
}
/**
OpenPOWER on IntegriCloud