1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.pool2;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertTrue;
21
22 import java.util.concurrent.atomic.AtomicInteger;
23
24 import org.apache.commons.pool2.impl.DefaultPooledObject;
25 import org.junit.jupiter.api.Test;
26
27
28
29 class TestBasePoolableObjectFactory {
30
31 private static final class TestFactory extends BasePooledObjectFactory<AtomicInteger> {
32 @Override
33 public AtomicInteger create() {
34 return new AtomicInteger();
35 }
36
37 @Override
38 public void destroyObject(final PooledObject<AtomicInteger> p, final DestroyMode destroyMode) {
39 if (destroyMode.equals(DestroyMode.ABANDONED)) {
40 p.getObject().incrementAndGet();
41 }
42 }
43
44 @Override
45 public PooledObject<AtomicInteger> wrap(final AtomicInteger value) {
46 return new DefaultPooledObject<>(value);
47 }
48 }
49
50 @Test
51 void testDefaultMethods() throws Exception {
52 final PooledObjectFactory<AtomicInteger> factory = new TestFactory();
53 factory.activateObject(null);
54 factory.passivateObject(null);
55 factory.destroyObject(null);
56 assertTrue(factory.validateObject(null));
57 }
58
59
60
61
62
63
64
65 @Test
66 void testDestroyModes() throws Exception {
67 final PooledObjectFactory<AtomicInteger> factory = new TestFactory();
68 final PooledObject<AtomicInteger> pooledObj = factory.makeObject();
69 final AtomicInteger obj = pooledObj.getObject();
70 factory.destroyObject(pooledObj);
71 assertEquals(0, obj.get());
72 factory.destroyObject(pooledObj, DestroyMode.ABANDONED);
73 assertEquals(1, obj.get());
74 }
75 }