Author: gdusbabek
Date: Tue Oct  5 15:43:41 2010
New Revision: 1004678

URL: http://svn.apache.org/viewvc?rev=1004678&view=rev
Log:
use avro includes and aliases in order to have less duplicated structures. 
patch by stuhood, reviewed by gdusbabek. CASSANDRA-1436

Added:
    cassandra/trunk/lib/avro-1.4.0-fixes.jar
      - copied, changed from r1004454, cassandra/trunk/lib/avro-1.4.0-rc4.jar
    cassandra/trunk/lib/avro-1.4.0-sources-fixes.jar
Removed:
    cassandra/trunk/lib/avro-1.4.0-rc4.jar
Modified:
    cassandra/trunk/build.xml
    cassandra/trunk/interface/cassandra.genavro
    cassandra/trunk/src/avro/internode.genavro
    cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java
    cassandra/trunk/src/java/org/apache/cassandra/config/ColumnDefinition.java
    cassandra/trunk/src/java/org/apache/cassandra/config/KSMetaData.java
    cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java
    cassandra/trunk/src/java/org/apache/cassandra/db/migration/Migration.java
    
cassandra/trunk/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java

Modified: cassandra/trunk/build.xml
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/build.xml?rev=1004678&r1=1004677&r2=1004678&view=diff
==============================================================================
--- cassandra/trunk/build.xml (original)
+++ cassandra/trunk/build.xml Tue Oct  5 15:43:41 2010
@@ -187,8 +187,12 @@
 
     <target name="avro-interface-generate-client" 
unless="avroInterfaceUpToDate"
             depends="init,check-avro-generate,ivy-retrieve-build">
+      <!-- A copy for interested clients. TODO: Jar this stuff up. -->
       <avromacro protocolname="cassandra" 
inputfile="${interface.dir}/cassandra.genavro"
-                 jsondir="${interface.avro.dir}" 
outputdir="${interface.avro.dir}" />
+          jsondir="${interface.avro.dir}" outputdir="${interface.avro.dir}" />
+      <!-- A copy for our build. -->
+      <avromacro protocolname="api" 
inputfile="${interface.dir}/cassandra.genavro"
+                 jsondir="${build.dir}" outputdir="${build.src}" />
     </target>
     <target name="avro-interface-generate-internode" 
unless="avroINProtoUpToDate"
             depends="init,check-avro-generate,ivy-retrieve-build">
@@ -271,7 +275,6 @@
             <src path="${build.src.java}"/>
             <src path="${build.src.gen-java}"/>
             <src path="${interface.thrift.dir}/gen-java"/>
-            <src path="${interface.avro.dir}/gen-java"/>
                 <classpath refid="cassandra.classpath"/>
         </javac>
         

Modified: cassandra/trunk/interface/cassandra.genavro
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/interface/cassandra.genavro?rev=1004678&r1=1004677&r2=1004678&view=diff
==============================================================================
--- cassandra/trunk/interface/cassandra.genavro (original)
+++ cassandra/trunk/interface/cassandra.genavro Tue Oct  5 15:43:41 2010
@@ -117,13 +117,13 @@ protocol Cassandra {
         union { Deletion, null } deletion;
     }
 
-    /* NB: Until AVRO-495: must be kept sync'd with 
src/avro/internode.genavro. */
+    @aliases(["org.apache.cassandra.config.avro.IndexType"])
     enum IndexType {
         KEYS
     }
 
     /* describes a column in a column family. */
-    /* NB: Until AVRO-495: must be kept sync'd with 
src/avro/internode.genavro. */
+    @aliases(["org.apache.cassandra.config.avro.ColumnDef"])
     record ColumnDef {
         bytes name;
         string validation_class;
@@ -135,7 +135,7 @@ protocol Cassandra {
      * describes a keyspace:
      * NB: the id field is ignored during column family creation: the server 
will choose an appropriate value.
      */
-    /* NB: Until AVRO-495: must be kept sync'd with 
src/avro/internode.genavro. */
+    @aliases(["org.apache.cassandra.config.avro.CfDef"])
     record CfDef {
         string keyspace;
         string name;
@@ -156,7 +156,7 @@ protocol Cassandra {
     }
 
     /* describes a keyspace. */
-    /* NB: Until AVRO-495: must be kept sync'd with 
src/avro/internode.genavro. */
+    @aliases(["org.apache.cassandra.config.avro.KsDef"])
     record KsDef {
         string name;
         string strategy_class;

Copied: cassandra/trunk/lib/avro-1.4.0-fixes.jar (from r1004454, 
cassandra/trunk/lib/avro-1.4.0-rc4.jar)
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/lib/avro-1.4.0-fixes.jar?p2=cassandra/trunk/lib/avro-1.4.0-fixes.jar&p1=cassandra/trunk/lib/avro-1.4.0-rc4.jar&r1=1004454&r2=1004678&rev=1004678&view=diff
==============================================================================
Files cassandra/trunk/lib/avro-1.4.0-rc4.jar (original) and 
cassandra/trunk/lib/avro-1.4.0-fixes.jar Tue Oct  5 15:43:41 2010 differ

Added: cassandra/trunk/lib/avro-1.4.0-sources-fixes.jar
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/lib/avro-1.4.0-sources-fixes.jar?rev=1004678&view=auto
==============================================================================
Files cassandra/trunk/lib/avro-1.4.0-sources-fixes.jar (added) and 
cassandra/trunk/lib/avro-1.4.0-sources-fixes.jar Tue Oct  5 15:43:41 2010 differ

Modified: cassandra/trunk/src/avro/internode.genavro
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/avro/internode.genavro?rev=1004678&r1=1004677&r2=1004678&view=diff
==============================================================================
--- cassandra/trunk/src/avro/internode.genavro (original)
+++ cassandra/trunk/src/avro/internode.genavro Tue Oct  5 15:43:41 2010
@@ -22,63 +22,20 @@
 @namespace("org.apache.cassandra")
 
 protocol InterNode {
+    // import the public client API
+    import idl "../../interface/cassandra.genavro";
+
     @namespace("org.apache.cassandra.utils.avro")
     fixed UUID(16);
 
-    /* NB: Until AVRO-495: must be kept sync'd with the public IndexType. */
-    @namespace("org.apache.cassandra.config.avro")
-    enum IndexType {
-        KEYS
-    }
-
-    /* NB: Until AVRO-495: must be kept sync'd with ColumnDefinition and the 
public ColumnDef. */
-    @namespace("org.apache.cassandra.config.avro")
-    record ColumnDef {
-        bytes name;
-        string validation_class;
-        union { IndexType, null } index_type;
-        union { string, null } index_name;
-    }
-
-    /* NB: Until AVRO-495: must be kept sync'd with CFMetaData and the public 
CfDef. */
-    @namespace("org.apache.cassandra.config.avro")
-    record CfDef {
-        string keyspace;
-        string name;
-        union { string, null } column_type;
-        union { string, null } comparator_type;
-        union { string, null } subcomparator_type;
-        union { string, null } comment;
-        union { double, null } row_cache_size;
-        union { boolean, null } preload_row_cache;
-        union { double, null } key_cache_size;
-        union { double, null } read_repair_chance;
-        union { int, null } gc_grace_seconds;
-        union { null, string } default_validation_class = null;
-        union { null, int } min_compaction_threshold = null;
-        union { null, int } max_compaction_threshold = null;
-        union { int, null } id;
-        union { array<ColumnDef>, null } column_metadata;
-    }
-
-    /* NB: Until AVRO-495: must be kept sync'd with KSMetaData and the public 
KsDef. */
-    @namespace("org.apache.cassandra.config.avro")
-    record KsDef {
-        string name;
-        string strategy_class;
-        union{ map<string>, null } strategy_options;
-        int replication_factor;
-        array<CfDef> cf_defs;
-    }
-
     @namespace("org.apache.cassandra.db.migration.avro")
     record AddColumnFamily {
-        org.apache.cassandra.config.avro.CfDef cf;
+        org.apache.cassandra.avro.CfDef cf;
     }
 
     @namespace("org.apache.cassandra.db.migration.avro")
     record AddKeyspace {
-        org.apache.cassandra.config.avro.KsDef ks;
+        org.apache.cassandra.avro.KsDef ks;
     }
 
     @namespace("org.apache.cassandra.db.migration.avro")
@@ -110,14 +67,14 @@ protocol InterNode {
     
     @namespace("org.apache.cassandra.db.migration.avro")
     record UpdateKeyspace {
-        org.apache.cassandra.config.avro.KsDef oldKs;
-        org.apache.cassandra.config.avro.KsDef newKs;
+        org.apache.cassandra.avro.KsDef oldKs;
+        org.apache.cassandra.avro.KsDef newKs;
     }
     
     @namespace("org.apache.cassandra.db.migration.avro")
     record UpdateColumnFamily {
-        org.apache.cassandra.config.avro.CfDef oldCf;
-        org.apache.cassandra.config.avro.CfDef newCf;
+        org.apache.cassandra.avro.CfDef oldCf;
+        org.apache.cassandra.avro.CfDef newCf;
     }
 
     @namespace("org.apache.cassandra.db.migration.avro")

Modified: cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java?rev=1004678&r1=1004677&r2=1004678&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java Tue 
Oct  5 15:43:41 2010
@@ -24,20 +24,23 @@ import java.util.concurrent.atomic.Atomi
 
 import com.google.common.collect.BiMap;
 import com.google.common.collect.HashBiMap;
+import org.apache.cassandra.avro.ColumnDef;
 import org.apache.commons.lang.builder.EqualsBuilder;
 import org.apache.commons.lang.builder.HashCodeBuilder;
 
 import org.apache.avro.util.Utf8;
-import org.apache.cassandra.config.avro.ColumnDef;
 import org.apache.cassandra.db.*;
+
+import org.apache.cassandra.db.marshal.TimeUUIDType;
+import org.apache.cassandra.db.marshal.UTF8Type;
+import org.apache.cassandra.io.SerDeUtils;
+import org.apache.cassandra.db.ColumnFamilyType;
+import org.apache.cassandra.db.ClockType;
 import org.apache.cassandra.db.clock.AbstractReconciler;
 import org.apache.cassandra.db.clock.TimestampReconciler;
 import org.apache.cassandra.db.marshal.AbstractType;
 import org.apache.cassandra.db.marshal.BytesType;
-import org.apache.cassandra.db.marshal.TimeUUIDType;
-import org.apache.cassandra.db.marshal.UTF8Type;
 import org.apache.cassandra.db.migration.Migration;
-import org.apache.cassandra.io.SerDeUtils;
 import org.apache.cassandra.utils.FBUtilities;
 import org.apache.cassandra.utils.Pair;
 
@@ -297,9 +300,19 @@ public final class CFMetaData
         cfIdMap.remove(new Pair<String, String>(cfm.tableName, cfm.cfName));
     }
 
-    public org.apache.cassandra.config.avro.CfDef deflate()
+    // a quick and dirty pretty printer for describing the column family...
+    //TODO: Make it prettier, use it in the CLI
+    public String pretty()
+    {
+        return tableName + "." + cfName + "\n"
+               + "Column Family Type: " + cfType + "\n"
+               + "Column Family Clock Type: " + clockType + "\n"
+               + "Columns Sorted By: " + comparator + "\n";
+    }
+
+    public org.apache.cassandra.avro.CfDef deflate()
     {
-        org.apache.cassandra.config.avro.CfDef cf = new 
org.apache.cassandra.config.avro.CfDef();
+        org.apache.cassandra.avro.CfDef cf = new 
org.apache.cassandra.avro.CfDef();
         cf.id = cfId;
         cf.keyspace = new Utf8(tableName);
         cf.name = new Utf8(cfName);
@@ -317,13 +330,13 @@ public final class CFMetaData
         cf.min_compaction_threshold = minCompactionThreshold;
         cf.max_compaction_threshold = maxCompactionThreshold;
         cf.column_metadata = SerDeUtils.createArray(column_metadata.size(),
-                                                    
org.apache.cassandra.config.avro.ColumnDef.SCHEMA$);
+                                                    
org.apache.cassandra.avro.ColumnDef.SCHEMA$);
         for (ColumnDefinition cd : column_metadata.values())
             cf.column_metadata.add(cd.deflate());
         return cf;
     }
 
-    public static CFMetaData inflate(org.apache.cassandra.config.avro.CfDef cf)
+    public static CFMetaData inflate(org.apache.cassandra.avro.CfDef cf)
     {
         AbstractType comparator;
         AbstractType subcolumnComparator = null;

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/config/ColumnDefinition.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/config/ColumnDefinition.java?rev=1004678&r1=1004677&r2=1004678&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/config/ColumnDefinition.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/config/ColumnDefinition.java 
Tue Oct  5 15:43:41 2010
@@ -75,18 +75,18 @@ public class ColumnDefinition {
         return result;
     }
 
-    public org.apache.cassandra.config.avro.ColumnDef deflate()
+    public org.apache.cassandra.avro.ColumnDef deflate()
     {
-        org.apache.cassandra.config.avro.ColumnDef cd = new 
org.apache.cassandra.config.avro.ColumnDef();
+        org.apache.cassandra.avro.ColumnDef cd = new 
org.apache.cassandra.avro.ColumnDef();
         cd.name = ByteBuffer.wrap(name);
         cd.validation_class = new Utf8(validator.getClass().getName());
         cd.index_type = index_type == null ? null :
-            Enum.valueOf(org.apache.cassandra.config.avro.IndexType.class, 
index_type.name());
+            Enum.valueOf(org.apache.cassandra.avro.IndexType.class, 
index_type.name());
         cd.index_name = index_name == null ? null : new Utf8(index_name);
         return cd;
     }
 
-    public static ColumnDefinition 
inflate(org.apache.cassandra.config.avro.ColumnDef cd)
+    public static ColumnDefinition inflate(org.apache.cassandra.avro.ColumnDef 
cd)
     {
         byte[] name = new byte[cd.name.remaining()];
         cd.name.get(name, 0, name.length);

Modified: cassandra/trunk/src/java/org/apache/cassandra/config/KSMetaData.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/config/KSMetaData.java?rev=1004678&r1=1004677&r2=1004678&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/config/KSMetaData.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/config/KSMetaData.java Tue 
Oct  5 15:43:41 2010
@@ -71,9 +71,9 @@ public final class KSMetaData
         return cfMetaData;
     }
         
-    public org.apache.cassandra.config.avro.KsDef deflate()
+    public org.apache.cassandra.avro.KsDef deflate()
     {
-        org.apache.cassandra.config.avro.KsDef ks = new 
org.apache.cassandra.config.avro.KsDef();
+        org.apache.cassandra.avro.KsDef ks = new 
org.apache.cassandra.avro.KsDef();
         ks.name = new Utf8(name);
         ks.strategy_class = new Utf8(strategyClass.getName());
         if (strategyOptions != null)
@@ -85,13 +85,13 @@ public final class KSMetaData
             }
         }
         ks.replication_factor = replicationFactor;
-        ks.cf_defs = SerDeUtils.createArray(cfMetaData.size(), 
org.apache.cassandra.config.avro.CfDef.SCHEMA$);
+        ks.cf_defs = SerDeUtils.createArray(cfMetaData.size(), 
org.apache.cassandra.avro.CfDef.SCHEMA$);
         for (CFMetaData cfm : cfMetaData.values())
             ks.cf_defs.add(cfm.deflate());
         return ks;
     }
 
-    public static KSMetaData inflate(org.apache.cassandra.config.avro.KsDef ks)
+    public static KSMetaData inflate(org.apache.cassandra.avro.KsDef ks)
     {
         Class<AbstractReplicationStrategy> repStratClass;
         try
@@ -114,7 +114,7 @@ public final class KSMetaData
         }
         int cfsz = (int)ks.cf_defs.size();
         CFMetaData[] cfMetaData = new CFMetaData[cfsz];
-        Iterator<org.apache.cassandra.config.avro.CfDef> cfiter = 
ks.cf_defs.iterator();
+        Iterator<org.apache.cassandra.avro.CfDef> cfiter = 
ks.cf_defs.iterator();
         for (int i = 0; i < cfsz; i++)
             cfMetaData[i] = CFMetaData.inflate(cfiter.next());
 

Modified: cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java?rev=1004678&r1=1004677&r2=1004678&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java Tue Oct  5 
15:43:41 2010
@@ -70,7 +70,7 @@ public class DefsTable
         rm.add(new QueryPath(Migration.SCHEMA_CF,
                              null,
                              DEFINITION_SCHEMA_COLUMN_NAME),
-                             
org.apache.cassandra.config.avro.KsDef.SCHEMA$.toString().getBytes(UTF_8),
+                             
org.apache.cassandra.avro.KsDef.SCHEMA$.toString().getBytes(UTF_8),
                              now);
         rm.apply();
 
@@ -102,7 +102,7 @@ public class DefsTable
         {
             if (Arrays.equals(column.name(), DEFINITION_SCHEMA_COLUMN_NAME))
                 continue;
-            org.apache.cassandra.config.avro.KsDef ks = 
SerDeUtils.deserialize(schema, column.value(), new 
org.apache.cassandra.config.avro.KsDef());
+            org.apache.cassandra.avro.KsDef ks = 
SerDeUtils.deserialize(schema, column.value(), new 
org.apache.cassandra.avro.KsDef());
             keyspaces.add(KSMetaData.inflate(ks));
         }
         return keyspaces;

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/migration/Migration.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/migration/Migration.java?rev=1004678&r1=1004677&r2=1004678&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/migration/Migration.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/migration/Migration.java 
Tue Oct  5 15:43:41 2010
@@ -223,7 +223,7 @@ public abstract class Migration
         rm.add(new QueryPath(SCHEMA_CF,
                              null,
                              DefsTable.DEFINITION_SCHEMA_COLUMN_NAME),
-                             
org.apache.cassandra.config.avro.KsDef.SCHEMA$.toString().getBytes(UTF_8),
+                             
org.apache.cassandra.avro.KsDef.SCHEMA$.toString().getBytes(UTF_8),
                              now);
         return rm;
     }

Modified: 
cassandra/trunk/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java?rev=1004678&r1=1004677&r2=1004678&view=diff
==============================================================================
--- 
cassandra/trunk/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java
 (original)
+++ 
cassandra/trunk/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java
 Tue Oct  5 15:43:41 2010
@@ -59,7 +59,7 @@ public class DatabaseDescriptorTest
         {
             for (CFMetaData cfm : 
DatabaseDescriptor.getTableMetaData(table).values())
             {
-                CFMetaData cfmDupe = CFMetaData.inflate(serDe(cfm.deflate(), 
new org.apache.cassandra.config.avro.CfDef()));
+                CFMetaData cfmDupe = CFMetaData.inflate(serDe(cfm.deflate(), 
new org.apache.cassandra.avro.CfDef()));
                 assert cfmDupe != null;
                 assert cfmDupe.equals(cfm);
             }
@@ -71,7 +71,7 @@ public class DatabaseDescriptorTest
     {
         for (KSMetaData ksm : DatabaseDescriptor.tables.values())
         {
-            KSMetaData ksmDupe = KSMetaData.inflate(serDe(ksm.deflate(), new 
org.apache.cassandra.config.avro.KsDef()));
+            KSMetaData ksmDupe = KSMetaData.inflate(serDe(ksm.deflate(), new 
org.apache.cassandra.avro.KsDef()));
             assert ksmDupe != null;
             assert ksmDupe.equals(ksm);
         }


Reply via email to