generify AbstractReplicationStrategy construction. patch by jbellis

git-svn-id: https://svn.apache.org/repos/asf/incubator/cassandra/trunk@834912 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jonathan Ellis 2009-11-11 15:34:40 +00:00
parent a0f620e124
commit a905e9b3bc
2 changed files with 8 additions and 5 deletions

View File

@ -24,6 +24,7 @@ import org.apache.cassandra.db.marshal.BytesType;
import org.apache.cassandra.db.marshal.UTF8Type;
import org.apache.cassandra.dht.IPartitioner;
import org.apache.cassandra.locator.IEndPointSnitch;
import org.apache.cassandra.locator.AbstractReplicationStrategy;
import org.apache.cassandra.utils.FileUtils;
import org.apache.cassandra.utils.XMLUtils;
import org.apache.log4j.Logger;
@ -87,7 +88,7 @@ public class DatabaseDescriptor
private static IEndPointSnitch endPointSnitch_;
private static Class replicaPlacementStrategyClass_;
private static Class<AbstractReplicationStrategy> replicaPlacementStrategyClass_;
/* if the size of columns or super-columns are more than this, indexing will kick in */
private static int columnIndexSizeInKB_;
@ -418,7 +419,7 @@ public class DatabaseDescriptor
}
try
{
replicaPlacementStrategyClass_ = Class.forName(replicaPlacementStrategyClassName);
replicaPlacementStrategyClass_ = (Class<AbstractReplicationStrategy>) Class.forName(replicaPlacementStrategyClassName);
}
catch (ClassNotFoundException e)
{
@ -655,7 +656,7 @@ public class DatabaseDescriptor
return endPointSnitch_;
}
public static Class getReplicaPlacementStrategyClass()
public static Class<AbstractReplicationStrategy> getReplicaPlacementStrategyClass()
{
return replicaPlacementStrategyClass_;
}

View File

@ -20,6 +20,7 @@ package org.apache.cassandra.service;
import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.lang.reflect.Constructor;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
@ -227,11 +228,12 @@ public final class StorageService implements IEndPointStateChangeSubscriber, Sto
StageManager.registerStage(StorageService.readStage_,
new MultiThreadedStage(StorageService.readStage_, DatabaseDescriptor.getConcurrentReaders()));
Class cls = DatabaseDescriptor.getReplicaPlacementStrategyClass();
Class<AbstractReplicationStrategy> cls = DatabaseDescriptor.getReplicaPlacementStrategyClass();
Class [] parameterTypes = new Class[] { TokenMetadata.class, IPartitioner.class, int.class, int.class};
try
{
replicationStrategy_ = (AbstractReplicationStrategy) cls.getConstructor(parameterTypes).newInstance(tokenMetadata_, partitioner_, DatabaseDescriptor.getReplicationFactor(), DatabaseDescriptor.getStoragePort());
Constructor<AbstractReplicationStrategy> constructor = cls.getConstructor(parameterTypes);
replicationStrategy_ = constructor.newInstance(tokenMetadata_, partitioner_, DatabaseDescriptor.getReplicationFactor(), DatabaseDescriptor.getStoragePort());
}
catch (Exception e)
{