You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by gd...@apache.org on 2010/07/21 17:13:50 UTC

svn commit: r966273 - in /cassandra/trunk: build.xml interface/cassandra.genavro

Author: gdusbabek
Date: Wed Jul 21 15:13:49 2010
New Revision: 966273

URL: http://svn.apache.org/viewvc?rev=966273&view=rev
Log:
break out avro generation. patch by stuhood, reviewed by gdusbabek. CASSANDRA-1186

Modified:
    cassandra/trunk/build.xml
    cassandra/trunk/interface/cassandra.genavro

Modified: cassandra/trunk/build.xml
URL: http://svn.apache.org/viewvc/cassandra/trunk/build.xml?rev=966273&r1=966272&r2=966273&view=diff
==============================================================================
--- cassandra/trunk/build.xml (original)
+++ cassandra/trunk/build.xml Wed Jul 21 15:13:49 2010
@@ -35,7 +35,7 @@
     <property name="interface.dir" value="${basedir}/interface"/>
     <property name="interface.thrift.dir" value="${interface.dir}/thrift"/>
     <property name="interface.thrift.gen-java" value="${interface.thrift.dir}/gen-java"/>
-    <property name="interface.avro.dir" value="${interface.dir}/avro/gen-java"/>
+    <property name="interface.avro.dir" value="${interface.dir}/avro"/>
     <property name="test.dir" value="${basedir}/test"/>
     <property name="test.resources" value="${test.dir}/resources"/>
     <property name="test.classes" value="${build.dir}/test/classes"/>
@@ -167,47 +167,51 @@
     <!--
        Generate avro code
     -->
+    <taskdef name="avro-protocol" classname="org.apache.avro.specific.ProtocolTask">
+      <classpath refid="cassandra.classpath" />
+    </taskdef>
+    <taskdef name="avro-schema" classname="org.apache.avro.specific.SchemaTask">
+      <classpath refid="cassandra.classpath" />
+    </taskdef>
+    <taskdef name="paranamer" classname="com.thoughtworks.paranamer.ant.ParanamerGeneratorTask">
+      <classpath refid="cassandra.classpath" />
+    </taskdef>
+
     <target name="check-avro-generate">
-        <uptodate property="avroUpToDate"
-                  srcfile="${interface.dir}/cassandra.genavro"
-                  targetfile="${interface.avro.dir}/org/apache/cassandra/avro/Cassandra.java" />
-      <taskdef name="protocol"
-               classname="org.apache.avro.specific.ProtocolTask">
-        <classpath refid="cassandra.classpath" />
-      </taskdef>
-      <taskdef name="schema" classname="org.apache.avro.specific.SchemaTask">
-        <classpath refid="cassandra.classpath" />
-      </taskdef>
-      <taskdef name="paranamer" 
-          classname="com.thoughtworks.paranamer.ant.ParanamerGeneratorTask">
-        <classpath refid="cassandra.classpath" />
-      </taskdef>
+        <uptodate property="avroInterfaceUpToDate" srcfile="${interface.dir}/cassandra.genavro"
+                  targetfile="${interface.avro.dir}/cassandra.avpr" />
     </target>
-    <target name="avro-generate" unless="avroUpToDate"
-            depends="init,check-avro-generate">
-      <echo>Generating avro code...</echo>
-      <!-- Generate json schema from genavro IDL -->
-      <java classname="org.apache.avro.tool.Main" fork="true">
-        <classpath refid="cassandra.classpath" />
-        <arg value="genavro" />
-        <arg value="interface/cassandra.genavro" />
-        <arg value="interface/cassandra.avpr" />
-      </java>
 
-      <!-- Generate java code from json protocol schema -->
-      <protocol destdir="${interface.avro.dir}">
-        <fileset dir="${interface.dir}">
-          <include name="**/*.avpr" />
-        </fileset>
-      </protocol>
-  
-      <schema destdir="${interface.avro.dir}">
-        <fileset dir="${interface.dir}">
-          <include name="**/*.avsc" />
-        </fileset>
-      </schema>
+    <target name="avro-generate" depends="avro-interface-generate"
+            description="Generates Java Avro classes for client and internal use." />
+
+    <target name="avro-interface-generate" unless="avroInterfaceUpToDate"
+            depends="init,check-avro-generate">
+            <avromacro protocolname="client" inputfile="${interface.dir}/cassandra.genavro" outputdir="${interface.avro.dir}" />
     </target>
 
+    <macrodef name="avromacro">
+      <attribute name="protocolname" />
+      <attribute name="inputfile" />
+      <attribute name="outputdir" />
+      <sequential>
+        <echo message="Generating Avro @{protocolname} code..." />
+        <mkdir dir="@{outputdir}" />
+        <!-- Generate json schema from genavro IDL -->
+        <java classname="org.apache.avro.tool.Main" fork="true">
+          <classpath refid="cassandra.classpath" />
+          <arg value="genavro" />
+          <arg value="@{inputfile}" />
+          <arg value="@{outputdir}/cassandra.avpr" />
+        </java>
+    
+        <!-- Generate java code from json protocol schema -->
+        <avro-protocol destdir="@{outputdir}/gen-java">
+            <fileset file="@{outputdir}/cassandra.avpr" />
+        </avro-protocol>
+      </sequential>
+    </macrodef>
+
 
     <!--
        Generate thrift code.  We have targets to build java because
@@ -264,12 +268,13 @@
             <classpath refid="cassandra.classpath"/>
         </javac>
 
-	<paranamer sourceDirectory="${interface.avro.dir}"
-		   outputDirectory="${build.classes}"/>
+        <paranamer sourceDirectory="${interface.avro.dir}"
+               outputDirectory="${build.classes}"/>
 
-	<antcall target="createVersionPropFile"/>
+        <antcall target="createVersionPropFile"/>
     </target>
 
+
     <!--
 	The jar target makes cassandra.jar output.
     -->

Modified: cassandra/trunk/interface/cassandra.genavro
URL: http://svn.apache.org/viewvc/cassandra/trunk/interface/cassandra.genavro?rev=966273&r1=966272&r2=966273&view=diff
==============================================================================
--- cassandra/trunk/interface/cassandra.genavro (original)
+++ cassandra/trunk/interface/cassandra.genavro Wed Jul 21 15:13:49 2010
@@ -17,7 +17,7 @@
  */
 
 /**
- * Cassandra protocol
+ * Cassandra client interface
  */
 @namespace("org.apache.cassandra.avro")