THRIFT-1170. java: Thrift Generated Code and Java 5
This patch adds a trivial java5 option to the java generator.
Patch: Greg Moulliet
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1126765 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc
index e453249..3b8516a 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -62,6 +62,12 @@
iter = parsed_options.find("android_legacy");
android_legacy_ = (iter != parsed_options.end());
+ iter = parsed_options.find("java5");
+ java5_ = (iter != parsed_options.end());
+ if (java5_) {
+ android_legacy_ = true;
+ }
+
out_dir_base_ = (bean_style_ ? "gen-javabean" : "gen-java");
}
@@ -262,6 +268,7 @@
bool nocamel_style_;
bool gen_hash_code_;
bool android_legacy_;
+ bool java5_;
};
@@ -3789,7 +3796,9 @@
}
void t_java_generator::generate_java_struct_clear(std::ofstream& out, t_struct* tstruct) {
- indent(out) << "@Override" << endl;
+ if (!java5_) {
+ indent(out) << "@Override" << endl;
+ }
indent(out) << "public void clear() {" << endl;
const vector<t_field*>& members = tstruct->get_members();
@@ -3869,5 +3878,6 @@
" nocamel: Do not use CamelCase field accessors with beans.\n"
" hashcode: Generate quality hashCode methods.\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)."
)
diff --git a/lib/java/src/org/apache/thrift/TUnion.java b/lib/java/src/org/apache/thrift/TUnion.java
index cfe910b..1962c80 100644
--- a/lib/java/src/org/apache/thrift/TUnion.java
+++ b/lib/java/src/org/apache/thrift/TUnion.java
@@ -30,7 +30,7 @@
import org.apache.thrift.protocol.TProtocolException;
import org.apache.thrift.protocol.TStruct;
-public abstract class TUnion<T extends TUnion, F extends TFieldIdEnum> implements TBase<T, F> {
+public abstract class TUnion<T extends TUnion<?,?>, F extends TFieldIdEnum> implements TBase<T, F> {
protected Object value_;
protected F setField_;