From a905e9b3bcf87b8834128d2e90303d2fb7eefad7 Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Wed, 11 Nov 2009 15:34:40 +0000 Subject: [PATCH] generify AbstractReplicationStrategy construction. patch by jbellis git-svn-id: https://svn.apache.org/repos/asf/incubator/cassandra/trunk@834912 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/cassandra/config/DatabaseDescriptor.java | 7 ++++--- src/java/org/apache/cassandra/service/StorageService.java | 6 ++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java index 6cb152ed26..7bc166a3ce 100644 --- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java +++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java @@ -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 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) Class.forName(replicaPlacementStrategyClassName); } catch (ClassNotFoundException e) { @@ -655,7 +656,7 @@ public class DatabaseDescriptor return endPointSnitch_; } - public static Class getReplicaPlacementStrategyClass() + public static Class getReplicaPlacementStrategyClass() { return replicaPlacementStrategyClass_; } diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java index 80aec25061..726b25b334 100644 --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@ -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 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 constructor = cls.getConstructor(parameterTypes); + replicationStrategy_ = constructor.newInstance(tokenMetadata_, partitioner_, DatabaseDescriptor.getReplicationFactor(), DatabaseDescriptor.getStoragePort()); } catch (Exception e) {