View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  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  package org.apache.commons.discovery;
18  
19  
20  /***
21   * <p>An exception that is thrown only if a suitable service
22   * instance cannot be created by <code>ServiceFactory</code></p>
23   * 
24   * <p>Copied from LogConfigurationException<p>
25   *
26   * @author Craig R. McClanahan
27   * @version $Revision: 480374 $ $Date: 2006-11-28 19:33:25 -0800 (Tue, 28 Nov 2006) $
28   */
29  public class DiscoveryException extends RuntimeException {
30  
31  
32      /***
33       * Construct a new exception with <code>null</code> as its detail message.
34       */
35      public DiscoveryException() {
36          super();
37      }
38  
39      /***
40       * Construct a new exception with the specified detail message.
41       *
42       * @param message The detail message
43       */
44      public DiscoveryException(String message) {
45          super(message);
46      }
47  
48      /***
49       * Construct a new exception with the specified cause and a derived
50       * detail message.
51       *
52       * @param cause The underlying cause
53       */
54      public DiscoveryException(Throwable cause) {
55          this((cause == null) ? null : cause.toString(), cause);
56      }
57  
58      /***
59       * Construct a new exception with the specified detail message and cause.
60       *
61       * @param message The detail message
62       * @param cause The underlying cause
63       */
64      public DiscoveryException(String message, Throwable cause) {
65          super(message);
66          this.cause = cause; // Two-argument version requires JDK 1.4 or later
67      }
68  
69      /***
70       * The underlying cause of this exception.
71       */
72      protected Throwable cause = null;
73  
74      /***
75       * Return the underlying cause of this exception (if any).
76       */
77      public Throwable getCause() {
78          return this.cause;
79      }
80      
81      public String toString() {
82          String ls = System.getProperty("line.separator");
83          String str = super.toString();
84          if (cause != null) {
85              str = str + ls +
86                    "*****" + ls +
87                    stackToString(cause);
88          }
89          return str;
90      }
91  
92      private static String stackToString(Throwable e){
93        java.io.StringWriter sw= new java.io.StringWriter(1024); 
94        java.io.PrintWriter pw= new java.io.PrintWriter(sw); 
95        e.printStackTrace(pw);
96        pw.close();
97        return sw.toString();
98      }
99  }