org/objectweb/proactive/core/mop/MOPRuntimeException.java

00001 /* 
00002  * ################################################################
00003  * 
00004  * ProActive: The Java(TM) library for Parallel, Distributed, 
00005  *            Concurrent computing with Security and Mobility
00006  * 
00007  * Copyright (C) 1997-2007 INRIA/University of Nice-Sophia Antipolis
00008  * Contact: proactive@objectweb.org
00009  * 
00010  * This library is free software; you can redistribute it and/or
00011  * modify it under the terms of the GNU Lesser General Public
00012  * License as published by the Free Software Foundation; either
00013  * version 2.1 of the License, or any later version.
00014  *  
00015  * This library is distributed in the hope that it will be useful,
00016  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00017  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018  * Lesser General Public License for more details.
00019  * 
00020  * You should have received a copy of the GNU Lesser General Public
00021  * License along with this library; if not, write to the Free Software
00022  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
00023  * USA
00024  *  
00025  *  Initial developer(s):               The ProActive Team
00026  *                        http://www.inria.fr/oasis/ProActive/contacts.html
00027  *  Contributor(s): 
00028  * 
00029  * ################################################################
00030  */ 
00031 package org.objectweb.proactive.core.mop;
00032 
00033 public abstract class MOPRuntimeException extends RuntimeException {
00034     protected Throwable detail;
00035 
00040     public MOPRuntimeException() {
00041     }
00042 
00047     public MOPRuntimeException(String s) {
00048         super(s);
00049     }
00050 
00058     public MOPRuntimeException(String s, Throwable ex) {
00059         super(s);
00060         detail = ex;
00061     }
00062 
00069     public MOPRuntimeException(Throwable ex) {
00070         super();
00071         detail = ex;
00072     }
00073 
00078     public String getMessage() {
00079         if (detail == null) {
00080             return super.getMessage();
00081         } else {
00082             if (super.getMessage() == null) {
00083                 return detail.getMessage();
00084             } else {
00085                 return super.getMessage() + "; nested exception is: \n" +
00086                 detail.toString();
00087             }
00088         }
00089     }
00090 
00091     public Throwable getTargetException() {
00092         return detail;
00093     }
00094 
00100     public void printStackTrace(java.io.PrintStream ps) {
00101         if (detail == null) {
00102             super.printStackTrace(ps);
00103         } else {
00104             synchronized (ps) {
00105                 ps.println(getMessage());
00106                 detail.printStackTrace(ps);
00107             }
00108         }
00109     }
00110 
00114     public void printStackTrace() {
00115         printStackTrace(System.err);
00116     }
00117 
00123     public void printStackTrace(java.io.PrintWriter pw) {
00124         if (detail == null) {
00125             super.printStackTrace(pw);
00126         } else {
00127             synchronized (pw) {
00128                 pw.println(getMessage());
00129                 detail.printStackTrace(pw);
00130             }
00131         }
00132     }
00133 }

Generated on Mon Jan 22 15:16:08 2007 for ProActive by  doxygen 1.5.1