001    /*
002     * CDDL HEADER START
003     *
004     * The contents of this file are subject to the terms of the
005     * Common Development and Distribution License, Version 1.0 only
006     * (the "License").  You may not use this file except in compliance
007     * with the License.
008     *
009     * You can obtain a copy of the license at
010     * trunk/opends/resource/legal-notices/OpenDS.LICENSE
011     * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
012     * See the License for the specific language governing permissions
013     * and limitations under the License.
014     *
015     * When distributing Covered Code, include this CDDL HEADER in each
016     * file and include the License file at
017     * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
018     * add the following below this CDDL HEADER, with the fields enclosed
019     * by brackets "[]" replaced with your own identifying information:
020     *      Portions Copyright [yyyy] [name of copyright owner]
021     *
022     * CDDL HEADER END
023     *
024     *
025     *      Copyright 2006-2008 Sun Microsystems, Inc.
026     */
027    package org.opends.server.types;
028    import org.opends.messages.Message;
029    
030    
031    
032    
033    
034    import java.util.List;
035    
036    
037    
038    /**
039     * This class defines an exception that may be thrown if a problem
040     * occurs in the Directory Server.
041     */
042    @org.opends.server.types.PublicAPI(
043         stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
044         mayInstantiate=true,
045         mayExtend=false,
046         mayInvoke=true)
047    public final class DirectoryException
048           extends IdentifiedException
049    {
050      /**
051       * The serial version identifier required to satisfy the compiler
052       * because this class extends <CODE>java.lang.Exception</CODE>,
053       * which implements the <CODE>java.io.Serializable</CODE> interface.
054       * This value was generated using the <CODE>serialver</CODE>
055       * command-line utility included with the Java SDK.
056       */
057      private static final long serialVersionUID = 2615453139798417203L;
058    
059    
060    
061      // The matched DN for this directory exception.
062      private final DN matchedDN;
063    
064      // The set of referral URLs for this directory exception.
065      private final List<String> referralURLs;
066    
067      // The result code for this directory exception.
068      private final ResultCode resultCode;
069    
070    
071    
072      /**
073       * Creates a new directory exception with the provided information.
074       *
075       * @param  resultCode      The result code for this directory
076       *                         exception.
077       * @param  errorMessage    The error message for this directory
078       *                         exception.
079       */
080      public DirectoryException(ResultCode resultCode,
081                                Message errorMessage)
082      {
083        super(errorMessage);
084    
085    
086        this.resultCode     = resultCode;
087        this.matchedDN      = null;
088        this.referralURLs   = null;
089      }
090    
091    
092    
093      /**
094       * Creates a new directory exception with the provided information.
095       *
096       * @param  resultCode      The result code for this directory
097       *                         exception.
098       * @param  errorMessage    The error message for this directory
099       *                         exception.
100       * @param  cause           The exception that was caught to trigger
101       *                         this directory exception.
102       */
103      public DirectoryException(ResultCode resultCode,
104                                Message errorMessage,
105                                Throwable cause)
106      {
107        super(errorMessage, cause);
108    
109    
110        this.resultCode     = resultCode;
111        this.matchedDN      = null;
112        this.referralURLs   = null;
113      }
114    
115    
116      /**
117       * Creates a new directory exception with the provided information.
118       *
119       * @param  resultCode     The result code for this directory
120       *                        exception.
121       * @param  cause          The exception that was caught to trigger
122       *                        this directory exception.  The message of
123       *                        this exception will be set to that of this
124       *                        parameter.
125       */
126      public DirectoryException(ResultCode resultCode,
127                                OpenDsException cause)
128      {
129        super(cause.getMessageObject(), cause);
130    
131    
132        this.resultCode     = resultCode;
133        this.matchedDN      = null;
134        this.referralURLs   = null;
135      }
136    
137    
138      /**
139       * Creates a new directory exception with the provided information.
140       *
141       * @param  resultCode      The result code for this directory
142       *                         exception.
143       * @param  errorMessage    The error message for this directory
144       *                         exception.
145       * @param  matchedDN       The matched DN for this directory
146       *                         exception.
147       * @param  cause           The exception that was caught to trigger
148       *                         this directory exception.
149       */
150      public DirectoryException(ResultCode resultCode,
151                                Message errorMessage,
152                                DN matchedDN, Throwable cause)
153      {
154        super(errorMessage, cause);
155    
156    
157        this.resultCode     = resultCode;
158        this.matchedDN      = matchedDN;
159        this.referralURLs   = null;
160      }
161    
162    
163    
164      /**
165       * Creates a new directory exception with the provided information.
166       *
167       * @param  resultCode      The result code for this directory
168       *                         exception.
169       * @param  errorMessage    The error message for this directory
170       * @param  matchedDN       The matched DN for this directory
171       *                         exception.
172       * @param  referralURLs    The set of referral URLs for this
173       *                         directory exception.
174       * @param  cause           The exception that was caught to trigger
175       *                         this directory exception.
176       */
177      public DirectoryException(ResultCode resultCode,
178                                Message errorMessage,
179                                DN matchedDN, List<String> referralURLs,
180                                Throwable cause)
181      {
182        super(errorMessage, cause);
183    
184    
185        this.resultCode     = resultCode;
186        this.matchedDN      = matchedDN;
187        this.referralURLs   = referralURLs;
188      }
189    
190    
191    
192      /**
193       * Retrieves the result code for this directory exception.
194       *
195       * @return  The result code for this directory exception.
196       */
197      public ResultCode getResultCode()
198      {
199        return resultCode;
200      }
201    
202    
203    
204      /**
205       * Retrieves the matched DN for this directory exception.
206       *
207       * @return  The matched DN for this directory exception, or
208       *          <CODE>null</CODE> if there is none.
209       */
210      public DN getMatchedDN()
211      {
212        return matchedDN;
213      }
214    
215    
216    
217      /**
218       * Retrieves the set of referral URLs for this directory exception.
219       *
220       * @return  The set of referral URLs for this directory exception,
221       *          or <CODE>null</CODE> if there are none.
222       */
223      public List<String> getReferralURLs()
224      {
225        return referralURLs;
226      }
227    }
228