Archived
0

реорганизация pool objects

This commit is contained in:
2021-06-18 00:49:28 +03:00
parent bbf6fde3a1
commit 4b587c55e9
26 changed files with 198 additions and 194 deletions

View File

@@ -1,5 +0,0 @@
apply from: rootDir.toPath().resolve('logic.gradle').toFile()
dependencies {
api libs.objpool
}

View File

@@ -1,2 +0,0 @@
# suppress inspection "UnusedProperty" for whole file
module.name=utils

View File

@@ -1,6 +0,0 @@
package mc.utils.pool;
public interface Passivable {
void passivate();
}

View File

@@ -1,18 +0,0 @@
package mc.utils.pool;
import org.apache.commons.pool2.BasePooledObjectFactory;
import org.apache.commons.pool2.PooledObject;
import org.apache.commons.pool2.impl.DefaultPooledObject;
public abstract class PassivablePooledObjectFactory<T extends Passivable> extends BasePooledObjectFactory<T> {
@Override
public PooledObject<T> wrap(T obj) {
return new DefaultPooledObject<>(obj);
}
@Override
public void passivateObject(PooledObject<T> pooledObject) {
pooledObject.getObject().passivate();
}
}

View File

@@ -1,30 +0,0 @@
package mc.utils.pool;
import lombok.RequiredArgsConstructor;
import org.apache.commons.pool2.ObjectPool;
import org.apache.commons.pool2.impl.GenericObjectPool;
import java.util.HashMap;
import java.util.Map;
@SuppressWarnings({ "rawtypes", "unchecked" })
public abstract class WideClassObjectPool<T extends Passivable> {
private final Map<Class, ObjectPool> mapPool = new HashMap<>();
@SuppressWarnings("unused")
public <R extends T> ObjectPool<R> getPool(Class<R> clazz) {
return mapPool.computeIfAbsent(clazz, tClass -> new GenericObjectPool<R>(new WideClassFactory(clazz)));
}
@RequiredArgsConstructor
private class WideClassFactory<R extends T> extends PassivablePooledObjectFactory<R> {
private final Class<R> clazz;
@Override
public R create() throws Exception {
return clazz.getDeclaredConstructor().newInstance();
}
}
}