package org.infinispan.factories;
import org.infinispan.commons.CacheConfigurationException;
import org.infinispan.factories.annotations.DefaultFactoryFor;
import org.infinispan.remoting.rpc.RpcManager;
import org.infinispan.remoting.rpc.RpcManagerImpl;
/**
* A factory for the RpcManager
*
* @author Manik Surtani (<a href="mailto:manik@jboss.org">manik@jboss.org</a>)
* @since 4.0
*/
@DefaultFactoryFor(classes = RpcManager.class)
public class RpcManagerFactory extends AbstractNamedCacheComponentFactory implements AutoInstantiableFactory {
@Override
public <T> T construct(Class<T> componentType) {
if (!configuration.clustering().cacheMode().isClustered())
return null;
// only do this if we have a transport configured!
if (!globalConfiguration.isClustered())
throw new CacheConfigurationException("Transport should be configured in order to use clustered caches");
return componentType.cast(new RpcManagerImpl());
}
}