Re-merges with Classpath, from various people:
* java/lang/Double.java (parseDouble): Fixed ordering of modifiers. * java/lang/reflect/AccessibleObject.java: Javadoc, reindented. * java/lang/reflect/Member.java: Reindented. * java/lang/reflect/Modifier.java: Reindented. (toString): Only trim trailing space if text was added to StringBuffer. * java/util/ConcurrentModificationException.java: Javadoc updates. * java/util/EmptyStackException.java: Likewise. * java/util/NoSuchElementException.java: Likewise. From-SVN: r47018
This commit is contained in:
parent
b5c02bff5c
commit
852d3dad0d
@ -1,3 +1,18 @@
|
||||
2001-11-14 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
Re-merges with Classpath, from various people:
|
||||
* java/lang/Double.java (parseDouble): Fixed ordering of
|
||||
modifiers.
|
||||
* java/lang/reflect/AccessibleObject.java: Javadoc, reindented.
|
||||
* java/lang/reflect/Member.java: Reindented.
|
||||
* java/lang/reflect/Modifier.java: Reindented.
|
||||
(toString): Only trim trailing space if text was added to
|
||||
StringBuffer.
|
||||
* java/util/ConcurrentModificationException.java: Javadoc
|
||||
updates.
|
||||
* java/util/EmptyStackException.java: Likewise.
|
||||
* java/util/NoSuchElementException.java: Likewise.
|
||||
|
||||
2001-11-13 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
Fix for PR libgcj/4859:
|
||||
|
@ -504,7 +504,7 @@ public final class Double extends Number implements Comparable
|
||||
* @see #NEGATIVE_INFINITY
|
||||
* @since 1.2
|
||||
*/
|
||||
public native static double parseDouble (String s)
|
||||
public static native double parseDouble (String s)
|
||||
throws NumberFormatException;
|
||||
|
||||
/**
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* java.lang.reflect.AccessibleObject
|
||||
Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
@ -7,7 +7,7 @@ GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
@ -24,54 +24,146 @@ resulting executable to be covered by the GNU General Public License.
|
||||
This exception does not however invalidate any other reasons why the
|
||||
executable file might be covered by the GNU General Public License. */
|
||||
|
||||
|
||||
|
||||
package java.lang.reflect;
|
||||
|
||||
/**
|
||||
* This class is the superclass of various reflection classes, and
|
||||
* allows sufficiently trusted code to bypass normal restrictions to
|
||||
* do necessary things like invoke private methods outside of the
|
||||
* class during Serialization. If you don't have a good reason
|
||||
* to mess with this, don't try. Fortunately, there are adequate
|
||||
* security checks before you can set a reflection object as accessible.
|
||||
*
|
||||
* @author Tom Tromey <tromey@cygnus.com>
|
||||
* @date December 12, 1998
|
||||
* @author Eric Blake <ebb9@email.byu.edu>
|
||||
* @see Field
|
||||
* @see Constructor
|
||||
* @see Method
|
||||
* @see ReflectPermission
|
||||
* @since 1.2
|
||||
* @status updated to 1.4
|
||||
*/
|
||||
/* Written using JDK 1.2 beta docs.
|
||||
* Status: Believed complete and correct.
|
||||
*/
|
||||
|
||||
public class AccessibleObject
|
||||
{
|
||||
protected AccessibleObject ()
|
||||
/**
|
||||
* True if this object is marked accessible, which means the reflected
|
||||
* object bypasses normal security checks. <em>NOTE</em>Don't try messing
|
||||
* with this by reflection. You'll mess yourself up.
|
||||
*/
|
||||
// default visibility for use by inherited classes
|
||||
boolean flag = false;
|
||||
|
||||
/**
|
||||
* Only the three reflection classes that extend this can create an
|
||||
* accessible object. This is not serializable for security reasons.
|
||||
*/
|
||||
protected AccessibleObject()
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
|
||||
public boolean isAccessible ()
|
||||
/**
|
||||
* Return the accessibility status of this object.
|
||||
*
|
||||
* @return true if this object bypasses security checks
|
||||
*/
|
||||
public boolean isAccessible()
|
||||
{
|
||||
return flag;
|
||||
}
|
||||
|
||||
public static void setAccessible (AccessibleObject[] array, boolean flag)
|
||||
/**
|
||||
* Convenience method to set the flag on a number of objects with a single
|
||||
* security check. If a security manager exists, it is checked for
|
||||
* <code>ReflectPermission("suppressAccessChecks")</code>.<p>
|
||||
*
|
||||
* If <code>flag</code> is true, and the initial security check succeeds,
|
||||
* this can still fail if a forbidden object is encountered, leaving the
|
||||
* array half-modified. At the moment, the forbidden members are:<br>
|
||||
* <ul>
|
||||
* <li>Any Constructor for java.lang.Class</li>
|
||||
* <li>Any AccessibleObject for java.lang.reflect.AccessibleObject
|
||||
* (this is not specified by Sun, but it closes a big security hole
|
||||
* where you can use reflection to bypass the security checks that
|
||||
* reflection is supposed to provide)</li>
|
||||
* </ul>
|
||||
* (Sun has not specified others, but good candidates might include
|
||||
* ClassLoader, String, and such. However, the more checks we do, the
|
||||
* slower this method gets).
|
||||
*
|
||||
* @param array the array of accessible objects
|
||||
* @param flag the desired state of accessibility, true to bypass security
|
||||
* @throws NullPointerException if array is null
|
||||
* @throws SecurityException if the request is denied
|
||||
* @see SecurityManager#checkPermission(java.security.Permission)
|
||||
* @see RuntimePermission
|
||||
*/
|
||||
public static void setAccessible(AccessibleObject[] array, boolean flag)
|
||||
{
|
||||
checkPermission ();
|
||||
// FIXME: check for invalid changes in the loop.
|
||||
// For instance, can't set this flag to true for a Constructor for
|
||||
// Class (example from the manual).
|
||||
for (int i = 0; i < array.length; ++i)
|
||||
array[i].flag = flag;
|
||||
checkPermission();
|
||||
for (int i = 0; i < array.length; i++)
|
||||
array[i].secureSetAccessible(flag);
|
||||
}
|
||||
|
||||
public void setAccessible (boolean flag)
|
||||
/**
|
||||
* Sets the accessibility flag for this reflection object. If a security
|
||||
* manager exists, it is checked for
|
||||
* <code>ReflectPermission("suppressAccessChecks")</code>.<p>
|
||||
*
|
||||
* If <code>flag</code> is true, and the initial security check succeeds,
|
||||
* this will still fail for a forbidden object. At the moment, the
|
||||
* forbidden members are:<br>
|
||||
* <ul>
|
||||
* <li>Any Constructor for java.lang.Class</li>
|
||||
* <li>Any AccessibleObject for java.lang.reflect.AccessibleObject
|
||||
* (this is not specified by Sun, but it closes a big security hole
|
||||
* where you can use reflection to bypass the security checks that
|
||||
* reflection is supposed to provide)</li>
|
||||
* </ul>
|
||||
* (Sun has not specified others, but good candidates might include
|
||||
* ClassLoader, String, and such. However, the more checks we do, the
|
||||
* slower this method gets).
|
||||
*
|
||||
* @param flag the desired state of accessibility, true to bypass security
|
||||
* @throws NullPointerException if array is null
|
||||
* @throws SecurityException if the request is denied
|
||||
* @see SecurityManager#checkPermission(java.security.Permission)
|
||||
* @see RuntimePermission
|
||||
*/
|
||||
public void setAccessible(boolean flag)
|
||||
{
|
||||
checkPermission ();
|
||||
// FIXME: check for invalid changes.
|
||||
// For instance, can't set this flag to true for a Constructor for
|
||||
// Class (example from the manual).
|
||||
this.flag = flag;
|
||||
checkPermission();
|
||||
secureSetAccessible(flag);
|
||||
}
|
||||
|
||||
private static final void checkPermission ()
|
||||
/**
|
||||
* Performs the specified security check, for
|
||||
* <code>ReflectPermission("suppressAccessChecks")</code>.
|
||||
*
|
||||
* @throws SecurityException if permission is denied
|
||||
*/
|
||||
private static final void checkPermission()
|
||||
{
|
||||
SecurityManager sm = System.getSecurityManager();
|
||||
if (sm != null)
|
||||
sm.checkPermission (new ReflectPermission ("suppressAccessChecks"));
|
||||
sm.checkPermission(new ReflectPermission("suppressAccessChecks"));
|
||||
}
|
||||
|
||||
private boolean flag;
|
||||
/**
|
||||
* Performs the actual accessibility change, this must always be invoked
|
||||
* after calling checkPermission.
|
||||
*
|
||||
* @param flag the desired status
|
||||
* @throws SecurityException if flag is true and this is one of the
|
||||
* forbidden members mentioned in {@link setAccessible(boolean)}.
|
||||
*/
|
||||
private final void secureSetAccessible(boolean flag)
|
||||
{
|
||||
if (flag &&
|
||||
((this instanceof Constructor
|
||||
&& ((Constructor) this).getDeclaringClass() == Class.class)
|
||||
|| ((Member) this).getDeclaringClass() == AccessibleObject.class))
|
||||
throw new SecurityException("Cannot make object accessible: " + this);
|
||||
this.flag = flag;
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* java.lang.reflect.Member
|
||||
/* java.lang.reflect.Member - common query methods in reflection
|
||||
Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
@ -7,7 +7,7 @@ GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
@ -27,55 +27,63 @@ executable file might be covered by the GNU General Public License. */
|
||||
|
||||
package java.lang.reflect;
|
||||
|
||||
/* Written using "Java Class Libraries", 2nd edition.
|
||||
* Status: Believed complete and correct.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Member is an interface that represents any member of a class.
|
||||
* i.e. a field, a method or a constructor.
|
||||
* You can get information about the declaring class, name or modifiers of
|
||||
* the member with this interface.
|
||||
* Member is an interface that represents any member of a class (field or
|
||||
* method) or a constructor. You can get information about the declaring
|
||||
* class, name or modifiers of the member with this interface.
|
||||
*
|
||||
* @author John Keiser
|
||||
* @author Per Bothner <bothner@cygnus.com>
|
||||
* @author John Keiser
|
||||
* @author Per Bothner <bothner@cygnus.com>
|
||||
* @author Eric Blake <ebb9@email.byu.edu>
|
||||
* @see Class
|
||||
* @see Field
|
||||
* @see Method
|
||||
* @see Constructor
|
||||
* @since 1.1
|
||||
* @status updated to 1.4
|
||||
*/
|
||||
public interface Member {
|
||||
/**
|
||||
* Represents all members, whether public, private, protected or
|
||||
* package-protected.
|
||||
* Used in java.lang.SecurityManager.checkMemberAccess() to determine the
|
||||
* type of members to access.
|
||||
*/
|
||||
static final int DECLARED = 1;
|
||||
public interface Member
|
||||
{
|
||||
/**
|
||||
* Represents all members, whether public, private, protected or
|
||||
* package-protected, but only which are declared in this class.
|
||||
* Used in SecurityManager.checkMemberAccess() to determine the
|
||||
* type of members to access.
|
||||
* @see SecurityManager#checkMemberAccess()
|
||||
*/
|
||||
int DECLARED = 1;
|
||||
|
||||
/**
|
||||
* Represents public members only. Used inr
|
||||
* java.lang.SecurityManager.checkMemberAccess() to determine the type of
|
||||
* members to access.
|
||||
*/
|
||||
static final int PUBLIC = 0;
|
||||
/**
|
||||
* Represents public members only, but includes all inherited members.
|
||||
* Used in SecurityManager.checkMemberAccess() to determine the type of
|
||||
* members to access.
|
||||
* @see SecurityManager#checkMemberAccess()
|
||||
*/
|
||||
int PUBLIC = 0;
|
||||
|
||||
/**
|
||||
* Gets the class that declared this member.
|
||||
* <STRONG>It is unclear whether this returns the class that actually
|
||||
* syntactically declared the member, or the class where the
|
||||
* <code>Member</code> object was gotten from.</STRONG>
|
||||
* @return the class that declared this member.
|
||||
*/
|
||||
Class getDeclaringClass();
|
||||
/**
|
||||
* Gets the class that declared this member. This is not the class where
|
||||
* this method was called, or even the class where this Member object
|
||||
* came to life, but the class that declares the member this represents.
|
||||
*
|
||||
* @return the class that declared this member
|
||||
*/
|
||||
Class getDeclaringClass();
|
||||
|
||||
/**
|
||||
* Gets the modifiers this member uses. Use the <code>Modifier</code>
|
||||
* class to interpret the values.
|
||||
* @see Modifier
|
||||
* @return an integer representing the modifiers to this Member.
|
||||
*/
|
||||
int getModifiers();
|
||||
/**
|
||||
* Gets the simple name of this member. This will be a valid Java
|
||||
* identifier, with no qualification.
|
||||
*
|
||||
* @return the name of this member
|
||||
*/
|
||||
String getName();
|
||||
|
||||
/**
|
||||
* Gets the name of this member.
|
||||
* @return the name of this member.
|
||||
*/
|
||||
String getName();
|
||||
/**
|
||||
* Gets the modifiers this member uses. Use the <code>Modifier</code>
|
||||
* class to interpret the values.
|
||||
*
|
||||
* @return an integer representing the modifiers to this Member
|
||||
* @see Modifier
|
||||
*/
|
||||
int getModifiers();
|
||||
}
|
||||
|
@ -30,7 +30,6 @@ package java.util;
|
||||
/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3
|
||||
* "The Java Language Specification", ISBN 0-201-63451-1
|
||||
* plus online API docs for JDK 1.2 beta from http://www.javasoft.com.
|
||||
* Status: Believed complete and correct.
|
||||
*/
|
||||
|
||||
/**
|
||||
@ -38,15 +37,29 @@ package java.util;
|
||||
* a modification has been made to a data structure when this is not allowed,
|
||||
* such as when a collection is structurally modified while an Iterator is
|
||||
* operating over it. In cases where this can be detected, a
|
||||
* ConcurrentModificationException will be thrown. An Iterator that detects this
|
||||
* condition is referred to as fail-fast.
|
||||
* ConcurrentModificationException will be thrown. An Iterator that detects
|
||||
* this condition is referred to as fail-fast. Notice that this can occur
|
||||
* even in single-threaded designs, if you call methods out of order.
|
||||
*
|
||||
* @author Warren Levy <warrenl@cygnus.com>
|
||||
* @date September 2, 1998.
|
||||
* @author Eric Blake <ebb9@email.byu.edu>
|
||||
* @see Collection
|
||||
* @see Iterator
|
||||
* @see ListIterator
|
||||
* @see Vector
|
||||
* @see LinkedList
|
||||
* @see HashSet
|
||||
* @see Hashtable
|
||||
* @see TreeMap
|
||||
* @see AbstractList
|
||||
* @since 1.2
|
||||
* @status updated to 1.4
|
||||
*/
|
||||
public class ConcurrentModificationException extends RuntimeException
|
||||
{
|
||||
/**
|
||||
* Compatible with JDK 1.2.
|
||||
*/
|
||||
private static final long serialVersionUID = -3666751008965953603L;
|
||||
|
||||
/**
|
||||
@ -54,7 +67,6 @@ public class ConcurrentModificationException extends RuntimeException
|
||||
*/
|
||||
public ConcurrentModificationException()
|
||||
{
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -30,7 +30,6 @@ package java.util;
|
||||
/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3
|
||||
* "The Java Language Specification", ISBN 0-201-63451-1
|
||||
* plus online API docs for JDK 1.2 beta from http://www.javasoft.com.
|
||||
* Status: Believed complete and correct.
|
||||
*/
|
||||
|
||||
/**
|
||||
@ -38,10 +37,16 @@ package java.util;
|
||||
* or otherwise access elements from an empty stack.
|
||||
*
|
||||
* @author Warren Levy <warrenl@cygnus.com>
|
||||
* @date September 2, 1998.
|
||||
* @author Eric Blake <ebb9@email.byu.edu>
|
||||
* @see Stack
|
||||
* @since 1.0
|
||||
* @status updated to 1.4
|
||||
*/
|
||||
public class EmptyStackException extends RuntimeException
|
||||
{
|
||||
/**
|
||||
* Compatible with JDK 1.0.
|
||||
*/
|
||||
private static final long serialVersionUID = 5084686378493302095L;
|
||||
|
||||
/**
|
||||
@ -49,6 +54,5 @@ public class EmptyStackException extends RuntimeException
|
||||
*/
|
||||
public EmptyStackException()
|
||||
{
|
||||
super();
|
||||
}
|
||||
}
|
||||
|
@ -30,20 +30,32 @@ package java.util;
|
||||
/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3
|
||||
* "The Java Language Specification", ISBN 0-201-63451-1
|
||||
* plus online API docs for JDK 1.2 beta from http://www.javasoft.com.
|
||||
* Status: Believed complete and correct.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Exception thrown when an attempt is made to access an element that does not
|
||||
* exist. This exception is thrown by the Enumeration, Iterator and ListIterator
|
||||
* classes if the nextElement, next or previous method goes beyond the end of
|
||||
* the list of elements that are being accessed.
|
||||
* exist. This exception is thrown by the Enumeration, Iterator and
|
||||
* ListIterator classes if the nextElement, next or previous method goes
|
||||
* beyond the end of the list of elements that are being accessed. It is also
|
||||
* thrown by Vector and Stack when attempting to access the first or last
|
||||
* element of an empty collection.
|
||||
*
|
||||
* @author Warren Levy <warrenl@cygnus.com>
|
||||
* @date September 2, 1998.
|
||||
* @author Eric Blake <ebb9@email.byu.edu>
|
||||
* @see Enumeration
|
||||
* @see Iterator
|
||||
* @see ListIterator
|
||||
* @see Enumeration#nextElement()
|
||||
* @see Iterator#next()
|
||||
* @see ListIterator#previous()
|
||||
* @since 1.0
|
||||
* @status updated to 1.4
|
||||
*/
|
||||
public class NoSuchElementException extends RuntimeException
|
||||
{
|
||||
/**
|
||||
* Compatible with JDK 1.0.
|
||||
*/
|
||||
private static final long serialVersionUID = 6769829250639411880L;
|
||||
|
||||
/**
|
||||
@ -51,7 +63,6 @@ public class NoSuchElementException extends RuntimeException
|
||||
*/
|
||||
public NoSuchElementException()
|
||||
{
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user