/* * Copyright (C) 2019 The Android Open Source Project * * Licensed 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. */ #pragma once #include #include #include namespace android { namespace jsonpb { namespace internal { ErrorOr JsonStringToMessage(const std::string& content, google::protobuf::Message* message); } // namespace internal // TODO: JsonStringToMessage is a newly added function in protobuf // and is not yet available in the android tree. Replace this function with // https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.util.json_util#JsonStringToMessage.details // when the android tree gets updated template ErrorOr JsonStringToMessage(const std::string& content) { ErrorOr ret; auto error = internal::JsonStringToMessage(content, &*ret); if (!error.ok()) { return MakeError(error.error()); } return ret; } // TODO: MessageToJsonString is a newly added function in protobuf // and is not yet available in the android tree. Replace this function with // https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.util.json_util#MessageToJsonString.details // when the android tree gets updated. // // The new MessageToJsonString also allows preserving proto field names. However, // the function here can't. Hence, a field name "foo_bar" without json_name option // will be "fooBar" in the final output. Additional checks are needed to ensure // that doesn't happen. ErrorOr MessageToJsonString(const google::protobuf::Message& message); } // namespace jsonpb } // namespace android