1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 /*
23  * ident	"%Z%%M%	%I%	%E% SMI"
24  *
25  * Copyright (c) 1998-2001 by Sun Microsystems, Inc.
26  * All rights reserved.
27  */
28 
29 package com.sun.dhcpmgr.bridge;
30 
31 import java.text.MessageFormat;
32 
33 /**
34  * This class is the superclass for all exceptions (other than core java
35  * exceptions) thrown by the server and JNI routines.
36  */
37 public class BridgeException extends Exception {
38 
39     /**
40      * Arguments to use when formatting the message for the exception.
41      */
42     protected Object [] args = null;
43 
44     /**
45      * Simplest constructor.
46      */
BridgeException()47     public BridgeException() {
48 	super("internal_error");
49     } // constructor
50 
51     /**
52      * Constructor that provides a msgid.
53      * @param msgid ResourceBundle id to link to this exception.
54      */
BridgeException(String msgid)55     public BridgeException(String msgid) {
56 	super(msgid);
57     } // constructor
58 
59     /**
60      * Constructor that provides a msgid and an argument to the message.
61      * @param msgid ResourceBundle id to link to this exception.
62      * @param args array of arguments to be used in format of message.
63      */
BridgeException(String msgid, Object [] args)64     public BridgeException(String msgid, Object [] args) {
65 	super(msgid);
66 	this.args = args;
67     } // constructor
68 
69     /**
70      * Constructor that provides a msgid and an argument to the message.
71      * @param msgid ResourceBundle id to link to this exception.
72      * @param arg argument to be used in format of exception message.
73      */
BridgeException(String msgid, String arg)74     public BridgeException(String msgid, String arg) {
75 	super(msgid);
76 	args = new Object[1];
77 	args[0] = arg;
78     } // constructor
79 
80     /**
81      * Override of superclass getMessage(). Builds a message using the
82      * msgid and args (if any) that were provided at instantiation.
83      * @return message for the exception.
84      */
getMessage()85     public String getMessage() {
86 	String message = null;
87 	String messageId = super.getMessage();
88 
89 	try {
90 	    if (args != null) {
91 		MessageFormat form = new MessageFormat(
92 		    ResourceStrings.getString(messageId));
93 		message = form.format(args);
94 	    } else {
95 		message = ResourceStrings.getString(messageId);
96 	    }
97 	} catch (Throwable e) {
98 	    message = messageId;
99 	}
100 
101 	return (message);
102     } // getMessage
103 
104 } // BridgeException
105