summaryrefslogtreecommitdiff
path: root/libjsonpb
diff options
context:
space:
mode:
authorKrzysztof Kosiński <krzysio@google.com>2024-03-15 23:08:34 +0000
committerKrzysztof Kosiński <krzysio@google.com>2024-03-15 23:11:14 +0000
commitf8423f6ee7dd0e5be9b63413c1f5a0cbcbced0f8 (patch)
tree5a7695c4ae775876a28bf4e9a604a914890110b1 /libjsonpb
parent0a775d8aead45c06dc1d2238901d5f4dc4089258 (diff)
downloadextras-f8423f6ee7dd0e5be9b63413c1f5a0cbcbced0f8.tar.gz
Fix incompatibilities with Protobuf 22.x.
- Add missing headers. - Modify libjsonpb to be compatible with std::string_view usage in Protobuf generated code. Bug: 329747255 Test: presubmit Change-Id: Ibeeb7b7dac66a7fb0189a1d13b36a853d3fcd3d4
Diffstat (limited to 'libjsonpb')
-rw-r--r--libjsonpb/parse/include/jsonpb/error_or.h11
-rw-r--r--libjsonpb/parse/jsonpb.cpp6
2 files changed, 9 insertions, 8 deletions
diff --git a/libjsonpb/parse/include/jsonpb/error_or.h b/libjsonpb/parse/include/jsonpb/error_or.h
index 3fd3e997..b012a1ea 100644
--- a/libjsonpb/parse/include/jsonpb/error_or.h
+++ b/libjsonpb/parse/include/jsonpb/error_or.h
@@ -17,6 +17,7 @@
#pragma once
#include <string>
+#include <utility>
#include <variant>
#include <android-base/logging.h>
@@ -49,22 +50,22 @@ struct ErrorOr {
return *std::get_if<0u>(&data_);
}
bool ok() const { return data_.index() != 0; }
- static ErrorOr<T> MakeError(const std::string& message) {
- return ErrorOr<T>(message, Tag::kDummy);
+ static ErrorOr<T> MakeError(std::string message) {
+ return ErrorOr<T>(std::move(message), Tag::kDummy);
}
private:
enum class Tag { kDummy };
static constexpr std::in_place_index_t<0> kIndex0{};
static constexpr std::in_place_index_t<1> kIndex1{};
- ErrorOr(const std::string& msg, Tag) : data_(kIndex0, msg) {}
+ ErrorOr(std::string msg, Tag) : data_(kIndex0, std::move(msg)) {}
std::variant<std::string, T> data_;
};
template <typename T>
-inline ErrorOr<T> MakeError(const std::string& message) {
- return ErrorOr<T>::MakeError(message);
+inline ErrorOr<T> MakeError(std::string message) {
+ return ErrorOr<T>::MakeError(std::move(message));
}
} // namespace jsonpb
diff --git a/libjsonpb/parse/jsonpb.cpp b/libjsonpb/parse/jsonpb.cpp
index e65a39d1..6c428282 100644
--- a/libjsonpb/parse/jsonpb.cpp
+++ b/libjsonpb/parse/jsonpb.cpp
@@ -40,7 +40,7 @@ ErrorOr<std::string> MessageToJsonString(const Message& message) {
std::unique_ptr<TypeResolver> resolver(
NewTypeResolverForDescriptorPool(kTypeUrlPrefix, DescriptorPool::generated_pool()));
- google::protobuf::util::JsonOptions options;
+ google::protobuf::util::JsonPrintOptions options;
options.add_whitespace = true;
std::string json;
@@ -48,7 +48,7 @@ ErrorOr<std::string> MessageToJsonString(const Message& message) {
&json, options);
if (!status.ok()) {
- return MakeError<std::string>(status.message().as_string());
+ return MakeError<std::string>(std::string(status.message()));
}
return ErrorOr<std::string>(std::move(json));
}
@@ -61,7 +61,7 @@ ErrorOr<std::monostate> JsonStringToMessage(const std::string& content, Message*
std::string binary;
auto status = JsonToBinaryString(resolver.get(), GetTypeUrl(*message), content, &binary);
if (!status.ok()) {
- return MakeError<std::monostate>(status.message().as_string());
+ return MakeError<std::monostate>(std::string(status.message()));
}
if (!message->ParseFromString(binary)) {
return MakeError<std::monostate>("Fail to parse.");