libjava/classpath/ChangeLog.gcj:

2007-05-31  Matthias Klose  <doko@ubuntu.com>

        * javax/management/NotificationBroadcasterSupport.java
        (getNotificationInfo): Add cast.
        * native/jni/qt-peer/Makefile.am (AM_CXXFLAGS): Add libstdc++ include
        directories.
        * native/jni/qt-peer/Makefile.in: Regenerate.

libjava/ChangeLog:

2007-06-03  Matthias Klose  <doko@ubuntu.com>

        * java/io/natFileWin32.cc (setFilePermissions): New (stub only).
        _access: Handle EXEC query, stub only.

2007-06-03  Matthias Klose  <doko@ubuntu.com>

        Merged from classpath:
        * gnu/java/nio/SelectorProviderImpl.java: Whitespace merge.
        * java/lang/System.java(inheritedChannel): New.
        * java/lang/Character.java: Remove stray`;'.
        * java/net/MulticastSocket.java: Merged.
        * java/text/DateFormatSymbols.java(getInstance): New, comment updates.
        * java/text/Collator.java(getInstance): Merged.
        * java/util/Calendar.java: New attributes ALL_STYLES, SHORT, LONG.
        getDisplayName, getDisplayNames: New.
        * java/util/logging/Logger.java: Merged.
        * Regenerate .class and .h files.

2007-06-03  Matthias Klose  <doko@ubuntu.com>

        * java/io/File.java: Merge with classpath-0.95, new method
        setFilePermissions, new attribute EXEC.
        * java/io/natFilePosix.cc (setFilePermissions): New.
        _access: Handle EXEC query.
        * classpath/lib/java/io/File.class, java/io/File.h: Regenerate.

2007-06-03  Matthias Klose  <doko@ubuntu.com>

        Imported GNU Classpath 0.95.

        * classpath/Makefile.in,
        classpath/native/jni/midi-dssi/Makefile.in,
        classpath/native/jni/classpath/Makefile.in,
        classpath/native/jni/Makefile.in,
        classpath/native/jni/gconf-peer/Makefile.in,
        classpath/native/jni/java-io/Makefile.in,
        classpath/native/jni/native-lib/Makefile.in,
        classpath/native/jni/java-util/Makefile.in,
        classpath/native/jni/midi-alsa/Makefile.in,
        classpath/native/jni/java-lang/Makefile.in,
        classpath/native/jni/java-nio/Makefile.in,
        classpath/native/jni/java-net/Makefile.in,
        classpath/native/jni/xmlj/Makefile.in,
        classpath/native/jni/qt-peer/Makefile.in,
        classpath/native/jni/gtk-peer/Makefile.in,
        classpath/native/Makefile.in, classpath/native/jawt/Makefile.in,
        classpath/native/fdlibm/Makefile.in,
        classpath/native/plugin/Makefile.in,
        classpath/resource/Makefile.in, classpath/scripts/Makefile.in,
        classpath/tools/Makefile.in, classpath/doc/Makefile.in,
        classpath/doc/api/Makefile.in, classpath/lib/Makefile.in,
        classpath/external/Makefile.in, classpath/external/jsr166/Makefile.in,
        classpath/external/sax/Makefile.in,
        classpath/external/w3c_dom/Makefile.in,
        classpath/external/relaxngDatatype/Makefile.in,
        classpath/include/Makefile.in,
        classpath/examples/Makefile.in: Regenerate.
        * classpath/config.guess, classpath/config.sub,
        classpath/ltmain.sh : Update.
        * classpath/configure, classpath/depcomp, classpath/missing,
        classpath/aclocal.m4, classpath/install-sh: Regenerate.

        * gnu/classpath/Configuration.java (CLASSPATH_VERSION): Now 0.95.
        * sources.am: Regenerate.
        * Makefile.in: Regenerate.

        * Update the .class files and generated CNI header files, add new
        .class and generated CNI header files.
        * Remove generated files for removed java source files:
        classpath/gnu/java/net/BASE64.java,
        classpath/gnu/java/security/util/Base64.java,
        classpath/gnu/java/awt/peer/gtk/GThreadMutex.java,
        classpath/gnu/java/awt/peer/gtk/GThreadNativeMethodRunner.java,
        classpath/gnu/java/awt/font/autofit/Scaler.java,
        classpath/gnu/classpath/jdwp/util/Value.java,
        classpath/gnu/javax/net/ssl/Base64.java.
        * Remove empty directories.

        * Makefile.am(nat_source_files): Add natVMOperatingSystemMXBeanImpl.cc.
        * java/lang/Class.java(setAccessible): Merge from classpath.
        * java/util/Locale.java: Remove.
        * gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java,
        gnu/java/lang/management/natVMOperatingSystemMXBeanImpl.cc: New.
        * gcj/javaprims.h: Update class declarations.
        * scripts/classes.pl: Update usage.
        * HACKING: Mention to build all peers.

From-SVN: r125302
This commit is contained in:
Matthias Klose 2007-06-03 23:18:43 +00:00
parent af333b9a7f
commit e1bea0c068
2951 changed files with 80982 additions and 68583 deletions

View file

@ -106,10 +106,19 @@ public class StandardMBean
}
catch (ClassNotFoundException e)
{
throw (NotCompliantMBeanException)
(new NotCompliantMBeanException("An interface, " + className +
"MBean, for the class " + className +
" was not found.").initCause(e));
for (Class<?> nextIface : getClass().getInterfaces())
{
if (JMX.isMXBeanInterface(nextIface))
{
iface = nextIface;
break;
}
}
if (iface == null)
throw (NotCompliantMBeanException)
(new NotCompliantMBeanException("An interface for the class "
+ className +
" was not found.").initCause(e));
}
}
if (!(iface.isInstance(this)))
@ -140,18 +149,28 @@ public class StandardMBean
throw new IllegalArgumentException("The specified implementation is null.");
if (iface == null)
{
String className = impl.getClass().getName();
Class<?> implClass = impl.getClass();
String className = implClass.getName();
try
{
this.iface = Class.forName(className + "MBean", true,
impl.getClass().getClassLoader());
implClass.getClassLoader());
}
catch (ClassNotFoundException e)
{
throw (NotCompliantMBeanException)
(new NotCompliantMBeanException("An interface, " + className +
"MBean, for the class " + className +
" was not found.").initCause(e));
for (Class<?> nextIface : implClass.getInterfaces())
{
if (JMX.isMXBeanInterface(nextIface))
{
this.iface = nextIface;
break;
}
}
if (this.iface == null)
throw (NotCompliantMBeanException)
(new NotCompliantMBeanException("An interface for the class " +
className +
" was not found.").initCause(e));
}
}
else
@ -753,19 +772,30 @@ public class StandardMBean
public Object invoke(String name, Object[] params, String[] signature)
throws MBeanException, ReflectionException
{
Class[] sigTypes = new Class[signature.length];
if (name.startsWith("get") || name.startsWith("is") ||
name.startsWith("set"))
throw new ReflectionException(new NoSuchMethodException(),
"Invocation of an attribute " +
"method is disallowed.");
ClassLoader loader = getClass().getClassLoader();
for (int a = 0; a < signature.length; ++a)
try
{
sigTypes[a] = Class.forName(signature[a], true, loader);
}
catch (ClassNotFoundException e)
{
throw new ReflectionException(e, "The class, " + signature[a] +
", in the method signature " +
"could not be loaded.");
}
Class[] sigTypes;
if (signature != null)
{
sigTypes = new Class[signature.length];
for (int a = 0; a < signature.length; ++a)
try
{
sigTypes[a] = Class.forName(signature[a], true, loader);
}
catch (ClassNotFoundException e)
{
throw new ReflectionException(e, "The class, " + signature[a] +
", in the method signature " +
"could not be loaded.");
}
}
else
sigTypes = null;
Method method;
try
{
@ -824,23 +854,12 @@ public class StandardMBean
throws AttributeNotFoundException, InvalidAttributeValueException,
MBeanException, ReflectionException
{
Method setter;
String name = attribute.getName();
try
{
setter = iface.getMethod("set" +
name.substring(0, 1).toUpperCase() +
name.substring(1), null);
}
catch (NoSuchMethodException e)
{
throw ((AttributeNotFoundException)
new AttributeNotFoundException("The attribute, " + name +
", was not found.").initCause(e));
}
String attName = name.substring(0, 1).toUpperCase() + name.substring(1);
Object val = attribute.getValue();
try
{
setter.invoke(impl, new Object[] { attribute.getValue() });
getMutator(attName, val.getClass()).invoke(impl, new Object[] { val });
}
catch (IllegalAccessException e)
{
@ -855,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");
}
}
@ -925,4 +944,142 @@ public class StandardMBean
this.impl = impl;
}
/**
* Returns the mutator method for a particular attribute name
* with a parameter type matching that of the given value.
*
* @param name the name of the attribute.
* @param type the type of the parameter.
* @return the appropriate mutator method.
* @throws AttributeNotFoundException if a method can't be found.
*/
private Method getMutator(String name, Class<?> type)
throws AttributeNotFoundException
{
String mutator = "set" + name;
Exception ex = null;
try
{
return iface.getMethod(mutator, type);
}
catch (NoSuchMethodException e)
{
/* Ignored; we'll try harder instead */
ex = e;
}
/* Special cases */
if (type == Boolean.class)
try
{
return iface.getMethod(mutator, Boolean.TYPE);
}
catch (NoSuchMethodException e)
{
throw ((AttributeNotFoundException)
new AttributeNotFoundException("The attribute, " + name +
", was not found.").initCause(e));
}
if (type == Byte.class)
try
{
return iface.getMethod(mutator, Byte.TYPE);
}
catch (NoSuchMethodException e)
{
throw ((AttributeNotFoundException)
new AttributeNotFoundException("The attribute, " + name +
", was not found.").initCause(e));
}
if (type == Character.class)
try
{
return iface.getMethod(mutator, Character.TYPE);
}
catch (NoSuchMethodException e)
{
throw ((AttributeNotFoundException)
new AttributeNotFoundException("The attribute, " + name +
", was not found.").initCause(e));
}
if (type == Double.class)
try
{
return iface.getMethod(mutator, Double.TYPE);
}
catch (NoSuchMethodException e)
{
throw ((AttributeNotFoundException)
new AttributeNotFoundException("The attribute, " + name +
", was not found.").initCause(e));
}
if (type == Float.class)
try
{
return iface.getMethod(mutator, Float.TYPE);
}
catch (NoSuchMethodException e)
{
throw ((AttributeNotFoundException)
new AttributeNotFoundException("The attribute, " + name +
", was not found.").initCause(e));
}
if (type == Integer.class)
try
{
return iface.getMethod(mutator, Integer.TYPE);
}
catch (NoSuchMethodException e)
{
throw ((AttributeNotFoundException)
new AttributeNotFoundException("The attribute, " + name +
", was not found.").initCause(e));
}
if (type == Long.class)
try
{
return iface.getMethod(mutator, Long.TYPE);
}
catch (NoSuchMethodException e)
{
throw ((AttributeNotFoundException)
new AttributeNotFoundException("The attribute, " + name +
", was not found.").initCause(e));
}
if (type == Short.class)
try
{
return iface.getMethod(mutator, Short.TYPE);
}
catch (NoSuchMethodException e)
{
throw ((AttributeNotFoundException)
new AttributeNotFoundException("The attribute, " + name +
", was not found.").initCause(e));
}
/* Superclasses and interfaces */
for (Class<?> i : type.getInterfaces())
try
{
return getMutator(name, i);
}
catch (AttributeNotFoundException e)
{
ex = e;
}
Class<?> sclass = type.getSuperclass();
if (sclass != null && sclass != Object.class)
try
{
return getMutator(name, sclass);
}
catch (AttributeNotFoundException e)
{
ex = e;
}
/* If we get this far, give up */
throw ((AttributeNotFoundException)
new AttributeNotFoundException("The attribute, " + name +
", was not found.").initCause(ex));
}
}