diff options
| author | doko <doko@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-06-28 13:29:13 +0000 |
|---|---|---|
| committer | doko <doko@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-06-28 13:29:13 +0000 |
| commit | 1020ce5944edde4364baef4d371cd4f9b0dae721 (patch) | |
| tree | 602cd7aa7c947386134690d8e0f6b53abcdeacb9 /libjava/classpath/gnu/javax/management | |
| parent | 9f41ce98ce6f4f7c8ac5e2c4b6e5d27e10201015 (diff) | |
| download | ppe42-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.java | 21 | ||||
| -rw-r--r-- | libjava/classpath/gnu/javax/management/Translator.java | 78 |
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); } /** |

