summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan Duxbury <bryanduxbury@apache.org>2010-04-22 00:22:34 +0000
committerBryan Duxbury <bryanduxbury@apache.org>2010-04-22 00:22:34 +0000
commit0fab12e9681581d4919cb7afe21d853c9e300614 (patch)
treeff0c076e5852739ebe29a4167b41df06f96c435f
parent3292b3fed9665b04d6bfa2c8824af20332fbef39 (diff)
downloadthrift-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.cc10
-rw-r--r--lib/java/src/org/apache/thrift/TBase.java4
-rw-r--r--lib/java/src/org/apache/thrift/TUnion.java4
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();
}