Details
-
Improvement
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
2.2
-
None
Description
In the attached patch you will find 2 minor code cleanups (no functional changes) in order to slightly simplify the code:
- removed an if block that was unnecessary from DefaultPooledObject.deallocate()
- removed some duplicate code from the two blocks of an if-else statement in GenericObjectPool.borrowObject(...); the original code was:
while (p == null) { create = false; if (blockWhenExhausted) { p = idleObjects.pollFirst(); if (p == null) { p = create(); if (p != null) { create = true; } } if (p == null) { if (borrowMaxWaitMillis < 0) { p = idleObjects.takeFirst(); } else { p = idleObjects.pollFirst(borrowMaxWaitMillis, TimeUnit.MILLISECONDS); } } if (p == null) { throw new NoSuchElementException( "Timeout waiting for idle object"); } if (!p.allocate()) { p = null; } } else { p = idleObjects.pollFirst(); if (p == null) { p = create(); if (p != null) { create = true; } } if (p == null) { throw new NoSuchElementException("Pool exhausted"); } if (!p.allocate()) { p = null; } } ... }
and the new code is:
while (p == null) { create = false; p = idleObjects.pollFirst(); if (p == null) { p = create(); if (p != null) { create = true; } } if (p == null) { if (blockWhenExhausted) { if (borrowMaxWaitMillis < 0) { p = idleObjects.takeFirst(); } else { p = idleObjects.pollFirst(borrowMaxWaitMillis, TimeUnit.MILLISECONDS); } if (p == null) { throw new NoSuchElementException( "Timeout waiting for idle object"); } } else { throw new NoSuchElementException("Pool exhausted"); } } if (!p.allocate()) { p = null; } ... }