View Javadoc

1   /**
2    *
3    * Copyright 2003-2006 The Apache Software Foundation
4    *
5    *  Licensed under the Apache License, Version 2.0 (the "License");
6    *  you may not use this file except in compliance with the License.
7    *  You may obtain a copy of the License at
8    *
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   *
11   *  Unless required by applicable law or agreed to in writing, software
12   *  distributed under the License is distributed on an "AS IS" BASIS,
13   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   *  See the License for the specific language governing permissions and
15   *  limitations under the License.
16   */
17  
18  package javax.mail;
19  
20  /**
21   * @version $Rev: 421852 $ $Date: 2006-07-14 03:02:19 -0700 (Fri, 14 Jul 2006) $
22   */
23  public class MessagingException extends Exception {
24      // Required because serialization expects it to be here
25      private Exception next;
26  
27      public MessagingException() {
28          super();
29      }
30  
31      public MessagingException(String message) {
32          super(message);
33      }
34  
35      public MessagingException(String message, Exception cause) {
36          super(message, cause);
37          next = cause;
38      }
39  
40      public Exception getNextException() {
41          return next;
42      }
43  
44      public synchronized boolean setNextException(Exception cause) {
45          if (next == null) {
46              initCause(cause);
47              next = cause;
48              return true;
49          } else if (next instanceof MessagingException) {
50              return ((MessagingException) next).setNextException(cause);
51          } else {
52              return false;
53          }
54      }
55  
56      public String getMessage() {
57          Exception next = getNextException();
58          if (next == null) {
59              return super.getMessage();
60          } else {
61              return super.getMessage()
62                      + " ("
63                      + next.getClass().getName()
64                      + ": "
65                      + next.getMessage()
66                      + ")";
67          }
68      }
69  }