THRIFT-166. java: Java tests should be in lib/java/test/
THRIFT-221. java: Make java build classpath more dynamic and configurable

This issue moves all the tests from test/java to lib/java/test/src and combines the build files. In addition, rather than continue on with the same busted approach to finding dependent jars for the tests, THRIFT-221 has been implemented, allowing the user to specify a .thrift-build.properties file in their home directory that contains additional classpath entries. 

As a result of this patch, "make check" does not currently work as it is expected to. This will be resolved in a follow-up commit.

git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@738695 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/aclocal/ax_java.m4 b/aclocal/ax_java.m4
index 70ec2c3..abff8c6 100644
--- a/aclocal/ax_java.m4
+++ b/aclocal/ax_java.m4
@@ -32,7 +32,7 @@
 dnl with some compilers like guavac).
 
 AC_DEFUN([AX_PROG_JAVAC],[
-test -z "$JAVAC" && AC_CHECK_PROGS(JAVAC, "gcj -C" guavac jikes javac)
+test -z "$JAVAC" && AC_CHECK_PROGS(JAVAC, "gcj -C" guavac javac)
 test -z "$JAVAC" && AC_MSG_ERROR([no acceptable Java compiler found in \$PATH])
 AX_PROG_JAVAC_WORKS
 ])
diff --git a/lib/java/build.xml b/lib/java/build.xml
index 6f9d0b0..1215de1 100644
--- a/lib/java/build.xml
+++ b/lib/java/build.xml
@@ -2,13 +2,25 @@
 
   <description>Thrift Build File</description>
 
+  <property name="gen" location="gen-java" />
+  <property name="genbean" location="gen-javabean" />
+
   <property name="src" location="src" />
   <property name="build" location="build" />
   <property name="install.path" value="/usr/local/lib" />
+  <property name="src.test" location="test" />
+  <property name="build.test" location="${build}/test" />
 
+  <property name="test.thrift.home" location="../../test"/>
+
+  <property file="${user.home}/.thrift-build.properties" />
+  
+  <property name="cpath" location="libthrift.jar:${thrift.extra.cpath}" />
+  
   <target name="init">
     <tstamp />
     <mkdir dir="${build}"/>
+    <mkdir dir="${build.test}" />
   </target>
 
   <target name="compile" depends="init">
@@ -27,7 +39,46 @@
 
   <target name="clean">
     <delete dir="${build}" />
+    <delete dir="${gen}"/>
+    <delete dir="${genbean}"/>
     <delete file="libthrift.jar" />
   </target>
 
+  <target name="compile-test" description="Build the test suite classes" depends="generate,dist">
+    <javac debug="true" srcdir="${gen}" destdir="${build.test}" classpath="${cpath}" />
+    <javac debug="true" srcdir="${genbean}" destdir="${build.test}" classpath="${cpath}" />
+    <javac debug="true" srcdir="${src.test}" destdir="${build.test}" classpath="${cpath}:${gen}" />
+  </target>
+
+  <target name="test" description="Run the full test suite" depends="compile-test">
+    <java classname="org.apache.thrift.test.JSONProtoTest"
+      classpath="${cpath}:${build.test}" failonerror="true" />
+    <java classname="org.apache.thrift.test.IdentityTest"
+      classpath="${cpath}:${build.test}" failonerror="true" />
+    <java classname="org.apache.thrift.test.EqualityTest"
+      classpath="${cpath}:${build.test}" failonerror="true" />
+    <java classname="org.apache.thrift.test.ToStringTest"
+      classpath="${cpath}:${build.test}" failonerror="true" />
+    <java classname="org.apache.thrift.test.DeepCopyTest"
+      classpath="${cpath}:${build.test}" failonerror="true" />
+    <java classname="org.apache.thrift.test.JavaBeansTest"
+      classpath="${cpath}:${build.test}" failonerror="true" />
+  </target>
+
+  <target name="generate">
+    <exec executable="../../compiler/cpp/thrift">
+      <arg line="--gen java:hashcode ${test.thrift.home}/ThriftTest.thrift" />
+    </exec>
+    <exec executable="../../compiler/cpp/thrift">
+      <arg line="--gen java:hashcode ${test.thrift.home}/DebugProtoTest.thrift" />
+    </exec>
+    <exec executable="../../compiler/cpp/thrift">
+      <arg line="--gen java:hashcode ${test.thrift.home}/OptionalRequiredTest.thrift" />
+    </exec>
+    <exec executable="../../compiler/cpp/thrift">
+      <arg line="--gen java:beans,nocamel ${test.thrift.home}/JavaBeansTest.thrift" />
+    </exec>
+  </target>
+
+
 </project>
diff --git a/test/java/TestClient b/lib/java/test/TestClient
similarity index 100%
rename from test/java/TestClient
rename to lib/java/test/TestClient
diff --git a/test/java/TestNonblockingServer b/lib/java/test/TestNonblockingServer
similarity index 100%
rename from test/java/TestNonblockingServer
rename to lib/java/test/TestNonblockingServer
diff --git a/test/java/TestServer b/lib/java/test/TestServer
similarity index 100%
rename from test/java/TestServer
rename to lib/java/test/TestServer
diff --git a/test/java/src/DeepCopyTest.java b/lib/java/test/org/apache/thrift/test/DeepCopyTest.java
similarity index 100%
rename from test/java/src/DeepCopyTest.java
rename to lib/java/test/org/apache/thrift/test/DeepCopyTest.java
diff --git a/test/java/src/EqualityTest.java b/lib/java/test/org/apache/thrift/test/EqualityTest.java
similarity index 100%
rename from test/java/src/EqualityTest.java
rename to lib/java/test/org/apache/thrift/test/EqualityTest.java
diff --git a/test/java/src/IdentityTest.java b/lib/java/test/org/apache/thrift/test/IdentityTest.java
similarity index 100%
rename from test/java/src/IdentityTest.java
rename to lib/java/test/org/apache/thrift/test/IdentityTest.java
diff --git a/test/java/src/JSONProtoTest.java b/lib/java/test/org/apache/thrift/test/JSONProtoTest.java
similarity index 100%
rename from test/java/src/JSONProtoTest.java
rename to lib/java/test/org/apache/thrift/test/JSONProtoTest.java
diff --git a/test/java/src/JavaBeansTest.java b/lib/java/test/org/apache/thrift/test/JavaBeansTest.java
similarity index 100%
rename from test/java/src/JavaBeansTest.java
rename to lib/java/test/org/apache/thrift/test/JavaBeansTest.java
diff --git a/test/java/src/OverloadNonblockingServer.java b/lib/java/test/org/apache/thrift/test/OverloadNonblockingServer.java
similarity index 100%
rename from test/java/src/OverloadNonblockingServer.java
rename to lib/java/test/org/apache/thrift/test/OverloadNonblockingServer.java
diff --git a/test/java/src/TestClient.java b/lib/java/test/org/apache/thrift/test/TestClient.java
similarity index 100%
rename from test/java/src/TestClient.java
rename to lib/java/test/org/apache/thrift/test/TestClient.java
diff --git a/test/java/src/TestNonblockingServer.java b/lib/java/test/org/apache/thrift/test/TestNonblockingServer.java
similarity index 100%
rename from test/java/src/TestNonblockingServer.java
rename to lib/java/test/org/apache/thrift/test/TestNonblockingServer.java
diff --git a/test/java/src/TestServer.java b/lib/java/test/org/apache/thrift/test/TestServer.java
similarity index 100%
rename from test/java/src/TestServer.java
rename to lib/java/test/org/apache/thrift/test/TestServer.java
diff --git a/test/java/src/ToStringTest.java b/lib/java/test/org/apache/thrift/test/ToStringTest.java
similarity index 100%
rename from test/java/src/ToStringTest.java
rename to lib/java/test/org/apache/thrift/test/ToStringTest.java
diff --git a/test/java/build.xml b/test/java/build.xml
deleted file mode 100644
index b779663..0000000
--- a/test/java/build.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<project name="thrifttest" default="test" basedir=".">
-
-  <description>Thrift Test Build File</description>
-
-  <property name="src" location="src" />
-  <property name="gen" location="gen-java" />
-  <property name="genbean" location="gen-javabean" />
-  <property name="build" location="build" />
-  <property name="cpath" location="../../lib/java/libthrift.jar:/usr/share/java/commons-lang-2.3.jar" />
-  <property name="testjar" location="thrifttest.jar" />
-
-  <target name="init">
-    <tstamp />
-    <mkdir dir="${build}"/>
-  </target>
-
-  <target name="generate">
-    <exec executable="../../compiler/cpp/thrift">
-      <arg line="--gen java:hashcode ../ThriftTest.thrift" />
-    </exec>
-    <exec executable="../../compiler/cpp/thrift">
-      <arg line="--gen java:hashcode ../DebugProtoTest.thrift" />
-    </exec>
-    <exec executable="../../compiler/cpp/thrift">
-      <arg line="--gen java:hashcode ../OptionalRequiredTest.thrift" />
-    </exec>
-    <exec executable="../../compiler/cpp/thrift">
-      <arg line="--gen java:beans,nocamel ../JavaBeansTest.thrift" />
-    </exec>
-  </target>
-
-  <target name="compileonly">
-    <javac debug="true" srcdir="${gen}" destdir="${build}" classpath="${cpath}" />
-    <javac debug="true" srcdir="${genbean}" destdir="${build}" classpath="${cpath}" />
-    <javac debug="true" srcdir="${src}" destdir="${build}" classpath="${cpath}:${gen}" />
-  </target>
-
-  <target name="compile" depends="init,generate,compileonly">
-    <jar jarfile="${testjar}" basedir="${build}"/>
-  </target>
-
-  <target name="test" depends="compile">
-    <java classname="org.apache.thrift.test.JSONProtoTest"
-      classpath="${cpath}:${testjar}:${gen}" failonerror="true" />
-    <java classname="org.apache.thrift.test.IdentityTest"
-      classpath="${cpath}:${testjar}:${gen}" failonerror="true" />
-    <java classname="org.apache.thrift.test.EqualityTest"
-      classpath="${cpath}:${testjar}:${gen}" failonerror="true" />
-    <java classname="org.apache.thrift.test.ToStringTest"
-      classpath="${cpath}:${testjar}:${gen}" failonerror="true" />
-    <java classname="org.apache.thrift.test.DeepCopyTest"
-      classpath="${cpath}:${testjar}:${gen}" failonerror="true" />
-    <java classname="org.apache.thrift.test.JavaBeansTest"
-      classpath="${cpath}:${testjar}:${gen}" failonerror="true" />
-  </target>
-
-  <target name="clean">
-    <delete dir="gen-java" />
-    <delete dir="gen-javabean" />
-    <delete dir="${build}" />
-    <delete file="thrifttest.jar" />
-  </target>
-
-</project>