Author: jbellis
Date: Fri Dec  3 14:25:24 2010
New Revision: 1041834

URL: http://svn.apache.org/viewvc?rev=1041834&view=rev
Log:
cli support index type enum names
patch by Pavel Yaskevich; reviewed by jbellis for CASSANDRA-1810

Modified:
    cassandra/branches/cassandra-0.7/CHANGES.txt
    
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java
    
cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/cli/CliTest.java

Modified: cassandra/branches/cassandra-0.7/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/CHANGES.txt?rev=1041834&r1=1041833&r2=1041834&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.7/CHANGES.txt Fri Dec  3 14:25:24 2010
@@ -25,6 +25,7 @@ dev
  * fix range queries against wrapped range (CASSANDRA-1781)
  * fix consistencylevel calculations for NetworkTopologyStrategy
    (CASSANDRA-1804)
+ * cli support index type enum names (CASSANDRA-1810)
 
 
 0.7.0-rc1

Modified: 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java?rev=1041834&r1=1041833&r2=1041834&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java
 (original)
+++ 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java
 Fri Dec  3 14:25:24 2010
@@ -1414,20 +1414,28 @@ public class CliClient extends CliUserHe
      */
     private IndexType getIndexTypeFromString(String indexTypeAsString)
     {
-        Integer indexTypeId;
         IndexType indexType;
 
-        try {
-            indexTypeId = new Integer(indexTypeAsString);
+        try
+        {
+            indexType = IndexType.findByValue(new Integer(indexTypeAsString));
         }
-        catch (NumberFormatException e) {
-            throw new RuntimeException("Could not convert " + 
indexTypeAsString + " into Integer.");
+        catch (NumberFormatException e)
+        {
+            try
+            {
+                // if this is not an integer lets try to get IndexType by name
+                indexType = IndexType.valueOf(indexTypeAsString);
+            }
+            catch (IllegalArgumentException ie)
+            {
+                throw new RuntimeException("IndexType '" + indexTypeAsString + 
"' is unsupported.");
+            }
         }
 
-        indexType = IndexType.findByValue(indexTypeId);
-
-        if (indexType == null) {
-            throw new RuntimeException(indexTypeAsString + " is unsupported.");
+        if (indexType == null)
+        {
+            throw new RuntimeException("IndexType '" + indexTypeAsString + "' 
is unsupported.");
         }
 
         return indexType;

Modified: 
cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/cli/CliTest.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/cli/CliTest.java?rev=1041834&r1=1041833&r2=1041834&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/cli/CliTest.java
 (original)
+++ 
cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/cli/CliTest.java
 Fri Dec  3 14:25:24 2010
@@ -36,7 +36,7 @@ public class CliTest extends CleanupHelp
     // please add new statements here so they could be auto-runned by this 
test.
     private String[] statements = {
         "use TestKeySpace;",
-        "create column family CF1 with comparator=UTF8Type and 
column_metadata=[{ column_name:world, validation_class:IntegerType, 
index_type:0, index_name:IdxName }, { column_name:world2, 
validation_class:LongType, index_type:0, index_name:LongIdxName}];",
+        "create column family CF1 with comparator=UTF8Type and 
column_metadata=[{ column_name:world, validation_class:IntegerType, 
index_type:0, index_name:IdxName }, { column_name:world2, 
validation_class:LongType, index_type:KEYS, index_name:LongIdxName}];",
         "set CF1[hello][world] = 123848374878933948398384;",
         "get CF1[hello][world];",
         "set CF1[hello][world2] = 15;",


Reply via email to