aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/protobuf/json
diff options
context:
space:
mode:
authormowgli <mowgli@yandex-team.ru>2022-02-10 16:49:25 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:49:25 +0300
commit56c39b3cf908e7202b1f7551a1653681e8015607 (patch)
tree5d5cb817648f650d76cf1076100726fd9b8448e8 /library/cpp/protobuf/json
parent89afbbe4ca0e02e386dd4df08f7945f190dc1b84 (diff)
downloadydb-56c39b3cf908e7202b1f7551a1653681e8015607.tar.gz
Restoring authorship annotation for <mowgli@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'library/cpp/protobuf/json')
-rw-r--r--library/cpp/protobuf/json/inline.h100
-rw-r--r--library/cpp/protobuf/json/proto2json.cpp2
-rw-r--r--library/cpp/protobuf/json/ut/inline_ut.cpp10
-rw-r--r--library/cpp/protobuf/json/ut/inline_ut.proto36
-rw-r--r--library/cpp/protobuf/json/ut/ya.make4
5 files changed, 76 insertions, 76 deletions
diff --git a/library/cpp/protobuf/json/inline.h b/library/cpp/protobuf/json/inline.h
index 31dbf6a16c..e2d7bb6ef0 100644
--- a/library/cpp/protobuf/json/inline.h
+++ b/library/cpp/protobuf/json/inline.h
@@ -1,66 +1,66 @@
-#pragma once
-
-// A printer from protobuf to json string, with ability to inline some string fields of given protobuf message
-// into output as ready json without additional escaping. These fields should be marked using special field option.
-// An example of usage:
-// 1) Define a field option in your .proto to identify fields which should be inlined, e.g.
-//
+#pragma once
+
+// A printer from protobuf to json string, with ability to inline some string fields of given protobuf message
+// into output as ready json without additional escaping. These fields should be marked using special field option.
+// An example of usage:
+// 1) Define a field option in your .proto to identify fields which should be inlined, e.g.
+//
// import "google/protobuf/descriptor.proto";
-// extend google.protobuf.FieldOptions {
-// optional bool this_is_json = 58253; // do not forget assign some more or less unique tag
-// }
-//
-// 2) Mark some fields of your protobuf message with this option, e.g.:
-//
-// message TMyObject {
-// optional string A = 1 [(this_is_json) = true];
-// }
-//
-// 3) In the C++ code you prepare somehow an object of TMyObject type
-//
-// TMyObject o;
-// o.Set("{\"inner\":\"value\"}");
-//
-// 4) And then serialize it to json string with inlining, e.g.:
-//
+// extend google.protobuf.FieldOptions {
+// optional bool this_is_json = 58253; // do not forget assign some more or less unique tag
+// }
+//
+// 2) Mark some fields of your protobuf message with this option, e.g.:
+//
+// message TMyObject {
+// optional string A = 1 [(this_is_json) = true];
+// }
+//
+// 3) In the C++ code you prepare somehow an object of TMyObject type
+//
+// TMyObject o;
+// o.Set("{\"inner\":\"value\"}");
+//
+// 4) And then serialize it to json string with inlining, e.g.:
+//
// Cout << NProtobufJson::PrintInlined(o, MakeFieldOptionFunctor(this_is_json)) << Endl;
-//
+//
// 5) Alternatively you can specify a some more abstract functor for defining raw json fields
//
-// which will print following json to stdout:
-// {"A":{"inner":"value"}}
-// instead of
-// {"A":"{\"inner\":\"value\"}"}
-// which would be printed with normal Proto2Json printer.
-//
-// See ut/inline_ut.cpp for additional examples of usage.
-
+// which will print following json to stdout:
+// {"A":{"inner":"value"}}
+// instead of
+// {"A":"{\"inner\":\"value\"}"}
+// which would be printed with normal Proto2Json printer.
+//
+// See ut/inline_ut.cpp for additional examples of usage.
+
#include "config.h"
#include "proto2json_printer.h"
#include "json_output_create.h"
-
+
#include <library/cpp/protobuf/util/simple_reflection.h>
-
+
#include <util/generic/maybe.h>
#include <util/generic/yexception.h>
#include <util/generic/utility.h>
-
+
#include <functional>
-
-namespace NProtobufJson {
+
+namespace NProtobufJson {
template <typename TBasePrinter = TProto2JsonPrinter> // TBasePrinter is assumed to be a TProto2JsonPrinter descendant
class TInliningPrinter: public TBasePrinter {
public:
using TFieldPredicate = std::function<bool(const NProtoBuf::Message&,
const NProtoBuf::FieldDescriptor*)>;
-
+
template <typename... TArgs>
TInliningPrinter(TFieldPredicate isInlined, TArgs&&... args)
: TBasePrinter(std::forward<TArgs>(args)...)
, IsInlined(std::move(isInlined))
{
}
-
+
virtual void PrintField(const NProtoBuf::Message& proto,
const NProtoBuf::FieldDescriptor& field,
IJsonOutput& json,
@@ -77,12 +77,12 @@ namespace NProtobufJson {
json.WriteRawJson(f.Get<TString>(i));
json.EndList();
}
-
- } else {
+
+ } else {
TBasePrinter::PrintField(proto, field, json, key);
- }
+ }
}
-
+
private:
bool ShouldPrint(const NProtoBuf::TConstField& f) const {
if (!f.IsString())
@@ -95,8 +95,8 @@ namespace NProtobufJson {
// we may want write default value for given field in case of its absence
const auto& cfg = this->GetConfig();
return (f.Field()->is_repeated() ? cfg.MissingRepeatedKeyMode : cfg.MissingSingleKeyMode) == TProto2JsonConfig::MissingKeyDefault;
- }
-
+ }
+
private:
TFieldPredicate IsInlined;
};
@@ -105,11 +105,11 @@ namespace NProtobufJson {
TInliningPrinter<> printer(std::move(isInlined), config);
printer.Print(msg, output);
}
-
+
inline TString PrintInlined(const NProtoBuf::Message& msg, TInliningPrinter<>::TFieldPredicate isInlined, const TProto2JsonConfig& config = TProto2JsonConfig()) {
TString ret;
PrintInlined(msg, std::move(isInlined), *CreateJsonMapOutput(ret, config), config);
return ret;
- }
-
-}
+ }
+
+}
diff --git a/library/cpp/protobuf/json/proto2json.cpp b/library/cpp/protobuf/json/proto2json.cpp
index f0f8a0c4d7..3d76a91686 100644
--- a/library/cpp/protobuf/json/proto2json.cpp
+++ b/library/cpp/protobuf/json/proto2json.cpp
@@ -24,7 +24,7 @@ namespace NProtobufJson {
const TProto2JsonConfig& config) {
Proto2Json(proto, *CreateJsonMapOutput(json), config);
}
-
+
void Proto2Json(const NProtoBuf::Message& proto, NJson::TJsonWriter& writer,
const TProto2JsonConfig& config) {
Proto2Json(proto, *CreateJsonMapOutput(writer), config);
diff --git a/library/cpp/protobuf/json/ut/inline_ut.cpp b/library/cpp/protobuf/json/ut/inline_ut.cpp
index a40ec4bfec..c29ad32e7d 100644
--- a/library/cpp/protobuf/json/ut/inline_ut.cpp
+++ b/library/cpp/protobuf/json/ut/inline_ut.cpp
@@ -4,11 +4,11 @@
#include <library/cpp/protobuf/json/field_option.h>
#include <library/cpp/protobuf/json/proto2json.h>
#include <library/cpp/testing/unittest/registar.h>
-
+
#include <util/generic/string.h>
-
-using namespace NProtobufJson;
-
+
+using namespace NProtobufJson;
+
static NProtobufJsonUt::TInlineTest GetTestMsg() {
NProtobufJsonUt::TInlineTest msg;
msg.SetOptJson(R"({"a":1,"b":"000"})");
@@ -59,7 +59,7 @@ Y_UNIT_TEST(TestNoValues) {
NProtobufJsonUt::TInlineTest msg;
msg.MutableInner()->AddNumber(100);
msg.MutableInner()->AddNumber(200);
-
+
TString expInlined = R"({"Inner":{"Number":[100,200]}})";
TString myInlined = PrintInlined(msg, MakeFieldOptionFunctor(NProtobufJsonUt::inline_test));
diff --git a/library/cpp/protobuf/json/ut/inline_ut.proto b/library/cpp/protobuf/json/ut/inline_ut.proto
index d77fdd2537..76bd10232d 100644
--- a/library/cpp/protobuf/json/ut/inline_ut.proto
+++ b/library/cpp/protobuf/json/ut/inline_ut.proto
@@ -1,22 +1,22 @@
import "google/protobuf/descriptor.proto";
-
-package NProtobufJsonUt;
-
-extend google.protobuf.FieldOptions {
- optional bool inline_test = 58253;
-}
-
-message TInlineTest {
- optional string OptJson = 1 [(inline_test) = true];
- optional string NotJson = 2;
- repeated string RepJson = 3 [(inline_test) = true];
-
- message TInner {
- repeated uint32 Number = 1;
- optional string InnerJson = 2 [(inline_test) = true];
- }
- optional TInner Inner = 4;
-}
+
+package NProtobufJsonUt;
+
+extend google.protobuf.FieldOptions {
+ optional bool inline_test = 58253;
+}
+
+message TInlineTest {
+ optional string OptJson = 1 [(inline_test) = true];
+ optional string NotJson = 2;
+ repeated string RepJson = 3 [(inline_test) = true];
+
+ message TInner {
+ repeated uint32 Number = 1;
+ optional string InnerJson = 2 [(inline_test) = true];
+ }
+ optional TInner Inner = 4;
+}
message TInlineTestDefaultValues {
optional string OptJson = 1 [(inline_test) = true, default = "{\"default\":1}"];
diff --git a/library/cpp/protobuf/json/ut/ya.make b/library/cpp/protobuf/json/ut/ya.make
index 71c2318980..b60a6d3c17 100644
--- a/library/cpp/protobuf/json/ut/ya.make
+++ b/library/cpp/protobuf/json/ut/ya.make
@@ -6,8 +6,8 @@ SRCS(
filter_ut.cpp
json2proto_ut.cpp
proto2json_ut.cpp
- inline_ut.proto
- inline_ut.cpp
+ inline_ut.proto
+ inline_ut.cpp
string_transform_ut.cpp
filter_ut.proto
test.proto