001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.commons.pool2.impl; 018 019import java.time.Duration; 020 021import org.apache.commons.pool2.BaseObject; 022 023/** 024 * 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 025 * the public constants. 026 * <p> 027 * This class is not thread-safe. 028 * </p> 029 * 030 * @param <T> Type of element pooled. 031 * @since 2.0 032 */ 033public abstract class BaseObjectPoolConfig<T> extends BaseObject implements Cloneable { 034 035 /** 036 * The default value for the {@code lifo} configuration attribute. 037 * 038 * @see GenericObjectPool#getLifo() 039 * @see GenericKeyedObjectPool#getLifo() 040 */ 041 public static final boolean DEFAULT_LIFO = true; 042 043 /** 044 * The default value for the {@code fairness} configuration attribute. 045 * 046 * @see GenericObjectPool#getFairness() 047 * @see GenericKeyedObjectPool#getFairness() 048 */ 049 public static final boolean DEFAULT_FAIRNESS = false; 050 051 /** 052 * The default value for the {@code maxWait} configuration attribute. 053 * 054 * @see GenericObjectPool#getMaxWaitDuration() 055 * @see GenericKeyedObjectPool#getMaxWaitDuration() 056 * @deprecated Use {@link #DEFAULT_MAX_WAIT}. 057 */ 058 @Deprecated 059 public static final long DEFAULT_MAX_WAIT_MILLIS = -1L; 060 061 /** 062 * The default value for the {@code maxWait} configuration attribute. 063 * 064 * @see GenericObjectPool#getMaxWaitDuration() 065 * @see GenericKeyedObjectPool#getMaxWaitDuration() 066 * @since 2.10.0 067 */ 068 public static final Duration DEFAULT_MAX_WAIT = Duration.ofMillis(DEFAULT_MAX_WAIT_MILLIS); 069 070 /** 071 * The default value for the {@code minEvictableIdleDuration} configuration attribute. 072 * 073 * @see GenericObjectPool#getMinEvictableIdleDuration() 074 * @see GenericKeyedObjectPool#getMinEvictableIdleDuration() 075 * @deprecated Use {@link #DEFAULT_MIN_EVICTABLE_IDLE_TIME}. 076 */ 077 @Deprecated 078 public static final long DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS = 1000L * 60L * 30L; 079 080 /** 081 * The default value for the {@code minEvictableIdleDuration} configuration attribute. 082 * 083 * @see GenericObjectPool#getMinEvictableIdleDuration() 084 * @see GenericKeyedObjectPool#getMinEvictableIdleDuration() 085 * @since 2.11.0 086 */ 087 public static final Duration DEFAULT_MIN_EVICTABLE_IDLE_DURATION = Duration.ofMillis(DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS); 088 089 /** 090 * The default value for the {@code minEvictableIdleDuration} configuration attribute. 091 * 092 * @see GenericObjectPool#getMinEvictableIdleDuration() 093 * @see GenericKeyedObjectPool#getMinEvictableIdleDuration() 094 * @since 2.10.0 095 * @deprecated Use {@link #DEFAULT_MIN_EVICTABLE_IDLE_DURATION}. 096 */ 097 @Deprecated 098 public static final Duration DEFAULT_MIN_EVICTABLE_IDLE_TIME = Duration.ofMillis(DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS); 099 100 /** 101 * The default value for the {@code softMinEvictableIdleTime} configuration attribute. 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. 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. 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. 159 * 160 * @see GenericObjectPool#getTestOnCreate() 161 * @see GenericKeyedObjectPool#getTestOnCreate() 162 * 163 * @since 2.2 164 */ 165 public static final boolean DEFAULT_TEST_ON_CREATE = false; 166 167 /** 168 * The default value for the {@code testOnBorrow} configuration attribute. 169 * 170 * @see GenericObjectPool#getTestOnBorrow() 171 * @see GenericKeyedObjectPool#getTestOnBorrow() 172 */ 173 public static final boolean DEFAULT_TEST_ON_BORROW = false; 174 175 /** 176 * The default value for the {@code testOnReturn} configuration attribute. 177 * 178 * @see GenericObjectPool#getTestOnReturn() 179 * @see GenericKeyedObjectPool#getTestOnReturn() 180 */ 181 public static final boolean DEFAULT_TEST_ON_RETURN = false; 182 183 /** 184 * The default value for the {@code testWhileIdle} configuration attribute. 185 * 186 * @see GenericObjectPool#getTestWhileIdle() 187 * @see GenericKeyedObjectPool#getTestWhileIdle() 188 */ 189 public static final boolean DEFAULT_TEST_WHILE_IDLE = false; 190 191 /** 192 * The default value for the {@code timeBetweenEvictionRuns} configuration attribute. 193 * 194 * @see GenericObjectPool#getDurationBetweenEvictionRuns() 195 * @see GenericKeyedObjectPool#getDurationBetweenEvictionRuns() 196 * @deprecated Use {@link #DEFAULT_TIME_BETWEEN_EVICTION_RUNS}. 197 */ 198 @Deprecated 199 public static final long DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS = -1L; 200 201 /** 202 * The default value for the {@code timeBetweenEvictionRuns} configuration attribute. 203 * 204 * @see GenericObjectPool#getDurationBetweenEvictionRuns() 205 * @see GenericKeyedObjectPool#getDurationBetweenEvictionRuns() 206 * @since 2.12.0 207 */ 208 public static final Duration DEFAULT_DURATION_BETWEEN_EVICTION_RUNS = Duration.ofMillis(DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS); 209 210 /** 211 * The default value for the {@code timeBetweenEvictionRuns} configuration attribute. 212 * 213 * @see GenericObjectPool#getDurationBetweenEvictionRuns() 214 * @see GenericKeyedObjectPool#getDurationBetweenEvictionRuns() 215 * @deprecated Use {@link #DEFAULT_DURATION_BETWEEN_EVICTION_RUNS}. 216 */ 217 @Deprecated 218 public static final Duration DEFAULT_TIME_BETWEEN_EVICTION_RUNS = Duration.ofMillis(DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS); 219 220 /** 221 * The default value for the {@code blockWhenExhausted} configuration attribute. 222 * 223 * @see GenericObjectPool#getBlockWhenExhausted() 224 * @see GenericKeyedObjectPool#getBlockWhenExhausted() 225 */ 226 public static final boolean DEFAULT_BLOCK_WHEN_EXHAUSTED = true; 227 228 /** 229 * The default value for enabling JMX for pools created with a configuration instance. 230 */ 231 public static final boolean DEFAULT_JMX_ENABLE = true; 232 233 /** 234 * The default value for the prefix used to name JMX enabled pools created with a configuration instance. 235 * 236 * @see GenericObjectPool#getJmxName() 237 * @see GenericKeyedObjectPool#getJmxName() 238 */ 239 public static final String DEFAULT_JMX_NAME_PREFIX = "pool"; 240 241 /** 242 * 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 243 * pool will provide the base name to use. 244 * 245 * @see GenericObjectPool#getJmxName() 246 * @see GenericKeyedObjectPool#getJmxName() 247 */ 248 public static final String DEFAULT_JMX_NAME_BASE = null; 249 250 /** 251 * The default value for the {@code evictionPolicyClassName} configuration attribute. 252 * 253 * @see GenericObjectPool#getEvictionPolicyClassName() 254 * @see GenericKeyedObjectPool#getEvictionPolicyClassName() 255 */ 256 public static final String DEFAULT_EVICTION_POLICY_CLASS_NAME = DefaultEvictionPolicy.class.getName(); 257 258 private boolean lifo = DEFAULT_LIFO; 259 260 private boolean fairness = DEFAULT_FAIRNESS; 261 262 private Duration maxWaitDuration = DEFAULT_MAX_WAIT; 263 264 private Duration minEvictableIdleDuration = DEFAULT_MIN_EVICTABLE_IDLE_TIME; 265 266 private Duration evictorShutdownTimeoutDuration = DEFAULT_EVICTOR_SHUTDOWN_TIMEOUT; 267 268 private Duration softMinEvictableIdleDuration = DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME; 269 270 private int numTestsPerEvictionRun = DEFAULT_NUM_TESTS_PER_EVICTION_RUN; 271 272 private EvictionPolicy<T> evictionPolicy; // Only 2.6.0 applications set this 273 274 private String evictionPolicyClassName = DEFAULT_EVICTION_POLICY_CLASS_NAME; 275 276 private boolean testOnCreate = DEFAULT_TEST_ON_CREATE; 277 278 private boolean testOnBorrow = DEFAULT_TEST_ON_BORROW; 279 280 private boolean testOnReturn = DEFAULT_TEST_ON_RETURN; 281 282 private boolean testWhileIdle = DEFAULT_TEST_WHILE_IDLE; 283 284 private Duration durationBetweenEvictionRuns = DEFAULT_DURATION_BETWEEN_EVICTION_RUNS; 285 286 private boolean blockWhenExhausted = DEFAULT_BLOCK_WHEN_EXHAUSTED; 287 288 private boolean jmxEnabled = DEFAULT_JMX_ENABLE; 289 290 // TODO Consider changing this to a single property for 3.x 291 private String jmxNamePrefix = DEFAULT_JMX_NAME_PREFIX; 292 293 private String jmxNameBase = DEFAULT_JMX_NAME_BASE; 294 295 /** 296 * Gets the value for the {@code blockWhenExhausted} configuration attribute for pools created with this configuration instance. 297 * 298 * @return The current setting of {@code blockWhenExhausted} for this configuration instance 299 * @see GenericObjectPool#getBlockWhenExhausted() 300 * @see GenericKeyedObjectPool#getBlockWhenExhausted() 301 */ 302 public boolean getBlockWhenExhausted() { 303 return blockWhenExhausted; 304 } 305 306 /** 307 * Gets the value for the {@code timeBetweenEvictionRuns} configuration attribute for pools created with this configuration instance. 308 * 309 * @return The current setting of {@code timeBetweenEvictionRuns} for this configuration instance 310 * @see GenericObjectPool#getDurationBetweenEvictionRuns() 311 * @see GenericKeyedObjectPool#getDurationBetweenEvictionRuns() 312 * @since 2.11.0 313 */ 314 public Duration getDurationBetweenEvictionRuns() { 315 return durationBetweenEvictionRuns; 316 } 317 318 /** 319 * Gets the value for the {@code evictionPolicyClass} configuration attribute for pools created with this configuration instance. 320 * 321 * @return The current setting of {@code evictionPolicyClass} for this configuration instance 322 * @see GenericObjectPool#getEvictionPolicy() 323 * @see GenericKeyedObjectPool#getEvictionPolicy() 324 * @since 2.6.0 325 */ 326 public EvictionPolicy<T> getEvictionPolicy() { 327 return evictionPolicy; 328 } 329 330 /** 331 * Gets the value for the {@code evictionPolicyClassName} configuration attribute for pools created with this configuration instance. 332 * 333 * @return The current setting of {@code evictionPolicyClassName} for this configuration instance 334 * @see GenericObjectPool#getEvictionPolicyClassName() 335 * @see GenericKeyedObjectPool#getEvictionPolicyClassName() 336 */ 337 public String getEvictionPolicyClassName() { 338 return evictionPolicyClassName; 339 } 340 341 /** 342 * Gets the value for the {@code evictorShutdownTimeout} configuration attribute for pools created with this configuration instance. 343 * 344 * @return The current setting of {@code evictorShutdownTimeout} for this configuration instance 345 * @see GenericObjectPool#getEvictorShutdownTimeoutDuration() 346 * @see GenericKeyedObjectPool#getEvictorShutdownTimeoutDuration() 347 * @since 2.10.0 348 * @deprecated Use {@link #getEvictorShutdownTimeoutDuration()}. 349 */ 350 @Deprecated 351 public Duration getEvictorShutdownTimeout() { 352 return evictorShutdownTimeoutDuration; 353 } 354 355 /** 356 * Gets the value for the {@code evictorShutdownTimeout} configuration attribute for pools created with this configuration instance. 357 * 358 * @return The current setting of {@code evictorShutdownTimeout} for this configuration instance 359 * @see GenericObjectPool#getEvictorShutdownTimeoutDuration() 360 * @see GenericKeyedObjectPool#getEvictorShutdownTimeoutDuration() 361 * @since 2.11.0 362 */ 363 public Duration getEvictorShutdownTimeoutDuration() { 364 return evictorShutdownTimeoutDuration; 365 } 366 367 /** 368 * Gets the value for the {@code evictorShutdownTimeout} configuration attribute for pools created with this configuration instance. 369 * 370 * @return The current setting of {@code evictorShutdownTimeout} for this configuration instance 371 * @see GenericObjectPool#getEvictorShutdownTimeoutDuration() 372 * @see GenericKeyedObjectPool#getEvictorShutdownTimeoutDuration() 373 * @deprecated Use {@link #getEvictorShutdownTimeout()}. 374 */ 375 @Deprecated 376 public long getEvictorShutdownTimeoutMillis() { 377 return evictorShutdownTimeoutDuration.toMillis(); 378 } 379 380 /** 381 * Gets the value for the {@code fairness} configuration attribute for pools created with this configuration instance. 382 * 383 * @return The current setting of {@code fairness} for this configuration instance 384 * @see GenericObjectPool#getFairness() 385 * @see GenericKeyedObjectPool#getFairness() 386 */ 387 public boolean getFairness() { 388 return fairness; 389 } 390 391 /** 392 * Gets the value of the flag that determines if JMX will be enabled for pools created with this configuration instance. 393 * 394 * @return The current setting of {@code jmxEnabled} for this configuration instance 395 */ 396 public boolean getJmxEnabled() { 397 return jmxEnabled; 398 } 399 400 /** 401 * 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 402 * of {@code null} means that the pool will define the JMX name base. 403 * 404 * @return The current setting of {@code jmxNameBase} for this configuration instance 405 */ 406 public String getJmxNameBase() { 407 return jmxNameBase; 408 } 409 410 /** 411 * 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. 412 * 413 * @return The current setting of {@code jmxNamePrefix} for this configuration instance 414 */ 415 public String getJmxNamePrefix() { 416 return jmxNamePrefix; 417 } 418 419 /** 420 * Gets the value for the {@code lifo} configuration attribute for pools created with this configuration instance. 421 * 422 * @return The current setting of {@code lifo} for this configuration instance 423 * 424 * @see GenericObjectPool#getLifo() 425 * @see GenericKeyedObjectPool#getLifo() 426 */ 427 public boolean getLifo() { 428 return lifo; 429 } 430 431 /** 432 * Gets the value for the {@code maxWait} configuration attribute for pools created with this configuration instance. 433 * 434 * @return The current setting of {@code maxWait} for this configuration instance 435 * @see GenericObjectPool#getMaxWaitDuration() 436 * @see GenericKeyedObjectPool#getMaxWaitDuration() 437 * @since 2.11.0 438 */ 439 public Duration getMaxWaitDuration() { 440 return maxWaitDuration; 441 } 442 443 /** 444 * Gets the value for the {@code maxWait} configuration attribute for pools created with this configuration instance. 445 * 446 * @return The current setting of {@code maxWait} for this configuration instance 447 * @see GenericObjectPool#getMaxWaitDuration() 448 * @see GenericKeyedObjectPool#getMaxWaitDuration() 449 * @deprecated Use {@link #getMaxWaitDuration()}. 450 */ 451 @Deprecated 452 public long getMaxWaitMillis() { 453 return maxWaitDuration.toMillis(); 454 } 455 456 /** 457 * Gets the value for the {@code minEvictableIdleTime} configuration attribute for pools created with this configuration instance. 458 * 459 * @return The current setting of {@code minEvictableIdleTime} for this configuration instance 460 * @see GenericObjectPool#getMinEvictableIdleDuration() 461 * @see GenericKeyedObjectPool#getMinEvictableIdleDuration() 462 * @since 2.11.0 463 */ 464 public Duration getMinEvictableIdleDuration() { 465 return minEvictableIdleDuration; 466 } 467 468 /** 469 * Gets the value for the {@code minEvictableIdleTime} configuration attribute for pools created with this configuration instance. 470 * 471 * @return The current setting of {@code minEvictableIdleTime} for this configuration instance 472 * @see GenericObjectPool#getMinEvictableIdleDuration() 473 * @see GenericKeyedObjectPool#getMinEvictableIdleDuration() 474 * @since 2.10.0 475 * @deprecated Use {@link #getMinEvictableIdleDuration()}. 476 */ 477 @Deprecated 478 public Duration getMinEvictableIdleTime() { 479 return minEvictableIdleDuration; 480 } 481 482 /** 483 * Gets the value for the {@code minEvictableIdleTime} configuration attribute for pools created with this configuration instance. 484 * 485 * @return The current setting of {@code minEvictableIdleTime} for this configuration instance 486 * @see GenericObjectPool#getMinEvictableIdleDuration() 487 * @see GenericKeyedObjectPool#getMinEvictableIdleDuration() 488 * @deprecated Use {@link #getMinEvictableIdleTime()}. 489 */ 490 @Deprecated 491 public long getMinEvictableIdleTimeMillis() { 492 return minEvictableIdleDuration.toMillis(); 493 } 494 495 /** 496 * Gets the value for the {@code numTestsPerEvictionRun} configuration attribute for pools created with this configuration instance. 497 * 498 * @return The current setting of {@code numTestsPerEvictionRun} for this configuration instance 499 * @see GenericObjectPool#getNumTestsPerEvictionRun() 500 * @see GenericKeyedObjectPool#getNumTestsPerEvictionRun() 501 */ 502 public int getNumTestsPerEvictionRun() { 503 return numTestsPerEvictionRun; 504 } 505 506 /** 507 * Gets the value for the {@code softMinEvictableIdleTime} configuration attribute for pools created with this configuration instance. 508 * 509 * @return The current setting of {@code softMinEvictableIdleTime} for this configuration instance 510 * @see GenericObjectPool#getSoftMinEvictableIdleDuration() 511 * @see GenericKeyedObjectPool#getSoftMinEvictableIdleDuration() 512 * @since 2.11.0 513 */ 514 public Duration getSoftMinEvictableIdleDuration() { 515 return softMinEvictableIdleDuration; 516 } 517 518 /** 519 * Gets the value for the {@code softMinEvictableIdleTime} configuration attribute for pools created with this configuration instance. 520 * 521 * @return The current setting of {@code softMinEvictableIdleTime} for this configuration instance 522 * @see GenericObjectPool#getSoftMinEvictableIdleDuration() 523 * @see GenericKeyedObjectPool#getSoftMinEvictableIdleDuration() 524 * @since 2.10.0 525 * @deprecated Use {@link #getSoftMinEvictableIdleDuration()}. 526 */ 527 @Deprecated 528 public Duration getSoftMinEvictableIdleTime() { 529 return softMinEvictableIdleDuration; 530 } 531 532 /** 533 * Gets the value for the {@code softMinEvictableIdleTime} configuration attribute for pools created with this configuration instance. 534 * 535 * @return The current setting of {@code softMinEvictableIdleTime} for this configuration instance 536 * @see GenericObjectPool#getSoftMinEvictableIdleDuration() 537 * @see GenericKeyedObjectPool#getSoftMinEvictableIdleDuration() 538 * @deprecated Use {@link #getSoftMinEvictableIdleDuration()}. 539 */ 540 @Deprecated 541 public long getSoftMinEvictableIdleTimeMillis() { 542 return softMinEvictableIdleDuration.toMillis(); 543 } 544 545 /** 546 * Gets the value for the {@code testOnBorrow} configuration attribute for pools created with this configuration instance. 547 * 548 * @return The current setting of {@code testOnBorrow} for this configuration instance 549 * @see GenericObjectPool#getTestOnBorrow() 550 * @see GenericKeyedObjectPool#getTestOnBorrow() 551 */ 552 public boolean getTestOnBorrow() { 553 return testOnBorrow; 554 } 555 556 /** 557 * Gets the value for the {@code testOnCreate} configuration attribute for pools created with this configuration instance. 558 * 559 * @return The current setting of {@code testOnCreate} for this configuration instance 560 * @see GenericObjectPool#getTestOnCreate() 561 * @see GenericKeyedObjectPool#getTestOnCreate() 562 * @since 2.2 563 */ 564 public boolean getTestOnCreate() { 565 return testOnCreate; 566 } 567 568 /** 569 * Gets the value for the {@code testOnReturn} configuration attribute for pools created with this configuration instance. 570 * 571 * @return The current setting of {@code testOnReturn} for this configuration instance 572 * @see GenericObjectPool#getTestOnReturn() 573 * @see GenericKeyedObjectPool#getTestOnReturn() 574 */ 575 public boolean getTestOnReturn() { 576 return testOnReturn; 577 } 578 579 /** 580 * Gets the value for the {@code testWhileIdle} configuration attribute for pools created with this configuration instance. 581 * 582 * @return The current setting of {@code testWhileIdle} for this configuration instance 583 * @see GenericObjectPool#getTestWhileIdle() 584 * @see GenericKeyedObjectPool#getTestWhileIdle() 585 */ 586 public boolean getTestWhileIdle() { 587 return testWhileIdle; 588 } 589 590 /** 591 * Gets the value for the {@code timeBetweenEvictionRuns} configuration attribute for pools created with this configuration instance. 592 * 593 * @return The current setting of {@code timeBetweenEvictionRuns} for this configuration instance 594 * @see GenericObjectPool#getDurationBetweenEvictionRuns() 595 * @see GenericKeyedObjectPool#getDurationBetweenEvictionRuns() 596 * @since 2.10.0 597 * @deprecated Use {@link #getDurationBetweenEvictionRuns()}. 598 */ 599 @Deprecated 600 public Duration getTimeBetweenEvictionRuns() { 601 return durationBetweenEvictionRuns; 602 } 603 604 /** 605 * Gets the value for the {@code timeBetweenEvictionRuns} configuration attribute for pools created with this configuration instance. 606 * 607 * @return The current setting of {@code timeBetweenEvictionRuns} for this configuration instance 608 * @see GenericObjectPool#getDurationBetweenEvictionRuns() 609 * @see GenericKeyedObjectPool#getDurationBetweenEvictionRuns() 610 * @deprecated Use {@link #getDurationBetweenEvictionRuns()}. 611 */ 612 @Deprecated 613 public long getTimeBetweenEvictionRunsMillis() { 614 return durationBetweenEvictionRuns.toMillis(); 615 } 616 617 /** 618 * Sets the value for the {@code blockWhenExhausted} configuration attribute for pools created with this configuration instance. 619 * 620 * @param blockWhenExhausted The new setting of {@code blockWhenExhausted} for this configuration instance 621 * @see GenericObjectPool#getBlockWhenExhausted() 622 * @see GenericKeyedObjectPool#getBlockWhenExhausted() 623 */ 624 public void setBlockWhenExhausted(final boolean blockWhenExhausted) { 625 this.blockWhenExhausted = blockWhenExhausted; 626 } 627 628 /** 629 * Sets the value for the {@code evictionPolicyClass} configuration attribute for pools created with this configuration instance. 630 * 631 * @param evictionPolicy The new setting of {@code evictionPolicyClass} for this configuration instance 632 * @see GenericObjectPool#getEvictionPolicy() 633 * @see GenericKeyedObjectPool#getEvictionPolicy() 634 * @since 2.6.0 635 */ 636 public void setEvictionPolicy(final EvictionPolicy<T> evictionPolicy) { 637 this.evictionPolicy = evictionPolicy; 638 } 639 640 /** 641 * Sets the value for the {@code evictionPolicyClassName} configuration attribute for pools created with this configuration instance. 642 * 643 * @param evictionPolicyClassName The new setting of {@code evictionPolicyClassName} for this configuration instance 644 * @see GenericObjectPool#getEvictionPolicyClassName() 645 * @see GenericKeyedObjectPool#getEvictionPolicyClassName() 646 */ 647 public void setEvictionPolicyClassName(final String evictionPolicyClassName) { 648 this.evictionPolicyClassName = evictionPolicyClassName; 649 } 650 651 /** 652 * Sets the value for the {@code evictorShutdownTimeout} configuration attribute for pools created with this configuration instance. 653 * 654 * @param evictorShutdownTimeoutDuration The new setting of {@code evictorShutdownTimeout} for this configuration instance 655 * @see GenericObjectPool#getEvictorShutdownTimeoutDuration() 656 * @see GenericKeyedObjectPool#getEvictorShutdownTimeoutDuration() 657 * @since 2.11.0 658 */ 659 public void setEvictorShutdownTimeout(final Duration evictorShutdownTimeoutDuration) { 660 this.evictorShutdownTimeoutDuration = PoolImplUtils.nonNull(evictorShutdownTimeoutDuration, DEFAULT_EVICTOR_SHUTDOWN_TIMEOUT); 661 } 662 663 /** 664 * Sets the value for the {@code evictorShutdownTimeout} configuration attribute for pools created with this configuration instance. 665 * 666 * @param evictorShutdownTimeout The new setting of {@code evictorShutdownTimeout} for this configuration instance 667 * @see GenericObjectPool#getEvictorShutdownTimeoutDuration() 668 * @see GenericKeyedObjectPool#getEvictorShutdownTimeoutDuration() 669 * @since 2.10.0 670 * @deprecated Use {@link #setEvictorShutdownTimeout(Duration)}. 671 */ 672 @Deprecated 673 public void setEvictorShutdownTimeoutMillis(final Duration evictorShutdownTimeout) { 674 setEvictorShutdownTimeout(evictorShutdownTimeout); 675 } 676 677 /** 678 * Sets the value for the {@code evictorShutdownTimeout} configuration attribute for pools created with this configuration instance. 679 * 680 * @param evictorShutdownTimeoutMillis The new setting of {@code evictorShutdownTimeout} for this configuration instance 681 * @see GenericObjectPool#getEvictorShutdownTimeoutDuration() 682 * @see GenericKeyedObjectPool#getEvictorShutdownTimeoutDuration() 683 * @deprecated Use {@link #setEvictorShutdownTimeout(Duration)}. 684 */ 685 @Deprecated 686 public void setEvictorShutdownTimeoutMillis(final long evictorShutdownTimeoutMillis) { 687 setEvictorShutdownTimeout(Duration.ofMillis(evictorShutdownTimeoutMillis)); 688 } 689 690 /** 691 * Sets the value for the {@code fairness} configuration attribute for pools created with this configuration instance. 692 * 693 * @param fairness The new setting of {@code fairness} for this configuration instance 694 * @see GenericObjectPool#getFairness() 695 * @see GenericKeyedObjectPool#getFairness() 696 */ 697 public void setFairness(final boolean fairness) { 698 this.fairness = fairness; 699 } 700 701 /** 702 * Sets the value of the flag that determines if JMX will be enabled for pools created with this configuration instance. 703 * 704 * @param jmxEnabled The new setting of {@code jmxEnabled} for this configuration instance 705 */ 706 public void setJmxEnabled(final boolean jmxEnabled) { 707 this.jmxEnabled = jmxEnabled; 708 } 709 710 /** 711 * 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 712 * of {@code null} means that the pool will define the JMX name base. 713 * 714 * @param jmxNameBase The new setting of {@code jmxNameBase} for this configuration instance 715 */ 716 public void setJmxNameBase(final String jmxNameBase) { 717 this.jmxNameBase = jmxNameBase; 718 } 719 720 /** 721 * 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. 722 * 723 * @param jmxNamePrefix The new setting of {@code jmxNamePrefix} for this configuration instance 724 */ 725 public void setJmxNamePrefix(final String jmxNamePrefix) { 726 this.jmxNamePrefix = jmxNamePrefix; 727 } 728 729 /** 730 * Sets the value for the {@code lifo} configuration attribute for pools created with this configuration instance. 731 * 732 * @param lifo The new setting of {@code lifo} for this configuration instance 733 * @see GenericObjectPool#getLifo() 734 * @see GenericKeyedObjectPool#getLifo() 735 */ 736 public void setLifo(final boolean lifo) { 737 this.lifo = lifo; 738 } 739 740 /** 741 * Sets the value for the {@code maxWait} configuration attribute for pools created with this configuration instance. 742 * 743 * @param maxWaitDuration The new setting of {@code maxWaitDuration} for this configuration instance 744 * @see GenericObjectPool#getMaxWaitDuration() 745 * @see GenericKeyedObjectPool#getMaxWaitDuration() 746 * @since 2.11.0 747 */ 748 public void setMaxWait(final Duration maxWaitDuration) { 749 this.maxWaitDuration = PoolImplUtils.nonNull(maxWaitDuration, DEFAULT_MAX_WAIT); 750 } 751 752 /** 753 * Sets the value for the {@code maxWait} configuration attribute for pools created with this configuration instance. 754 * 755 * @param maxWaitMillis The new setting of {@code maxWaitMillis} for this configuration instance 756 * @see GenericObjectPool#getMaxWaitDuration() 757 * @see GenericKeyedObjectPool#getMaxWaitDuration() 758 * @deprecated Use {@link #setMaxWait(Duration)}. 759 */ 760 @Deprecated 761 public void setMaxWaitMillis(final long maxWaitMillis) { 762 setMaxWait(Duration.ofMillis(maxWaitMillis)); 763 } 764 765 /** 766 * Sets the value for the {@code minEvictableIdleTime} configuration attribute for pools created with this configuration instance. 767 * 768 * @param minEvictableIdleTime The new setting of {@code minEvictableIdleTime} for this configuration instance 769 * @see GenericObjectPool#getMinEvictableIdleDuration() 770 * @see GenericKeyedObjectPool#getMinEvictableIdleDuration() 771 * @since 2.12.0 772 */ 773 public void setMinEvictableIdleDuration(final Duration minEvictableIdleTime) { 774 this.minEvictableIdleDuration = PoolImplUtils.nonNull(minEvictableIdleTime, DEFAULT_MIN_EVICTABLE_IDLE_TIME); 775 } 776 777 /** 778 * Sets the value for the {@code minEvictableIdleTime} configuration attribute for pools created with this configuration instance. 779 * 780 * @param minEvictableIdleTime The new setting of {@code minEvictableIdleTime} for this configuration instance 781 * @see GenericObjectPool#getMinEvictableIdleDuration() 782 * @see GenericKeyedObjectPool#getMinEvictableIdleDuration() 783 * @since 2.10.0 784 * @deprecated Use {@link #setMinEvictableIdleDuration(Duration)}. 785 */ 786 @Deprecated 787 public void setMinEvictableIdleTime(final Duration minEvictableIdleTime) { 788 this.minEvictableIdleDuration = PoolImplUtils.nonNull(minEvictableIdleTime, DEFAULT_MIN_EVICTABLE_IDLE_TIME); 789 } 790 791 /** 792 * Sets the value for the {@code minEvictableIdleTime} configuration attribute for pools created with this configuration instance. 793 * 794 * @param minEvictableIdleTimeMillis The new setting of {@code minEvictableIdleTime} for this configuration instance 795 * @see GenericObjectPool#getMinEvictableIdleDuration() 796 * @see GenericKeyedObjectPool#getMinEvictableIdleDuration() 797 * @deprecated Use {@link #setMinEvictableIdleDuration(Duration)}. 798 */ 799 @Deprecated 800 public void setMinEvictableIdleTimeMillis(final long minEvictableIdleTimeMillis) { 801 this.minEvictableIdleDuration = Duration.ofMillis(minEvictableIdleTimeMillis); 802 } 803 804 /** 805 * Sets the value for the {@code numTestsPerEvictionRun} configuration attribute for pools created with this configuration instance. 806 * 807 * @param numTestsPerEvictionRun The new setting of {@code numTestsPerEvictionRun} for this configuration instance 808 * @see GenericObjectPool#getNumTestsPerEvictionRun() 809 * @see GenericKeyedObjectPool#getNumTestsPerEvictionRun() 810 */ 811 public void setNumTestsPerEvictionRun(final int numTestsPerEvictionRun) { 812 this.numTestsPerEvictionRun = numTestsPerEvictionRun; 813 } 814 815 /** 816 * Sets the value for the {@code softMinEvictableIdleTime} configuration attribute for pools created with this configuration instance. 817 * 818 * @param softMinEvictableIdleTime The new setting of {@code softMinEvictableIdleTime} for this configuration instance 819 * @see GenericObjectPool#getSoftMinEvictableIdleDuration() 820 * @see GenericKeyedObjectPool#getSoftMinEvictableIdleDuration() 821 * @since 2.12.0 822 */ 823 public void setSoftMinEvictableIdleDuration(final Duration softMinEvictableIdleTime) { 824 this.softMinEvictableIdleDuration = PoolImplUtils.nonNull(softMinEvictableIdleTime, DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME); 825 } 826 827 /** 828 * Sets the value for the {@code softMinEvictableIdleTime} configuration attribute for pools created with this configuration instance. 829 * 830 * @param softMinEvictableIdleTime The new setting of {@code softMinEvictableIdleTime} for this configuration instance 831 * @see GenericObjectPool#getSoftMinEvictableIdleDuration() 832 * @see GenericKeyedObjectPool#getSoftMinEvictableIdleDuration() 833 * @since 2.10.0 834 * @deprecated Use {@link #setSoftMinEvictableIdleDuration(Duration)}. 835 */ 836 @Deprecated 837 public void setSoftMinEvictableIdleTime(final Duration softMinEvictableIdleTime) { 838 this.softMinEvictableIdleDuration = PoolImplUtils.nonNull(softMinEvictableIdleTime, DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME); 839 } 840 841 /** 842 * Sets the value for the {@code softMinEvictableIdleTime} configuration attribute for pools created with this configuration instance. 843 * 844 * @param softMinEvictableIdleTimeMillis The new setting of {@code softMinEvictableIdleTime} for this configuration instance 845 * @see GenericObjectPool#getSoftMinEvictableIdleDuration() 846 * @see GenericKeyedObjectPool#getSoftMinEvictableIdleDuration() 847 * @deprecated Use {@link #setSoftMinEvictableIdleDuration(Duration)}. 848 */ 849 @Deprecated 850 public void setSoftMinEvictableIdleTimeMillis(final long softMinEvictableIdleTimeMillis) { 851 setSoftMinEvictableIdleTime(Duration.ofMillis(softMinEvictableIdleTimeMillis)); 852 } 853 854 /** 855 * Sets the value for the {@code testOnBorrow} configuration attribute for pools created with this configuration instance. 856 * 857 * @param testOnBorrow The new setting of {@code testOnBorrow} for this configuration instance 858 * @see GenericObjectPool#getTestOnBorrow() 859 * @see GenericKeyedObjectPool#getTestOnBorrow() 860 */ 861 public void setTestOnBorrow(final boolean testOnBorrow) { 862 this.testOnBorrow = testOnBorrow; 863 } 864 865 /** 866 * Sets the value for the {@code testOnCreate} configuration attribute for pools created with this configuration instance. 867 * 868 * @param testOnCreate The new setting of {@code testOnCreate} for this configuration instance 869 * @see GenericObjectPool#getTestOnCreate() 870 * @see GenericKeyedObjectPool#getTestOnCreate() 871 * @since 2.2 872 */ 873 public void setTestOnCreate(final boolean testOnCreate) { 874 this.testOnCreate = testOnCreate; 875 } 876 877 /** 878 * Sets the value for the {@code testOnReturn} configuration attribute for pools created with this configuration instance. 879 * 880 * @param testOnReturn The new setting of {@code testOnReturn} for this configuration instance 881 * @see GenericObjectPool#getTestOnReturn() 882 * @see GenericKeyedObjectPool#getTestOnReturn() 883 */ 884 public void setTestOnReturn(final boolean testOnReturn) { 885 this.testOnReturn = testOnReturn; 886 } 887 888 /** 889 * Sets the value for the {@code testWhileIdle} configuration attribute for pools created with this configuration instance. 890 * 891 * @param testWhileIdle The new setting of {@code testWhileIdle} for this configuration instance 892 * @see GenericObjectPool#getTestWhileIdle() 893 * @see GenericKeyedObjectPool#getTestWhileIdle() 894 */ 895 public void setTestWhileIdle(final boolean testWhileIdle) { 896 this.testWhileIdle = testWhileIdle; 897 } 898 899 /** 900 * Sets the value for the {@code timeBetweenEvictionRuns} configuration attribute for pools created with this configuration instance. 901 * 902 * @param timeBetweenEvictionRuns The new setting of {@code timeBetweenEvictionRuns} for this configuration instance 903 * @see GenericObjectPool#getDurationBetweenEvictionRuns() 904 * @see GenericKeyedObjectPool#getDurationBetweenEvictionRuns() 905 * @since 2.10.0 906 */ 907 public void setTimeBetweenEvictionRuns(final Duration timeBetweenEvictionRuns) { 908 this.durationBetweenEvictionRuns = PoolImplUtils.nonNull(timeBetweenEvictionRuns, DEFAULT_DURATION_BETWEEN_EVICTION_RUNS); 909 } 910 911 /** 912 * Sets the value for the {@code timeBetweenEvictionRuns} configuration attribute for pools created with this configuration instance. 913 * 914 * @param timeBetweenEvictionRunsMillis The new setting of {@code timeBetweenEvictionRuns} for this configuration instance 915 * @see GenericObjectPool#getDurationBetweenEvictionRuns() 916 * @see GenericKeyedObjectPool#getDurationBetweenEvictionRuns() 917 * @deprecated Use {@link #setTimeBetweenEvictionRuns(Duration)}. 918 */ 919 @Deprecated 920 public void setTimeBetweenEvictionRunsMillis(final long timeBetweenEvictionRunsMillis) { 921 setTimeBetweenEvictionRuns(Duration.ofMillis(timeBetweenEvictionRunsMillis)); 922 } 923 924 @Override 925 protected void toStringAppendFields(final StringBuilder builder) { 926 builder.append("lifo="); 927 builder.append(lifo); 928 builder.append(", fairness="); 929 builder.append(fairness); 930 builder.append(", maxWaitDuration="); 931 builder.append(maxWaitDuration); 932 builder.append(", minEvictableIdleTime="); 933 builder.append(minEvictableIdleDuration); 934 builder.append(", softMinEvictableIdleTime="); 935 builder.append(softMinEvictableIdleDuration); 936 builder.append(", numTestsPerEvictionRun="); 937 builder.append(numTestsPerEvictionRun); 938 builder.append(", evictionPolicyClassName="); 939 builder.append(evictionPolicyClassName); 940 builder.append(", testOnCreate="); 941 builder.append(testOnCreate); 942 builder.append(", testOnBorrow="); 943 builder.append(testOnBorrow); 944 builder.append(", testOnReturn="); 945 builder.append(testOnReturn); 946 builder.append(", testWhileIdle="); 947 builder.append(testWhileIdle); 948 builder.append(", timeBetweenEvictionRuns="); 949 builder.append(durationBetweenEvictionRuns); 950 builder.append(", blockWhenExhausted="); 951 builder.append(blockWhenExhausted); 952 builder.append(", jmxEnabled="); 953 builder.append(jmxEnabled); 954 builder.append(", jmxNamePrefix="); 955 builder.append(jmxNamePrefix); 956 builder.append(", jmxNameBase="); 957 builder.append(jmxNameBase); 958 } 959}