/** {@inheritDoc} */ public void returnBuilder(DocumentBuilder builder) { if (!(builder instanceof DocumentBuilderProxy)) { return; } DocumentBuilderProxy proxiedBuilder = (DocumentBuilderProxy) builder; if (proxiedBuilder.getOwningPool() != this) { return; } synchronized (this) { if (proxiedBuilder.isReturned()) { return; } if (proxiedBuilder.getPoolVersion() != poolVersion) { return; } DocumentBuilder unwrappedBuilder = proxiedBuilder.getProxiedBuilder(); unwrappedBuilder.reset(); SoftReference<DocumentBuilder> builderReference = new SoftReference<DocumentBuilder>(unwrappedBuilder); if (builderPool.size() < maxPoolSize) { proxiedBuilder.setReturned(true); builderPool.push(builderReference); } } }
/** {@inheritDoc} */ public void returnBuilder(DocumentBuilder builder) { if (!(builder instanceof DocumentBuilderProxy)) { return; } DocumentBuilderProxy proxiedBuilder = (DocumentBuilderProxy) builder; if (proxiedBuilder.getOwningPool() != this) { return; } synchronized (this) { if (proxiedBuilder.isReturned()) { return; } if (proxiedBuilder.getPoolVersion() != poolVersion) { return; } DocumentBuilder unwrappedBuilder = proxiedBuilder.getProxiedBuilder(); unwrappedBuilder.reset(); SoftReference<DocumentBuilder> builderReference = new SoftReference<DocumentBuilder>(unwrappedBuilder); if (builderPool.size() < maxPoolSize) { proxiedBuilder.setReturned(true); builderPool.push(builderReference); } } }