package io.cattle.platform.resource.pool.impl;
import io.cattle.platform.resource.pool.PooledResourceItemGenerator;
import io.cattle.platform.resource.pool.PooledResourceItemGeneratorFactory;
public abstract class AbstractTypeAndQualifierPooledItemGeneratorFactory implements PooledResourceItemGeneratorFactory {
Class<?> typeClass;
String qualifier;
public AbstractTypeAndQualifierPooledItemGeneratorFactory(Class<?> typeClass, String qualifier) {
super();
this.typeClass = typeClass;
this.qualifier = qualifier;
}
@Override
public PooledResourceItemGenerator getGenerator(Object pool, String qualifier) {
if (pool == null || qualifier == null) {
return null;
}
if (typeClass == null && this.qualifier.equals(qualifier)) {
return createGenerator(pool, qualifier);
}
if (typeClass != null && typeClass.isAssignableFrom(pool.getClass()) && this.qualifier.equals(qualifier)) {
return createGenerator(pool, qualifier);
}
return null;
}
protected abstract PooledResourceItemGenerator createGenerator(Object pool, String qualifier);
}