001    /*
002     *  Licensed to the Apache Software Foundation (ASF) under one
003     *  or more contributor license agreements.  See the NOTICE file
004     *  distributed with this work for additional information
005     *  regarding copyright ownership.  The ASF licenses this file
006     *  to you under the Apache License, Version 2.0 (the
007     *  "License"); you may not use this file except in compliance
008     *  with the License.  You may obtain a copy of the License at
009     *  
010     *    http://www.apache.org/licenses/LICENSE-2.0
011     *  
012     *  Unless required by applicable law or agreed to in writing,
013     *  software distributed under the License is distributed on an
014     *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015     *  KIND, either express or implied.  See the License for the
016     *  specific language governing permissions and limitations
017     *  under the License. 
018     *  
019     */
020    package org.apache.directory.server.kerberos.shared.exceptions;
021    
022    
023    /**
024     * The root of the Kerberos exception hierarchy.
025     *
026     * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
027     * @version $Rev: 542350 $, $Date: 2007-05-29 00:24:16 +0200 (Tue, 29 May 2007) $
028     */
029    public class KerberosException extends Exception
030    {
031        private static final long serialVersionUID = 2968072183596955597L;
032    
033        /**
034         * The Kerberos error code associated with this exception.
035         */
036        private final int errorCode;
037    
038        /**
039         * Additional data about the error for use by the application
040         * to help it recover from or handle the error.
041         */
042        private byte[] explanatoryData;
043    
044    
045        /**
046         * Creates a KerberosException with an {@link ErrorType}.
047         *
048         * @param errorType The error type associated with this KerberosException.
049         */
050        public KerberosException( ErrorType errorType )
051        {
052            super( errorType.getMessage() );
053    
054            this.errorCode = errorType.getOrdinal();
055        }
056    
057    
058        /**
059         * Creates a KerberosException with an {@link ErrorType} and an
060         * underlying {@link Throwable} that caused this fault.
061         *
062         * @param errorType The error type associated with this KerberosException.
063         * @param cause The underlying failure, if any.
064         */
065        public KerberosException( ErrorType errorType, Throwable cause )
066        {
067            super( errorType.getMessage(), cause );
068    
069            this.errorCode = errorType.getOrdinal();
070        }
071    
072    
073        /**
074         * Creates a KerberosException with an {@link ErrorType} and a custom error message.
075         *
076         * @param errorType The {@link ErrorType} associated with this KerberosException.
077         * @param msg A custom error message for this KerberosException.
078         */
079        public KerberosException( ErrorType errorType, String msg )
080        {
081            super( msg );
082    
083            this.errorCode = errorType.getOrdinal();
084        }
085    
086    
087        /**
088         * Creates a KerberosException with an {@link ErrorType}, a custom error message, and an
089         * underlying {@link Throwable} that caused this fault.
090         *
091         * @param errorType The error type associated with this KerberosException.
092         * @param msg A custom error message for this KerberosException.
093         * @param cause The underlying failure, if any.
094         */
095        public KerberosException( ErrorType errorType, String msg, Throwable cause )
096        {
097            super( msg, cause );
098    
099            this.errorCode = errorType.getOrdinal();
100        }
101    
102    
103        /**
104         * Creates a KerberosException with an {@link ErrorType} and data helping to
105         * explain what caused this fault.
106         *
107         * @param errorType The error type associated with this KerberosException.
108         * @param explanatoryData Data helping to explain this fault, if any.
109         */
110        public KerberosException( ErrorType errorType, byte[] explanatoryData )
111        {
112            super( errorType.getMessage() );
113    
114            this.errorCode = errorType.getOrdinal();
115            this.explanatoryData = explanatoryData;
116        }
117    
118    
119        /**
120         * Creates a KerberosException with an {@link ErrorType}, data helping to
121         * explain what caused this fault, and an underlying {@link Throwable} that caused this fault.
122         *
123         * @param errorType The error type associated with this KerberosException.
124         * @param explanatoryData Data helping to explain this fault, if any.
125         * @param cause The underlying failure, if any.
126         */
127        public KerberosException( ErrorType errorType, byte[] explanatoryData, Throwable cause )
128        {
129            super( errorType.getMessage(), cause );
130    
131            this.errorCode = errorType.getOrdinal();
132            this.explanatoryData = explanatoryData;
133        }
134    
135    
136        /**
137         * Gets the protocol error code associated with this KerberosException.
138         *
139         * @return The error code associated with this KerberosException.
140         */
141        public int getErrorCode()
142        {
143            return this.errorCode;
144        }
145    
146    
147        /**
148         * Gets the explanatory data associated with this KerberosException.
149         *
150         * @return The explanatory data associated with this KerberosException.
151         */
152        public byte[] getExplanatoryData()
153        {
154            return explanatoryData;
155        }
156    
157    
158        /**
159         * Creates a KerberosException with an error code and a message.
160         *
161         * @param errorCode The error code associated with this KerberosException.
162         * @param msg The standard Kerberos error message for this KerberosException.
163         */
164        protected KerberosException( int errorCode, String msg )
165        {
166            super( msg );
167    
168            this.errorCode = errorCode;
169        }
170    
171    
172        /**
173         * Creates a KerberosException with an error code, a message and an
174         * underlying {@link Throwable} that caused this fault.
175         *
176         * @param errorCode The error code associated with this KerberosException.
177         * @param msg The standard Kerberos error message for this KerberosException.
178         * @param cause The underlying failure, if any.
179         */
180        protected KerberosException( int errorCode, String msg, Throwable cause )
181        {
182            super( msg, cause );
183    
184            this.errorCode = errorCode;
185        }
186    
187    
188        /**
189         * Creates a KerberosException with an error code, a message, and data
190         * helping to explain what caused this fault.
191         *
192         * @param errorCode The error code associated with this KerberosException.
193         * @param msg The standard Kerberos error message for this KerberosException.
194         * @param explanatoryData Data helping to explain this fault, if any.
195         */
196        protected KerberosException( int errorCode, String msg, byte[] explanatoryData )
197        {
198            super( msg );
199    
200            this.errorCode = errorCode;
201            this.explanatoryData = explanatoryData;
202        }
203    
204    
205        /**
206         * Creates a KerberosException with an error code, a message, and data
207         * helping to explain what caused this fault.
208         *
209         * @param errorCode The error code associated with this KerberosException.
210         * @param msg The standard Kerberos error message for this KerberosException.
211         * @param explanatoryData Data helping to explain this fault, if any.
212         * @param cause The underlying failure, if any.
213         */
214        protected KerberosException( int errorCode, String msg, byte[] explanatoryData, Throwable cause )
215        {
216            super( msg, cause );
217    
218            this.errorCode = errorCode;
219            this.explanatoryData = explanatoryData;
220        }
221    }