diff options
author | Bryan Duxbury <bryanduxbury@apache.org> | 2010-04-22 00:22:34 +0000 |
---|---|---|
committer | Bryan Duxbury <bryanduxbury@apache.org> | 2010-04-22 00:22:34 +0000 |
commit | 0fab12e9681581d4919cb7afe21d853c9e300614 (patch) | |
tree | ff0c076e5852739ebe29a4167b41df06f96c435f | |
parent | 3292b3fed9665b04d6bfa2c8824af20332fbef39 (diff) | |
download | thrift-0fab12e9681581d4919cb7afe21d853c9e300614.tar.gz |
THRIFT-759. java: Make TBase implement Comparable
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@936581 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | compiler/cpp/src/generate/t_java_generator.cc | 10 | ||||
-rw-r--r-- | lib/java/src/org/apache/thrift/TBase.java | 4 | ||||
-rw-r--r-- | lib/java/src/org/apache/thrift/TUnion.java | 4 |
3 files changed, 7 insertions, 11 deletions
diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc index cda350374..970c32c3a 100644 --- a/compiler/cpp/src/generate/t_java_generator.cc +++ b/compiler/cpp/src/generate/t_java_generator.cc @@ -701,10 +701,8 @@ void t_java_generator::generate_java_union(t_struct* tstruct) { bool is_final = (tstruct->annotations_.find("final") != tstruct->annotations_.end()); indent(f_struct) << - "public " << (is_final ? "final " : "") << "class " << tstruct->get_name() - << " extends TUnion<" << tstruct->get_name() << "._Fields> "; - - f_struct << "implements Comparable<" << type_name(tstruct) << "> "; + "public " << (is_final ? "final " : "") << "class " << tstruct->get_name() + << " extends TUnion<" << tstruct->get_name() << ", " << tstruct->get_name() << "._Fields> "; scope_up(f_struct); @@ -1072,9 +1070,7 @@ void t_java_generator::generate_java_struct_definition(ofstream &out, if (is_exception) { out << "extends Exception "; } - out << "implements TBase<" << tstruct->get_name() << "._Fields>, java.io.Serializable, Cloneable"; - - out << ", Comparable<" << type_name(tstruct) << ">"; + out << "implements TBase<" << tstruct->get_name() << ", " << tstruct->get_name() << "._Fields>, java.io.Serializable, Cloneable"; out << " "; diff --git a/lib/java/src/org/apache/thrift/TBase.java b/lib/java/src/org/apache/thrift/TBase.java index bfa0abea9..64ece803d 100644 --- a/lib/java/src/org/apache/thrift/TBase.java +++ b/lib/java/src/org/apache/thrift/TBase.java @@ -27,7 +27,7 @@ import org.apache.thrift.protocol.TProtocol; * Generic base interface for generated Thrift objects. * */ -public interface TBase<F extends TFieldIdEnum> extends Serializable { +public interface TBase<T extends TBase, F extends TFieldIdEnum> extends Comparable<T>, Serializable { /** * Reads the TObject from the given input protocol. @@ -92,5 +92,5 @@ public interface TBase<F extends TFieldIdEnum> extends Serializable { */ public void setFieldValue(F field, Object value); - public TBase<F> deepCopy(); + public TBase<T, F> deepCopy(); } diff --git a/lib/java/src/org/apache/thrift/TUnion.java b/lib/java/src/org/apache/thrift/TUnion.java index cc3c069dd..f5a738706 100644 --- a/lib/java/src/org/apache/thrift/TUnion.java +++ b/lib/java/src/org/apache/thrift/TUnion.java @@ -29,7 +29,7 @@ import org.apache.thrift.protocol.TProtocol; import org.apache.thrift.protocol.TProtocolException; import org.apache.thrift.protocol.TStruct; -public abstract class TUnion<F extends TFieldIdEnum> implements TBase<F> { +public abstract class TUnion<T extends TUnion, F extends TFieldIdEnum> implements TBase<T, F> { protected Object value_; protected F setField_; @@ -43,7 +43,7 @@ public abstract class TUnion<F extends TFieldIdEnum> implements TBase<F> { setFieldValue(setField, value); } - protected TUnion(TUnion<F> other) { + protected TUnion(TUnion<T, F> other) { if (!other.getClass().equals(this.getClass())) { throw new ClassCastException(); } |