1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.vfs;
18
19 import org.apache.commons.vfs.util.Messages;
20
21 import java.io.IOException;
22
23 /***
24 * Thrown for file system errors.
25 *
26 * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
27 * @version $Revision: 480428 $ $Date: 2006-11-29 07:15:24 +0100 (Mi, 29 Nov 2006) $
28 */
29 public class FileSystemException
30 extends IOException
31 {
32 /***
33 * The Throwable that caused this exception to be thrown.
34 */
35 private final Throwable throwable;
36
37 /***
38 * The message code.
39 */
40 private final String code;
41
42 /***
43 * array of complementary info (context).
44 */
45 private final String[] info;
46
47 /***
48 * Constructs exception with the specified detail message.
49 *
50 * @param code the error code of the message.
51 */
52 public FileSystemException(final String code)
53 {
54 this(code, null, null);
55 }
56
57 /***
58 * Constructs exception with the specified detail message.
59 *
60 * @param code the error code of the message.
61 * @param info0 one context information.
62 */
63 public FileSystemException(final String code, final Object info0)
64 {
65 this(code, new Object[]{info0}, null);
66 }
67
68 /***
69 * Constructs exception with the specified detail message.
70 *
71 * @param code the error code of the message.
72 * @param info0 one context information.
73 * @param throwable the cause.
74 */
75 public FileSystemException(final String code,
76 final Object info0,
77 final Throwable throwable)
78 {
79 this(code, new Object[]{info0}, throwable);
80 }
81
82 /***
83 * Constructs exception with the specified detail message.
84 *
85 * @param code the error code of the message.
86 * @param info array of complementary info (context).
87 */
88 public FileSystemException(final String code, final Object[] info)
89 {
90 this(code, info, null);
91 }
92
93 /***
94 * Constructs exception with the specified detail message.
95 *
96 * @param code the error code of the message.
97 * @param info array of complementary info (context).
98 */
99 public FileSystemException(final String code, final Throwable throwable)
100 {
101 this(code, null, throwable);
102 }
103
104 /***
105 * Constructs exception with the specified detail message.
106 *
107 * @param code the error code of the message.
108 * @param info array of complementary info (context).
109 * @param throwable the cause.
110 */
111 public FileSystemException(final String code,
112 final Object[] info,
113 final Throwable throwable)
114 {
115 super(code);
116
117 if (info == null)
118 {
119 this.info = new String[0];
120 }
121 else
122 {
123 this.info = new String[info.length];
124 for (int i = 0; i < info.length; i++)
125 {
126 this.info[i] = String.valueOf(info[i]);
127 }
128 }
129 this.code = code;
130 this.throwable = throwable;
131 }
132
133 /***
134 * retrieve message from bundle
135 */
136 public String getMessage()
137 {
138 return Messages.getString(super.getMessage(), getInfo());
139 }
140
141 /***
142 * Constructs wrapper exception.
143 *
144 * @param throwable the root cause to wrap.
145 */
146 public FileSystemException(final Throwable throwable)
147 {
148 this(throwable.getMessage(), null, throwable);
149 }
150
151 /***
152 * Retrieve root cause of the exception.
153 *
154 * @return the root cause
155 */
156 public final Throwable getCause()
157 {
158 return throwable;
159 }
160
161 /***
162 * Retrieve error code of the exception.
163 * Could be used as key for internationalization.
164 *
165 * @return the code.
166 */
167 public String getCode()
168 {
169 return code;
170 }
171
172 /***
173 * Retrieve array of complementary info (context).
174 * Could be used as parameter for internationalization.
175 *
176 * @return the context info.
177 */
178 public String[] getInfo()
179 {
180 return info;
181 }
182 }