Author: jbellis
Date: Sat Oct  9 21:04:03 2010
New Revision: 1006226

URL: http://svn.apache.org/viewvc?rev=1006226&view=rev
Log:
add cli support for column metadata.
patch by Pavel Yaskevich; reviewed by jbellis for CASSANDRA-1578

Modified:
    cassandra/trunk/CHANGES.txt
    cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java

Modified: cassandra/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1006226&r1=1006225&r2=1006226&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Sat Oct  9 21:04:03 2010
@@ -24,6 +24,7 @@ dev
  * log auto-guessed memtable thresholds (CASSANDRA-1595)
  * add ColumnDef support to cli (CASSANDRA-1583)
  * reduce index sample time by 75% (CASSANDRA-1572)
+ * add cli support for column metadata (CASSANDRA-1578)
 
 
 0.7-beta2

Modified: cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java?rev=1006226&r1=1006225&r2=1006226&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java Sat Oct  9 
21:04:03 2010
@@ -520,13 +520,20 @@ public class CliClient 
         return 
getFormatTypeForColumn(getCfDef(keyspace,columnFamily).comparator_type).getString(column.name);
     }
 
-    private AbstractType getFormatTypeForColumn(String compareWith) throws 
IllegalAccessException, InstantiationException, NoSuchFieldException
+    private AbstractType getFormatTypeForColumn(String compareWith)
     {
         AbstractType type;
         try {
             // Get the singleton instance of the AbstractType subclass
             Class c = Class.forName(compareWith);
-            type = (AbstractType) c.getField("instance").get(c);
+            try
+            {
+                type = (AbstractType) c.getField("instance").get(c);
+            }
+            catch (Exception e)
+            {
+                throw new RuntimeException(e.getMessage(), e);
+            }
         } catch (ClassNotFoundException e) {
             type = BytesType.instance;
         }
@@ -1335,23 +1342,23 @@ public class CliClient 
      */
     private AbstractType getValidatorForValue(final CfDef ColumnFamilyDef, 
final byte[] columnNameInBytes)
     {
+        final String defaultValidator = 
ColumnFamilyDef.default_validation_class;
+        
         for (ColumnDef columnDefinition : ColumnFamilyDef.getColumn_metadata())
         {
             final byte[] nameInBytes = columnDefinition.getName();
 
             if (Arrays.equals(nameInBytes, columnNameInBytes))
             {
-                try
-                {
-                    return 
getFormatTypeForColumn(columnDefinition.getValidation_class());
-                }
-                catch (Exception e)
-                {
-                    throw new RuntimeException(e.getMessage(), e);
-                }
+                return 
getFormatTypeForColumn(columnDefinition.getValidation_class());
             }
         }
 
+        if (defaultValidator != null && !defaultValidator.isEmpty()) 
+        {
+            return getFormatTypeForColumn(defaultValidator);
+        }
+
         return null;
     }
 }


Reply via email to