THRIFT-2260 java: Thrift imposes unneeded dependency on commons-lang3

Patch: Andrew Gaul
diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc
index e978af8..454119d 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -364,9 +364,6 @@
 string t_java_generator::java_type_imports() {
   string hash_builder;
   string tree_set_and_map;
-  if (gen_hash_code_) {
-    hash_builder = "import org.apache.commons.lang3.builder.HashCodeBuilder;\n";
-  }
   if (sorted_containers_) {
     tree_set_and_map = string() + 
       "import java.util.TreeSet;\n" +
@@ -1248,19 +1245,19 @@
   if (gen_hash_code_) {
     indent(out) << "@Override" << endl;
     indent(out) << "public int hashCode() {" << endl;
-    indent(out) << "  HashCodeBuilder hcb = new HashCodeBuilder();" << endl;
-    indent(out) << "  hcb.append(this.getClass().getName());" << endl;
+    indent(out) << "  List<Object> list = new ArrayList<Object>();" << endl;
+    indent(out) << "  list.add(this.getClass().getName());" << endl;
     indent(out) << "  org.apache.thrift.TFieldIdEnum setField = getSetField();" << endl;
     indent(out) << "  if (setField != null) {" << endl;
-    indent(out) << "    hcb.append(setField.getThriftFieldId());" << endl;
+    indent(out) << "    list.add(setField.getThriftFieldId());" << endl;
     indent(out) << "    Object value = getFieldValue();" << endl;
     indent(out) << "    if (value instanceof org.apache.thrift.TEnum) {" << endl;
-    indent(out) << "      hcb.append(((org.apache.thrift.TEnum)getFieldValue()).getValue());" << endl;
+    indent(out) << "      list.add(((org.apache.thrift.TEnum)getFieldValue()).getValue());" << endl;
     indent(out) << "    } else {" << endl;
-    indent(out) << "      hcb.append(value);" << endl;
+    indent(out) << "      list.add(value);" << endl;
     indent(out) << "    }" << endl;
     indent(out) << "  }" << endl;
-    indent(out) << "  return hcb.toHashCode();" << endl;
+    indent(out) << "  return list.hashCode();" << endl;
     indent(out) << "}";
   } else {
     indent(out) << "/**" << endl;
@@ -1599,7 +1596,7 @@
     indent() << "public int hashCode() {" << endl;
   indent_up();
   if (gen_hash_code_) {
-    indent(out) << "HashCodeBuilder builder = new HashCodeBuilder();" << endl;
+    indent(out) << "List<Object> list = new ArrayList<Object>();" << endl;
 
     for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
       out << endl;
@@ -1616,17 +1613,17 @@
       }
 
       indent(out) << "boolean present_" << name << " = " << present << ";" << endl;
-      indent(out) << "builder.append(present_" << name << ");" << endl;
+      indent(out) << "list.add(present_" << name << ");" << endl;
       indent(out) << "if (present_" << name << ")" << endl;
       if (t->is_enum()) {
-        indent(out) << "  builder.append(" << name << ".getValue());" << endl;
+        indent(out) << "  list.add(" << name << ".getValue());" << endl;
       } else {
-        indent(out) << "  builder.append(" << name << ");" << endl;
+        indent(out) << "  list.add(" << name << ");" << endl;
       }
     }
 
     out << endl;
-    indent(out) << "return builder.toHashCode();" << endl;
+    indent(out) << "return list.hashCode();" << endl;
   } else {
     indent(out) << "return 0;" << endl;
   }
diff --git a/contrib/Vagrantfile b/contrib/Vagrantfile
index fd67821..5a99127 100644
--- a/contrib/Vagrantfile
+++ b/contrib/Vagrantfile
@@ -31,7 +31,7 @@
 sudo apt-get install -qq libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev make libqt4-dev git debhelper
 
 # Java dependencies
-sudo apt-get install -qq ant openjdk-7-jdk libcommons-lang3-java
+sudo apt-get install -qq ant openjdk-7-jdk
 
 # Python dependencies
 sudo apt-get install -qq python-all python-all-dev python-all-dbg python-setuptools
diff --git a/debian/control b/debian/control
index 84e545e..6ec6614 100644
--- a/debian/control
+++ b/debian/control
@@ -4,7 +4,7 @@
 Build-Depends: debhelper (>= 5), build-essential, mono-gmcs, python-dev, ant,
     mono-devel,  libmono-system-web2.0-cil, erlang-base, ruby1.8-dev, autoconf, python-support,
     automake, pkg-config, libtool, bison, flex, libboost-dev | libboost1.40-dev, python-all,
-    python-all-dev, python-all-dbg, openjdk-6-jdk | java-sdk, libcommons-lang3-java,
+    python-all-dev, python-all-dbg, openjdk-6-jdk | java-sdk,
     libboost-test-dev | libboost-test1.40-dev, libevent-dev, perl (>= 5.8.0-7),
     php5, php5-dev, libglib2.0-dev, libqt4-dev
 Maintainer: Thrift Developer's <dev@thrift.apache.org>
@@ -78,7 +78,6 @@
 Architecture: all
 Section: libs
 Depends: java-gcj-compat | java1-runtime | java2-runtime, ${misc:Depends}
-Recommends: libcommons-lang3-java
 Description: Java bindings for Thrift
  Thrift is a software framework for scalable cross-language services
  development. It combines a software stack with a code generation engine to
diff --git a/lib/java/build.properties b/lib/java/build.properties
index 8d603a6..b3a4755 100644
--- a/lib/java/build.properties
+++ b/lib/java/build.properties
@@ -27,6 +27,5 @@
 httpclient.version=4.2.5
 httpcore.version=4.2.4
 slf4j.version=1.5.8
-commons-lang3.version=3.1
 servlet.version=2.5
 
diff --git a/lib/java/build.xml b/lib/java/build.xml
index c2bfd9c..fa00ee7 100755
--- a/lib/java/build.xml
+++ b/lib/java/build.xml
@@ -318,7 +318,6 @@
 
       <!-- Thrift dependencies list -->
       <dependency groupId="org.slf4j" artifactId="slf4j-api" version="${slf4j.version}"/>
-      <dependency groupId="org.apache.commons" artifactId="commons-lang3" version="${commons-lang3.version}"/>
       <dependency groupId="javax.servlet" artifactId="servlet-api" version="${servlet.version}" scope="provided"/>
       <dependency groupId="org.apache.httpcomponents" artifactId="httpclient" version="${httpclient.version}"/>
       <dependency groupId="org.apache.httpcomponents" artifactId="httpcore" version="${httpcore.version}"/>