package org.infinispan.factories;
import org.infinispan.factories.annotations.DefaultFactoryFor;
import org.infinispan.partitionhandling.impl.AvailablePartitionHandlingManager;
import org.infinispan.partitionhandling.impl.PartitionHandlingManager;
import org.infinispan.partitionhandling.impl.PartitionHandlingManagerImpl;
/**
* @author Dan Berindei
* @since 7.0
*/
@DefaultFactoryFor(classes = PartitionHandlingManager.class)
public class PartitionHandlingManagerFactory extends AbstractNamedCacheComponentFactory implements AutoInstantiableFactory {
@Override
@SuppressWarnings("unchecked")
public <T> T construct(Class<T> componentType) {
if (configuration.clustering().partitionHandling().enabled()) {
if (configuration.clustering().cacheMode().isDistributed() ||
configuration.clustering().cacheMode().isReplicated()) {
return (T) new PartitionHandlingManagerImpl();
}
}
return (T) AvailablePartitionHandlingManager.getInstance();
}
}