001 /*
002 * Copyright 2009-2016 UnboundID Corp.
003 * All Rights Reserved.
004 */
005 /*
006 * Copyright (C) 2009-2016 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 com.unboundid.util.LDAPSDKException;
026 import com.unboundid.util.NotExtensible;
027 import com.unboundid.util.NotMutable;
028 import com.unboundid.util.StaticUtils;
029 import com.unboundid.util.ThreadSafety;
030 import com.unboundid.util.ThreadSafetyLevel;
031 import com.unboundid.util.Validator;
032
033
034
035 /**
036 * This class defines an exception that may be thrown if a problem occurs while
037 * trying to access an entry in an entry source (e.g., because the entry source
038 * is no longer available, because an entry could not be parsed, or because the
039 * next element returned was a search result reference rather than a search
040 * result entry).
041 */
042 @NotExtensible()
043 @NotMutable()
044 @ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE)
045 public class EntrySourceException
046 extends LDAPSDKException
047 {
048 /**
049 * The serial version UID for this serializable class.
050 */
051 private static final long serialVersionUID = -9221149707074845318L;
052
053
054
055 // Indicates whether it is possible to continue attempting to iterate through
056 // subsequent entries.
057 private final boolean mayContinueReading;
058
059
060
061 /**
062 * Creates a new entry source exception with the provided information.
063 *
064 * @param mayContinueReading Indicates whether it is possible to continue
065 * attempting to iterate through subsequent
066 * entries in the entry source.
067 * @param cause The underlying exception that triggered this
068 * exception. It must not be {@code null}.
069 */
070 public EntrySourceException(final boolean mayContinueReading,
071 final Throwable cause)
072 {
073 super(StaticUtils.getExceptionMessage(cause), cause);
074
075 Validator.ensureNotNull(cause);
076
077 this.mayContinueReading = mayContinueReading;
078 }
079
080
081
082 /**
083 * Creates a new entry source exception with the provided information.
084 *
085 * @param mayContinueReading Indicates whether it is possible to continue
086 * attempting to iterate through subsequent
087 * entries in the entry source.
088 * @param message A message explaining the problem that occurred.
089 * It must not be {@code null}.
090 * @param cause The underlying exception that triggered this
091 * exception. It must not be {@code null}.
092 */
093 public EntrySourceException(final boolean mayContinueReading,
094 final String message, final Throwable cause)
095 {
096 super(message, cause);
097
098 Validator.ensureNotNull(message, cause);
099
100 this.mayContinueReading = mayContinueReading;
101 }
102
103
104
105 /**
106 * Indicates whether it is possible to continue attempting to iterate through
107 * subsequent entries in the entry source.
108 *
109 * @return {@code true} if it is possible to continue attempting to read from
110 * the entry source, or {@code false} if it is not possible to
111 * continue.
112 */
113 public final boolean mayContinueReading()
114 {
115 return mayContinueReading;
116 }
117
118
119
120 /**
121 * {@inheritDoc}
122 */
123 @Override()
124 public void toString(final StringBuilder buffer)
125 {
126 buffer.append("EntrySourceException(message='");
127 buffer.append(getMessage());
128 buffer.append("', mayContinueReading=");
129 buffer.append(mayContinueReading);
130 buffer.append(", cause='");
131 buffer.append(StaticUtils.getExceptionMessage(getCause()));
132 buffer.append("')");
133 }
134 }