diff options
Diffstat (limited to 'libjava/java/io/ObjectOutputStream.java')
-rw-r--r-- | libjava/java/io/ObjectOutputStream.java | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/libjava/java/io/ObjectOutputStream.java b/libjava/java/io/ObjectOutputStream.java index cc77976b492..2435b070d08 100644 --- a/libjava/java/io/ObjectOutputStream.java +++ b/libjava/java/io/ObjectOutputStream.java @@ -48,6 +48,7 @@ import java.util.Hashtable; import gnu.java.io.ObjectIdentityWrapper; import gnu.java.lang.reflect.TypeSignature; +import gnu.java.security.action.SetAccessibleAction; import gnu.classpath.Configuration; /** @@ -1516,20 +1517,14 @@ public class ObjectOutputStream extends OutputStream } } - private static Field getField (Class klass, String name) + private Field getField (Class klass, String name) throws java.io.InvalidClassException { try { final Field f = klass.getDeclaredField(name); - AccessController.doPrivileged(new PrivilegedAction() - { - public Object run() - { - f.setAccessible(true); - return null; - } - }); + setAccessible.setMember(f); + AccessController.doPrivileged(setAccessible); return f; } catch (java.lang.NoSuchFieldException e) @@ -1539,18 +1534,12 @@ public class ObjectOutputStream extends OutputStream } } - private static Method getMethod (Class klass, String name, Class[] args) + private Method getMethod (Class klass, String name, Class[] args) throws java.lang.NoSuchMethodException { final Method m = klass.getDeclaredMethod(name, args); - AccessController.doPrivileged(new PrivilegedAction() - { - public Object run() - { - m.setAccessible(true); - return null; - } - }); + setAccessible.setMember(m); + AccessController.doPrivileged(setAccessible); return m; } @@ -1583,6 +1572,7 @@ public class ObjectOutputStream extends OutputStream private Hashtable OIDLookupTable; private int protocolVersion; private boolean useSubclassMethod; + private SetAccessibleAction setAccessible = new SetAccessibleAction(); // The nesting depth for debugging output private int depth = 0; |