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 public class TestBasePoolableObjectFactory {
30
31 private static class TestFactory extends BasePooledObjectFactory<AtomicInteger> {
32 @Override
33 public AtomicInteger create() {
34 return new AtomicInteger(0);
35 }
36 @Override
37 public void destroyObject(final PooledObject<AtomicInteger> p, final DestroyMode destroyMode){
38 if (destroyMode.equals(DestroyMode.ABANDONED)) {
39 p.getObject().incrementAndGet();
40 }
41 }
42 @Override
43 public PooledObject<AtomicInteger> wrap(final AtomicInteger value) {
44 return new DefaultPooledObject<>(value);
45 }
46 }
47
48 @Test
49 public void testDefaultMethods() throws Exception {
50 final PooledObjectFactory<AtomicInteger> factory = new TestFactory();
51
52 factory.activateObject(null);
53 factory.passivateObject(null);
54 factory.destroyObject(null);
55 assertTrue(factory.validateObject(null));
56 }
57
58
59
60
61
62
63
64
65 @Test
66 public 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 }