All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.infinispan.factories.StreamManagerFactory Maven / Gradle / Ivy

package org.infinispan.factories;

import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.factories.annotations.DefaultFactoryFor;
import org.infinispan.stream.impl.ClusterStreamManager;
import org.infinispan.stream.impl.ClusterStreamManagerImpl;
import org.infinispan.stream.impl.LocalStreamManager;
import org.infinispan.stream.impl.LocalStreamManagerImpl;
import org.infinispan.stream.impl.PartitionAwareClusterStreamManager;

/**
 * Factory that allows creation of a {@link LocalStreamManager} or {@link ClusterStreamManager} based on the provided
 * configuration.
 *
 * @author wburns
 * @since 8.0
 */
@DefaultFactoryFor(classes = {LocalStreamManager.class, ClusterStreamManager.class})
public class StreamManagerFactory extends AbstractNamedCacheComponentFactory implements AutoInstantiableFactory {
   @Override
   public  T construct(Class componentType) {
      CacheMode cacheMode = configuration.clustering().cacheMode();
      if (cacheMode.isDistributed() || cacheMode.isReplicated()) {
         if (componentType.equals(LocalStreamManager.class)) {
            return componentType.cast(new LocalStreamManagerImpl<>());
         }
         if (componentType.equals(ClusterStreamManager.class)) {
            if (configuration.clustering().partitionHandling().enabled()) {
               return componentType.cast(new PartitionAwareClusterStreamManager<>());
            } else {
               return componentType.cast(new ClusterStreamManagerImpl<>());
            }
         }
      }
      return null;
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy