001: /*
002: * @(#)PrivilegedActionException.java 1.15 06/10/10
003: *
004: * Copyright 1990-2006 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: *
026: */
027:
028: package java.security;
029:
030: /**
031: * This exception is thrown by
032: * <code>doPrivileged(PrivilegedExceptionAction)</code> and
033: * <code>doPrivileged(PrivilegedExceptionAction,
034: * AccessControlContext context)</code> to indicate
035: * that the action being performed threw a checked exception. The exception
036: * thrown by the action can be obtained by calling the
037: * <code>getException</code> method. In effect, an
038: * <code>PrivilegedActionException</code> is a "wrapper"
039: * for an exception thrown by a privileged action.
040: *
041: * <p>As of release 1.4, this exception has been retrofitted to conform to
042: * the general purpose exception-chaining mechanism. The "exception thrown
043: * by the privileged computation" that is provided at construction time and
044: * accessed via the {@link #getException()} method is now known as the
045: * <i>cause</i>, and may be accessed via the {@link Throwable#getCause()}
046: * method, as well as the aforementioned "legacy method."
047: *
048: * @see PrivilegedExceptionAction
049: * @see AccessController#doPrivileged(PrivilegedExceptionAction)
050: * @see AccessController#doPrivileged(PrivilegedExceptionAction,AccessControlContext)
051: */
052: public class PrivilegedActionException extends Exception {
053: // use serialVersionUID from JDK 1.2.2 for interoperability
054: private static final long serialVersionUID = 4724086851538908602L;
055:
056: /**
057: * @serial
058: */
059: private Exception exception;
060:
061: /**
062: * Constructs a new PrivilegedActionException "wrapping"
063: * the specific Exception.
064: *
065: * @param exception The exception thrown
066: */
067: public PrivilegedActionException(Exception exception) {
068: super ((Throwable) null); // Disallow initCause
069: this .exception = exception;
070: }
071:
072: /**
073: * Returns the exception thrown by the privileged computation that
074: * resulted in this <code>PrivilegedActionException</code>.
075: *
076: * <p>This method predates the general-purpose exception chaining facility.
077: * The {@link Throwable#getCause()} method is now the preferred means of
078: * obtaining this information.
079: *
080: * @return the exception thrown by the privileged computation that
081: * resulted in this <code>PrivilegedActionException</code>.
082: * @see PrivilegedExceptionAction
083: * @see AccessController#doPrivileged(PrivilegedExceptionAction)
084: * @see AccessController#doPrivileged(PrivilegedExceptionAction,
085: * AccessControlContext)
086: */
087: public Exception getException() {
088: return exception;
089: }
090:
091: /**
092: * Returns the the cause of this exception (the exception thrown by
093: * the privileged computation that resulted in this
094: * <code>PrivilegedActionException</code>).
095: *
096: * @return the cause of this exception.
097: * @since 1.4
098: */
099: public Throwable getCause() {
100: return exception;
101: }
102:
103: public String toString() {
104: String s = getClass().getName();
105: return (exception != null) ? (s + ": " + exception.toString())
106: : s;
107: }
108: }
|