summaryrefslogtreecommitdiff
path: root/test/partial/thrift_test_schema.thrift
diff options
context:
space:
mode:
Diffstat (limited to 'test/partial/thrift_test_schema.thrift')
-rw-r--r--test/partial/thrift_test_schema.thrift134
1 files changed, 134 insertions, 0 deletions
diff --git a/test/partial/thrift_test_schema.thrift b/test/partial/thrift_test_schema.thrift
new file mode 100644
index 000000000..311bd68d7
--- /dev/null
+++ b/test/partial/thrift_test_schema.thrift
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+namespace java org.apache.thrift.partial
+
+// This thrift file is meant for testing partial deserialization.
+// It includes all field types and most combinations of complex types.
+// Those fields help ensure correctness of partial deserialization.
+
+enum TstEnum {
+ UNKNOWN = 0,
+ E_ONE = 1,
+ E_TWO = 2
+}
+
+struct SmallStruct {
+ // Primitive fields
+ 1: optional byte byteField;
+ 2: optional i16 i16Field;
+ 3: optional i32 i32Field;
+ 4: optional i64 i64Field;
+ 5: optional double doubleField;
+ 6: optional string stringField;
+
+ // Enum
+ 7: optional TstEnum enumField;
+}
+
+// TODO(kpandit): Need to add bool field
+struct TestStruct {
+ // Primitive fields
+ 1: optional byte byteField;
+ 2: optional i16 i16Field;
+ 3: optional i32 i32Field;
+ 4: optional i64 i64Field;
+ 5: optional double doubleField;
+ 6: optional string stringField;
+
+ // Enum
+ 7: optional TstEnum enumField;
+
+ 8: optional binary binaryField;
+
+ // List
+ 10: optional list<byte> byteList;
+ 11: optional list<i16> i16List;
+ 12: optional list<i32> i32List;
+ 13: optional list<i64> i64List;
+ 14: optional list<double> doubleList;
+ 15: optional list<string> stringList;
+ 16: optional list<TstEnum> enumList;
+ 17: optional list<list<i32>> listList;
+ 18: optional list<set<i32>> setList;
+ 19: optional list<map<string, i32>> mapList;
+ 20: optional list<SmallStruct> structList;
+ 21: optional list<binary> binaryList;
+
+ // Set
+ 30: optional set<byte> byteSet;
+ 31: optional set<i16> i16Set;
+ 32: optional set<i32> i32Set;
+ 33: optional set<i64> i64Set;
+ 34: optional set<double> doubleSet;
+ 35: optional set<string> stringSet;
+ 36: optional set<TstEnum> enumSet;
+ 37: optional set<list<i32>> listSet (nolint = "set.value.type");
+ 38: optional set<set<i32>> setSet (nolint = "set.value.type");
+ 39: optional set<map<string, i32>> mapSet (nolint = "set.value.type");
+ 40: optional set<SmallStruct> structSet (nolint = "set.value.type");
+ 41: optional set<binary> binarySet;
+
+ // Map
+ 50: optional map<byte, byte> byteMap;
+ 51: optional map<i16, i16> i16Map;
+ 52: optional map<i32, i32> i32Map;
+ 53: optional map<i64, i64> i64Map;
+ 54: optional map<double, double> doubleMap;
+ 55: optional map<string, string> stringMap;
+ 56: optional map<TstEnum, TstEnum> enumMap;
+ 57: optional map<i32, list<i32>> listMap;
+ 58: optional map<i32, set<i32>> setMap;
+ 59: optional map<i32, map<i32, i32>> mapMap;
+ 60: optional map<SmallStruct, SmallStruct> structMap (nolint = "map.key.type");
+ 61: optional map<i32, binary> binaryMap;
+
+ 70: optional SmallStruct structField;
+}
+
+struct InnermostStruct {
+ 1: optional string value;
+ 2: optional i32 intValue;
+}
+
+struct InnerStruct {
+ 1: optional InnermostStruct value;
+ 2: optional i32 intValue;
+}
+
+struct OuterStruct {
+ 1: optional InnerStruct value;
+ 2: optional map<string, InnerStruct> structMap;
+}
+
+union SimpleUnion {
+ 1: optional i32 intValue;
+ 2: optional string stringValue;
+}
+
+struct StructWithUnions {
+ 1: optional i32 intValue;
+ 2: optional SmallStruct smallStruct;
+ 3: optional SimpleUnion simpleUnion;
+ 4: optional list<SimpleUnion> unionList;
+ 5: optional set<SimpleUnion> unionSet (nolint = "set.value.type");
+ 6: optional map<SimpleUnion, string> keyUnionMap (nolint = "map.key.type");
+ 7: optional map<string, SimpleUnion> valUnionMap;
+ 8: optional map<SimpleUnion, SimpleUnion> unionMap (nolint = "map.key.type");
+}