View Javadoc

1   /**
2    *
3    * Copyright 2003-2004 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 org.apache.geronimo.common;
19  
20  
21  /**
22   * @version $Rev: 356022 $ $Date: 2005-12-11 12:58:34 -0800 (Sun, 11 Dec 2005) $
23   */
24  public class DeploymentException extends Exception {
25  
26      public DeploymentException() {
27      }
28  
29      public DeploymentException(Throwable cause) {
30          super(cause);
31      }
32  
33      public DeploymentException(String message) {
34          super(message);
35      }
36  
37      public DeploymentException(String message, Throwable cause) {
38          super(message, cause);
39      }
40      
41      public DeploymentException cleanse() {
42          if(null != getCause()) {
43              Throwable root = this;
44              CleanseException previousEx = null;
45              CleanseException rootEx = null;
46              while (null != root) {
47                  Throwable e = root.getCause();
48                  CleanseException exception = new CleanseException(root.getMessage(), root.toString());
49                  if (null == rootEx) {
50                      rootEx = exception;
51                  }
52                  exception.setStackTrace(root.getStackTrace());
53                  if (null != previousEx) {
54                      previousEx.initCause(exception);
55                  }
56                  previousEx = exception;
57                  root = e;
58              }
59              return rootEx;
60          }
61  
62          return this;
63      }
64      
65      private static class CleanseException extends DeploymentException {
66          private final String toString;
67          
68          public CleanseException(String message, String toString) {
69              super(message);
70              this.toString = toString;
71          }
72          
73          public String toString() {
74              return toString;
75          }
76      }
77  }