This is an automated email from the ASF dual-hosted git repository. jensg pushed a commit to branch THRIFT-5835 in repository https://gitbox.apache.org/repos/asf/thrift.git
commit 40d63de63643222e0491a698eb0fc83233c45cf1 Author: Jens Geyer <[email protected]> AuthorDate: Sat Nov 16 10:40:55 2024 +0100 THRIFT-5835 Allow exceptions to be used as regular struct datatype Initial feature testcase --- test/ExceptionStruct.thrift | 56 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/test/ExceptionStruct.thrift b/test/ExceptionStruct.thrift new file mode 100644 index 000000000..3d1d54996 --- /dev/null +++ b/test/ExceptionStruct.thrift @@ -0,0 +1,56 @@ +/* + * 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 test.ExceptionStruct + +enum ErrorCode { + GenericError, + ServerOverload, + InvalidData +} + +struct GetRequest { + 1: string id; + 2: binary data # some arbitrary data +} + +struct GetResponse { + 1: i32 job_nr + 2: binary data # some arbitrary data +} + +struct BatchGetRequest { + 1: list<GetRequest> requests +} + +struct BatchGetResponse { + 1: map<string, GetRequest> responses, // key is id + 2: map<string, SomeException> errors, // key is id +} + +exception SomeException { + 2: ErrorCode error +} + +service Foo { + GetResponse get(1: GetRequest request) throws(1: SomeException error); + BatchGetResponse batchGet(1: BatchGetRequest request) throws(1: SomeException error); // may or may not be the same exception type, only throw exception when full request failed +} + +# eof
