blob: 311bd68d7b1f00725788570f4caf2432603e033f [file] [log] [blame]
kpandit5a9d1392021-11-20 00:56:17 +01001/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19
20namespace java org.apache.thrift.partial
21
22// This thrift file is meant for testing partial deserialization.
23// It includes all field types and most combinations of complex types.
24// Those fields help ensure correctness of partial deserialization.
25
26enum TstEnum {
27 UNKNOWN = 0,
28 E_ONE = 1,
29 E_TWO = 2
30}
31
32struct SmallStruct {
33 // Primitive fields
34 1: optional byte byteField;
35 2: optional i16 i16Field;
36 3: optional i32 i32Field;
37 4: optional i64 i64Field;
38 5: optional double doubleField;
39 6: optional string stringField;
40
41 // Enum
42 7: optional TstEnum enumField;
43}
44
45// TODO(kpandit): Need to add bool field
46struct TestStruct {
47 // Primitive fields
48 1: optional byte byteField;
49 2: optional i16 i16Field;
50 3: optional i32 i32Field;
51 4: optional i64 i64Field;
52 5: optional double doubleField;
53 6: optional string stringField;
54
55 // Enum
56 7: optional TstEnum enumField;
57
58 8: optional binary binaryField;
59
60 // List
61 10: optional list<byte> byteList;
62 11: optional list<i16> i16List;
63 12: optional list<i32> i32List;
64 13: optional list<i64> i64List;
65 14: optional list<double> doubleList;
66 15: optional list<string> stringList;
67 16: optional list<TstEnum> enumList;
68 17: optional list<list<i32>> listList;
69 18: optional list<set<i32>> setList;
70 19: optional list<map<string, i32>> mapList;
71 20: optional list<SmallStruct> structList;
72 21: optional list<binary> binaryList;
73
74 // Set
75 30: optional set<byte> byteSet;
76 31: optional set<i16> i16Set;
77 32: optional set<i32> i32Set;
78 33: optional set<i64> i64Set;
79 34: optional set<double> doubleSet;
80 35: optional set<string> stringSet;
81 36: optional set<TstEnum> enumSet;
82 37: optional set<list<i32>> listSet (nolint = "set.value.type");
83 38: optional set<set<i32>> setSet (nolint = "set.value.type");
84 39: optional set<map<string, i32>> mapSet (nolint = "set.value.type");
85 40: optional set<SmallStruct> structSet (nolint = "set.value.type");
86 41: optional set<binary> binarySet;
87
88 // Map
89 50: optional map<byte, byte> byteMap;
90 51: optional map<i16, i16> i16Map;
91 52: optional map<i32, i32> i32Map;
92 53: optional map<i64, i64> i64Map;
93 54: optional map<double, double> doubleMap;
94 55: optional map<string, string> stringMap;
95 56: optional map<TstEnum, TstEnum> enumMap;
96 57: optional map<i32, list<i32>> listMap;
97 58: optional map<i32, set<i32>> setMap;
98 59: optional map<i32, map<i32, i32>> mapMap;
99 60: optional map<SmallStruct, SmallStruct> structMap (nolint = "map.key.type");
100 61: optional map<i32, binary> binaryMap;
101
102 70: optional SmallStruct structField;
103}
104
105struct InnermostStruct {
106 1: optional string value;
107 2: optional i32 intValue;
108}
109
110struct InnerStruct {
111 1: optional InnermostStruct value;
112 2: optional i32 intValue;
113}
114
115struct OuterStruct {
116 1: optional InnerStruct value;
117 2: optional map<string, InnerStruct> structMap;
118}
119
120union SimpleUnion {
121 1: optional i32 intValue;
122 2: optional string stringValue;
123}
124
125struct StructWithUnions {
126 1: optional i32 intValue;
127 2: optional SmallStruct smallStruct;
128 3: optional SimpleUnion simpleUnion;
129 4: optional list<SimpleUnion> unionList;
130 5: optional set<SimpleUnion> unionSet (nolint = "set.value.type");
131 6: optional map<SimpleUnion, string> keyUnionMap (nolint = "map.key.type");
132 7: optional map<string, SimpleUnion> valUnionMap;
133 8: optional map<SimpleUnion, SimpleUnion> unionMap (nolint = "map.key.type");
134}