1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.juddi.error;
17
18 import org.apache.juddi.datatype.RegistryObject;
19 import org.apache.juddi.datatype.response.DispositionReport;
20 import org.apache.juddi.datatype.response.Result;
21
22 /***
23 * Thrown to indicate that a UDDI Exception was encountered.
24 *
25 * @author Steve Viens (sviens@apache.org)
26 */
27 public class RegistryException extends Exception implements RegistryObject
28 {
29
30 private String faultActor;
31
32
33 private String faultCode;
34
35
36 private String faultString;
37
38
39 private DispositionReport dispReport;
40
41 /***
42 * Constructs a RegistryException instance.
43 * @param msg additional error information
44 */
45 public RegistryException(String msg)
46 {
47 super(msg);
48
49 setFaultCode(null);
50 setFaultString(msg);
51 setFaultActor(null);
52 }
53
54 /***
55 * Constructs a RegistryException instance.
56 * @param ex the original exception
57 */
58 public RegistryException(Exception ex)
59 {
60 super(ex);
61
62 if (ex != null)
63 {
64
65
66
67
68
69 if (ex instanceof RegistryException)
70 {
71 RegistryException regex = (RegistryException)ex;
72 setFaultCode(regex.getFaultCode());
73 setFaultString(regex.getFaultString());
74 setFaultActor(regex.getFaultActor());
75 setDispositionReport(regex.getDispositionReport());
76 }
77 else
78 {
79 setFaultString(ex.getMessage());
80 }
81 }
82 }
83
84 /***
85 * Constructs a RegistryException instance.
86 * @param ex the original exception
87 */
88 public RegistryException(String fCode,String fString,String fActor,DispositionReport dispRpt)
89 {
90 super(fString);
91
92 setFaultCode(fCode);
93 setFaultString(fString);
94 setFaultActor(fActor);
95 setDispositionReport(dispRpt);
96 }
97
98 /***
99 * Constructs a RegistryException instance.
100 * @param ex the original exception
101 */
102 RegistryException(String fCode,int errno,String msg)
103 {
104 super(buildMessage(errno,msg));
105
106 String errCode = Result.lookupErrCode(errno);
107
108 setFaultCode(fCode);
109 setFaultString(getMessage());
110 addResult(new Result(errno,errCode,getMessage()));
111 }
112
113 /***
114 * Sets the fault actor of this SOAP SOAPFault to the given value.
115 * @param actor The new actor value for this SOAP SOAPFault.
116 */
117 public void setFaultActor(String actor)
118 {
119 this.faultActor = actor;
120 }
121
122 /***
123 * Returns the fault actor of this SOAP SOAPFault.
124 * @return The fault actor of this SOAP SOAPFault.
125 */
126 public String getFaultActor()
127 {
128 return this.faultActor;
129 }
130
131 /***
132 * Sets the fault code of this SOAP SOAPFault to the given value.
133 * @param code The new code number for this SOAP SOAPFault.
134 */
135 public void setFaultCode(String code)
136 {
137 this.faultCode = code;
138 }
139
140 /***
141 * Returns the fault code of this SOAP SOAPFault.
142 * @return The fault code of this SOAP SOAPFault.
143 */
144 public String getFaultCode()
145 {
146 return this.faultCode;
147 }
148
149 /***
150 * Sets the fault string of this SOAP SOAPFault to the given value.
151 * @param value The new fault string for this SOAP SOAPFault.
152 */
153 public void setFaultString(String value)
154 {
155 this.faultString = value;
156 }
157
158 /***
159 * Returns the fault string of this SOAP SOAPFault.
160 * @return The fault string of this SOAP SOAPFault.
161 */
162 public String getFaultString()
163 {
164 return this.faultString;
165 }
166
167 /***
168 * Sets the UDDI DispositionReport value to the instance
169 * specified
170 * @param dispRpt The new UDDI DispositionReport instance for
171 * this SOAP Fault.
172 */
173 public void setDispositionReport(DispositionReport dispRpt)
174 {
175 this.dispReport = dispRpt;
176 }
177
178 /***
179 * Returns the disposition report associated with this jUDDI exception. It
180 * uses the results Vector to determine if a disposition report is present
181 * and should be returned.
182 * @return The disposition report associated with this jUDDI exception.
183 */
184 public DispositionReport getDispositionReport()
185 {
186 return this.dispReport;
187 }
188
189 /***
190 * Adds a result instance to this Exception. Multiple result objects
191 * may exist within a DispositionReport
192 */
193 public void addResult(Result result)
194 {
195 if (this.dispReport==null)
196 this.dispReport = new DispositionReport();
197 this.dispReport.addResult(result);
198 }
199
200 /***
201 *
202 */
203 public String toString()
204 {
205 String msg = getMessage();
206 if (msg == null)
207 return "";
208 else
209 return getMessage();
210 }
211
212 private static final String buildMessage(int errno,String msg)
213 {
214 StringBuffer buffer = new StringBuffer();
215
216 String errCode = Result.lookupErrCode(errno);
217 if (errCode != null)
218 {
219 buffer.append(errCode);
220 buffer.append(" ");
221 }
222
223 buffer.append("(");
224 buffer.append(errno);
225 buffer.append(") ");
226
227 String errText = Result.lookupErrText(errno);
228 if (errText != null)
229 {
230 buffer.append(errText);
231 buffer.append(" ");
232 }
233
234 if ((msg != null) && (msg.trim().length() > 0))
235 {
236 buffer.append(msg);
237 }
238
239 return buffer.toString();
240 }
241
242
243 /****************************************************************************/
244 /****************************** TEST DRIVER *********************************/
245 /****************************************************************************/
246
247
248 public static void main(String[] args)
249 throws RegistryException
250 {
251 System.out.println(new AccountLimitExceededException("Additional error information."));
252 System.out.println(new AssertionNotFoundException("Additional error information."));
253 System.out.println(new AuthTokenExpiredException("Additional error information."));
254 System.out.println(new AuthTokenRequiredException("Additional error information."));
255 System.out.println(new BusyException("Additional error information."));
256 System.out.println(new CategorizationNotAllowedException("Additional error information."));
257 System.out.println(new FatalErrorException("Additional error information."));
258 System.out.println(new InvalidCategoryException("Additional error information."));
259 System.out.println(new InvalidCompletionStatusException("Additional error information."));
260 System.out.println(new InvalidKeyPassedException("Additional error information."));
261 System.out.println(new InvalidProjectionException("Additional error information."));
262 System.out.println(new InvalidTimeException("Additional error information."));
263 System.out.println(new InvalidURLPassedException("Additional error information."));
264 System.out.println(new InvalidValueException("Additional error information."));
265 System.out.println(new KeyRetiredException("Additional error information."));
266 System.out.println(new LanguageErrorException("Additional error information."));
267 System.out.println(new MessageTooLargeException("Additional error information."));
268 System.out.println(new NameTooLongException("Additional error information."));
269 System.out.println(new OperatorMismatchException("Additional error information."));
270 System.out.println(new PublisherCancelledException("Additional error information."));
271 System.out.println(new RequestDeniedException("Additional error information."));
272 System.out.println(new RequestTimeoutException("Additional error information."));
273 System.out.println(new ResultSetTooLargeException("Additional error information."));
274 System.out.println(new SecretUnknownException("Additional error information."));
275 System.out.println(new TooManyOptionsException("Additional error information."));
276 System.out.println(new TransferAbortedException("Additional error information."));
277 System.out.println(new UnknownUserException("Additional error information."));
278 System.out.println(new UnknownUserException("Additional error information."));
279 System.out.println(new UnrecognizedVersionException("Additional error information."));
280 System.out.println(new UnsupportedException("Additional error information."));
281 System.out.println(new UnvalidatableException("Additional error information."));
282 System.out.println(new UserMismatchException("Additional error information."));
283 System.out.println(new ValueNotAllowedException("Additional error information."));
284
285 System.out.println("\n----- RegistryException(String) -----");
286
287 System.out.println(new RegistryException((String)null));
288 System.out.println(new RegistryException("Additional error information."));
289
290 System.out.println("\n----- RegistryException(Exception) -----");
291
292 System.out.println(new RegistryException((Exception)null));
293 System.out.println(new RegistryException((Exception)new Exception("Additional error information.")));
294 System.out.println(new RegistryException((Exception)new RegistryException("Additional error information.")));
295 System.out.println(new RegistryException((Exception)new UnknownUserException("Additional error information.")));
296
297 System.out.println("\n----- RegistryException(FaultCode,errno,String) -----");
298
299 System.out.println(new RegistryException(null,-1,null));
300 System.out.println(new RegistryException("Server",-1,null));
301 System.out.println(new RegistryException("Server",Result.E_BUSY,null));
302 System.out.println(new RegistryException("Server",Result.E_BUSY,"Additional error information."));
303 }
304 }