001 /** 002 * 003 * Copyright 2003-2004 The Apache Software Foundation 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018 package javax.mail; 019 020 /** 021 * @version $Rev: 54266 $ $Date: 2004-10-10 14:02:50 -0700 (Sun, 10 Oct 2004) $ 022 */ 023 public class MessagingException extends Exception { 024 // Required because serialization expects it to be here 025 private Exception next; 026 027 public MessagingException() { 028 super(); 029 } 030 031 public MessagingException(String message) { 032 super(message); 033 } 034 035 public MessagingException(String message, Exception cause) { 036 super(message, cause); 037 next = cause; 038 } 039 040 public Exception getNextException() { 041 return next; 042 } 043 044 public synchronized boolean setNextException(Exception cause) { 045 if (next == null) { 046 initCause(cause); 047 next = cause; 048 return true; 049 } else if (next instanceof MessagingException) { 050 return ((MessagingException) next).setNextException(cause); 051 } else { 052 return false; 053 } 054 } 055 056 public String getMessage() { 057 Exception next = getNextException(); 058 if (next == null) { 059 return super.getMessage(); 060 } else { 061 return super.getMessage() 062 + " (" 063 + next.getClass().getName() 064 + ": " 065 + next.getMessage() 066 + ")"; 067 } 068 } 069 }