001: /*
002: * Portions Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
003: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004: *
005: * This code is free software; you can redistribute it and/or modify it
006: * under the terms of the GNU General Public License version 2 only, as
007: * published by the Free Software Foundation. Sun designates this
008: * particular file as subject to the "Classpath" exception as provided
009: * by Sun in the LICENSE file that accompanied this code.
010: *
011: * This code is distributed in the hope that it will be useful, but WITHOUT
012: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014: * version 2 for more details (a copy is included in the LICENSE file that
015: * accompanied this code).
016: *
017: * You should have received a copy of the GNU General Public License version
018: * 2 along with this work; if not, write to the Free Software Foundation,
019: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020: *
021: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022: * CA 95054 USA or visit www.sun.com if you need additional information or
023: * have any questions.
024: */
025:
026: /*
027: * @(#)KrbException.java 1.21 07/05/05
028: *
029: * (C) Copyright IBM Corp. 1999 All Rights Reserved.
030: * Copyright 1997 The Open Group Research Institute. All rights reserved.
031: */
032:
033: package sun.security.krb5;
034:
035: import sun.security.krb5.internal.Krb5;
036: import sun.security.krb5.internal.KRBError;
037:
038: public class KrbException extends Exception {
039:
040: private static final long serialVersionUID = -4993302876451928596L;
041:
042: private int returnCode;
043: private KRBError error;
044:
045: public KrbException(String s) {
046: super (s);
047: }
048:
049: public KrbException(int i) {
050: returnCode = i;
051: }
052:
053: public KrbException(int i, String s) {
054: this (s);
055: returnCode = i;
056: }
057:
058: public KrbException(KRBError e) {
059: returnCode = e.getErrorCode();
060: error = e;
061: }
062:
063: public KrbException(KRBError e, String s) {
064: this (s);
065: returnCode = e.getErrorCode();
066: error = e;
067: }
068:
069: public KRBError getError() {
070: return error;
071: }
072:
073: public int returnCode() {
074: return returnCode;
075: }
076:
077: public String returnCodeSymbol() {
078: return returnCodeSymbol(returnCode);
079: }
080:
081: public static String returnCodeSymbol(int i) {
082: return "not yet implemented";
083: }
084:
085: public String returnCodeMessage() {
086: return Krb5.getErrorMessage(returnCode);
087: }
088:
089: public static String errorMessage(int i) {
090: return Krb5.getErrorMessage(i);
091: }
092:
093: public String krbErrorMessage() {
094: StringBuffer strbuf = new StringBuffer("krb_error "
095: + returnCode);
096: String msg = getMessage();
097: if (msg != null) {
098: strbuf.append(" ");
099: strbuf.append(msg);
100: }
101: return strbuf.toString();
102: }
103:
104: /**
105: * Returns messages like:
106: * "Integrity check on decrypted field failed (31) - \
107: * Could not decrypt service ticket"
108: * If the error code is 0 then the first half is skipped.
109: */
110: public String getMessage() {
111: StringBuffer message = new StringBuffer();
112: int returnCode = returnCode();
113: if (returnCode != 0) {
114: message.append(returnCodeMessage());
115: message.append(" (").append(returnCode()).append(')');
116: }
117: String consMessage = super .getMessage();
118: if (consMessage != null && consMessage.length() != 0) {
119: if (returnCode != 0)
120: message.append(" - ");
121: message.append(consMessage);
122: }
123: return message.toString();
124: }
125:
126: public String toString() {
127: return ("KrbException: " + getMessage());
128: }
129:
130: @Override
131: public int hashCode() {
132: int result = 17;
133: result = 37 * result + returnCode;
134: if (error != null) {
135: result = 37 * result + error.hashCode();
136: }
137: return result;
138: }
139:
140: @Override
141: public boolean equals(Object obj) {
142: if (this == obj) {
143: return true;
144: }
145:
146: if (!(obj instanceof KrbException)) {
147: return false;
148: }
149:
150: KrbException other = (KrbException) obj;
151: if (returnCode != other.returnCode) {
152: return false;
153: }
154: return (error == null) ? (other.error == null) : (error
155: .equals(other.error));
156: }
157: }
|