diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc
index 9c6b4a5..2814099 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -66,6 +66,9 @@
     iter = parsed_options.find("nocamel");
     nocamel_style_ = (iter != parsed_options.end());
 
+    iter = parsed_options.find("fullcamel");
+    fullcamel_style_ = (iter != parsed_options.end());
+
     iter = parsed_options.find("android_legacy");
     android_legacy_ = (iter != parsed_options.end());
 
@@ -313,6 +316,7 @@
   bool bean_style_;
   bool private_members_;
   bool nocamel_style_;
+  bool fullcamel_style_;
   bool android_legacy_;
   bool java5_;
   bool sorted_containers_;
@@ -3821,10 +3825,26 @@
 
 /**
  * Applies the correct style to a string based on the value of nocamel_style_
+ * and/or fullcamel_style_
  */
 std::string t_java_generator::get_cap_name(std::string name){
   if (nocamel_style_) {
     return "_" + name;
+  } if (fullcamel_style_) {
+    std::string new_name;
+    new_name += toupper(name[0]);
+    for (size_t i = 1; i < name.size(); i++) {
+      if (name[i] == '_') {
+        if (i < name.size()-1) {
+          i++;
+          new_name += toupper(name[i]);
+        }
+      }
+      else {
+        new_name += name[i];
+      }
+    }
+    return new_name;
   } else {
     name[0] = toupper(name[0]);
     return name;
@@ -4574,6 +4594,7 @@
 "    beans:           Members will be private, and setter methods will return void.\n"
 "    private-members: Members will be private, but setter methods will return 'this' like usual.\n"
 "    nocamel:         Do not use CamelCase field accessors with beans.\n"
+"    fullcamel:       Convert underscored_field_names to CamelCase.\n"
 "    android_legacy:  Do not use java.io.IOException(throwable) (available for Android 2.3 and above).\n"
 "    java5:           Generate Java 1.5 compliant code (includes android_legacy flag).\n"
 "    reuse-objects:   Data objects will not be allocated, but existing instances will be used (read and write).\n"
diff --git a/lib/java/README.md b/lib/java/README.md
index 12b3afe..66bcfa5 100644
--- a/lib/java/README.md
+++ b/lib/java/README.md
@@ -29,7 +29,7 @@
 
 To compile the Java Thrift libraries, simply do the following:
 
-ant
+    ant
 
 Yep, that's easy. Look for libthrift.jar in the base directory.
 
@@ -39,11 +39,11 @@
 
 Build Thrift behind a proxy:
 
-ant -Dproxy.enabled=1 -Dproxy.host=myproxyhost -Dproxy.user=thriftuser -Dproxy.pass=topsecret
+    ant -Dproxy.enabled=1 -Dproxy.host=myproxyhost -Dproxy.user=thriftuser -Dproxy.pass=topsecret
 
 or via
 
-./configure --with-java ANT_FLAGS='-Dproxy.enabled=1 -Dproxy.host=myproxyhost -Dproxy.user=thriftuser -Dproxy.pass=topsecret'
+    ./configure --with-java ANT_FLAGS='-Dproxy.enabled=1 -Dproxy.host=myproxyhost -Dproxy.user=thriftuser -Dproxy.pass=topsecret'
 
 
 Dependencies
diff --git a/lib/java/build.xml b/lib/java/build.xml
index bfc619a..f8afed2 100755
--- a/lib/java/build.xml
+++ b/lib/java/build.xml
@@ -48,6 +48,7 @@
   <property name="gen" location="gen-java"/>
   <property name="genbean" location="gen-javabean"/>
   <property name="genreuse" location="gen-javareuse"/>
+  <property name="genfullcamel" location="gen-fullcamel"/>
 
   <property name="jar.file" location="${build.dir}/${final.name}.jar"/>
   <property name="test.jar.file" location="${build.dir}/${final.name}-test.jar"/>
@@ -167,6 +168,7 @@
     <delete dir="${gen}"/>
     <delete dir="${genbean}"/>
     <delete dir="${genreuse}"/>
+    <delete dir="${genfullcamel}"/>
   </target>
 
   <target name="optional-generate" unless="no-gen-thrift"> 
@@ -187,6 +189,10 @@
       <compilerarg value="-Xlint:deprecation"/>
       <!--<compilerarg value="-Xlint:unchecked"/>-->
     </javac>
+    <javac debug="true" srcdir="${genfullcamel}" destdir="${build.test.dir}" classpathref="test.classpath" includeantruntime="false" encoding="UTF-8">
+      <compilerarg value="-Xlint:deprecation"/>
+      <!--<compilerarg value="-Xlint:unchecked"/>-->
+    </javac>
     <javac debug="true" srcdir="${src.test}" destdir="${build.test.dir}" classpathref="test.classpath" includeantruntime="false" encoding="UTF-8">
       <compilerarg value="-Xlint:deprecation"/>
       <!--<compilerarg value="-Xlint:unchecked"/>-->
@@ -279,6 +285,12 @@
       <arg line="--gen java:hashcode ${test.thrift.home}/ManyOptionals.thrift"/>
     </exec>
     <exec executable="mkdir" failonerror="true">
+      <arg line="-p ${genfullcamel}"/>
+    </exec>
+    <exec executable="../../compiler/cpp/thrift" failonerror="true">
+      <arg line="--gen java:hashcode,fullcamel -out ${genfullcamel} ${test.thrift.home}/DenseLinkingTest.thrift"/>
+    </exec>
+    <exec executable="mkdir" failonerror="true">
       <arg line="-p ${genreuse}"/>
     </exec>
     <exec executable="../../compiler/cpp/thrift" failonerror="true">
diff --git a/test/DenseLinkingTest.thrift b/test/DenseLinkingTest.thrift
index cf61496..f18234b 100644
--- a/test/DenseLinkingTest.thrift
+++ b/test/DenseLinkingTest.thrift
@@ -34,6 +34,7 @@
 */
 
 namespace cpp thrift.test
+namespace java thrift.test
 
 struct OneOfEachZZ {
   1: bool im_true,
