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