THRIFT-110. java: A more compact format
This patch includes the Java implementation of the new Compact Protocol outlined in the issue and a matching test. It also creates Fixtures.java, a helper class that contains some useful test structure instances.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@742847 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/test/DebugProtoTest.thrift b/test/DebugProtoTest.thrift
index 3adaf0c..93e0554 100644
--- a/test/DebugProtoTest.thrift
+++ b/test/DebugProtoTest.thrift
@@ -96,3 +96,66 @@
3: map<list<i32>,set<map<i32,string>>> b3;
4: map<list<i32>,set<map<i32,string>>> b4;
}
+
+struct CompactProtoTestStruct {
+ // primitive fields
+ 1: byte a_byte = 127;
+ 2: i16 a_i16 = 32000;
+ 3: i32 a_i32 = 1000000000;
+ 4: i64 a_i64 = 0xffffffffff;
+ 5: double a_double = 5.6789;
+ 6: string a_string = "my string";
+ 7: binary a_binary;
+ 8: bool true_field = 1;
+ 9: bool false_field = 0;
+ 10: Empty empty_struct_field = {};
+
+ // primitives in lists
+ 11: list<byte> byte_list = [-127, -1, 0, 1, 127];
+ 12: list<i16> i16_list = [-1, 0, 1, 0x7fff];
+ 13: list<i32> i32_list = [-1, 0, 0xff, 0xffff, 0xffffff, 0x7fffffff];
+ 14: list<i64> i64_list = [-1, 0, 0xff, 0xffff, 0xffffff, 0xffffffff, 0xffffffffff, 0xffffffffffff, 0xffffffffffffff, 0x7fffffffffffffff];
+ 15: list<double> double_list = [0.1, 0.2, 0.3];
+ 16: list<string> string_list = ["first", "second", "third"];
+ 17: list<binary> binary_list;
+ 18: list<bool> boolean_list = [1, 1, 1, 0, 0, 0];
+ 19: list<Empty> struct_list = [{}, {}];
+
+ // primitives in sets
+ 20: set<byte> byte_set = [-127, -1, 0, 1, 127];
+ 21: set<i16> i16_set = [-1, 0, 1, 0x7fff];
+ 22: set<i32> i32_set = [1, 2, 3];
+ 23: set<i64> i64_set = [-1, 0, 0xff, 0xffff, 0xffffff, 0xffffffff, 0xffffffffff, 0xffffffffffff, 0xffffffffffffff, 0x7fffffffffffffff];
+ 24: set<double> double_set = [0.1, 0.2, 0.3];
+ 25: set<string> string_set = ["first", "second", "third"];
+ 26: set<binary> binary_set;
+ 27: set<bool> boolean_set = [1, 0];
+ 28: set<Empty> struct_set = [{}];
+
+ // maps
+ // primitives as keys
+ 29: map<byte, byte> byte_byte_map = {1 : 2};
+ 30: map<i16, byte> i16_byte_map = {1 : 1, -1 : 1, 0x7fff : 1};
+ 31: map<i32, byte> i32_byte_map = {1 : 1, -1 : 1, 0x7fffffff : 1};
+ 32: map<i64, byte> i64_byte_map = {0 : 1, 1 : 1, -1 : 1, 0x7fffffffffffffff : 1};
+ 33: map<double, byte> double_byte_map = {-1.1 : 1, 1.1 : 1};
+ 34: map<string, byte> string_byte_map = {"first" : 1, "second" : 2, "third" : 3, "" : 0};
+ 35: map<binary, byte> binary_byte_map;
+ 36: map<bool, byte> boolean_byte_map = {1 : 1, 0 : 0};
+ // primitives as values
+ 37: map<byte, i16> byte_i16_map = {1 : 1, 2 : -1, 3 : 0x7fff};
+ 38: map<byte, i32> byte_i32_map = {1 : 1, 2 : -1, 3 : 0x7fffffff};
+ 39: map<byte, i64> byte_i64_map = {1 : 1, 2 : -1, 3 : 0x7fffffffffffffff};
+ 40: map<byte, double> byte_double_map = {1 : 0.1, 2 : -0.1, 3 : 1000000.1};
+ 41: map<byte, string> byte_string_map = {1 : "", 2 : "blah", 3 : "loooooooooooooong string"};
+ 42: map<byte, binary> byte_binary_map;
+ 43: map<byte, bool> byte_boolean_map = {1 : 1, 2 : 0};
+ // collections as keys
+ 44: map<list<byte>, byte> list_byte_map = {[1, 2, 3] : 1, [0, 1] : 2, [] : 0};
+ 45: map<set<byte>, byte> set_byte_map = {[1, 2, 3] : 1, [0, 1] : 2, [] : 0};
+ 46: map<map<byte,byte>, byte> map_byte_map = {{1 : 1} : 1, {2 : 2} : 2, {} : 0};
+ // collections as values
+ 47: map<byte, map<byte,byte>> byte_map_map = {0 : {}, 1 : {1 : 1}, 2 : {1 : 1, 2 : 2}};
+ 48: map<byte, set<byte>> byte_set_map = {0 : [], 1 : [1], 2 : [1, 2]};
+ 49: map<byte, list<byte>> byte_list_map = {0 : [], 1 : [1], 2 : [1, 2]};
+}