6857789: (reflect) Create common superclass of reflective exceptions
authordarcy
Wed, 15 Jul 2009 12:08:55 -0700
changeset 3311 a219a6c036a6
parent 3228 d7c00dbea781
child 3312 d8cd9665ece8
6857789: (reflect) Create common superclass of reflective exceptions Reviewed-by: martin
jdk/src/share/classes/java/lang/ClassNotFoundException.java
jdk/src/share/classes/java/lang/IllegalAccessException.java
jdk/src/share/classes/java/lang/InstantiationException.java
jdk/src/share/classes/java/lang/NoSuchFieldException.java
jdk/src/share/classes/java/lang/NoSuchMethodException.java
jdk/src/share/classes/java/lang/ReflectiveOperationException.java
jdk/src/share/classes/java/lang/reflect/InvocationTargetException.java
--- a/jdk/src/share/classes/java/lang/ClassNotFoundException.java	Mon Jul 13 15:14:17 2009 -0700
+++ b/jdk/src/share/classes/java/lang/ClassNotFoundException.java	Wed Jul 15 12:08:55 2009 -0700
@@ -50,7 +50,7 @@
  * @see     java.lang.ClassLoader#loadClass(java.lang.String, boolean)
  * @since   JDK1.0
  */
-public class ClassNotFoundException extends Exception {
+public class ClassNotFoundException extends ReflectiveOperationException {
     /**
      * use serialVersionUID from JDK 1.1.X for interoperability
      */
--- a/jdk/src/share/classes/java/lang/IllegalAccessException.java	Mon Jul 13 15:14:17 2009 -0700
+++ b/jdk/src/share/classes/java/lang/IllegalAccessException.java	Wed Jul 15 12:08:55 2009 -0700
@@ -56,7 +56,7 @@
  * @see     java.lang.reflect.Constructor#newInstance(Object[])
  * @since   JDK1.0
  */
-public class IllegalAccessException extends Exception {
+public class IllegalAccessException extends ReflectiveOperationException {
     private static final long serialVersionUID = 6616958222490762034L;
 
     /**
--- a/jdk/src/share/classes/java/lang/InstantiationException.java	Mon Jul 13 15:14:17 2009 -0700
+++ b/jdk/src/share/classes/java/lang/InstantiationException.java	Wed Jul 15 12:08:55 2009 -0700
@@ -43,7 +43,7 @@
  * @since   JDK1.0
  */
 public
-class InstantiationException extends Exception {
+class InstantiationException extends ReflectiveOperationException {
     private static final long serialVersionUID = -8441929162975509110L;
 
     /**
--- a/jdk/src/share/classes/java/lang/NoSuchFieldException.java	Mon Jul 13 15:14:17 2009 -0700
+++ b/jdk/src/share/classes/java/lang/NoSuchFieldException.java	Wed Jul 15 12:08:55 2009 -0700
@@ -31,7 +31,7 @@
  * @author  unascribed
  * @since   JDK1.1
  */
-public class NoSuchFieldException extends Exception {
+public class NoSuchFieldException extends ReflectiveOperationException {
     private static final long serialVersionUID = -6143714805279938260L;
 
     /**
--- a/jdk/src/share/classes/java/lang/NoSuchMethodException.java	Mon Jul 13 15:14:17 2009 -0700
+++ b/jdk/src/share/classes/java/lang/NoSuchMethodException.java	Wed Jul 15 12:08:55 2009 -0700
@@ -32,7 +32,7 @@
  * @since      JDK1.0
  */
 public
-class NoSuchMethodException extends Exception {
+class NoSuchMethodException extends ReflectiveOperationException {
     private static final long serialVersionUID = 5034388446362600923L;
 
     /**
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/java/lang/ReflectiveOperationException.java	Wed Jul 15 12:08:55 2009 -0700
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package java.lang;
+
+/**
+ * Common superclass of exceptions thrown by reflective operations in
+ * core reflection.
+ *
+ * @see LinkageError
+ * @since 1.7
+ */
+public class ReflectiveOperationException extends Exception {
+    static final long serialVersionUID = 123456789L;
+
+    /**
+     * Constructs a new exception with {@code null} as its detail
+     * message.  The cause is not initialized, and may subsequently be
+     * initialized by a call to {@link #initCause}.
+     */
+    public ReflectiveOperationException() {
+        super();
+    }
+
+    /**
+     * Constructs a new exception with the specified detail message.
+     * The cause is not initialized, and may subsequently be
+     * initialized by a call to {@link #initCause}.
+     *
+     * @param   message   the detail message. The detail message is saved for
+     *          later retrieval by the {@link #getMessage()} method.
+     */
+    public ReflectiveOperationException(String message) {
+        super(message);
+    }
+
+    /**
+     * Constructs a new exception with the specified detail message
+     * and cause.
+     *
+     * <p>Note that the detail message associated with
+     * {@code cause} is <em>not</em> automatically incorporated in
+     * this exception's detail message.
+     *
+     * @param  message the detail message (which is saved for later retrieval
+     *         by the {@link #getMessage()} method).
+     * @param  cause the cause (which is saved for later retrieval by the
+     *         {@link #getCause()} method).  (A {@code null} value is
+     *         permitted, and indicates that the cause is nonexistent or
+     *         unknown.)
+     */
+    public ReflectiveOperationException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    /**
+     * Constructs a new exception with the specified cause and a detail
+     * message of {@code (cause==null ? null : cause.toString())} (which
+     * typically contains the class and detail message of {@code cause}).
+     *
+     * @param  cause the cause (which is saved for later retrieval by the
+     *         {@link #getCause()} method).  (A {@code null} value is
+     *         permitted, and indicates that the cause is nonexistent or
+     *         unknown.)
+     */
+    public ReflectiveOperationException(Throwable cause) {
+        super(cause);
+    }
+}
--- a/jdk/src/share/classes/java/lang/reflect/InvocationTargetException.java	Mon Jul 13 15:14:17 2009 -0700
+++ b/jdk/src/share/classes/java/lang/reflect/InvocationTargetException.java	Wed Jul 15 12:08:55 2009 -0700
@@ -39,7 +39,7 @@
  * @see Method
  * @see Constructor
  */
-public class InvocationTargetException extends Exception {
+public class InvocationTargetException extends ReflectiveOperationException {
     /**
      * Use serialVersionUID from JDK 1.1.X for interoperability
      */