001    /*
002     * Copyright 2007-2014 UnboundID Corp.
003     * All Rights Reserved.
004     */
005    /*
006     * Copyright (C) 2008-2014 UnboundID Corp.
007     *
008     * This program is free software; you can redistribute it and/or modify
009     * it under the terms of the GNU General Public License (GPLv2 only)
010     * or the terms of the GNU Lesser General Public License (LGPLv2.1 only)
011     * as published by the Free Software Foundation.
012     *
013     * This program is distributed in the hope that it will be useful,
014     * but WITHOUT ANY WARRANTY; without even the implied warranty of
015     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
016     * GNU General Public License for more details.
017     *
018     * You should have received a copy of the GNU General Public License
019     * along with this program; if not, see <http://www.gnu.org/licenses>.
020     */
021    package com.unboundid.ldap.sdk;
022    
023    
024    
025    import java.io.Serializable;
026    import java.util.HashMap;
027    
028    import com.unboundid.util.NotMutable;
029    import com.unboundid.util.ThreadSafety;
030    import com.unboundid.util.ThreadSafetyLevel;
031    
032    import static com.unboundid.ldap.sdk.LDAPMessages.*;
033    
034    
035    
036    /**
037     * This class defines a number of constants associated with LDAP result codes.
038     * The {@code ResultCode} constant values defined in this class are immutable,
039     * and at most one result code object will ever be created for a given int
040     * value, so it is acceptable to compare result codes with either the
041     * {@link ResultCode#equals} method or the "{@code ==}" operator.
042     *<BR><BR>
043     * The result codes that are currently defined include:
044     * <BR>
045     * <CENTER>
046     *   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="50%">
047     *     <TR>
048     *       <TH ALIGN="LEFT">Name</TH>
049     *       <TH ALIGN="RIGHT">Integer Value</TH>
050     *     </TR>
051     *     <TR>
052     *       <TD ALIGN="LEFT">SUCCESS</TD>
053     *       <TD ALIGN="RIGHT">0</TD>
054     *     </TR>
055     *     <TR>
056     *       <TD ALIGN="LEFT">OPERATIONS_ERROR</TD>
057     *       <TD ALIGN="RIGHT">1</TD>
058     *     </TR>
059     *     <TR>
060     *       <TD ALIGN="LEFT">PROTOCOL_ERROR</TD>
061     *       <TD ALIGN="RIGHT">2</TD>
062     *     </TR>
063     *     <TR>
064     *       <TD ALIGN="LEFT">TIME_LIMIT_EXCEEDED</TD>
065     *       <TD ALIGN="RIGHT">3</TD>
066     *     </TR>
067     *     <TR>
068     *       <TD ALIGN="LEFT">SIZE_LIMIT_EXCEEDED</TD>
069     *       <TD ALIGN="RIGHT">4</TD>
070     *     </TR>
071     *     <TR>
072     *       <TD ALIGN="LEFT">COMPARE_FALSE</TD>
073     *       <TD ALIGN="RIGHT">5</TD>
074     *     </TR>
075     *     <TR>
076     *       <TD ALIGN="LEFT">COMPARE_TRUE</TD>
077     *       <TD ALIGN="RIGHT">6</TD>
078     *     </TR>
079     *     <TR>
080     *       <TD ALIGN="LEFT">AUTH_METHOD_NOT_SUPPORTED</TD>
081     *       <TD ALIGN="RIGHT">7</TD>
082     *     </TR>
083     *     <TR>
084     *       <TD ALIGN="LEFT">STRONG_AUTH_REQUIRED</TD>
085     *       <TD ALIGN="RIGHT">8</TD>
086     *     </TR>
087     *     <TR>
088     *       <TD ALIGN="LEFT">REFERRAL</TD>
089     *       <TD ALIGN="RIGHT">10</TD>
090     *     </TR>
091     *     <TR>
092     *       <TD ALIGN="LEFT">ADMIN_LIMIT_EXCEEDED</TD>
093     *       <TD ALIGN="RIGHT">11</TD>
094     *     </TR>
095     *     <TR>
096     *       <TD ALIGN="LEFT">UNAVAILABLE_CRITICAL_EXTENSION</TD>
097     *       <TD ALIGN="RIGHT">12</TD>
098     *     </TR>
099     *     <TR>
100     *       <TD ALIGN="LEFT">CONFIDENTIALITY_REQUIRED</TD>
101     *       <TD ALIGN="RIGHT">13</TD>
102     *     </TR>
103     *     <TR>
104     *       <TD ALIGN="LEFT">SASL_BIND_IN_PROGRESS</TD>
105     *       <TD ALIGN="RIGHT">14</TD>
106     *     </TR>
107     *     <TR>
108     *       <TD ALIGN="LEFT">NO_SUCH_ATTRIBUTE</TD>
109     *       <TD ALIGN="RIGHT">16</TD>
110     *     </TR>
111     *     <TR>
112     *       <TD ALIGN="LEFT">UNDEFINED_ATTRIBUTE_TYPE</TD>
113     *       <TD ALIGN="RIGHT">17</TD>
114     *     </TR>
115     *     <TR>
116     *       <TD ALIGN="LEFT">INAPPROPRIATE_MATCHING</TD>
117     *       <TD ALIGN="RIGHT">18</TD>
118     *     </TR>
119     *     <TR>
120     *       <TD ALIGN="LEFT">CONSTRAINT_VIOLATION</TD>
121     *       <TD ALIGN="RIGHT">19</TD>
122     *     </TR>
123     *     <TR>
124     *       <TD ALIGN="LEFT">ATTRIBUTE_OR_VALUE_EXISTS</TD>
125     *       <TD ALIGN="RIGHT">20</TD>
126     *     </TR>
127     *     <TR>
128     *       <TD ALIGN="LEFT">INVALID_ATTRIBUTE_SYNTAX</TD>
129     *       <TD ALIGN="RIGHT">21</TD>
130     *     </TR>
131     *     <TR>
132     *       <TD ALIGN="LEFT">NO_SUCH_OBJECT</TD>
133     *       <TD ALIGN="RIGHT">32</TD>
134     *     </TR>
135     *     <TR>
136     *       <TD ALIGN="LEFT">ALIAS_PROBLEM</TD>
137     *       <TD ALIGN="RIGHT">33</TD>
138     *     </TR>
139     *     <TR>
140     *       <TD ALIGN="LEFT">INVALID_DN_SYNTAX</TD>
141     *       <TD ALIGN="RIGHT">34</TD>
142     *     </TR>
143     *     <TR>
144     *       <TD ALIGN="LEFT">ALIAS_DEREFERENCING_PROBLEM</TD>
145     *       <TD ALIGN="RIGHT">36</TD>
146     *     </TR>
147     *     <TR>
148     *       <TD ALIGN="LEFT">INAPPROPRIATE_AUTHENTICATION</TD>
149     *       <TD ALIGN="RIGHT">48</TD>
150     *     </TR>
151     *     <TR>
152     *       <TD ALIGN="LEFT">INVALID_CREDENTIALS</TD>
153     *       <TD ALIGN="RIGHT">49</TD>
154     *     </TR>
155     *     <TR>
156     *       <TD ALIGN="LEFT">INSUFFICIENT_ACCESS_RIGHTS</TD>
157     *       <TD ALIGN="RIGHT">50</TD>
158     *     </TR>
159     *     <TR>
160     *       <TD ALIGN="LEFT">BUSY</TD>
161     *       <TD ALIGN="RIGHT">51</TD>
162     *     </TR>
163     *     <TR>
164     *       <TD ALIGN="LEFT">UNAVAILABLE</TD>
165     *       <TD ALIGN="RIGHT">52</TD>
166     *     </TR>
167     *     <TR>
168     *       <TD ALIGN="LEFT">UNWILLING_TO_PERFORM</TD>
169     *       <TD ALIGN="RIGHT">53</TD>
170     *     </TR>
171     *     <TR>
172     *       <TD ALIGN="LEFT">LOOP-DETECT</TD>
173     *       <TD ALIGN="RIGHT">54</TD>
174     *     </TR>
175     *     <TR>
176     *       <TD ALIGN="LEFT">SORT_CONTROL_MISSING</TD>
177     *       <TD ALIGN="RIGHT">60</TD>
178     *     </TR>
179     *     <TR>
180     *       <TD ALIGN="LEFT">OFFSET_RANGE_ERROR</TD>
181     *       <TD ALIGN="RIGHT">61</TD>
182     *     </TR>
183     *     <TR>
184     *       <TD ALIGN="LEFT">NAMING_VIOLATION</TD>
185     *       <TD ALIGN="RIGHT">64</TD>
186     *     </TR>
187     *     <TR>
188     *       <TD ALIGN="LEFT">OBJECT_CLASS_VIOLATION</TD>
189     *       <TD ALIGN="RIGHT">65</TD>
190     *     </TR>
191     *     <TR>
192     *       <TD ALIGN="LEFT">NOT_ALLOWED_ON_NONLEAF</TD>
193     *       <TD ALIGN="RIGHT">66</TD>
194     *     </TR>
195     *     <TR>
196     *       <TD ALIGN="LEFT">NOT_ALLOWED_ON_NONLEAF</TD>
197     *       <TD ALIGN="RIGHT">66</TD>
198     *     </TR>
199     *     <TR>
200     *       <TD ALIGN="LEFT">NOT_ALLOWED_ON_RDN</TD>
201     *       <TD ALIGN="RIGHT">67</TD>
202     *     </TR>
203     *     <TR>
204     *       <TD ALIGN="LEFT">ENTRY_ALREADY_EXISTS</TD>
205     *       <TD ALIGN="RIGHT">68</TD>
206     *     </TR>
207     *     <TR>
208     *       <TD ALIGN="LEFT">OBJECT_CLASS_MODS_PROHIBITED</TD>
209     *       <TD ALIGN="RIGHT">69</TD>
210     *     </TR>
211     *     <TR>
212     *       <TD ALIGN="LEFT">AFFECTS_MULTIPLE_DSAS</TD>
213     *       <TD ALIGN="RIGHT">71</TD>
214     *     </TR>
215     *     <TR>
216     *       <TD ALIGN="LEFT">VIRTUAL_LIST_VIEW_ERROR</TD>
217     *       <TD ALIGN="RIGHT">76</TD>
218     *     </TR>
219     *     <TR>
220     *       <TD ALIGN="LEFT">OTHER</TD>
221     *       <TD ALIGN="RIGHT">80</TD>
222     *     </TR>
223     *     <TR>
224     *       <TD ALIGN="LEFT">SERVER_DOWN</TD>
225     *       <TD ALIGN="RIGHT">81</TD>
226     *     </TR>
227     *     <TR>
228     *       <TD ALIGN="LEFT">LOCAL_ERROR</TD>
229     *       <TD ALIGN="RIGHT">82</TD>
230     *     </TR>
231     *     <TR>
232     *       <TD ALIGN="LEFT">ENCODING_ERROR</TD>
233     *       <TD ALIGN="RIGHT">83</TD>
234     *     </TR>
235     *     <TR>
236     *       <TD ALIGN="LEFT">DECODING_ERROR</TD>
237     *       <TD ALIGN="RIGHT">84</TD>
238     *     </TR>
239     *     <TR>
240     *       <TD ALIGN="LEFT">TIMEOUT</TD>
241     *       <TD ALIGN="RIGHT">85</TD>
242     *     </TR>
243     *     <TR>
244     *       <TD ALIGN="LEFT">AUTH_UNKNOWN</TD>
245     *       <TD ALIGN="RIGHT">86</TD>
246     *     </TR>
247     *     <TR>
248     *       <TD ALIGN="LEFT">FILTER_ERROR</TD>
249     *       <TD ALIGN="RIGHT">87</TD>
250     *     </TR>
251     *     <TR>
252     *       <TD ALIGN="LEFT">USER_CANCELED</TD>
253     *       <TD ALIGN="RIGHT">88</TD>
254     *     </TR>
255     *     <TR>
256     *       <TD ALIGN="LEFT">PARAM_ERROR</TD>
257     *       <TD ALIGN="RIGHT">89</TD>
258     *     </TR>
259     *     <TR>
260     *       <TD ALIGN="LEFT">NO_MEMORY</TD>
261     *       <TD ALIGN="RIGHT">90</TD>
262     *     </TR>
263     *     <TR>
264     *       <TD ALIGN="LEFT">CONNECT_ERROR</TD>
265     *       <TD ALIGN="RIGHT">91</TD>
266     *     </TR>
267     *     <TR>
268     *       <TD ALIGN="LEFT">NOT_SUPPORTED</TD>
269     *       <TD ALIGN="RIGHT">92</TD>
270     *     </TR>
271     *     <TR>
272     *       <TD ALIGN="LEFT">CONTROL_NOT_FOUND</TD>
273     *       <TD ALIGN="RIGHT">93</TD>
274     *     </TR>
275     *     <TR>
276     *       <TD ALIGN="LEFT">NO_RESULTS_RETURNED</TD>
277     *       <TD ALIGN="RIGHT">94</TD>
278     *     </TR>
279     *     <TR>
280     *       <TD ALIGN="LEFT">MORE_RESULTS_TO_RETURN</TD>
281     *       <TD ALIGN="RIGHT">95</TD>
282     *     </TR>
283     *     <TR>
284     *       <TD ALIGN="LEFT">CLIENT_LOOP</TD>
285     *       <TD ALIGN="RIGHT">96</TD>
286     *     </TR>
287     *     <TR>
288     *       <TD ALIGN="LEFT">REFERRAL_LIMIT_EXCEEDED</TD>
289     *       <TD ALIGN="RIGHT">97</TD>
290     *     </TR>
291     *     <TR>
292     *       <TD ALIGN="LEFT">CANCELED</TD>
293     *       <TD ALIGN="RIGHT">118</TD>
294     *     </TR>
295     *     <TR>
296     *       <TD ALIGN="LEFT">NO_SUCH_OPERATION</TD>
297     *       <TD ALIGN="RIGHT">119</TD>
298     *     </TR>
299     *     <TR>
300     *       <TD ALIGN="LEFT">TOO_LATE</TD>
301     *       <TD ALIGN="RIGHT">120</TD>
302     *     </TR>
303     *     <TR>
304     *       <TD ALIGN="LEFT">CANNOT_CANCEL</TD>
305     *       <TD ALIGN="RIGHT">121</TD>
306     *     </TR>
307     *     <TR>
308     *       <TD ALIGN="LEFT">ASSERTION_FAILED</TD>
309     *       <TD ALIGN="RIGHT">122</TD>
310     *     </TR>
311     *     <TR>
312     *       <TD ALIGN="LEFT">AUTHORIZATION_DENIED</TD>
313     *       <TD ALIGN="RIGHT">123</TD>
314     *     </TR>
315     *     <TR>
316     *       <TD ALIGN="LEFT">E_SYNC_REFRESH_REQUIRED</TD>
317     *       <TD ALIGN="RIGHT">4096</TD>
318     *     </TR>
319     *     <TR>
320     *       <TD ALIGN="LEFT">NO_OPERATION</TD>
321     *       <TD ALIGN="RIGHT">16654</TD>
322     *     </TR>
323     *     <TR>
324     *       <TD ALIGN="LEFT">INTERACTIVE_TRANSACTION_ABORTED</TD>
325     *       <TD ALIGN="RIGHT">30221001</TD>
326     *     </TR>
327     *     <TR>
328     *       <TD ALIGN="LEFT">DATABASE_LOCK_CONFLICT</TD>
329     *       <TD ALIGN="RIGHT">30221002</TD>
330     *     </TR>
331     *   </TABLE>
332     * </CENTER>
333     */
334    @NotMutable()
335    @ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE)
336    public final class ResultCode
337           implements Serializable
338    {
339      /**
340       * The integer value (0) for the "SUCCESS" result code.
341       */
342      public static final int SUCCESS_INT_VALUE = 0;
343    
344    
345    
346      /**
347       * The result code (0) that will be used to indicate a successful operation.
348       */
349      public static final ResultCode SUCCESS =
350           new ResultCode(INFO_RC_SUCCESS.get(), SUCCESS_INT_VALUE);
351    
352    
353    
354      /**
355       * The integer value (1) for the "OPERATIONS_ERROR" result code.
356       */
357      public static final int OPERATIONS_ERROR_INT_VALUE = 1;
358    
359    
360    
361      /**
362       * The result code (1) that will be used to indicate that an operation was
363       * requested out of sequence.
364       */
365      public static final ResultCode OPERATIONS_ERROR =
366           new ResultCode(INFO_RC_OPERATIONS_ERROR.get(),
367                          OPERATIONS_ERROR_INT_VALUE);
368    
369    
370    
371      /**
372       * The integer value (2) for the "PROTOCOL_ERROR" result code.
373       */
374      public static final int PROTOCOL_ERROR_INT_VALUE = 2;
375    
376    
377    
378      /**
379       * The result code (2) that will be used to indicate that the client sent a
380       * malformed request.
381       */
382      public static final ResultCode PROTOCOL_ERROR =
383           new ResultCode(INFO_RC_PROTOCOL_ERROR.get(), PROTOCOL_ERROR_INT_VALUE);
384    
385    
386    
387      /**
388       * The integer value (3) for the "TIME_LIMIT_EXCEEDED" result code.
389       */
390      public static final int TIME_LIMIT_EXCEEDED_INT_VALUE = 3;
391    
392    
393    
394      /**
395       * The result code (3) that will be used to indicate that the server was
396       * unable to complete processing on the request in the allotted time limit.
397       */
398      public static final ResultCode TIME_LIMIT_EXCEEDED =
399           new ResultCode(INFO_RC_TIME_LIMIT_EXCEEDED.get(),
400                          TIME_LIMIT_EXCEEDED_INT_VALUE);
401    
402    
403    
404      /**
405       * The integer value (4) for the "SIZE_LIMIT_EXCEEDED" result code.
406       */
407      public static final int SIZE_LIMIT_EXCEEDED_INT_VALUE = 4;
408    
409    
410    
411      /**
412       * The result code (4) that will be used to indicate that the server found
413       * more matching entries than the configured request size limit.
414       */
415      public static final ResultCode SIZE_LIMIT_EXCEEDED =
416           new ResultCode(INFO_RC_SIZE_LIMIT_EXCEEDED.get(),
417                          SIZE_LIMIT_EXCEEDED_INT_VALUE);
418    
419    
420    
421      /**
422       * The integer value (5) for the "COMPARE_FALSE" result code.
423       */
424      public static final int COMPARE_FALSE_INT_VALUE = 5;
425    
426    
427    
428      /**
429       * The result code (5) that will be used if a requested compare assertion does
430       * not match the target entry.
431       */
432      public static final ResultCode COMPARE_FALSE =
433           new ResultCode(INFO_RC_COMPARE_FALSE.get(), COMPARE_FALSE_INT_VALUE);
434    
435    
436    
437      /**
438       * The integer value (6) for the "COMPARE_TRUE" result code.
439       */
440      public static final int COMPARE_TRUE_INT_VALUE = 6;
441    
442    
443    
444      /**
445       * The result code (6) that will be used if a requested compare assertion
446       * matched the target entry.
447       */
448      public static final ResultCode COMPARE_TRUE =
449           new ResultCode(INFO_RC_COMPARE_TRUE.get(), COMPARE_TRUE_INT_VALUE);
450    
451    
452    
453      /**
454       * The integer value (7) for the "AUTH_METHOD_NOT_SUPPORTED" result code.
455       */
456      public static final int AUTH_METHOD_NOT_SUPPORTED_INT_VALUE = 7;
457    
458    
459    
460      /**
461       * The result code (7) that will be used if the client requested a form of
462       * authentication that is not supported by the server.
463       */
464      public static final ResultCode AUTH_METHOD_NOT_SUPPORTED =
465           new ResultCode(INFO_RC_AUTH_METHOD_NOT_SUPPORTED.get(),
466                          AUTH_METHOD_NOT_SUPPORTED_INT_VALUE);
467    
468    
469    
470      /**
471       * The integer value (8) for the "STRONG_AUTH_REQUIRED" result code.
472       */
473      public static final int STRONG_AUTH_REQUIRED_INT_VALUE = 8;
474    
475    
476    
477      /**
478       * The result code (8) that will be used if the client requested an operation
479       * that requires a strong authentication mechanism.
480       */
481      public static final ResultCode STRONG_AUTH_REQUIRED =
482           new ResultCode(INFO_RC_STRONG_AUTH_REQUIRED.get(),
483                          STRONG_AUTH_REQUIRED_INT_VALUE);
484    
485    
486    
487      /**
488       * The integer value (10) for the "REFERRAL" result code.
489       */
490      public static final int REFERRAL_INT_VALUE = 10;
491    
492    
493    
494      /**
495       * The result code (10) that will be used if the server sends a referral to
496       * the client to refer to data in another location.
497       */
498      public static final ResultCode REFERRAL =
499           new ResultCode(INFO_RC_REFERRAL.get(), REFERRAL_INT_VALUE);
500    
501    
502    
503      /**
504       * The integer value (11) for the "ADMIN_LIMIT_EXCEEDED" result code.
505       */
506      public static final int ADMIN_LIMIT_EXCEEDED_INT_VALUE = 11;
507    
508    
509    
510      /**
511       * The result code (11) that will be used if a server administrative limit has
512       * been exceeded.
513       */
514      public static final ResultCode ADMIN_LIMIT_EXCEEDED =
515           new ResultCode(INFO_RC_ADMIN_LIMIT_EXCEEDED.get(),
516                          ADMIN_LIMIT_EXCEEDED_INT_VALUE);
517    
518    
519    
520      /**
521       * The integer value (12) for the "UNAVAILABLE_CRITICAL_EXTENSION" result
522       * code.
523       */
524      public static final int UNAVAILABLE_CRITICAL_EXTENSION_INT_VALUE = 12;
525    
526    
527    
528      /**
529       * The result code (12) that will be used if the client requests a critical
530       * control that is not supported by the server.
531       */
532      public static final ResultCode UNAVAILABLE_CRITICAL_EXTENSION =
533           new ResultCode(INFO_RC_UNAVAILABLE_CRITICAL_EXTENSION.get(),
534                          UNAVAILABLE_CRITICAL_EXTENSION_INT_VALUE);
535    
536    
537    
538      /**
539       * The integer value (13) for the "CONFIDENTIALITY_REQUIRED" result code.
540       */
541      public static final int CONFIDENTIALITY_REQUIRED_INT_VALUE = 13;
542    
543    
544    
545      /**
546       * The result code (13) that will be used if the server requires a secure
547       * communication mechanism for the requested operation.
548       */
549      public static final ResultCode CONFIDENTIALITY_REQUIRED =
550           new ResultCode(INFO_RC_CONFIDENTIALITY_REQUIRED.get(),
551                          CONFIDENTIALITY_REQUIRED_INT_VALUE);
552    
553    
554    
555      /**
556       * The integer value (14) for the "SASL_BIND_IN_PROGRESS" result code.
557       */
558      public static final int SASL_BIND_IN_PROGRESS_INT_VALUE = 14;
559    
560    
561    
562      /**
563       * The result code (14) that will be returned from the server after SASL bind
564       * stages in which more processing is required.
565       */
566      public static final ResultCode SASL_BIND_IN_PROGRESS =
567           new ResultCode(INFO_RC_SASL_BIND_IN_PROGRESS.get(),
568                          SASL_BIND_IN_PROGRESS_INT_VALUE);
569    
570    
571    
572      /**
573       * The integer value (16) for the "NO_SUCH_ATTRIBUTE" result code.
574       */
575      public static final int NO_SUCH_ATTRIBUTE_INT_VALUE = 16;
576    
577    
578    
579      /**
580       * The result code (16) that will be used if the client referenced an
581       * attribute that does not exist in the target entry.
582       */
583      public static final ResultCode NO_SUCH_ATTRIBUTE =
584           new ResultCode(INFO_RC_NO_SUCH_ATTRIBUTE.get(),
585                          NO_SUCH_ATTRIBUTE_INT_VALUE);
586    
587    
588    
589      /**
590       * The integer value (17) for the "UNDEFINED_ATTRIBUTE_TYPE" result code.
591       */
592      public static final int UNDEFINED_ATTRIBUTE_TYPE_INT_VALUE = 17;
593    
594    
595    
596      /**
597       * The result code (17) that will be used if the client referenced an
598       * attribute that is not defined in the server schema.
599       */
600      public static final ResultCode UNDEFINED_ATTRIBUTE_TYPE =
601           new ResultCode(INFO_RC_UNDEFINED_ATTRIBUTE_TYPE.get(),
602                          UNDEFINED_ATTRIBUTE_TYPE_INT_VALUE);
603    
604    
605    
606      /**
607       * The integer value (18) for the "INAPPROPRIATE_MATCHING" result code.
608       */
609      public static final int INAPPROPRIATE_MATCHING_INT_VALUE = 18;
610    
611    
612    
613      /**
614       * The result code (18) that will be used if the client attempted to use an
615       * attribute in a search filter in a manner not supported by the matching
616       * rules associated with that attribute.
617       */
618      public static final ResultCode INAPPROPRIATE_MATCHING =
619           new ResultCode(INFO_RC_INAPPROPRIATE_MATCHING.get(),
620                          INAPPROPRIATE_MATCHING_INT_VALUE);
621    
622    
623    
624      /**
625       * The integer value (19) for the "CONSTRAINT_VIOLATION" result code.
626       */
627      public static final int CONSTRAINT_VIOLATION_INT_VALUE = 19;
628    
629    
630    
631      /**
632       * The result code (19) that will be used if the requested operation would
633       * violate some constraint defined in the server.
634       */
635      public static final ResultCode CONSTRAINT_VIOLATION =
636           new ResultCode(INFO_RC_CONSTRAINT_VIOLATION.get(),
637                          CONSTRAINT_VIOLATION_INT_VALUE);
638    
639    
640    
641      /**
642       * The integer value (20) for the "ATTRIBUTE_OR_VALUE_EXISTS" result code.
643       */
644      public static final int ATTRIBUTE_OR_VALUE_EXISTS_INT_VALUE = 20;
645    
646    
647    
648      /**
649       * The result code (20) that will be used if the client attempts to modify an
650       * entry in a way that would create a duplicate value, or create multiple
651       * values for a single-valued attribute.
652       */
653      public static final ResultCode ATTRIBUTE_OR_VALUE_EXISTS =
654           new ResultCode(INFO_RC_ATTRIBUTE_OR_VALUE_EXISTS.get(),
655                          ATTRIBUTE_OR_VALUE_EXISTS_INT_VALUE);
656    
657    
658    
659      /**
660       * The integer value (21) for the "INVALID_ATTRIBUTE_SYNTAX" result code.
661       */
662      public static final int INVALID_ATTRIBUTE_SYNTAX_INT_VALUE = 21;
663    
664    
665    
666      /**
667       * The result code (21) that will be used if the client attempts to perform an
668       * operation that would create an attribute value that violates the syntax
669       * for that attribute.
670       */
671      public static final ResultCode INVALID_ATTRIBUTE_SYNTAX =
672           new ResultCode(INFO_RC_INVALID_ATTRIBUTE_SYNTAX.get(),
673                          INVALID_ATTRIBUTE_SYNTAX_INT_VALUE);
674    
675    
676    
677      /**
678       * The integer value (32) for the "NO_SUCH_OBJECT" result code.
679       */
680      public static final int NO_SUCH_OBJECT_INT_VALUE = 32;
681    
682    
683    
684      /**
685       * The result code (32) that will be used if the client targeted an entry that
686       * does not exist.
687       */
688      public static final ResultCode NO_SUCH_OBJECT =
689           new ResultCode(INFO_RC_NO_SUCH_OBJECT.get(), NO_SUCH_OBJECT_INT_VALUE);
690    
691    
692    
693      /**
694       * The integer value (33) for the "ALIAS_PROBLEM" result code.
695       */
696      public static final int ALIAS_PROBLEM_INT_VALUE = 33;
697    
698    
699    
700      /**
701       * The result code (33) that will be used if the client targeted an entry that
702       * as an alias.
703       */
704      public static final ResultCode ALIAS_PROBLEM =
705           new ResultCode(INFO_RC_ALIAS_PROBLEM.get(), ALIAS_PROBLEM_INT_VALUE);
706    
707    
708    
709      /**
710       * The integer value (34) for the "INVALID_DN_SYNTAX" result code.
711       */
712      public static final int INVALID_DN_SYNTAX_INT_VALUE = 34;
713    
714    
715    
716      /**
717       * The result code (34) that will be used if the client provided an invalid
718       * DN.
719       */
720      public static final ResultCode INVALID_DN_SYNTAX =
721           new ResultCode(INFO_RC_INVALID_DN_SYNTAX.get(),
722                          INVALID_DN_SYNTAX_INT_VALUE);
723    
724    
725    
726      /**
727       * The integer value (36) for the "ALIAS_DEREFERENCING_PROBLEM" result code.
728       */
729      public static final int ALIAS_DEREFERENCING_PROBLEM_INT_VALUE = 36;
730    
731    
732    
733      /**
734       * The result code (36) that will be used if a problem is encountered while
735       * the server is attempting to dereference an alias.
736       */
737      public static final ResultCode ALIAS_DEREFERENCING_PROBLEM =
738           new ResultCode(INFO_RC_ALIAS_DEREFERENCING_PROBLEM.get(),
739                          ALIAS_DEREFERENCING_PROBLEM_INT_VALUE);
740    
741    
742    
743      /**
744       * The integer value (48) for the "INAPPROPRIATE_AUTHENTICATION" result code.
745       */
746      public static final int INAPPROPRIATE_AUTHENTICATION_INT_VALUE = 48;
747    
748    
749    
750      /**
751       * The result code (48) that will be used if the client attempts to perform a
752       * type of authentication that is not supported for the target user.
753       */
754      public static final ResultCode INAPPROPRIATE_AUTHENTICATION =
755           new ResultCode(INFO_RC_INAPPROPRIATE_AUTHENTICATION.get(),
756                          INAPPROPRIATE_AUTHENTICATION_INT_VALUE);
757    
758    
759    
760      /**
761       * The integer value (49) for the "INVALID_CREDENTIALS" result code.
762       */
763      public static final int INVALID_CREDENTIALS_INT_VALUE = 49;
764    
765    
766    
767      /**
768       * The result code (49) that will be used if the client provided invalid
769       * credentials while trying to authenticate.
770       */
771      public static final ResultCode INVALID_CREDENTIALS =
772           new ResultCode(INFO_RC_INVALID_CREDENTIALS.get(),
773                          INVALID_CREDENTIALS_INT_VALUE);
774    
775    
776    
777      /**
778       * The integer value (50) for the "INSUFFICIENT_ACCESS_RIGHTS" result code.
779       */
780      public static final int INSUFFICIENT_ACCESS_RIGHTS_INT_VALUE = 50;
781    
782    
783    
784      /**
785       * The result code (50) that will be used if the client does not have
786       * permission to perform the requested operation.
787       */
788      public static final ResultCode INSUFFICIENT_ACCESS_RIGHTS =
789           new ResultCode(INFO_RC_INSUFFICIENT_ACCESS_RIGHTS.get(),
790                          INSUFFICIENT_ACCESS_RIGHTS_INT_VALUE);
791    
792    
793    
794      /**
795       * The integer value (51) for the "BUSY" result code.
796       */
797      public static final int BUSY_INT_VALUE = 51;
798    
799    
800    
801      /**
802       * The result code (51) that will be used if the server is too busy to process
803       * the requested operation.
804       */
805      public static final ResultCode BUSY = new ResultCode(INFO_RC_BUSY.get(),
806                                                           BUSY_INT_VALUE);
807    
808    
809    
810      /**
811       * The integer value (52) for the "UNAVAILABLE" result code.
812       */
813      public static final int UNAVAILABLE_INT_VALUE = 52;
814    
815    
816    
817      /**
818       * The result code (52) that will be used if the server is unavailable.
819       */
820      public static final ResultCode UNAVAILABLE =
821           new ResultCode(INFO_RC_UNAVAILABLE.get(), UNAVAILABLE_INT_VALUE);
822    
823    
824    
825      /**
826       * The integer value (53) for the "UNWILLING_TO_PERFORM" result code.
827       */
828      public static final int UNWILLING_TO_PERFORM_INT_VALUE = 53;
829    
830    
831    
832      /**
833       * The result code (53) that will be used if the server is not willing to
834       * perform the requested operation.
835       */
836      public static final ResultCode UNWILLING_TO_PERFORM =
837           new ResultCode(INFO_RC_UNWILLING_TO_PERFORM.get(),
838                          UNWILLING_TO_PERFORM_INT_VALUE);
839    
840    
841    
842      /**
843       * The integer value (54) for the "LOOP_DETECT" result code.
844       */
845      public static final int LOOP_DETECT_INT_VALUE = 54;
846    
847    
848    
849      /**
850       * The result code (54) that will be used if the server detects a chaining or
851       * alias loop.
852       */
853      public static final ResultCode LOOP_DETECT =
854           new ResultCode(INFO_RC_LOOP_DETECT.get(), LOOP_DETECT_INT_VALUE);
855    
856    
857    
858      /**
859       * The integer value (60) for the "SORT_CONTROL_MISSING" result code.
860       */
861      public static final int SORT_CONTROL_MISSING_INT_VALUE = 60;
862    
863    
864    
865      /**
866       * The result code (60) that will be used if the client sends a virtual list
867       * view control without a server-side sort control.
868       */
869      public static final ResultCode SORT_CONTROL_MISSING =
870           new ResultCode(INFO_RC_SORT_CONTROL_MISSING.get(),
871                          SORT_CONTROL_MISSING_INT_VALUE);
872    
873    
874    
875      /**
876       * The integer value (61) for the "OFFSET_RANGE_ERROR" result code.
877       */
878      public static final int OFFSET_RANGE_ERROR_INT_VALUE = 61;
879    
880    
881    
882      /**
883       * The result code (61) that will be used if the client provides a virtual
884       * list view control with a target offset that is out of range for the
885       * available data set.
886       */
887      public static final ResultCode OFFSET_RANGE_ERROR =
888           new ResultCode(INFO_RC_OFFSET_RANGE_ERROR.get(),
889                          OFFSET_RANGE_ERROR_INT_VALUE);
890    
891    
892    
893      /**
894       * The integer value (64) for the "NAMING_VIOLATION" result code.
895       */
896      public static final int NAMING_VIOLATION_INT_VALUE = 64;
897    
898    
899    
900      /**
901       * The result code (64) that will be used if the client request violates a
902       * naming constraint (e.g., a name form or DIT structure rule) defined in the
903       * server.
904       */
905      public static final ResultCode NAMING_VIOLATION =
906           new ResultCode(INFO_RC_NAMING_VIOLATION.get(),
907                          NAMING_VIOLATION_INT_VALUE);
908    
909    
910    
911      /**
912       * The integer value (65) for the "OBJECT_CLASS_VIOLATION" result code.
913       */
914      public static final int OBJECT_CLASS_VIOLATION_INT_VALUE = 65;
915    
916    
917    
918      /**
919       * The result code (65) that will be used if the client request violates an
920       * object class constraint (e.g., an undefined object class, a
921       * disallowed attribute, or a missing required attribute) defined in the
922       * server.
923       */
924      public static final ResultCode OBJECT_CLASS_VIOLATION =
925           new ResultCode(INFO_RC_OBJECT_CLASS_VIOLATION.get(),
926                          OBJECT_CLASS_VIOLATION_INT_VALUE);
927    
928    
929    
930      /**
931       * The integer value (66) for the "NOT_ALLOWED_ON_NONLEAF" result code.
932       */
933      public static final int NOT_ALLOWED_ON_NONLEAF_INT_VALUE = 66;
934    
935    
936    
937      /**
938       * The result code (66) that will be used if the requested operation is not
939       * allowed to be performed on non-leaf entries.
940       */
941      public static final ResultCode NOT_ALLOWED_ON_NONLEAF =
942           new ResultCode(INFO_RC_NOT_ALLOWED_ON_NONLEAF.get(),
943                          NOT_ALLOWED_ON_NONLEAF_INT_VALUE);
944    
945    
946    
947      /**
948       * The integer value (67) for the "NOT_ALLOWED_ON_RDN" result code.
949       */
950      public static final int NOT_ALLOWED_ON_RDN_INT_VALUE = 67;
951    
952    
953    
954      /**
955       * The result code (67) that will be used if the requested operation would
956       * alter the RDN of the entry but the operation was not a modify DN request.
957       */
958      public static final ResultCode NOT_ALLOWED_ON_RDN =
959           new ResultCode(INFO_RC_NOT_ALLOWED_ON_RDN.get(),
960                          NOT_ALLOWED_ON_RDN_INT_VALUE);
961    
962    
963    
964      /**
965       * The integer value (68) for the "ENTRY_ALREADY_EXISTS" result code.
966       */
967      public static final int ENTRY_ALREADY_EXISTS_INT_VALUE = 68;
968    
969    
970    
971      /**
972       * The result code (68) that will be used if the requested operation would
973       * create a conflict with an entry that already exists in the server.
974       */
975      public static final ResultCode ENTRY_ALREADY_EXISTS =
976           new ResultCode(INFO_RC_ENTRY_ALREADY_EXISTS.get(),
977                          ENTRY_ALREADY_EXISTS_INT_VALUE);
978    
979    
980    
981      /**
982       * The integer value (69) for the "OBJECT_CLASS_MODS_PROHIBITED" result code.
983       */
984      public static final int OBJECT_CLASS_MODS_PROHIBITED_INT_VALUE = 69;
985    
986    
987    
988      /**
989       * The result code (69) that will be used if the requested operation would
990       * alter the set of object classes defined in the entry in a disallowed
991       * manner.
992       */
993      public static final ResultCode OBJECT_CLASS_MODS_PROHIBITED =
994           new ResultCode(INFO_RC_OBJECT_CLASS_MODS_PROHIBITED.get(),
995                          OBJECT_CLASS_MODS_PROHIBITED_INT_VALUE);
996    
997    
998    
999      /**
1000       * The integer value (71) for the "AFFECTS_MULTIPLE_DSAS" result code.
1001       */
1002      public static final int AFFECTS_MULTIPLE_DSAS_INT_VALUE = 71;
1003    
1004    
1005    
1006      /**
1007       * The result code (71) that will be used if the requested operation would
1008       * impact entries in multiple data sources.
1009       */
1010      public static final ResultCode AFFECTS_MULTIPLE_DSAS =
1011           new ResultCode(INFO_RC_AFFECTS_MULTIPLE_DSAS.get(),
1012                          AFFECTS_MULTIPLE_DSAS_INT_VALUE);
1013    
1014    
1015    
1016      /**
1017       * The integer value (76) for the "VIRTUAL_LIST_VIEW_ERROR" result code.
1018       */
1019      public static final int VIRTUAL_LIST_VIEW_ERROR_INT_VALUE = 76;
1020    
1021    
1022    
1023      /**
1024       * The result code (76) that will be used if an error occurred while
1025       * performing processing associated with the virtual list view control.
1026       */
1027      public static final ResultCode VIRTUAL_LIST_VIEW_ERROR =
1028           new ResultCode(INFO_RC_VIRTUAL_LIST_VIEW_ERROR.get(),
1029                          VIRTUAL_LIST_VIEW_ERROR_INT_VALUE);
1030    
1031    
1032    
1033      /**
1034       * The integer value (80) for the "OTHER" result code.
1035       */
1036      public static final int OTHER_INT_VALUE = 80;
1037    
1038    
1039    
1040      /**
1041       * The result code (80) that will be used if none of the other result codes
1042       * are appropriate.
1043       */
1044      public static final ResultCode OTHER =
1045           new ResultCode(INFO_RC_OTHER.get(), OTHER_INT_VALUE);
1046    
1047    
1048    
1049      /**
1050       * The integer value (81) for the "SERVER_DOWN" result code.
1051       */
1052      public static final int SERVER_DOWN_INT_VALUE = 81;
1053    
1054    
1055    
1056      /**
1057       * The client-side result code (81) that will be used if an established
1058       * connection to the server is lost.
1059       */
1060      public static final ResultCode SERVER_DOWN =
1061           new ResultCode(INFO_RC_SERVER_DOWN.get(), SERVER_DOWN_INT_VALUE);
1062    
1063    
1064    
1065      /**
1066       * The integer value (82) for the "LOCAL_ERROR" result code.
1067       */
1068      public static final int LOCAL_ERROR_INT_VALUE = 82;
1069    
1070    
1071    
1072      /**
1073       * The client-side result code (82) that will be used if a generic client-side
1074       * error occurs during processing.
1075       */
1076      public static final ResultCode LOCAL_ERROR =
1077           new ResultCode(INFO_RC_LOCAL_ERROR.get(), LOCAL_ERROR_INT_VALUE);
1078    
1079    
1080    
1081      /**
1082       * The integer value (83) for the "ENCODING_ERROR" result code.
1083       */
1084      public static final int ENCODING_ERROR_INT_VALUE = 83;
1085    
1086    
1087    
1088      /**
1089       * The client-side result code (83) that will be used if an error occurs while
1090       * encoding a request.
1091       */
1092      public static final ResultCode ENCODING_ERROR =
1093           new ResultCode(INFO_RC_ENCODING_ERROR.get(), ENCODING_ERROR_INT_VALUE);
1094    
1095    
1096    
1097      /**
1098       * The integer value (84) for the "DECODING_ERROR" result code.
1099       */
1100      public static final int DECODING_ERROR_INT_VALUE = 84;
1101    
1102    
1103    
1104      /**
1105       * The client-side result code (84) that will be used if an error occurs while
1106       * decoding a response.
1107       */
1108      public static final ResultCode DECODING_ERROR =
1109           new ResultCode(INFO_RC_DECODING_ERROR.get(), DECODING_ERROR_INT_VALUE);
1110    
1111    
1112    
1113      /**
1114       * The integer value (85) for the "TIMEOUT" result code.
1115       */
1116      public static final int TIMEOUT_INT_VALUE = 85;
1117    
1118    
1119    
1120      /**
1121       * The client-side result code (85) that will be used if a client timeout
1122       * occurs while waiting for a response from the server.
1123       */
1124      public static final ResultCode TIMEOUT =
1125           new ResultCode(INFO_RC_TIMEOUT.get(), TIMEOUT_INT_VALUE);
1126    
1127    
1128    
1129      /**
1130       * The integer value (86) for the "AUTH_UNKNOWN" result code.
1131       */
1132      public static final int AUTH_UNKNOWN_INT_VALUE = 86;
1133    
1134    
1135    
1136      /**
1137       * The client-side result code (86) that will be used if the client attempts
1138       * to use an unknown authentication type.
1139       */
1140      public static final ResultCode AUTH_UNKNOWN =
1141           new ResultCode(INFO_RC_AUTH_UNKNOWN.get(), AUTH_UNKNOWN_INT_VALUE);
1142    
1143    
1144    
1145      /**
1146       * The integer value (87) for the "FILTER_ERROR" result code.
1147       */
1148      public static final int FILTER_ERROR_INT_VALUE = 87;
1149    
1150    
1151    
1152      /**
1153       * The client-side result code (87) that will be used if an error occurs while
1154       * attempting to encode a search filter.
1155       */
1156      public static final ResultCode FILTER_ERROR =
1157           new ResultCode(INFO_RC_FILTER_ERROR.get(), FILTER_ERROR_INT_VALUE);
1158    
1159    
1160    
1161      /**
1162       * The integer value (88) for the "USER_CANCELED" result code.
1163       */
1164      public static final int USER_CANCELED_INT_VALUE = 88;
1165    
1166    
1167    
1168      /**
1169       * The client-side result code (88) that will be used if the end user canceled
1170       * the operation in progress.
1171       */
1172      public static final ResultCode USER_CANCELED =
1173           new ResultCode(INFO_RC_USER_CANCELED.get(), USER_CANCELED_INT_VALUE);
1174    
1175    
1176    
1177      /**
1178       * The integer value (89) for the "PARAM_ERROR" result code.
1179       */
1180      public static final int PARAM_ERROR_INT_VALUE = 89;
1181    
1182    
1183    
1184      /**
1185       * The client-side result code (89) that will be used if there is a problem
1186       * with the parameters provided for a request.
1187       */
1188      public static final ResultCode PARAM_ERROR =
1189           new ResultCode(INFO_RC_PARAM_ERROR.get(), PARAM_ERROR_INT_VALUE);
1190    
1191    
1192    
1193      /**
1194       * The integer value (90) for the "NO_MEMORY" result code.
1195       */
1196      public static final int NO_MEMORY_INT_VALUE = 90;
1197    
1198    
1199    
1200      /**
1201       * The client-side result code (90) that will be used if the client does not
1202       * have sufficient memory to perform the requested operation.
1203       */
1204      public static final ResultCode NO_MEMORY =
1205           new ResultCode(INFO_RC_NO_MEMORY.get(), NO_MEMORY_INT_VALUE);
1206    
1207    
1208    
1209      /**
1210       * The integer value (91) for the "CONNECT_ERROR" result code.
1211       */
1212      public static final int CONNECT_ERROR_INT_VALUE = 91;
1213    
1214    
1215    
1216      /**
1217       * The client-side result code (91) that will be used if an error occurs while
1218       * attempting to connect to a target server.
1219       */
1220      public static final ResultCode CONNECT_ERROR =
1221           new ResultCode(INFO_RC_CONNECT_ERROR.get(), CONNECT_ERROR_INT_VALUE);
1222    
1223    
1224    
1225      /**
1226       * The integer value (92) for the "NOT_SUPPORTED" result code.
1227       */
1228      public static final int NOT_SUPPORTED_INT_VALUE = 92;
1229    
1230    
1231    
1232      /**
1233       * The client-side result code (92) that will be used if the requested
1234       * operation is not supported.
1235       */
1236      public static final ResultCode NOT_SUPPORTED =
1237           new ResultCode(INFO_RC_NOT_SUPPORTED.get(), NOT_SUPPORTED_INT_VALUE);
1238    
1239    
1240    
1241      /**
1242       * The integer value (93) for the "CONTROL_NOT_FOUND" result code.
1243       */
1244      public static final int CONTROL_NOT_FOUND_INT_VALUE = 93;
1245    
1246    
1247    
1248      /**
1249       * The client-side result code (93) that will be used if the response from the
1250       * server did not include an expected control.
1251       */
1252      public static final ResultCode CONTROL_NOT_FOUND =
1253           new ResultCode(INFO_RC_CONTROL_NOT_FOUND.get(),
1254                          CONTROL_NOT_FOUND_INT_VALUE);
1255    
1256    
1257    
1258      /**
1259       * The integer value (94) for the "NO_RESULTS_RETURNED" result code.
1260       */
1261      public static final int NO_RESULTS_RETURNED_INT_VALUE = 94;
1262    
1263    
1264    
1265      /**
1266       * The client-side result code (94) that will be used if the server did not
1267       * send any results.
1268       */
1269      public static final ResultCode NO_RESULTS_RETURNED =
1270           new ResultCode(INFO_RC_NO_RESULTS_RETURNED.get(),
1271                          NO_RESULTS_RETURNED_INT_VALUE);
1272    
1273    
1274    
1275      /**
1276       * The integer value (95) for the "MORE_RESULTS_TO_RETURN" result code.
1277       */
1278      public static final int MORE_RESULTS_TO_RETURN_INT_VALUE = 95;
1279    
1280    
1281    
1282      /**
1283       * The client-side result code (95) that will be used if there are still more
1284       * results to return.
1285       */
1286      public static final ResultCode MORE_RESULTS_TO_RETURN =
1287           new ResultCode(INFO_RC_MORE_RESULTS_TO_RETURN.get(),
1288                          MORE_RESULTS_TO_RETURN_INT_VALUE);
1289    
1290    
1291    
1292      /**
1293       * The integer value (96) for the "CLIENT_LOOP" result code.
1294       */
1295      public static final int CLIENT_LOOP_INT_VALUE = 96;
1296    
1297    
1298    
1299      /**
1300       * The client-side result code (96) that will be used if the client detects a
1301       * loop while attempting to follow referrals.
1302       */
1303      public static final ResultCode CLIENT_LOOP =
1304           new ResultCode(INFO_RC_CLIENT_LOOP.get(), CLIENT_LOOP_INT_VALUE);
1305    
1306    
1307    
1308      /**
1309       * The integer value (97) for the "REFERRAL_LIMIT_EXCEEDED" result code.
1310       */
1311      public static final int REFERRAL_LIMIT_EXCEEDED_INT_VALUE = 97;
1312    
1313    
1314    
1315      /**
1316       * The client-side result code (97) that will be used if the client
1317       * encountered too many referrals in the course of processing an operation.
1318       */
1319      public static final ResultCode REFERRAL_LIMIT_EXCEEDED =
1320           new ResultCode(INFO_RC_REFERRAL_LIMIT_EXCEEDED.get(),
1321                          REFERRAL_LIMIT_EXCEEDED_INT_VALUE);
1322    
1323    
1324    
1325      /**
1326       * The integer value (118) for the "CANCELED" result code.
1327       */
1328      public static final int CANCELED_INT_VALUE = 118;
1329    
1330    
1331    
1332      /**
1333       * The result code (118) that will be used if the operation was canceled.
1334       */
1335      public static final ResultCode CANCELED =
1336           new ResultCode(INFO_RC_CANCELED.get(), CANCELED_INT_VALUE);
1337    
1338    
1339    
1340      /**
1341       * The integer value (119) for the "NO_SUCH_OPERATION" result code.
1342       */
1343      public static final int NO_SUCH_OPERATION_INT_VALUE = 119;
1344    
1345    
1346    
1347      /**
1348       * The result code (119) that will be used if the client attempts to cancel an
1349       * operation that the client doesn't exist in the server.
1350       */
1351      public static final ResultCode NO_SUCH_OPERATION =
1352           new ResultCode(INFO_RC_NO_SUCH_OPERATION.get(),
1353                          NO_SUCH_OPERATION_INT_VALUE);
1354    
1355    
1356    
1357      /**
1358       * The integer value (120) for the "TOO_LATE" result code.
1359       */
1360      public static final int TOO_LATE_INT_VALUE = 120;
1361    
1362    
1363    
1364      /**
1365       * The result code (120) that will be used if the client attempts to cancel an
1366       * operation too late in the processing for that operation.
1367       */
1368      public static final ResultCode TOO_LATE =
1369           new ResultCode(INFO_RC_TOO_LATE.get(), TOO_LATE_INT_VALUE);
1370    
1371    
1372    
1373      /**
1374       * The integer value (121) for the "CANNOT_CANCEL" result code.
1375       */
1376      public static final int CANNOT_CANCEL_INT_VALUE = 121;
1377    
1378    
1379    
1380      /**
1381       * The result code (121) that will be used if the client attempts to cancel an
1382       * operation that cannot be canceled.
1383       */
1384      public static final ResultCode CANNOT_CANCEL =
1385           new ResultCode(INFO_RC_CANNOT_CANCEL.get(), CANNOT_CANCEL_INT_VALUE);
1386    
1387    
1388    
1389      /**
1390       * The integer value (122) for the "ASSERTION_FAILED" result code.
1391       */
1392      public static final int ASSERTION_FAILED_INT_VALUE = 122;
1393    
1394    
1395    
1396      /**
1397       * The result code (122) that will be used if the requested operation included
1398       * the LDAP assertion control but the assertion did not match the target
1399       * entry.
1400       */
1401      public static final ResultCode ASSERTION_FAILED =
1402           new ResultCode(INFO_RC_ASSERTION_FAILED.get(),
1403                          ASSERTION_FAILED_INT_VALUE);
1404    
1405    
1406    
1407      /**
1408       * The integer value (123) for the "AUTHORIZATION_DENIED" result code.
1409       */
1410      public static final int AUTHORIZATION_DENIED_INT_VALUE = 123;
1411    
1412    
1413    
1414      /**
1415       * The result code (123) that will be used if the client is denied the ability
1416       * to use the proxied authorization control.
1417       */
1418      public static final ResultCode AUTHORIZATION_DENIED =
1419           new ResultCode(INFO_RC_AUTHORIZATION_DENIED.get(),
1420                          AUTHORIZATION_DENIED_INT_VALUE);
1421    
1422    
1423    
1424      /**
1425       * The integer value (4096) for the "E_SYNC_REFRESH_REQUIRED" result code.
1426       */
1427      public static final int E_SYNC_REFRESH_REQUIRED_INT_VALUE = 4096;
1428    
1429    
1430    
1431      /**
1432       * The result code (4096) that will be used if a client using the content
1433       * synchronization request control requests an incremental update but the
1434       * server is unable to honor that request and requires the client to request
1435       * an initial content.
1436       */
1437      public static final ResultCode E_SYNC_REFRESH_REQUIRED =
1438           new ResultCode(INFO_RC_E_SYNC_REFRESH_REQUIRED.get(),
1439                          E_SYNC_REFRESH_REQUIRED_INT_VALUE);
1440    
1441    
1442    
1443      /**
1444       * The integer value (16654) for the "NO_OPERATION" result code.
1445       */
1446      public static final int NO_OPERATION_INT_VALUE = 16654;
1447    
1448    
1449    
1450      /**
1451       * The result code (16654) for operations that completed successfully but no
1452       * changes were made to the server because the LDAP no-op control was included
1453       * in the request.
1454       */
1455      public static final ResultCode NO_OPERATION =
1456           new ResultCode(INFO_RC_NO_OPERATION.get(), NO_OPERATION_INT_VALUE);
1457    
1458    
1459    
1460      /**
1461       * The integer value (30221001) for the "INTERACTIVE_TRANSACTION_ABORTED"
1462       * result code.
1463       */
1464      public static final int INTERACTIVE_TRANSACTION_ABORTED_INT_VALUE = 30221001;
1465    
1466    
1467    
1468      /**
1469       * The result code (30221001) for use if an interactive transaction has been
1470       * aborted, either due to an explicit request from a client or by the server
1471       * without a client request.
1472       */
1473      public static final ResultCode INTERACTIVE_TRANSACTION_ABORTED =
1474           new ResultCode(INFO_RC_INTERACTIVE_TRANSACTION_ABORTED.get(),
1475                          INTERACTIVE_TRANSACTION_ABORTED_INT_VALUE);
1476    
1477    
1478    
1479      /**
1480       * The integer value (30221002) for the "DATABASE_LOCK_CONFLICT" result code.
1481       */
1482      public static final int DATABASE_LOCK_CONFLICT_INT_VALUE = 30221002;
1483    
1484    
1485    
1486      /**
1487       * The result code (30221002) for use if an operation fails because of a
1488       * database lock conflict (e.g., a deadlock or lock timeout).
1489       */
1490      public static final ResultCode DATABASE_LOCK_CONFLICT =
1491           new ResultCode(INFO_RC_DATABASE_LOCK_CONFLICT.get(),
1492                          DATABASE_LOCK_CONFLICT_INT_VALUE);
1493    
1494    
1495    
1496      /**
1497       * The set of result code objects created with undefined int result code
1498       * values.
1499       */
1500      private static final HashMap<Integer,ResultCode> UNDEFINED_RESULT_CODES =
1501           new HashMap<Integer,ResultCode>();
1502    
1503    
1504    
1505      /**
1506       * The serial version UID for this serializable class.
1507       */
1508      private static final long serialVersionUID = 7609311304252378100L;
1509    
1510    
1511    
1512      // The integer value for this result code.
1513      private final int intValue;
1514    
1515      // The name for this result code.
1516      private final String name;
1517    
1518      // The string representation for this result code.
1519      private final String stringRepresentation;
1520    
1521    
1522    
1523      /**
1524       * Creates a new result code with the specified integer value.
1525       *
1526       * @param  intValue  The integer value for this result code.
1527       */
1528      private ResultCode(final int intValue)
1529      {
1530        this.intValue = intValue;
1531    
1532        name                 = String.valueOf(intValue);
1533        stringRepresentation = name;
1534      }
1535    
1536    
1537    
1538      /**
1539       * Creates a new result code with the specified name and integer value.
1540       *
1541       * @param  name      The name for this result code.
1542       * @param  intValue  The integer value for this result code.
1543       */
1544      private ResultCode(final String name, final int intValue)
1545      {
1546        this.name     = name;
1547        this.intValue = intValue;
1548    
1549        stringRepresentation = intValue + " (" + name + ')';
1550      }
1551    
1552    
1553    
1554      /**
1555       * Retrieves the name for this result code.
1556       *
1557       * @return  The name for this result code.
1558       */
1559      public String getName()
1560      {
1561        return name;
1562      }
1563    
1564    
1565    
1566      /**
1567       * Retrieves the integer value for this result code.
1568       *
1569       * @return  The integer value for this result code.
1570       */
1571      public int intValue()
1572      {
1573        return intValue;
1574      }
1575    
1576    
1577    
1578      /**
1579       * Retrieves the result code with the specified integer value.  If the
1580       * provided integer value does not correspond to a predefined
1581       * {@code ResultCode} object, then a new {@code ResultCode} object will be
1582       * created and returned.  Any new result codes created will also be cached
1583       * and returned for any subsequent requests with that integer value so the
1584       * same object will always be returned for a given integer value.
1585       *
1586       * @param  intValue  The integer value for which to retrieve the corresponding
1587       *                   result code.
1588       *
1589       * @return  The result code with the specified integer value, or a new result
1590       *          code
1591       */
1592      public static ResultCode valueOf(final int intValue)
1593      {
1594        return valueOf(intValue, null);
1595      }
1596    
1597    
1598    
1599      /**
1600       * Retrieves the result code with the specified integer value.  If the
1601       * provided integer value does not correspond to a predefined
1602       * {@code ResultCode} object, then a new {@code ResultCode} object will be
1603       * created and returned.  Any new result codes created will also be cached
1604       * and returned for any subsequent requests with that integer value so the
1605       * same object will always be returned for a given integer value.
1606       *
1607       * @param  intValue  The integer value for which to retrieve the corresponding
1608       *                   result code.
1609       * @param  name      The user-friendly name to use for the result code if no
1610       *                   result code has been previously accessed with the same
1611       *                   integer value.  It may be {@code null} if this is not
1612       *                   known or a string representation of the integer value
1613       *                   should be used.
1614       *
1615       * @return  The result code with the specified integer value, or a new result
1616       *          code
1617       */
1618      public static ResultCode valueOf(final int intValue, final String name)
1619      {
1620        switch (intValue)
1621        {
1622          case SUCCESS_INT_VALUE:
1623            return SUCCESS;
1624          case OPERATIONS_ERROR_INT_VALUE:
1625            return OPERATIONS_ERROR;
1626          case PROTOCOL_ERROR_INT_VALUE:
1627            return PROTOCOL_ERROR;
1628          case TIME_LIMIT_EXCEEDED_INT_VALUE:
1629            return TIME_LIMIT_EXCEEDED;
1630          case SIZE_LIMIT_EXCEEDED_INT_VALUE:
1631            return SIZE_LIMIT_EXCEEDED;
1632          case COMPARE_FALSE_INT_VALUE:
1633            return COMPARE_FALSE;
1634          case COMPARE_TRUE_INT_VALUE:
1635            return COMPARE_TRUE;
1636          case AUTH_METHOD_NOT_SUPPORTED_INT_VALUE:
1637            return AUTH_METHOD_NOT_SUPPORTED;
1638          case STRONG_AUTH_REQUIRED_INT_VALUE:
1639            return STRONG_AUTH_REQUIRED;
1640          case REFERRAL_INT_VALUE:
1641            return REFERRAL;
1642          case ADMIN_LIMIT_EXCEEDED_INT_VALUE:
1643            return ADMIN_LIMIT_EXCEEDED;
1644          case UNAVAILABLE_CRITICAL_EXTENSION_INT_VALUE:
1645            return UNAVAILABLE_CRITICAL_EXTENSION;
1646          case CONFIDENTIALITY_REQUIRED_INT_VALUE:
1647            return CONFIDENTIALITY_REQUIRED;
1648          case SASL_BIND_IN_PROGRESS_INT_VALUE:
1649            return SASL_BIND_IN_PROGRESS;
1650          case NO_SUCH_ATTRIBUTE_INT_VALUE:
1651            return NO_SUCH_ATTRIBUTE;
1652          case UNDEFINED_ATTRIBUTE_TYPE_INT_VALUE:
1653            return UNDEFINED_ATTRIBUTE_TYPE;
1654          case INAPPROPRIATE_MATCHING_INT_VALUE:
1655            return INAPPROPRIATE_MATCHING;
1656          case CONSTRAINT_VIOLATION_INT_VALUE:
1657            return CONSTRAINT_VIOLATION;
1658          case ATTRIBUTE_OR_VALUE_EXISTS_INT_VALUE:
1659            return ATTRIBUTE_OR_VALUE_EXISTS;
1660          case INVALID_ATTRIBUTE_SYNTAX_INT_VALUE:
1661            return INVALID_ATTRIBUTE_SYNTAX;
1662          case NO_SUCH_OBJECT_INT_VALUE:
1663            return NO_SUCH_OBJECT;
1664          case ALIAS_PROBLEM_INT_VALUE:
1665            return ALIAS_PROBLEM;
1666          case INVALID_DN_SYNTAX_INT_VALUE:
1667            return INVALID_DN_SYNTAX;
1668          case ALIAS_DEREFERENCING_PROBLEM_INT_VALUE:
1669            return ALIAS_DEREFERENCING_PROBLEM;
1670          case INAPPROPRIATE_AUTHENTICATION_INT_VALUE:
1671            return INAPPROPRIATE_AUTHENTICATION;
1672          case INVALID_CREDENTIALS_INT_VALUE:
1673            return INVALID_CREDENTIALS;
1674          case INSUFFICIENT_ACCESS_RIGHTS_INT_VALUE:
1675            return INSUFFICIENT_ACCESS_RIGHTS;
1676          case BUSY_INT_VALUE:
1677            return BUSY;
1678          case UNAVAILABLE_INT_VALUE:
1679            return UNAVAILABLE;
1680          case UNWILLING_TO_PERFORM_INT_VALUE:
1681            return UNWILLING_TO_PERFORM;
1682          case LOOP_DETECT_INT_VALUE:
1683            return LOOP_DETECT;
1684          case SORT_CONTROL_MISSING_INT_VALUE:
1685            return SORT_CONTROL_MISSING;
1686          case OFFSET_RANGE_ERROR_INT_VALUE:
1687            return OFFSET_RANGE_ERROR;
1688          case NAMING_VIOLATION_INT_VALUE:
1689            return NAMING_VIOLATION;
1690          case OBJECT_CLASS_VIOLATION_INT_VALUE:
1691            return OBJECT_CLASS_VIOLATION;
1692          case NOT_ALLOWED_ON_NONLEAF_INT_VALUE:
1693            return NOT_ALLOWED_ON_NONLEAF;
1694          case NOT_ALLOWED_ON_RDN_INT_VALUE:
1695            return NOT_ALLOWED_ON_RDN;
1696          case ENTRY_ALREADY_EXISTS_INT_VALUE:
1697            return ENTRY_ALREADY_EXISTS;
1698          case OBJECT_CLASS_MODS_PROHIBITED_INT_VALUE:
1699            return OBJECT_CLASS_MODS_PROHIBITED;
1700          case AFFECTS_MULTIPLE_DSAS_INT_VALUE:
1701            return AFFECTS_MULTIPLE_DSAS;
1702          case VIRTUAL_LIST_VIEW_ERROR_INT_VALUE:
1703            return VIRTUAL_LIST_VIEW_ERROR;
1704          case OTHER_INT_VALUE:
1705            return OTHER;
1706          case SERVER_DOWN_INT_VALUE:
1707            return SERVER_DOWN;
1708          case LOCAL_ERROR_INT_VALUE:
1709            return LOCAL_ERROR;
1710          case ENCODING_ERROR_INT_VALUE:
1711            return ENCODING_ERROR;
1712          case DECODING_ERROR_INT_VALUE:
1713            return DECODING_ERROR;
1714          case TIMEOUT_INT_VALUE:
1715            return TIMEOUT;
1716          case AUTH_UNKNOWN_INT_VALUE:
1717            return AUTH_UNKNOWN;
1718          case FILTER_ERROR_INT_VALUE:
1719            return FILTER_ERROR;
1720          case USER_CANCELED_INT_VALUE:
1721            return USER_CANCELED;
1722          case PARAM_ERROR_INT_VALUE:
1723            return PARAM_ERROR;
1724          case NO_MEMORY_INT_VALUE:
1725            return NO_MEMORY;
1726          case CONNECT_ERROR_INT_VALUE:
1727            return CONNECT_ERROR;
1728          case NOT_SUPPORTED_INT_VALUE:
1729            return NOT_SUPPORTED;
1730          case CONTROL_NOT_FOUND_INT_VALUE:
1731            return CONTROL_NOT_FOUND;
1732          case NO_RESULTS_RETURNED_INT_VALUE:
1733            return NO_RESULTS_RETURNED;
1734          case MORE_RESULTS_TO_RETURN_INT_VALUE:
1735            return MORE_RESULTS_TO_RETURN;
1736          case CLIENT_LOOP_INT_VALUE:
1737            return CLIENT_LOOP;
1738          case REFERRAL_LIMIT_EXCEEDED_INT_VALUE:
1739            return REFERRAL_LIMIT_EXCEEDED;
1740          case CANCELED_INT_VALUE:
1741            return CANCELED;
1742          case NO_SUCH_OPERATION_INT_VALUE:
1743            return NO_SUCH_OPERATION;
1744          case TOO_LATE_INT_VALUE:
1745            return TOO_LATE;
1746          case CANNOT_CANCEL_INT_VALUE:
1747            return CANNOT_CANCEL;
1748          case ASSERTION_FAILED_INT_VALUE:
1749            return ASSERTION_FAILED;
1750          case AUTHORIZATION_DENIED_INT_VALUE:
1751            return AUTHORIZATION_DENIED;
1752          case E_SYNC_REFRESH_REQUIRED_INT_VALUE:
1753            return E_SYNC_REFRESH_REQUIRED;
1754          case NO_OPERATION_INT_VALUE:
1755            return NO_OPERATION;
1756          case INTERACTIVE_TRANSACTION_ABORTED_INT_VALUE:
1757            return INTERACTIVE_TRANSACTION_ABORTED;
1758          case DATABASE_LOCK_CONFLICT_INT_VALUE:
1759            return DATABASE_LOCK_CONFLICT;
1760        }
1761    
1762        synchronized (UNDEFINED_RESULT_CODES)
1763        {
1764          ResultCode rc = UNDEFINED_RESULT_CODES.get(intValue);
1765          if (rc == null)
1766          {
1767            if (name == null)
1768            {
1769              rc = new ResultCode(intValue);
1770            }
1771            else
1772            {
1773              rc = new ResultCode(name, intValue);
1774            }
1775    
1776            UNDEFINED_RESULT_CODES.put(intValue, rc);
1777          }
1778    
1779          return rc;
1780        }
1781      }
1782    
1783    
1784    
1785      /**
1786       * Retrieves an array of all result codes defined in the LDAP SDK.  This will
1787       * not include dynamically-generated values.
1788       *
1789       * @return  An array of all result codes defined in the LDAP SDK.
1790       */
1791      public static ResultCode[] values()
1792      {
1793        return new ResultCode[]
1794        {
1795          SUCCESS,
1796          OPERATIONS_ERROR,
1797          PROTOCOL_ERROR,
1798          TIME_LIMIT_EXCEEDED,
1799          SIZE_LIMIT_EXCEEDED,
1800          COMPARE_FALSE,
1801          COMPARE_TRUE,
1802          AUTH_METHOD_NOT_SUPPORTED,
1803          STRONG_AUTH_REQUIRED,
1804          REFERRAL,
1805          ADMIN_LIMIT_EXCEEDED,
1806          UNAVAILABLE_CRITICAL_EXTENSION,
1807          CONFIDENTIALITY_REQUIRED,
1808          SASL_BIND_IN_PROGRESS,
1809          NO_SUCH_ATTRIBUTE,
1810          UNDEFINED_ATTRIBUTE_TYPE,
1811          INAPPROPRIATE_MATCHING,
1812          CONSTRAINT_VIOLATION,
1813          ATTRIBUTE_OR_VALUE_EXISTS,
1814          INVALID_ATTRIBUTE_SYNTAX,
1815          NO_SUCH_OBJECT,
1816          ALIAS_PROBLEM,
1817          INVALID_DN_SYNTAX,
1818          ALIAS_DEREFERENCING_PROBLEM,
1819          INAPPROPRIATE_AUTHENTICATION,
1820          INVALID_CREDENTIALS,
1821          INSUFFICIENT_ACCESS_RIGHTS,
1822          BUSY,
1823          UNAVAILABLE,
1824          UNWILLING_TO_PERFORM,
1825          LOOP_DETECT,
1826          SORT_CONTROL_MISSING,
1827          OFFSET_RANGE_ERROR,
1828          NAMING_VIOLATION,
1829          OBJECT_CLASS_VIOLATION,
1830          NOT_ALLOWED_ON_NONLEAF,
1831          NOT_ALLOWED_ON_RDN,
1832          ENTRY_ALREADY_EXISTS,
1833          OBJECT_CLASS_MODS_PROHIBITED,
1834          AFFECTS_MULTIPLE_DSAS,
1835          VIRTUAL_LIST_VIEW_ERROR,
1836          OTHER,
1837          SERVER_DOWN,
1838          LOCAL_ERROR,
1839          ENCODING_ERROR,
1840          DECODING_ERROR,
1841          TIMEOUT,
1842          AUTH_UNKNOWN,
1843          FILTER_ERROR,
1844          USER_CANCELED,
1845          PARAM_ERROR,
1846          NO_MEMORY,
1847          CONNECT_ERROR,
1848          NOT_SUPPORTED,
1849          CONTROL_NOT_FOUND,
1850          NO_RESULTS_RETURNED,
1851          MORE_RESULTS_TO_RETURN,
1852          CLIENT_LOOP,
1853          REFERRAL_LIMIT_EXCEEDED,
1854          CANCELED,
1855          NO_SUCH_OPERATION,
1856          TOO_LATE,
1857          CANNOT_CANCEL,
1858          ASSERTION_FAILED,
1859          AUTHORIZATION_DENIED,
1860          E_SYNC_REFRESH_REQUIRED,
1861          NO_OPERATION,
1862          INTERACTIVE_TRANSACTION_ABORTED,
1863          DATABASE_LOCK_CONFLICT
1864        };
1865      }
1866    
1867    
1868    
1869      /**
1870       * Indicates whether this result code is one that should be used for
1871       * client-side errors rather than returned by the server.
1872       *
1873       * @return  {@code true} if this result code is a client-side result code, or
1874       *          {@code false} if it is one that may be returned by the server.
1875       */
1876      public boolean isClientSideResultCode()
1877      {
1878        return isClientSideResultCode(this);
1879      }
1880    
1881    
1882    
1883      /**
1884       * Indicates whether the provided result code is one that should be used for
1885       * client-side errors rather than returned by the server.
1886       *
1887       * @param  resultCode  The result code for which to make the determination.
1888       *
1889       * @return  {@code true} if the provided result code is a client-side result
1890       *          code, or {@code false} if it is one that may be returned by the
1891       *          server.
1892       */
1893      public static boolean isClientSideResultCode(final ResultCode resultCode)
1894      {
1895        switch (resultCode.intValue())
1896        {
1897          case SERVER_DOWN_INT_VALUE:
1898          case LOCAL_ERROR_INT_VALUE:
1899          case ENCODING_ERROR_INT_VALUE:
1900          case DECODING_ERROR_INT_VALUE:
1901          case TIMEOUT_INT_VALUE:
1902          case AUTH_UNKNOWN_INT_VALUE:
1903          case FILTER_ERROR_INT_VALUE:
1904          case USER_CANCELED_INT_VALUE:
1905          case PARAM_ERROR_INT_VALUE:
1906          case NO_MEMORY_INT_VALUE:
1907          case CONNECT_ERROR_INT_VALUE:
1908          case NOT_SUPPORTED_INT_VALUE:
1909          case CONTROL_NOT_FOUND_INT_VALUE:
1910          case NO_RESULTS_RETURNED_INT_VALUE:
1911          case MORE_RESULTS_TO_RETURN_INT_VALUE:
1912          case CLIENT_LOOP_INT_VALUE:
1913          case REFERRAL_LIMIT_EXCEEDED_INT_VALUE:
1914            return true;
1915          default:
1916            return false;
1917        }
1918      }
1919    
1920    
1921    
1922      /**
1923       * Indicates whether the connection on which this result code was received is
1924       * likely still usable.  Note that this is a best guess, and it may or may not
1925       * be correct.  It will attempt to be conservative so that a connection is
1926       * more likely to be classified as unusable when it may still be valid than to
1927       * be classified as usable when that is no longer the case.
1928       *
1929       * @return  {@code true} if it is likely that the connection on which this
1930       *          result code was received is still usable, or {@code false} if it
1931       *          may no longer be valid.
1932       */
1933      public boolean isConnectionUsable()
1934      {
1935        return isConnectionUsable(this);
1936      }
1937    
1938    
1939    
1940      /**
1941       * Indicates whether the connection on which the provided result code was
1942       * received is likely still usable.  Note that this is a best guess based on
1943       * the provided result code, and it may or may not be correct.  It will
1944       * attempt to be conservative so that a connection is more likely to be
1945       * classified as unusable when it may still be valid than to be classified
1946       * as usable when that is no longer the case.
1947       *
1948       * @param  resultCode  The result code for which to make the determination.
1949       *
1950       * @return  {@code true} if it is likely that the connection on which the
1951       *          provided result code was received is still usable, or
1952       *          {@code false} if it may no longer be valid.
1953       */
1954      public static boolean isConnectionUsable(final ResultCode resultCode)
1955      {
1956        switch (resultCode.intValue())
1957        {
1958          case OPERATIONS_ERROR_INT_VALUE:
1959          case PROTOCOL_ERROR_INT_VALUE:
1960          case BUSY_INT_VALUE:
1961          case UNAVAILABLE_INT_VALUE:
1962          case UNWILLING_TO_PERFORM_INT_VALUE:
1963          case OTHER_INT_VALUE:
1964          case SERVER_DOWN_INT_VALUE:
1965          case LOCAL_ERROR_INT_VALUE:
1966          case ENCODING_ERROR_INT_VALUE:
1967          case DECODING_ERROR_INT_VALUE:
1968          case TIMEOUT_INT_VALUE:
1969          case NO_MEMORY_INT_VALUE:
1970          case CONNECT_ERROR_INT_VALUE:
1971            return false;
1972          default:
1973            return true;
1974        }
1975      }
1976    
1977    
1978    
1979      /**
1980       * The hash code for this result code.
1981       *
1982       * @return  The hash code for this result code.
1983       */
1984      @Override()
1985      public int hashCode()
1986      {
1987        return intValue;
1988      }
1989    
1990    
1991    
1992      /**
1993       * Indicates whether the provided object is equal to this result code.
1994       *
1995       * @param  o  The object for which to make the determination.
1996       *
1997       * @return  {@code true} if the provided object is a result code that is equal
1998       *          to this result code, or {@code false} if not.
1999       */
2000      @Override()
2001      public boolean equals(final Object o)
2002      {
2003        if (o == null)
2004        {
2005          return false;
2006        }
2007        else if (o == this)
2008        {
2009          return true;
2010        }
2011        else if (o instanceof ResultCode)
2012        {
2013          return (intValue == ((ResultCode) o).intValue);
2014        }
2015        else
2016        {
2017          return false;
2018        }
2019      }
2020    
2021    
2022    
2023      /**
2024       * Retrieves a string representation of this result code.
2025       *
2026       * @return  A string representation of this result code.
2027       */
2028      @Override()
2029      public String toString()
2030      {
2031        return stringRepresentation;
2032      }
2033    }