реорганизация pool objects
This commit is contained in:
@@ -1,5 +0,0 @@
|
||||
apply from: rootDir.toPath().resolve('logic.gradle').toFile()
|
||||
|
||||
dependencies {
|
||||
api libs.objpool
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
# suppress inspection "UnusedProperty" for whole file
|
||||
module.name=utils
|
||||
@@ -1,6 +0,0 @@
|
||||
package mc.utils.pool;
|
||||
|
||||
public interface Passivable {
|
||||
|
||||
void passivate();
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user