001 /*
002 * Copyright 2007-2013 UnboundID Corp.
003 * All Rights Reserved.
004 */
005 /*
006 * Copyright (C) 2008-2013 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.util;
022
023
024
025 import static com.unboundid.util.Debug.*;
026 import static com.unboundid.util.StaticUtils.*;
027 import static com.unboundid.util.UtilityMessages.*;
028
029
030
031 /**
032 * This class provides a number of methods that can be used to enforce
033 * constraints on the behavior of SDK methods.
034 */
035 @ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE)
036 public final class Validator
037 {
038 /**
039 * Prevent this class from being instantiated.
040 */
041 private Validator()
042 {
043 // No implementation is required.
044 }
045
046
047
048 /**
049 * Ensures that the provided object is not {@code null}.
050 *
051 * @param o The object to examine.
052 *
053 * @throws LDAPSDKUsageException If the provided object is {@code null}.
054 */
055 public static void ensureNotNull(final Object o)
056 throws LDAPSDKUsageException
057 {
058 if (o == null)
059 {
060 final LDAPSDKUsageException e = new LDAPSDKUsageException(
061 ERR_VALIDATOR_NULL_CHECK_FAILURE.get(0,
062 getStackTrace(Thread.currentThread().getStackTrace())));
063 debugCodingError(e);
064 throw e;
065 }
066 }
067
068
069
070 /**
071 * Ensures that the provided object is not {@code null}.
072 *
073 * @param o The object to examine.
074 * @param message The message to include in the exception thrown if the
075 * provided object is {@code null}.
076 *
077 * @throws LDAPSDKUsageException If the provided object is {@code null}.
078 */
079 public static void ensureNotNullWithMessage(final Object o,
080 final String message)
081 throws LDAPSDKUsageException
082 {
083 if (o == null)
084 {
085 final LDAPSDKUsageException e = new LDAPSDKUsageException(
086 ERR_VALIDATOR_FAILURE_CUSTOM_MESSAGE.get(message,
087 getStackTrace(Thread.currentThread().getStackTrace())));
088 debugCodingError(e);
089 throw e;
090 }
091 }
092
093
094
095 /**
096 * Ensures that none of the provided objects is {@code null}.
097 *
098 * @param o1 The first object for which to make the determination.
099 * @param o2 The second object for which to make the determination.
100 *
101 * @throws LDAPSDKUsageException If any of the provided objects is
102 * {@code null}.
103 */
104 public static void ensureNotNull(final Object o1, final Object o2)
105 throws LDAPSDKUsageException
106 {
107 if ((o1 == null) || (o2 == null))
108 {
109 final int index;
110 if (o1 == null)
111 {
112 index = 0;
113 }
114 else
115 {
116 index = 1;
117 }
118
119 final LDAPSDKUsageException e = new LDAPSDKUsageException(
120 ERR_VALIDATOR_NULL_CHECK_FAILURE.get(index,
121 getStackTrace(Thread.currentThread().getStackTrace())));
122 debugCodingError(e);
123 throw e;
124 }
125 }
126
127
128
129 /**
130 * Ensures that none of the provided objects is {@code null}.
131 *
132 * @param o1 The first object for which to make the determination.
133 * @param o2 The second object for which to make the determination.
134 * @param o3 The third object for which to make the determination.
135 *
136 * @throws LDAPSDKUsageException If any of the provided objects is
137 * {@code null}.
138 */
139 public static void ensureNotNull(final Object o1, final Object o2,
140 final Object o3)
141 throws LDAPSDKUsageException
142 {
143 if ((o1 == null) || (o2 == null) || (o3 == null))
144 {
145 final int index;
146 if (o1 == null)
147 {
148 index = 0;
149 }
150 else if (o2 == null)
151 {
152 index = 1;
153 }
154 else
155 {
156 index = 2;
157 }
158
159 final LDAPSDKUsageException e = new LDAPSDKUsageException(
160 ERR_VALIDATOR_NULL_CHECK_FAILURE.get(index,
161 getStackTrace(Thread.currentThread().getStackTrace())));
162 debugCodingError(e);
163 throw e;
164 }
165 }
166
167
168
169 /**
170 * Ensures that none of the provided objects is {@code null}.
171 *
172 * @param o1 The first object for which to make the determination.
173 * @param o2 The second object for which to make the determination.
174 * @param o3 The third object for which to make the determination.
175 * @param o4 The fourth object for which to make the determination.
176 *
177 * @throws LDAPSDKUsageException If any of the provided objects is
178 * {@code null}.
179 */
180 public static void ensureNotNull(final Object o1, final Object o2,
181 final Object o3, final Object o4)
182 throws LDAPSDKUsageException
183 {
184 if ((o1 == null) || (o2 == null) || (o3 == null) || (o4 == null))
185 {
186 final int index;
187 if (o1 == null)
188 {
189 index = 0;
190 }
191 else if (o2 == null)
192 {
193 index = 1;
194 }
195 else if (o3 == null)
196 {
197 index = 2;
198 }
199 else
200 {
201 index = 3;
202 }
203
204 final LDAPSDKUsageException e = new LDAPSDKUsageException(
205 ERR_VALIDATOR_NULL_CHECK_FAILURE.get(index,
206 getStackTrace(Thread.currentThread().getStackTrace())));
207 debugCodingError(e);
208 throw e;
209 }
210 }
211
212
213
214 /**
215 * Ensures that none of the provided objects is {@code null}.
216 *
217 * @param o1 The first object for which to make the determination.
218 * @param o2 The second object for which to make the determination.
219 * @param o3 The third object for which to make the determination.
220 * @param o4 The fourth object for which to make the determination.
221 * @param o5 The fifth object for which to make the determination.
222 *
223 * @throws LDAPSDKUsageException If any of the provided objects is
224 * {@code null}.
225 */
226 public static void ensureNotNull(final Object o1, final Object o2,
227 final Object o3, final Object o4,
228 final Object o5)
229 throws LDAPSDKUsageException
230 {
231 if ((o1 == null) || (o2 == null) || (o3 == null) || (o4 == null) ||
232 (o5 == null))
233 {
234 final int index;
235 if (o1 == null)
236 {
237 index = 0;
238 }
239 else if (o2 == null)
240 {
241 index = 1;
242 }
243 else if (o3 == null)
244 {
245 index = 2;
246 }
247 else if (o4 == null)
248 {
249 index = 3;
250 }
251 else
252 {
253 index = 4;
254 }
255
256 final LDAPSDKUsageException e = new LDAPSDKUsageException(
257 ERR_VALIDATOR_NULL_CHECK_FAILURE.get(index,
258 getStackTrace(Thread.currentThread().getStackTrace())));
259 debugCodingError(e);
260 throw e;
261 }
262 }
263
264
265
266 /**
267 * Ensures that the provided condition is {@code true}.
268 *
269 * @param condition The condition to verify.
270 *
271 * @throws LDAPSDKUsageException If the provided condition is {@code false}.
272 */
273 public static void ensureTrue(final boolean condition)
274 throws LDAPSDKUsageException
275 {
276 if (! condition)
277 {
278 final LDAPSDKUsageException e = new LDAPSDKUsageException(
279 ERR_VALIDATOR_TRUE_CHECK_FAILURE.get(
280 getStackTrace(Thread.currentThread().getStackTrace())));
281 debugCodingError(e);
282 throw e;
283 }
284 }
285
286
287
288 /**
289 * Ensures that the provided condition is {@code true}.
290 *
291 * @param condition The condition to verify.
292 * @param message The message to include in the exception thrown if the
293 * provided object is {@code null}.
294 *
295 * @throws LDAPSDKUsageException If the provided condition is {@code false}.
296 */
297 public static void ensureTrue(final boolean condition, final String message)
298 throws LDAPSDKUsageException
299 {
300 if (! condition)
301 {
302 final LDAPSDKUsageException e = new LDAPSDKUsageException(
303 ERR_VALIDATOR_FAILURE_CUSTOM_MESSAGE.get(message,
304 getStackTrace(Thread.currentThread().getStackTrace())));
305 debugCodingError(e);
306 throw e;
307 }
308 }
309
310
311
312 /**
313 * Ensures that the provided condition is {@code false}.
314 *
315 * @param condition The condition to verify.
316 *
317 * @throws LDAPSDKUsageException If the provided condition is {@code true}.
318 */
319 public static void ensureFalse(final boolean condition)
320 throws LDAPSDKUsageException
321 {
322 if (condition)
323 {
324 final LDAPSDKUsageException e = new LDAPSDKUsageException(
325 ERR_VALIDATOR_FALSE_CHECK_FAILURE.get(
326 getStackTrace(Thread.currentThread().getStackTrace())));
327 debugCodingError(e);
328 throw e;
329 }
330 }
331
332
333
334 /**
335 * Ensures that the provided condition is {@code false}.
336 *
337 * @param condition The condition to verify.
338 * @param message The message to include in the exception thrown if the
339 * provided object is {@code null}.
340 *
341 * @throws LDAPSDKUsageException If the provided condition is {@code true}.
342 */
343 public static void ensureFalse(final boolean condition, final String message)
344 throws LDAPSDKUsageException
345 {
346 if (condition)
347 {
348 final LDAPSDKUsageException e = new LDAPSDKUsageException(
349 ERR_VALIDATOR_FAILURE_CUSTOM_MESSAGE.get(message,
350 getStackTrace(Thread.currentThread().getStackTrace())));
351 debugCodingError(e);
352 throw e;
353 }
354 }
355 }