1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.apache.commons.pool2.impl;
18
19 import java.time.Duration;
20
21 import org.apache.commons.pool2.BaseObject;
22
23 /**
24 * Provides the implementation for the common attributes shared by the sub-classes. New instances of this class will be created using the defaults defined by
25 * the public constants.
26 * <p>
27 * This class is not thread-safe.
28 * </p>
29 *
30 * @param <T> Type of element pooled.
31 * @since 2.0
32 */
33 public abstract class BaseObjectPoolConfig<T> extends BaseObject implements Cloneable {
34
35 /**
36 * The default value for the {@code lifo} configuration attribute: {@value}.
37 *
38 * @see GenericObjectPool#getLifo()
39 * @see GenericKeyedObjectPool#getLifo()
40 */
41 public static final boolean DEFAULT_LIFO = true;
42
43 /**
44 * The default value for the {@code fairness} configuration attribute: {@value}.
45 *
46 * @see GenericObjectPool#getFairness()
47 * @see GenericKeyedObjectPool#getFairness()
48 */
49 public static final boolean DEFAULT_FAIRNESS = false;
50
51 /**
52 * The default value for the {@code maxWait} configuration attribute: {@value}.
53 *
54 * @see GenericObjectPool#getMaxWaitDuration()
55 * @see GenericKeyedObjectPool#getMaxWaitDuration()
56 * @deprecated Use {@link #DEFAULT_MAX_WAIT}.
57 */
58 @Deprecated
59 public static final long DEFAULT_MAX_WAIT_MILLIS = -1L;
60
61 /**
62 * The default value for the {@code maxWait} configuration attribute.
63 *
64 * @see GenericObjectPool#getMaxWaitDuration()
65 * @see GenericKeyedObjectPool#getMaxWaitDuration()
66 * @since 2.10.0
67 */
68 public static final Duration DEFAULT_MAX_WAIT = Duration.ofMillis(DEFAULT_MAX_WAIT_MILLIS);
69
70 /**
71 * The default value for the {@code minEvictableIdleDuration} configuration attribute: {@value}.
72 *
73 * @see GenericObjectPool#getMinEvictableIdleDuration()
74 * @see GenericKeyedObjectPool#getMinEvictableIdleDuration()
75 * @deprecated Use {@link #DEFAULT_MIN_EVICTABLE_IDLE_TIME}.
76 */
77 @Deprecated
78 public static final long DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS = 1000L * 60L * 30L;
79
80 /**
81 * The default value for the {@code minEvictableIdleDuration} configuration attribute.
82 *
83 * @see GenericObjectPool#getMinEvictableIdleDuration()
84 * @see GenericKeyedObjectPool#getMinEvictableIdleDuration()
85 * @since 2.11.0
86 */
87 public static final Duration DEFAULT_MIN_EVICTABLE_IDLE_DURATION = Duration.ofMillis(DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS);
88
89 /**
90 * The default value for the {@code minEvictableIdleDuration} configuration attribute.
91 *
92 * @see GenericObjectPool#getMinEvictableIdleDuration()
93 * @see GenericKeyedObjectPool#getMinEvictableIdleDuration()
94 * @since 2.10.0
95 * @deprecated Use {@link #DEFAULT_MIN_EVICTABLE_IDLE_DURATION}.
96 */
97 @Deprecated
98 public static final Duration DEFAULT_MIN_EVICTABLE_IDLE_TIME = Duration.ofMillis(DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS);
99
100 /**
101 * The default value for the {@code softMinEvictableIdleTime} configuration attribute: {@value}.
102 *
103 * @see GenericObjectPool#getSoftMinEvictableIdleDuration()
104 * @see GenericKeyedObjectPool#getSoftMinEvictableIdleDuration()
105 * @deprecated Use {@link #DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME}.
106 */
107 @Deprecated
108 public static final long DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS = -1;
109
110 /**
111 * The default value for the {@code softMinEvictableIdleTime} configuration attribute.
112 *
113 * @see GenericObjectPool#getSoftMinEvictableIdleDuration()
114 * @see GenericKeyedObjectPool#getSoftMinEvictableIdleDuration()
115 * @since 2.10.0
116 * @deprecated Use {@link #DEFAULT_SOFT_MIN_EVICTABLE_IDLE_DURATION}.
117 */
118 @Deprecated
119 public static final Duration DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME = Duration.ofMillis(DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS);
120
121 /**
122 * The default value for the {@code softMinEvictableIdleTime} configuration attribute.
123 *
124 * @see GenericObjectPool#getSoftMinEvictableIdleDuration()
125 * @see GenericKeyedObjectPool#getSoftMinEvictableIdleDuration()
126 * @since 2.11.0
127 */
128 public static final Duration DEFAULT_SOFT_MIN_EVICTABLE_IDLE_DURATION = Duration.ofMillis(DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS);
129
130 /**
131 * The default value for {@code evictorShutdownTimeout} configuration attribute: {@value}.
132 *
133 * @see GenericObjectPool#getEvictorShutdownTimeoutDuration()
134 * @see GenericKeyedObjectPool#getEvictorShutdownTimeoutDuration()
135 * @deprecated Use {@link #DEFAULT_EVICTOR_SHUTDOWN_TIMEOUT}.
136 */
137 @Deprecated
138 public static final long DEFAULT_EVICTOR_SHUTDOWN_TIMEOUT_MILLIS = 10L * 1000L;
139
140 /**
141 * The default value for {@code evictorShutdownTimeout} configuration attribute.
142 *
143 * @see GenericObjectPool#getEvictorShutdownTimeoutDuration()
144 * @see GenericKeyedObjectPool#getEvictorShutdownTimeoutDuration()
145 * @since 2.10.0
146 */
147 public static final Duration DEFAULT_EVICTOR_SHUTDOWN_TIMEOUT = Duration.ofMillis(DEFAULT_EVICTOR_SHUTDOWN_TIMEOUT_MILLIS);
148
149 /**
150 * The default value for the {@code numTestsPerEvictionRun} configuration attribute: {@value}.
151 *
152 * @see GenericObjectPool#getNumTestsPerEvictionRun()
153 * @see GenericKeyedObjectPool#getNumTestsPerEvictionRun()
154 */
155 public static final int DEFAULT_NUM_TESTS_PER_EVICTION_RUN = 3;
156
157 /**
158 * The default value for the {@code testOnCreate} configuration attribute: {@value}.
159 *
160 * @see GenericObjectPool#getTestOnCreate()
161 * @see GenericKeyedObjectPool#getTestOnCreate()
162 * @since 2.2
163 */
164 public static final boolean DEFAULT_TEST_ON_CREATE = false;
165
166 /**
167 * The default value for the {@code testOnBorrow} configuration attribute: {@value}.
168 *
169 * @see GenericObjectPool#getTestOnBorrow()
170 * @see GenericKeyedObjectPool#getTestOnBorrow()
171 */
172 public static final boolean DEFAULT_TEST_ON_BORROW = false;
173
174 /**
175 * The default value for the {@code testOnReturn} configuration attribute: {@value}.
176 *
177 * @see GenericObjectPool#getTestOnReturn()
178 * @see GenericKeyedObjectPool#getTestOnReturn()
179 */
180 public static final boolean DEFAULT_TEST_ON_RETURN = false;
181
182 /**
183 * The default value for the {@code testWhileIdle} configuration attribute: {@value}.
184 *
185 * @see GenericObjectPool#getTestWhileIdle()
186 * @see GenericKeyedObjectPool#getTestWhileIdle()
187 */
188 public static final boolean DEFAULT_TEST_WHILE_IDLE = false;
189
190 /**
191 * The default value for the {@code timeBetweenEvictionRuns} configuration attribute: {@value}.
192 *
193 * @see GenericObjectPool#getDurationBetweenEvictionRuns()
194 * @see GenericKeyedObjectPool#getDurationBetweenEvictionRuns()
195 * @deprecated Use {@link #DEFAULT_TIME_BETWEEN_EVICTION_RUNS}.
196 */
197 @Deprecated
198 public static final long DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS = -1L;
199
200 /**
201 * The default value for the {@code timeBetweenEvictionRuns} configuration attribute.
202 *
203 * @see GenericObjectPool#getDurationBetweenEvictionRuns()
204 * @see GenericKeyedObjectPool#getDurationBetweenEvictionRuns()
205 * @since 2.12.0
206 */
207 public static final Duration DEFAULT_DURATION_BETWEEN_EVICTION_RUNS = Duration.ofMillis(DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS);
208
209 /**
210 * The default value for the {@code timeBetweenEvictionRuns} configuration attribute.
211 *
212 * @see GenericObjectPool#getDurationBetweenEvictionRuns()
213 * @see GenericKeyedObjectPool#getDurationBetweenEvictionRuns()
214 * @deprecated Use {@link #DEFAULT_DURATION_BETWEEN_EVICTION_RUNS}.
215 */
216 @Deprecated
217 public static final Duration DEFAULT_TIME_BETWEEN_EVICTION_RUNS = Duration.ofMillis(DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS);
218
219 /**
220 * The default value for the {@code blockWhenExhausted} configuration attribute: {@value}.
221 *
222 * @see GenericObjectPool#getBlockWhenExhausted()
223 * @see GenericKeyedObjectPool#getBlockWhenExhausted()
224 */
225 public static final boolean DEFAULT_BLOCK_WHEN_EXHAUSTED = true;
226
227 /**
228 * The default value for enabling JMX for pools created with a configuration instance: {@value}.
229 */
230 public static final boolean DEFAULT_JMX_ENABLE = true;
231
232 /**
233 * The default value for the prefix used to name JMX enabled pools created with a configuration instance: {@value}.
234 *
235 * @see GenericObjectPool#getJmxName()
236 * @see GenericKeyedObjectPool#getJmxName()
237 */
238 public static final String DEFAULT_JMX_NAME_PREFIX = "pool";
239
240 /**
241 * The default value for the base name to use to name JMX enabled pools created with a configuration instance. The default is {@code null} which means the
242 * pool will provide the base name to use.
243 *
244 * @see GenericObjectPool#getJmxName()
245 * @see GenericKeyedObjectPool#getJmxName()
246 */
247 public static final String DEFAULT_JMX_NAME_BASE = null;
248
249 /**
250 * The default value for the {@code evictionPolicyClassName} configuration attribute.
251 *
252 * @see GenericObjectPool#getEvictionPolicyClassName()
253 * @see GenericKeyedObjectPool#getEvictionPolicyClassName()
254 */
255 public static final String DEFAULT_EVICTION_POLICY_CLASS_NAME = DefaultEvictionPolicy.class.getName();
256
257 private boolean lifo = DEFAULT_LIFO;
258
259 private boolean fairness = DEFAULT_FAIRNESS;
260
261 private Duration maxWaitDuration = DEFAULT_MAX_WAIT;
262
263 private Duration minEvictableIdleDuration = DEFAULT_MIN_EVICTABLE_IDLE_TIME;
264
265 private Duration evictorShutdownTimeoutDuration = DEFAULT_EVICTOR_SHUTDOWN_TIMEOUT;
266
267 private Duration softMinEvictableIdleDuration = DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME;
268
269 private int numTestsPerEvictionRun = DEFAULT_NUM_TESTS_PER_EVICTION_RUN;
270
271 private EvictionPolicy<T> evictionPolicy; // Only 2.6.0 applications set this
272
273 private String evictionPolicyClassName = DEFAULT_EVICTION_POLICY_CLASS_NAME;
274
275 private boolean testOnCreate = DEFAULT_TEST_ON_CREATE;
276
277 private boolean testOnBorrow = DEFAULT_TEST_ON_BORROW;
278
279 private boolean testOnReturn = DEFAULT_TEST_ON_RETURN;
280
281 private boolean testWhileIdle = DEFAULT_TEST_WHILE_IDLE;
282
283 private Duration durationBetweenEvictionRuns = DEFAULT_DURATION_BETWEEN_EVICTION_RUNS;
284
285 private boolean blockWhenExhausted = DEFAULT_BLOCK_WHEN_EXHAUSTED;
286
287 private boolean jmxEnabled = DEFAULT_JMX_ENABLE;
288
289 // TODO Consider changing this to a single property for 3.x
290 private String jmxNamePrefix = DEFAULT_JMX_NAME_PREFIX;
291
292 private String jmxNameBase = DEFAULT_JMX_NAME_BASE;
293
294 /**
295 * Constructs a new instance.
296 */
297 public BaseObjectPoolConfig() {
298 // empty
299 }
300
301 /**
302 * Gets the value for the {@code blockWhenExhausted} configuration attribute for pools created with this configuration instance.
303 *
304 * @return The current setting of {@code blockWhenExhausted} for this configuration instance
305 * @see GenericObjectPool#getBlockWhenExhausted()
306 * @see GenericKeyedObjectPool#getBlockWhenExhausted()
307 */
308 public boolean getBlockWhenExhausted() {
309 return blockWhenExhausted;
310 }
311
312 /**
313 * Gets the value for the {@code timeBetweenEvictionRuns} configuration attribute for pools created with this configuration instance.
314 *
315 * @return The current setting of {@code timeBetweenEvictionRuns} for this configuration instance
316 * @see GenericObjectPool#getDurationBetweenEvictionRuns()
317 * @see GenericKeyedObjectPool#getDurationBetweenEvictionRuns()
318 * @since 2.11.0
319 */
320 public Duration getDurationBetweenEvictionRuns() {
321 return durationBetweenEvictionRuns;
322 }
323
324 /**
325 * Gets the value for the {@code evictionPolicyClass} configuration attribute for pools created with this configuration instance.
326 *
327 * @return The current setting of {@code evictionPolicyClass} for this configuration instance
328 * @see GenericObjectPool#getEvictionPolicy()
329 * @see GenericKeyedObjectPool#getEvictionPolicy()
330 * @since 2.6.0
331 */
332 public EvictionPolicy<T> getEvictionPolicy() {
333 return evictionPolicy;
334 }
335
336 /**
337 * Gets the value for the {@code evictionPolicyClassName} configuration attribute for pools created with this configuration instance.
338 *
339 * @return The current setting of {@code evictionPolicyClassName} for this configuration instance
340 * @see GenericObjectPool#getEvictionPolicyClassName()
341 * @see GenericKeyedObjectPool#getEvictionPolicyClassName()
342 */
343 public String getEvictionPolicyClassName() {
344 return evictionPolicyClassName;
345 }
346
347 /**
348 * Gets the value for the {@code evictorShutdownTimeout} configuration attribute for pools created with this configuration instance.
349 *
350 * @return The current setting of {@code evictorShutdownTimeout} for this configuration instance
351 * @see GenericObjectPool#getEvictorShutdownTimeoutDuration()
352 * @see GenericKeyedObjectPool#getEvictorShutdownTimeoutDuration()
353 * @since 2.10.0
354 * @deprecated Use {@link #getEvictorShutdownTimeoutDuration()}.
355 */
356 @Deprecated
357 public Duration getEvictorShutdownTimeout() {
358 return evictorShutdownTimeoutDuration;
359 }
360
361 /**
362 * Gets the value for the {@code evictorShutdownTimeout} configuration attribute for pools created with this configuration instance.
363 *
364 * @return The current setting of {@code evictorShutdownTimeout} for this configuration instance
365 * @see GenericObjectPool#getEvictorShutdownTimeoutDuration()
366 * @see GenericKeyedObjectPool#getEvictorShutdownTimeoutDuration()
367 * @since 2.11.0
368 */
369 public Duration getEvictorShutdownTimeoutDuration() {
370 return evictorShutdownTimeoutDuration;
371 }
372
373 /**
374 * Gets the value for the {@code evictorShutdownTimeout} configuration attribute for pools created with this configuration instance.
375 *
376 * @return The current setting of {@code evictorShutdownTimeout} for this configuration instance
377 * @see GenericObjectPool#getEvictorShutdownTimeoutDuration()
378 * @see GenericKeyedObjectPool#getEvictorShutdownTimeoutDuration()
379 * @deprecated Use {@link #getEvictorShutdownTimeout()}.
380 */
381 @Deprecated
382 public long getEvictorShutdownTimeoutMillis() {
383 return evictorShutdownTimeoutDuration.toMillis();
384 }
385
386 /**
387 * Gets the value for the {@code fairness} configuration attribute for pools created with this configuration instance.
388 *
389 * @return The current setting of {@code fairness} for this configuration instance
390 * @see GenericObjectPool#getFairness()
391 * @see GenericKeyedObjectPool#getFairness()
392 */
393 public boolean getFairness() {
394 return fairness;
395 }
396
397 /**
398 * Gets the value of the flag that determines if JMX will be enabled for pools created with this configuration instance.
399 *
400 * @return The current setting of {@code jmxEnabled} for this configuration instance
401 */
402 public boolean getJmxEnabled() {
403 return jmxEnabled;
404 }
405
406 /**
407 * Gets the value of the JMX name base that will be used as part of the name assigned to JMX enabled pools created with this configuration instance. A value
408 * of {@code null} means that the pool will define the JMX name base.
409 *
410 * @return The current setting of {@code jmxNameBase} for this configuration instance
411 */
412 public String getJmxNameBase() {
413 return jmxNameBase;
414 }
415
416 /**
417 * Gets the value of the JMX name prefix that will be used as part of the name assigned to JMX enabled pools created with this configuration instance.
418 *
419 * @return The current setting of {@code jmxNamePrefix} for this configuration instance
420 */
421 public String getJmxNamePrefix() {
422 return jmxNamePrefix;
423 }
424
425 /**
426 * Gets the value for the {@code lifo} configuration attribute for pools created with this configuration instance.
427 *
428 * @return The current setting of {@code lifo} for this configuration instance
429 * @see GenericObjectPool#getLifo()
430 * @see GenericKeyedObjectPool#getLifo()
431 */
432 public boolean getLifo() {
433 return lifo;
434 }
435
436 /**
437 * Gets the value for the {@code maxWait} configuration attribute for pools created with this configuration instance.
438 *
439 * @return The current setting of {@code maxWait} for this configuration instance
440 * @see GenericObjectPool#getMaxWaitDuration()
441 * @see GenericKeyedObjectPool#getMaxWaitDuration()
442 * @since 2.11.0
443 */
444 public Duration getMaxWaitDuration() {
445 return maxWaitDuration;
446 }
447
448 /**
449 * Gets the value for the {@code maxWait} configuration attribute for pools created with this configuration instance.
450 *
451 * @return The current setting of {@code maxWait} for this configuration instance
452 * @see GenericObjectPool#getMaxWaitDuration()
453 * @see GenericKeyedObjectPool#getMaxWaitDuration()
454 * @deprecated Use {@link #getMaxWaitDuration()}.
455 */
456 @Deprecated
457 public long getMaxWaitMillis() {
458 return maxWaitDuration.toMillis();
459 }
460
461 /**
462 * Gets the value for the {@code minEvictableIdleTime} configuration attribute for pools created with this configuration instance.
463 *
464 * @return The current setting of {@code minEvictableIdleTime} for this configuration instance
465 * @see GenericObjectPool#getMinEvictableIdleDuration()
466 * @see GenericKeyedObjectPool#getMinEvictableIdleDuration()
467 * @since 2.11.0
468 */
469 public Duration getMinEvictableIdleDuration() {
470 return minEvictableIdleDuration;
471 }
472
473 /**
474 * Gets the value for the {@code minEvictableIdleTime} configuration attribute for pools created with this configuration instance.
475 *
476 * @return The current setting of {@code minEvictableIdleTime} for this configuration instance
477 * @see GenericObjectPool#getMinEvictableIdleDuration()
478 * @see GenericKeyedObjectPool#getMinEvictableIdleDuration()
479 * @since 2.10.0
480 * @deprecated Use {@link #getMinEvictableIdleDuration()}.
481 */
482 @Deprecated
483 public Duration getMinEvictableIdleTime() {
484 return minEvictableIdleDuration;
485 }
486
487 /**
488 * Gets the value for the {@code minEvictableIdleTime} configuration attribute for pools created with this configuration instance.
489 *
490 * @return The current setting of {@code minEvictableIdleTime} for this configuration instance
491 * @see GenericObjectPool#getMinEvictableIdleDuration()
492 * @see GenericKeyedObjectPool#getMinEvictableIdleDuration()
493 * @deprecated Use {@link #getMinEvictableIdleTime()}.
494 */
495 @Deprecated
496 public long getMinEvictableIdleTimeMillis() {
497 return minEvictableIdleDuration.toMillis();
498 }
499
500 /**
501 * Gets the value for the {@code numTestsPerEvictionRun} configuration attribute for pools created with this configuration instance.
502 *
503 * @return The current setting of {@code numTestsPerEvictionRun} for this configuration instance
504 * @see GenericObjectPool#getNumTestsPerEvictionRun()
505 * @see GenericKeyedObjectPool#getNumTestsPerEvictionRun()
506 */
507 public int getNumTestsPerEvictionRun() {
508 return numTestsPerEvictionRun;
509 }
510
511 /**
512 * Gets the value for the {@code softMinEvictableIdleTime} configuration attribute for pools created with this configuration instance.
513 *
514 * @return The current setting of {@code softMinEvictableIdleTime} for this configuration instance
515 * @see GenericObjectPool#getSoftMinEvictableIdleDuration()
516 * @see GenericKeyedObjectPool#getSoftMinEvictableIdleDuration()
517 * @since 2.11.0
518 */
519 public Duration getSoftMinEvictableIdleDuration() {
520 return softMinEvictableIdleDuration;
521 }
522
523 /**
524 * Gets the value for the {@code softMinEvictableIdleTime} configuration attribute for pools created with this configuration instance.
525 *
526 * @return The current setting of {@code softMinEvictableIdleTime} for this configuration instance
527 * @see GenericObjectPool#getSoftMinEvictableIdleDuration()
528 * @see GenericKeyedObjectPool#getSoftMinEvictableIdleDuration()
529 * @since 2.10.0
530 * @deprecated Use {@link #getSoftMinEvictableIdleDuration()}.
531 */
532 @Deprecated
533 public Duration getSoftMinEvictableIdleTime() {
534 return softMinEvictableIdleDuration;
535 }
536
537 /**
538 * Gets the value for the {@code softMinEvictableIdleTime} configuration attribute for pools created with this configuration instance.
539 *
540 * @return The current setting of {@code softMinEvictableIdleTime} for this configuration instance
541 * @see GenericObjectPool#getSoftMinEvictableIdleDuration()
542 * @see GenericKeyedObjectPool#getSoftMinEvictableIdleDuration()
543 * @deprecated Use {@link #getSoftMinEvictableIdleDuration()}.
544 */
545 @Deprecated
546 public long getSoftMinEvictableIdleTimeMillis() {
547 return softMinEvictableIdleDuration.toMillis();
548 }
549
550 /**
551 * Gets the value for the {@code testOnBorrow} configuration attribute for pools created with this configuration instance.
552 *
553 * @return The current setting of {@code testOnBorrow} for this configuration instance
554 * @see GenericObjectPool#getTestOnBorrow()
555 * @see GenericKeyedObjectPool#getTestOnBorrow()
556 */
557 public boolean getTestOnBorrow() {
558 return testOnBorrow;
559 }
560
561 /**
562 * Gets the value for the {@code testOnCreate} configuration attribute for pools created with this configuration instance.
563 *
564 * @return The current setting of {@code testOnCreate} for this configuration instance
565 * @see GenericObjectPool#getTestOnCreate()
566 * @see GenericKeyedObjectPool#getTestOnCreate()
567 * @since 2.2
568 */
569 public boolean getTestOnCreate() {
570 return testOnCreate;
571 }
572
573 /**
574 * Gets the value for the {@code testOnReturn} configuration attribute for pools created with this configuration instance.
575 *
576 * @return The current setting of {@code testOnReturn} for this configuration instance
577 * @see GenericObjectPool#getTestOnReturn()
578 * @see GenericKeyedObjectPool#getTestOnReturn()
579 */
580 public boolean getTestOnReturn() {
581 return testOnReturn;
582 }
583
584 /**
585 * Gets the value for the {@code testWhileIdle} configuration attribute for pools created with this configuration instance.
586 *
587 * @return The current setting of {@code testWhileIdle} for this configuration instance
588 * @see GenericObjectPool#getTestWhileIdle()
589 * @see GenericKeyedObjectPool#getTestWhileIdle()
590 */
591 public boolean getTestWhileIdle() {
592 return testWhileIdle;
593 }
594
595 /**
596 * Gets the value for the {@code timeBetweenEvictionRuns} configuration attribute for pools created with this configuration instance.
597 *
598 * @return The current setting of {@code timeBetweenEvictionRuns} for this configuration instance
599 * @see GenericObjectPool#getDurationBetweenEvictionRuns()
600 * @see GenericKeyedObjectPool#getDurationBetweenEvictionRuns()
601 * @since 2.10.0
602 * @deprecated Use {@link #getDurationBetweenEvictionRuns()}.
603 */
604 @Deprecated
605 public Duration getTimeBetweenEvictionRuns() {
606 return durationBetweenEvictionRuns;
607 }
608
609 /**
610 * Gets the value for the {@code timeBetweenEvictionRuns} configuration attribute for pools created with this configuration instance.
611 *
612 * @return The current setting of {@code timeBetweenEvictionRuns} for this configuration instance
613 * @see GenericObjectPool#getDurationBetweenEvictionRuns()
614 * @see GenericKeyedObjectPool#getDurationBetweenEvictionRuns()
615 * @deprecated Use {@link #getDurationBetweenEvictionRuns()}.
616 */
617 @Deprecated
618 public long getTimeBetweenEvictionRunsMillis() {
619 return durationBetweenEvictionRuns.toMillis();
620 }
621
622 /**
623 * Sets the value for the {@code blockWhenExhausted} configuration attribute for pools created with this configuration instance.
624 *
625 * @param blockWhenExhausted The new setting of {@code blockWhenExhausted} for this configuration instance
626 * @see GenericObjectPool#getBlockWhenExhausted()
627 * @see GenericKeyedObjectPool#getBlockWhenExhausted()
628 */
629 public void setBlockWhenExhausted(final boolean blockWhenExhausted) {
630 this.blockWhenExhausted = blockWhenExhausted;
631 }
632
633 /**
634 * Sets the value for the {@code evictionPolicyClass} configuration attribute for pools created with this configuration instance.
635 *
636 * @param evictionPolicy The new setting of {@code evictionPolicyClass} for this configuration instance
637 * @see GenericObjectPool#getEvictionPolicy()
638 * @see GenericKeyedObjectPool#getEvictionPolicy()
639 * @since 2.6.0
640 */
641 public void setEvictionPolicy(final EvictionPolicy<T> evictionPolicy) {
642 this.evictionPolicy = evictionPolicy;
643 }
644
645 /**
646 * Sets the value for the {@code evictionPolicyClassName} configuration attribute for pools created with this configuration instance.
647 *
648 * @param evictionPolicyClassName The new setting of {@code evictionPolicyClassName} for this configuration instance
649 * @see GenericObjectPool#getEvictionPolicyClassName()
650 * @see GenericKeyedObjectPool#getEvictionPolicyClassName()
651 */
652 public void setEvictionPolicyClassName(final String evictionPolicyClassName) {
653 this.evictionPolicyClassName = evictionPolicyClassName;
654 }
655
656 /**
657 * Sets the value for the {@code evictorShutdownTimeout} configuration attribute for pools created with this configuration instance.
658 *
659 * @param evictorShutdownTimeoutDuration The new setting of {@code evictorShutdownTimeout} for this configuration instance
660 * @see GenericObjectPool#getEvictorShutdownTimeoutDuration()
661 * @see GenericKeyedObjectPool#getEvictorShutdownTimeoutDuration()
662 * @since 2.11.0
663 */
664 public void setEvictorShutdownTimeout(final Duration evictorShutdownTimeoutDuration) {
665 this.evictorShutdownTimeoutDuration = PoolImplUtils.nonNull(evictorShutdownTimeoutDuration, DEFAULT_EVICTOR_SHUTDOWN_TIMEOUT);
666 }
667
668 /**
669 * Sets the value for the {@code evictorShutdownTimeout} configuration attribute for pools created with this configuration instance.
670 *
671 * @param evictorShutdownTimeout The new setting of {@code evictorShutdownTimeout} for this configuration instance
672 * @see GenericObjectPool#getEvictorShutdownTimeoutDuration()
673 * @see GenericKeyedObjectPool#getEvictorShutdownTimeoutDuration()
674 * @since 2.10.0
675 * @deprecated Use {@link #setEvictorShutdownTimeout(Duration)}.
676 */
677 @Deprecated
678 public void setEvictorShutdownTimeoutMillis(final Duration evictorShutdownTimeout) {
679 setEvictorShutdownTimeout(evictorShutdownTimeout);
680 }
681
682 /**
683 * Sets the value for the {@code evictorShutdownTimeout} configuration attribute for pools created with this configuration instance.
684 *
685 * @param evictorShutdownTimeoutMillis The new setting of {@code evictorShutdownTimeout} for this configuration instance
686 * @see GenericObjectPool#getEvictorShutdownTimeoutDuration()
687 * @see GenericKeyedObjectPool#getEvictorShutdownTimeoutDuration()
688 * @deprecated Use {@link #setEvictorShutdownTimeout(Duration)}.
689 */
690 @Deprecated
691 public void setEvictorShutdownTimeoutMillis(final long evictorShutdownTimeoutMillis) {
692 setEvictorShutdownTimeout(Duration.ofMillis(evictorShutdownTimeoutMillis));
693 }
694
695 /**
696 * Sets the value for the {@code fairness} configuration attribute for pools created with this configuration instance.
697 *
698 * @param fairness The new setting of {@code fairness} for this configuration instance
699 * @see GenericObjectPool#getFairness()
700 * @see GenericKeyedObjectPool#getFairness()
701 */
702 public void setFairness(final boolean fairness) {
703 this.fairness = fairness;
704 }
705
706 /**
707 * Sets the value of the flag that determines if JMX will be enabled for pools created with this configuration instance.
708 *
709 * @param jmxEnabled The new setting of {@code jmxEnabled} for this configuration instance
710 */
711 public void setJmxEnabled(final boolean jmxEnabled) {
712 this.jmxEnabled = jmxEnabled;
713 }
714
715 /**
716 * Sets the value of the JMX name base that will be used as part of the name assigned to JMX enabled pools created with this configuration instance. A value
717 * of {@code null} means that the pool will define the JMX name base.
718 *
719 * @param jmxNameBase The new setting of {@code jmxNameBase} for this configuration instance
720 */
721 public void setJmxNameBase(final String jmxNameBase) {
722 this.jmxNameBase = jmxNameBase;
723 }
724
725 /**
726 * Sets the value of the JMX name prefix that will be used as part of the name assigned to JMX enabled pools created with this configuration instance.
727 *
728 * @param jmxNamePrefix The new setting of {@code jmxNamePrefix} for this configuration instance
729 */
730 public void setJmxNamePrefix(final String jmxNamePrefix) {
731 this.jmxNamePrefix = jmxNamePrefix;
732 }
733
734 /**
735 * Sets the value for the {@code lifo} configuration attribute for pools created with this configuration instance.
736 *
737 * @param lifo The new setting of {@code lifo} for this configuration instance
738 * @see GenericObjectPool#getLifo()
739 * @see GenericKeyedObjectPool#getLifo()
740 */
741 public void setLifo(final boolean lifo) {
742 this.lifo = lifo;
743 }
744
745 /**
746 * Sets the value for the {@code maxWait} configuration attribute for pools created with this configuration instance.
747 *
748 * @param maxWaitDuration The new setting of {@code maxWaitDuration} for this configuration instance
749 * @see GenericObjectPool#getMaxWaitDuration()
750 * @see GenericKeyedObjectPool#getMaxWaitDuration()
751 * @since 2.11.0
752 */
753 public void setMaxWait(final Duration maxWaitDuration) {
754 this.maxWaitDuration = PoolImplUtils.nonNull(maxWaitDuration, DEFAULT_MAX_WAIT);
755 }
756
757 /**
758 * Sets the value for the {@code maxWait} configuration attribute for pools created with this configuration instance.
759 *
760 * @param maxWaitMillis The new setting of {@code maxWaitMillis} for this configuration instance
761 * @see GenericObjectPool#getMaxWaitDuration()
762 * @see GenericKeyedObjectPool#getMaxWaitDuration()
763 * @deprecated Use {@link #setMaxWait(Duration)}.
764 */
765 @Deprecated
766 public void setMaxWaitMillis(final long maxWaitMillis) {
767 setMaxWait(Duration.ofMillis(maxWaitMillis));
768 }
769
770 /**
771 * Sets the value for the {@code minEvictableIdleTime} configuration attribute for pools created with this configuration instance.
772 *
773 * @param minEvictableIdleTime The new setting of {@code minEvictableIdleTime} for this configuration instance
774 * @see GenericObjectPool#getMinEvictableIdleDuration()
775 * @see GenericKeyedObjectPool#getMinEvictableIdleDuration()
776 * @since 2.12.0
777 */
778 public void setMinEvictableIdleDuration(final Duration minEvictableIdleTime) {
779 this.minEvictableIdleDuration = PoolImplUtils.nonNull(minEvictableIdleTime, DEFAULT_MIN_EVICTABLE_IDLE_TIME);
780 }
781
782 /**
783 * Sets the value for the {@code minEvictableIdleTime} configuration attribute for pools created with this configuration instance.
784 *
785 * @param minEvictableIdleTime The new setting of {@code minEvictableIdleTime} for this configuration instance
786 * @see GenericObjectPool#getMinEvictableIdleDuration()
787 * @see GenericKeyedObjectPool#getMinEvictableIdleDuration()
788 * @since 2.10.0
789 * @deprecated Use {@link #setMinEvictableIdleDuration(Duration)}.
790 */
791 @Deprecated
792 public void setMinEvictableIdleTime(final Duration minEvictableIdleTime) {
793 this.minEvictableIdleDuration = PoolImplUtils.nonNull(minEvictableIdleTime, DEFAULT_MIN_EVICTABLE_IDLE_TIME);
794 }
795
796 /**
797 * Sets the value for the {@code minEvictableIdleTime} configuration attribute for pools created with this configuration instance.
798 *
799 * @param minEvictableIdleTimeMillis The new setting of {@code minEvictableIdleTime} for this configuration instance
800 * @see GenericObjectPool#getMinEvictableIdleDuration()
801 * @see GenericKeyedObjectPool#getMinEvictableIdleDuration()
802 * @deprecated Use {@link #setMinEvictableIdleDuration(Duration)}.
803 */
804 @Deprecated
805 public void setMinEvictableIdleTimeMillis(final long minEvictableIdleTimeMillis) {
806 this.minEvictableIdleDuration = Duration.ofMillis(minEvictableIdleTimeMillis);
807 }
808
809 /**
810 * Sets the value for the {@code numTestsPerEvictionRun} configuration attribute for pools created with this configuration instance.
811 *
812 * @param numTestsPerEvictionRun The new setting of {@code numTestsPerEvictionRun} for this configuration instance
813 * @see GenericObjectPool#getNumTestsPerEvictionRun()
814 * @see GenericKeyedObjectPool#getNumTestsPerEvictionRun()
815 */
816 public void setNumTestsPerEvictionRun(final int numTestsPerEvictionRun) {
817 this.numTestsPerEvictionRun = numTestsPerEvictionRun;
818 }
819
820 /**
821 * Sets the value for the {@code softMinEvictableIdleTime} configuration attribute for pools created with this configuration instance.
822 *
823 * @param softMinEvictableIdleTime The new setting of {@code softMinEvictableIdleTime} for this configuration instance
824 * @see GenericObjectPool#getSoftMinEvictableIdleDuration()
825 * @see GenericKeyedObjectPool#getSoftMinEvictableIdleDuration()
826 * @since 2.12.0
827 */
828 public void setSoftMinEvictableIdleDuration(final Duration softMinEvictableIdleTime) {
829 this.softMinEvictableIdleDuration = PoolImplUtils.nonNull(softMinEvictableIdleTime, DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME);
830 }
831
832 /**
833 * Sets the value for the {@code softMinEvictableIdleTime} configuration attribute for pools created with this configuration instance.
834 *
835 * @param softMinEvictableIdleTime The new setting of {@code softMinEvictableIdleTime} for this configuration instance
836 * @see GenericObjectPool#getSoftMinEvictableIdleDuration()
837 * @see GenericKeyedObjectPool#getSoftMinEvictableIdleDuration()
838 * @since 2.10.0
839 * @deprecated Use {@link #setSoftMinEvictableIdleDuration(Duration)}.
840 */
841 @Deprecated
842 public void setSoftMinEvictableIdleTime(final Duration softMinEvictableIdleTime) {
843 this.softMinEvictableIdleDuration = PoolImplUtils.nonNull(softMinEvictableIdleTime, DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME);
844 }
845
846 /**
847 * Sets the value for the {@code softMinEvictableIdleTime} configuration attribute for pools created with this configuration instance.
848 *
849 * @param softMinEvictableIdleTimeMillis The new setting of {@code softMinEvictableIdleTime} for this configuration instance
850 * @see GenericObjectPool#getSoftMinEvictableIdleDuration()
851 * @see GenericKeyedObjectPool#getSoftMinEvictableIdleDuration()
852 * @deprecated Use {@link #setSoftMinEvictableIdleDuration(Duration)}.
853 */
854 @Deprecated
855 public void setSoftMinEvictableIdleTimeMillis(final long softMinEvictableIdleTimeMillis) {
856 setSoftMinEvictableIdleTime(Duration.ofMillis(softMinEvictableIdleTimeMillis));
857 }
858
859 /**
860 * Sets the value for the {@code testOnBorrow} configuration attribute for pools created with this configuration instance.
861 *
862 * @param testOnBorrow The new setting of {@code testOnBorrow} for this configuration instance
863 * @see GenericObjectPool#getTestOnBorrow()
864 * @see GenericKeyedObjectPool#getTestOnBorrow()
865 */
866 public void setTestOnBorrow(final boolean testOnBorrow) {
867 this.testOnBorrow = testOnBorrow;
868 }
869
870 /**
871 * Sets the value for the {@code testOnCreate} configuration attribute for pools created with this configuration instance.
872 *
873 * @param testOnCreate The new setting of {@code testOnCreate} for this configuration instance
874 * @see GenericObjectPool#getTestOnCreate()
875 * @see GenericKeyedObjectPool#getTestOnCreate()
876 * @since 2.2
877 */
878 public void setTestOnCreate(final boolean testOnCreate) {
879 this.testOnCreate = testOnCreate;
880 }
881
882 /**
883 * Sets the value for the {@code testOnReturn} configuration attribute for pools created with this configuration instance.
884 *
885 * @param testOnReturn The new setting of {@code testOnReturn} for this configuration instance
886 * @see GenericObjectPool#getTestOnReturn()
887 * @see GenericKeyedObjectPool#getTestOnReturn()
888 */
889 public void setTestOnReturn(final boolean testOnReturn) {
890 this.testOnReturn = testOnReturn;
891 }
892
893 /**
894 * Sets the value for the {@code testWhileIdle} configuration attribute for pools created with this configuration instance.
895 *
896 * @param testWhileIdle The new setting of {@code testWhileIdle} for this configuration instance
897 * @see GenericObjectPool#getTestWhileIdle()
898 * @see GenericKeyedObjectPool#getTestWhileIdle()
899 */
900 public void setTestWhileIdle(final boolean testWhileIdle) {
901 this.testWhileIdle = testWhileIdle;
902 }
903
904 /**
905 * Sets the value for the {@code timeBetweenEvictionRuns} configuration attribute for pools created with this configuration instance.
906 *
907 * @param timeBetweenEvictionRuns The new setting of {@code timeBetweenEvictionRuns} for this configuration instance
908 * @see GenericObjectPool#getDurationBetweenEvictionRuns()
909 * @see GenericKeyedObjectPool#getDurationBetweenEvictionRuns()
910 * @since 2.10.0
911 */
912 public void setTimeBetweenEvictionRuns(final Duration timeBetweenEvictionRuns) {
913 this.durationBetweenEvictionRuns = PoolImplUtils.nonNull(timeBetweenEvictionRuns, DEFAULT_DURATION_BETWEEN_EVICTION_RUNS);
914 }
915
916 /**
917 * Sets the value for the {@code timeBetweenEvictionRuns} configuration attribute for pools created with this configuration instance.
918 *
919 * @param timeBetweenEvictionRunsMillis The new setting of {@code timeBetweenEvictionRuns} for this configuration instance
920 * @see GenericObjectPool#getDurationBetweenEvictionRuns()
921 * @see GenericKeyedObjectPool#getDurationBetweenEvictionRuns()
922 * @deprecated Use {@link #setTimeBetweenEvictionRuns(Duration)}.
923 */
924 @Deprecated
925 public void setTimeBetweenEvictionRunsMillis(final long timeBetweenEvictionRunsMillis) {
926 setTimeBetweenEvictionRuns(Duration.ofMillis(timeBetweenEvictionRunsMillis));
927 }
928
929 @Override
930 protected void toStringAppendFields(final StringBuilder builder) {
931 builder.append("lifo=");
932 builder.append(lifo);
933 builder.append(", fairness=");
934 builder.append(fairness);
935 builder.append(", maxWaitDuration=");
936 builder.append(maxWaitDuration);
937 builder.append(", minEvictableIdleTime=");
938 builder.append(minEvictableIdleDuration);
939 builder.append(", softMinEvictableIdleTime=");
940 builder.append(softMinEvictableIdleDuration);
941 builder.append(", numTestsPerEvictionRun=");
942 builder.append(numTestsPerEvictionRun);
943 builder.append(", evictionPolicyClassName=");
944 builder.append(evictionPolicyClassName);
945 builder.append(", testOnCreate=");
946 builder.append(testOnCreate);
947 builder.append(", testOnBorrow=");
948 builder.append(testOnBorrow);
949 builder.append(", testOnReturn=");
950 builder.append(testOnReturn);
951 builder.append(", testWhileIdle=");
952 builder.append(testWhileIdle);
953 builder.append(", timeBetweenEvictionRuns=");
954 builder.append(durationBetweenEvictionRuns);
955 builder.append(", blockWhenExhausted=");
956 builder.append(blockWhenExhausted);
957 builder.append(", jmxEnabled=");
958 builder.append(jmxEnabled);
959 builder.append(", jmxNamePrefix=");
960 builder.append(jmxNamePrefix);
961 builder.append(", jmxNameBase=");
962 builder.append(jmxNameBase);
963 }
964 }