Major merge with Classpath.
Removed many duplicate files. * HACKING: Updated.x * classpath: Imported new directory. * standard.omit: New file. * Makefile.in, aclocal.m4, configure: Rebuilt. * sources.am: New file. * configure.ac: Run Classpath configure script. Moved code around to support. Disable xlib AWT peers (temporarily). * Makefile.am (SUBDIRS): Added 'classpath' (JAVAC): Removed. (AM_CPPFLAGS): Added more -I options. (BOOTCLASSPATH): Simplified. Completely redid how sources are built. Include sources.am. * include/Makefile.am (tool_include__HEADERS): Removed jni.h. * include/jni.h: Removed (in Classpath). * scripts/classes.pl: Updated to look at built classes. * scripts/makemake.tcl: New file. * testsuite/libjava.jni/jni.exp (gcj_jni_compile_c_to_so): Added -I options. (gcj_jni_invocation_compile_c_to_binary): Likewise. From-SVN: r102082
This commit is contained in:
parent
ea54b29342
commit
b0fa81eea9
2817 changed files with 11656 additions and 643398 deletions
|
@ -1,159 +0,0 @@
|
|||
/* java.lang.reflect.AccessibleObject
|
||||
Copyright (C) 2001, 2005 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
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
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
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)
|
||||
* @author Eric Blake (ebb9@email.byu.edu)
|
||||
* @see Field
|
||||
* @see Constructor
|
||||
* @see Method
|
||||
* @see ReflectPermission
|
||||
* @since 1.2
|
||||
* @status updated to 1.4
|
||||
*/
|
||||
public class AccessibleObject
|
||||
{
|
||||
/**
|
||||
* True if this object is marked accessible, which means the reflected
|
||||
* object bypasses normal security checks.
|
||||
*/
|
||||
// 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()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the accessibility status of this object.
|
||||
*
|
||||
* @return true if this object bypasses security checks
|
||||
*/
|
||||
public boolean isAccessible()
|
||||
{
|
||||
return 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>
|
||||
*
|
||||
* It is forbidden to set the accessibility flag to true on any constructor
|
||||
* for java.lang.Class. This will result in a SecurityException. If the
|
||||
* SecurityException is thrown for any of the passed AccessibleObjects,
|
||||
* the accessibility flag will be set on AccessibleObjects in the array prior
|
||||
* to the one which resulted in the exception.
|
||||
*
|
||||
* @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();
|
||||
for (int i = 0; i < array.length; i++)
|
||||
array[i].secureSetAccessible(flag);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the accessibility flag for this reflection object. If a security
|
||||
* manager exists, it is checked for
|
||||
* <code>ReflectPermission("suppressAccessChecks")</code>.<p>
|
||||
*
|
||||
* It is forbidden to set the accessibility flag to true on any constructor for
|
||||
* java.lang.Class. This will result in a SecurityException.
|
||||
*
|
||||
* @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();
|
||||
secureSetAccessible(flag);
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs the specified security check, for
|
||||
* <code>ReflectPermission("suppressAccessChecks")</code>.
|
||||
*
|
||||
* @throws SecurityException if permission is denied
|
||||
*/
|
||||
private static void checkPermission()
|
||||
{
|
||||
SecurityManager sm = System.getSecurityManager();
|
||||
if (sm != null)
|
||||
sm.checkPermission(new ReflectPermission("suppressAccessChecks"));
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 a constructor
|
||||
* for <code>java.lang.Class</code>.
|
||||
*/
|
||||
private void secureSetAccessible(boolean flag)
|
||||
{
|
||||
if (flag &&
|
||||
(this instanceof Constructor
|
||||
&& ((Constructor) this).getDeclaringClass() == Class.class))
|
||||
throw new SecurityException("Cannot make object accessible: " + this);
|
||||
this.flag = flag;
|
||||
}
|
||||
}
|
|
@ -1,137 +0,0 @@
|
|||
/* java.lang.reflect.InvocationHandler - dynamically executes methods in
|
||||
proxy instances
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
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
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package java.lang.reflect;
|
||||
|
||||
/**
|
||||
* This interface defines an invocation handler. Suppose you are using
|
||||
* reflection, and found a method that requires that its parameter
|
||||
* be an object of a given interface. You want to call this method,
|
||||
* but have no idea what classes implement that interface. So, you can
|
||||
* create a {@link Proxy} instance, a convenient way to dynamically
|
||||
* generate a class that meets all the necessary properties of that
|
||||
* interface. But in order for the proxy instance to do any good, it
|
||||
* needs to know what to do when interface methods are invoked! So,
|
||||
* this interface is basically a cool wrapper that provides runtime
|
||||
* code generation needed by proxy instances.
|
||||
*
|
||||
* <p>While this interface was designed for use by Proxy, it will also
|
||||
* work on any object in general.</p>
|
||||
*
|
||||
* <p>Hints for implementing this class:</p>
|
||||
*
|
||||
* <ul>
|
||||
* <li>Don't forget that Object.equals, Object.hashCode, and
|
||||
* Object.toString will call this handler. In particular,
|
||||
* a naive call to proxy.equals, proxy.hashCode, or proxy.toString
|
||||
* will put you in an infinite loop. And remember that string
|
||||
* concatenation also invokes toString.</li>
|
||||
* <li>Obey the contract of the Method object you are handling, or
|
||||
* the proxy instance will be forced to throw a
|
||||
* {@link NullPointerException}, {@link ClassCastException},
|
||||
* or {@link UndeclaredThrowableException}.</li>
|
||||
* <li>Be prepared to wrap/unwrap primitives as necessary.</li>
|
||||
* <li>The Method object may be owned by a different interface than
|
||||
* what was actually used as the qualifying type of the method
|
||||
* invocation in the Java source code. This means that it might
|
||||
* not always be safe to throw an exception listed as belonging
|
||||
* to the method's throws clause.</li>
|
||||
* </ul>
|
||||
*
|
||||
* <p><small>For a fun time, create an InvocationHandler that handles the
|
||||
* methods of a proxy instance of the InvocationHandler interface!</small></p>
|
||||
*
|
||||
* @see Proxy
|
||||
* @see UndeclaredThrowableException
|
||||
*
|
||||
* @author Eric Blake (ebb9@email.byu.edu)
|
||||
* @since 1.3
|
||||
* @status updated to 1.4
|
||||
*/
|
||||
public interface InvocationHandler
|
||||
{
|
||||
/**
|
||||
* When a method is invoked on a proxy instance, it is wrapped and
|
||||
* this method is called instead, so that you may decide at runtime
|
||||
* how the original method should behave.
|
||||
*
|
||||
* @param proxy the instance that the wrapped method should be
|
||||
* invoked on. When this method is called by a Proxy object,
|
||||
* `proxy' will be an instance of {@link Proxy}, and oddly enough,
|
||||
* <code>Proxy.getInvocationHandler(proxy)</code> will return
|
||||
* <code>this</code>!
|
||||
* @param method the reflected method to invoke on the proxy.
|
||||
* When this method is called by a Proxy object, 'method'
|
||||
* will be the reflection object owned by the declaring
|
||||
* class or interface, which may be a supertype of the
|
||||
* interfaces the proxy directly implements.
|
||||
* @param args the arguments passed to the original method, or
|
||||
* <code>null</code> if the method takes no arguments.
|
||||
* (But also be prepared to handle a 0-length array).
|
||||
* Arguments of primitive type, such as <code>boolean</code>
|
||||
* or <code>int</code>, are wrapped in the appropriate
|
||||
* class such as {@link Boolean} or {@link Integer}.
|
||||
* @return whatever is necessary to return from the wrapped method.
|
||||
* If the wrapped method is <code>void</code>, the proxy
|
||||
* instance will ignore it. If the wrapped method returns
|
||||
* a primitive, this must be the correct wrapper type whose value
|
||||
* is exactly assignable to the appropriate type (no widening
|
||||
* will be performed); a null object in this case causes a
|
||||
* {@link NullPointerException}. In all remaining cases, if
|
||||
* the returned object is not assignment compatible to the
|
||||
* declared type of the original method, the proxy instance
|
||||
* will generate a {@link ClassCastException}.
|
||||
* @throws Throwable this interface is listed as throwing anything,
|
||||
* but the implementation should only throw unchecked
|
||||
* exceptions and exceptions listed in the throws clause of
|
||||
* all methods being overridden by the proxy instance. If
|
||||
* something is thrown that is not compatible with the throws
|
||||
* clause of all overridden methods, the proxy instance will
|
||||
* wrap the exception in an UndeclaredThrowableException.
|
||||
* Note that an exception listed in the throws clause of the
|
||||
* `method' parameter might not be declared in additional
|
||||
* interfaces also implemented by the proxy object.
|
||||
*
|
||||
* @see Proxy
|
||||
* @see UndeclaredThrowableException
|
||||
*/
|
||||
Object invoke(Object proxy, Method method, Object[] args)
|
||||
throws Throwable;
|
||||
|
||||
}
|
|
@ -1,123 +0,0 @@
|
|||
/* InvocationTargetException.java -- Wrapper exception for reflection
|
||||
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2005 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
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
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package java.lang.reflect;
|
||||
|
||||
/**
|
||||
* InvocationTargetException is sort of a way to "wrap" whatever exception
|
||||
* comes up when a method or constructor is called via Reflection. As of
|
||||
* JDK 1.4, it was retrofitted to match the exception chaining of all other
|
||||
* exceptions, but <code>getTargetException()</code> still works.
|
||||
*
|
||||
* @author John Keiser
|
||||
* @author Tom Tromey (tromey@cygnus.com)
|
||||
* @author Eric Blake (ebb9@email.byu.edu)
|
||||
* @see Method#invoke(Object,Object[])
|
||||
* @see Constructor#newInstance(Object[])
|
||||
* @since 1.1
|
||||
* @status updated to 1.4
|
||||
*/
|
||||
public class InvocationTargetException extends Exception
|
||||
{
|
||||
/**
|
||||
* Compatible with JDK 1.1+.
|
||||
*/
|
||||
private static final long serialVersionUID = 4085088731926701167L;
|
||||
|
||||
/**
|
||||
* The chained exception. This field is only around for serial compatibility.
|
||||
*
|
||||
* @serial the chained exception
|
||||
*/
|
||||
private final Throwable target;
|
||||
|
||||
/**
|
||||
* Construct an exception with null as the cause. The cause is initialized
|
||||
* to null.
|
||||
*/
|
||||
protected InvocationTargetException()
|
||||
{
|
||||
this(null, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an <code>InvocationTargetException</code> using another
|
||||
* exception.
|
||||
*
|
||||
* @param targetException the exception to wrap
|
||||
*/
|
||||
public InvocationTargetException(Throwable targetException)
|
||||
{
|
||||
this(targetException, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an <code>InvocationTargetException</code> using another
|
||||
* exception and an error message.
|
||||
*
|
||||
* @param targetException the exception to wrap
|
||||
* @param err an extra reason for the exception-throwing
|
||||
*/
|
||||
public InvocationTargetException(Throwable targetException, String err)
|
||||
{
|
||||
super(err, targetException);
|
||||
target = targetException;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the wrapped (targeted) exception.
|
||||
*
|
||||
* @return the targeted exception
|
||||
* @see #getCause()
|
||||
*/
|
||||
public Throwable getTargetException()
|
||||
{
|
||||
return target;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the cause of this exception (which may be null).
|
||||
*
|
||||
* @return the cause
|
||||
* @since 1.4
|
||||
*/
|
||||
public Throwable getCause()
|
||||
{
|
||||
return target;
|
||||
}
|
||||
}
|
|
@ -1,100 +0,0 @@
|
|||
/* java.lang.reflect.Member - common query methods in reflection
|
||||
Copyright (C) 1998, 1999, 2001, 2005 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
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
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package java.lang.reflect;
|
||||
|
||||
/**
|
||||
* 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 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, 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, 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. 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 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 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();
|
||||
}
|
File diff suppressed because it is too large
Load diff
|
@ -1,102 +0,0 @@
|
|||
/* ReflectPermission.java - named permission for reflaction
|
||||
Copyright (C) 2000, 2001, 2005 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
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
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
package java.lang.reflect;
|
||||
|
||||
import java.security.BasicPermission;
|
||||
|
||||
/* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* This class implements permissions for reflection. This is a named
|
||||
* permission, and the only defined name is suppressAccessChecks, which
|
||||
* allows suppression of normal Java objects when using reflection.
|
||||
*
|
||||
* <table>
|
||||
* <tr>
|
||||
* <th>Permission Target Name</th>
|
||||
* <th>What Permission Allows</th>
|
||||
* <th>Risk of Allowing Permission</th>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td><code>suppressAccessChecks</code></td>
|
||||
* <td>Ability to access fields, invoke methods, and construct objects
|
||||
* via reflection, including non-public members in contexts where
|
||||
* such access is not legal at compile-time.</td>
|
||||
* <td>This is dangerous. It exposes possibly confidential information,
|
||||
* and malicious code could interfere with the internals of the Virtual
|
||||
* Machine by corrupting private data.</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
*
|
||||
* @author Tom Tromey (tromey@redhat.com)
|
||||
* @author Eric Blake (ebb9@email.byu.edu)
|
||||
* @since 1.2
|
||||
* @status updated to 1.4
|
||||
*/
|
||||
public final class ReflectPermission
|
||||
extends BasicPermission
|
||||
{
|
||||
/**
|
||||
* Compatible with JDK 1.2.
|
||||
*/
|
||||
private static final long serialVersionUID = 7412737110241507485L;
|
||||
|
||||
/**
|
||||
* Construct a ReflectPermission with the given name.
|
||||
*
|
||||
* @param name The permission name
|
||||
*/
|
||||
public ReflectPermission(String name)
|
||||
{
|
||||
super(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a ReflectPermission with the given name.
|
||||
*
|
||||
* @param name The permission name
|
||||
* @param actions The actions; this is ignored and should be null
|
||||
*/
|
||||
public ReflectPermission(String name, String actions)
|
||||
{
|
||||
super(name, actions);
|
||||
}
|
||||
}
|
|
@ -1,128 +0,0 @@
|
|||
/* UndeclaredThrowableException.java -- wraps an undeclared checked exception
|
||||
thrown by a Proxy invocation handler
|
||||
Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
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
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package java.lang.reflect;
|
||||
|
||||
/**
|
||||
* This exception class is thrown by a {@link Proxy} instance if
|
||||
* the {@link InvocationHandler#invoke(Object, Method, Object[]) invoke}
|
||||
* method of that instance's InvocationHandler attempts to throw an
|
||||
* exception that not declared by the throws clauses of all of the
|
||||
* interface methods that the proxy instance is implementing.
|
||||
*
|
||||
* <p>When thrown by Proxy, this class will always wrap a checked
|
||||
* exception, never {@link Error} or {@link RuntimeException},
|
||||
* which are unchecked.
|
||||
*
|
||||
* @author Eric Blake (ebb9@email.byu.edu)
|
||||
* @see Proxy
|
||||
* @see InvocationHandler
|
||||
* @since 1.3
|
||||
* @status updated to 1.4
|
||||
*/
|
||||
public class UndeclaredThrowableException extends RuntimeException
|
||||
{
|
||||
/**
|
||||
* Compatible with JDK 1.3+.
|
||||
*/
|
||||
private static final long serialVersionUID = 330127114055056639L;
|
||||
|
||||
/**
|
||||
* The immutable exception that this wraps. This field is redundant
|
||||
* with {@link Throwable#cause}, but is necessary for serial compatibility.
|
||||
*
|
||||
* @serial the chained exception
|
||||
*/
|
||||
private final Throwable undeclaredThrowable;
|
||||
|
||||
/**
|
||||
* Wraps the given checked exception into a RuntimeException, with no
|
||||
* detail message. {@link Throwable#initCause(Throwable)} will fail
|
||||
* on this instance.
|
||||
*
|
||||
* @param cause the undeclared throwable that caused this exception,
|
||||
* may be null
|
||||
*/
|
||||
public UndeclaredThrowableException(Throwable cause)
|
||||
{
|
||||
this(cause, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Wraps the given checked exception into a RuntimeException, with the
|
||||
* specified detail message. {@link Throwable#initCause(Throwable)} will
|
||||
* fail on this instance.
|
||||
*
|
||||
* @param cause the undeclared throwable that caused this exception,
|
||||
* may be null
|
||||
* @param message the message, may be null
|
||||
*/
|
||||
public UndeclaredThrowableException(Throwable cause, String message)
|
||||
{
|
||||
super(message, cause);
|
||||
undeclaredThrowable = cause;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the cause of this exception. If this exception was created
|
||||
* by a {@link Proxy} instance, it will be a non-null checked
|
||||
* exception. This method pre-dates exception chaining, and is now
|
||||
* simply a longer way to call <code>getCause()</code>.
|
||||
*
|
||||
* @return the cause of this exception, may be null
|
||||
* @see #getCause()
|
||||
*/
|
||||
public Throwable getUndeclaredThrowable()
|
||||
{
|
||||
return undeclaredThrowable;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the cause of this exception. If this exception was created
|
||||
* by a {@link Proxy} instance, it will be a non-null checked
|
||||
* exception.
|
||||
*
|
||||
* @return the cause of this exception, may be null
|
||||
* @since 1.4
|
||||
*/
|
||||
public Throwable getCause()
|
||||
{
|
||||
return undeclaredThrowable;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue