Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: third_party/protobuf/src/google/protobuf/util/json_util.h

Issue 2590803003: Revert "third_party/protobuf: Update to HEAD (83d681ee2c)" (Closed)
Patch Set: Created 3 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Protocol Buffers - Google's data interchange format 1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc. All rights reserved. 2 // Copyright 2008 Google Inc. All rights reserved.
3 // https://developers.google.com/protocol-buffers/ 3 // https://developers.google.com/protocol-buffers/
4 // 4 //
5 // Redistribution and use in source and binary forms, with or without 5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are 6 // modification, are permitted provided that the following conditions are
7 // met: 7 // met:
8 // 8 //
9 // * Redistributions of source code must retain the above copyright 9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer. 10 // notice, this list of conditions and the following disclaimer.
(...skipping 15 matching lines...) Expand all
26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 30
31 // Utility functions to convert between protobuf binary format and proto3 JSON 31 // Utility functions to convert between protobuf binary format and proto3 JSON
32 // format. 32 // format.
33 #ifndef GOOGLE_PROTOBUF_UTIL_JSON_UTIL_H__ 33 #ifndef GOOGLE_PROTOBUF_UTIL_JSON_UTIL_H__
34 #define GOOGLE_PROTOBUF_UTIL_JSON_UTIL_H__ 34 #define GOOGLE_PROTOBUF_UTIL_JSON_UTIL_H__
35 35
36 #include <google/protobuf/message.h>
37 #include <google/protobuf/util/type_resolver.h> 36 #include <google/protobuf/util/type_resolver.h>
38 #include <google/protobuf/stubs/bytestream.h> 37 #include <google/protobuf/stubs/bytestream.h>
39 38
40 namespace google { 39 namespace google {
41 namespace protobuf { 40 namespace protobuf {
42 namespace io { 41 namespace io {
43 class ZeroCopyInputStream; 42 class ZeroCopyInputStream;
44 class ZeroCopyOutputStream; 43 class ZeroCopyOutputStream;
45 } // namespace io 44 } // namespace io
46 namespace util { 45 namespace util {
47 46
48 struct JsonParseOptions { 47 struct JsonOptions {
49 // Whether to ignore unknown JSON fields during parsing
50 bool ignore_unknown_fields;
51
52 JsonParseOptions() : ignore_unknown_fields(false) {}
53 };
54
55 struct JsonPrintOptions {
56 // Whether to add spaces, line breaks and indentation to make the JSON output 48 // Whether to add spaces, line breaks and indentation to make the JSON output
57 // easy to read. 49 // easy to read.
58 bool add_whitespace; 50 bool add_whitespace;
59 // Whether to always print primitive fields. By default primitive fields with 51 // Whether to always print primitive fields. By default primitive fields with
60 // default values will be omitted in JSON joutput. For example, an int32 field 52 // default values will be omitted in JSON joutput. For example, an int32 field
61 // set to 0 will be omitted. Set this flag to true will override the default 53 // set to 0 will be omitted. Set this flag to true will override the default
62 // behavior and print primitive fields regardless of their values. 54 // behavior and print primitive fields regardless of their values.
63 bool always_print_primitive_fields; 55 bool always_print_primitive_fields;
64 56
65 JsonPrintOptions() : add_whitespace(false), 57 JsonOptions() : add_whitespace(false),
66 always_print_primitive_fields(false) { 58 always_print_primitive_fields(false) {
67 } 59 }
68 }; 60 };
69 61
70 // DEPRECATED. Use JsonPrintOptions instead.
71 typedef JsonPrintOptions JsonOptions;
72
73 // Converts from protobuf message to JSON. This is a simple wrapper of
74 // BinaryToJsonString(). It will use the DescriptorPool of the passed-in
75 // message to resolve Any types.
76 LIBPROTOBUF_EXPORT util::Status MessageToJsonString(const Message& message,
77 string* output,
78 const JsonOptions& options);
79
80 inline util::Status MessageToJsonString(const Message& message,
81 string* output) {
82 return MessageToJsonString(message, output, JsonOptions());
83 }
84
85 // Converts from JSON to protobuf message. This is a simple wrapper of
86 // JsonStringToBinary(). It will use the DescriptorPool of the passed-in
87 // message to resolve Any types.
88 LIBPROTOBUF_EXPORT util::Status JsonStringToMessage(const string& input,
89 Message* message,
90 const JsonParseOptions& options);
91
92 inline util::Status JsonStringToMessage(const string& input,
93 Message* message) {
94 return JsonStringToMessage(input, message, JsonParseOptions());
95 }
96
97 // Converts protobuf binary data to JSON. 62 // Converts protobuf binary data to JSON.
98 // The conversion will fail if: 63 // The conversion will fail if:
99 // 1. TypeResolver fails to resolve a type. 64 // 1. TypeResolver fails to resolve a type.
100 // 2. input is not valid protobuf wire format, or conflicts with the type 65 // 2. input is not valid protobuf wire format, or conflicts with the type
101 // information returned by TypeResolver. 66 // information returned by TypeResolver.
102 // Note that unknown fields will be discarded silently. 67 // Note that unknown fields will be discarded silently.
103 LIBPROTOBUF_EXPORT util::Status BinaryToJsonStream( 68 util::Status BinaryToJsonStream(
104 TypeResolver* resolver, 69 TypeResolver* resolver,
105 const string& type_url, 70 const string& type_url,
106 io::ZeroCopyInputStream* binary_input, 71 io::ZeroCopyInputStream* binary_input,
107 io::ZeroCopyOutputStream* json_output, 72 io::ZeroCopyOutputStream* json_output,
108 const JsonPrintOptions& options); 73 const JsonOptions& options);
109 74
110 inline util::Status BinaryToJsonStream( 75 inline util::Status BinaryToJsonStream(
111 TypeResolver* resolver, const string& type_url, 76 TypeResolver* resolver, const string& type_url,
112 io::ZeroCopyInputStream* binary_input, 77 io::ZeroCopyInputStream* binary_input,
113 io::ZeroCopyOutputStream* json_output) { 78 io::ZeroCopyOutputStream* json_output) {
114 return BinaryToJsonStream(resolver, type_url, binary_input, json_output, 79 return BinaryToJsonStream(resolver, type_url, binary_input, json_output,
115 JsonPrintOptions()); 80 JsonOptions());
116 } 81 }
117 82
118 LIBPROTOBUF_EXPORT util::Status BinaryToJsonString( 83 LIBPROTOBUF_EXPORT util::Status BinaryToJsonString(
119 TypeResolver* resolver, 84 TypeResolver* resolver,
120 const string& type_url, 85 const string& type_url,
121 const string& binary_input, 86 const string& binary_input,
122 string* json_output, 87 string* json_output,
123 const JsonPrintOptions& options); 88 const JsonOptions& options);
124 89
125 inline util::Status BinaryToJsonString(TypeResolver* resolver, 90 inline util::Status BinaryToJsonString(TypeResolver* resolver,
126 const string& type_url, 91 const string& type_url,
127 const string& binary_input, 92 const string& binary_input,
128 string* json_output) { 93 string* json_output) {
129 return BinaryToJsonString(resolver, type_url, binary_input, json_output, 94 return BinaryToJsonString(resolver, type_url, binary_input, json_output,
130 JsonPrintOptions()); 95 JsonOptions());
131 } 96 }
132 97
133 // Converts JSON data to protobuf binary format. 98 // Converts JSON data to protobuf binary format.
134 // The conversion will fail if: 99 // The conversion will fail if:
135 // 1. TypeResolver fails to resolve a type. 100 // 1. TypeResolver fails to resolve a type.
136 // 2. input is not valid JSON format, or conflicts with the type 101 // 2. input is not valid JSON format, or conflicts with the type
137 // information returned by TypeResolver. 102 // information returned by TypeResolver.
138 LIBPROTOBUF_EXPORT util::Status JsonToBinaryStream( 103 // 3. input has unknown fields.
104 util::Status JsonToBinaryStream(
139 TypeResolver* resolver, 105 TypeResolver* resolver,
140 const string& type_url, 106 const string& type_url,
141 io::ZeroCopyInputStream* json_input, 107 io::ZeroCopyInputStream* json_input,
142 io::ZeroCopyOutputStream* binary_output, 108 io::ZeroCopyOutputStream* binary_output);
143 const JsonParseOptions& options);
144
145 inline util::Status JsonToBinaryStream(
146 TypeResolver* resolver,
147 const string& type_url,
148 io::ZeroCopyInputStream* json_input,
149 io::ZeroCopyOutputStream* binary_output) {
150 return JsonToBinaryStream(resolver, type_url, json_input, binary_output,
151 JsonParseOptions());
152 }
153 109
154 LIBPROTOBUF_EXPORT util::Status JsonToBinaryString( 110 LIBPROTOBUF_EXPORT util::Status JsonToBinaryString(
155 TypeResolver* resolver, 111 TypeResolver* resolver,
156 const string& type_url, 112 const string& type_url,
157 const string& json_input, 113 const string& json_input,
158 string* binary_output, 114 string* binary_output);
159 const JsonParseOptions& options);
160
161 inline util::Status JsonToBinaryString(
162 TypeResolver* resolver,
163 const string& type_url,
164 const string& json_input,
165 string* binary_output) {
166 return JsonToBinaryString(resolver, type_url, json_input, binary_output,
167 JsonParseOptions());
168 }
169 115
170 namespace internal { 116 namespace internal {
171 // Internal helper class. Put in the header so we can write unit-tests for it. 117 // Internal helper class. Put in the header so we can write unit-tests for it.
172 class LIBPROTOBUF_EXPORT ZeroCopyStreamByteSink : public strings::ByteSink { 118 class LIBPROTOBUF_EXPORT ZeroCopyStreamByteSink : public strings::ByteSink {
173 public: 119 public:
174 explicit ZeroCopyStreamByteSink(io::ZeroCopyOutputStream* stream) 120 explicit ZeroCopyStreamByteSink(io::ZeroCopyOutputStream* stream)
175 : stream_(stream) {} 121 : stream_(stream) {}
176 122
177 virtual void Append(const char* bytes, size_t len); 123 virtual void Append(const char* bytes, size_t len);
178 124
179 private: 125 private:
180 io::ZeroCopyOutputStream* stream_; 126 io::ZeroCopyOutputStream* stream_;
181 127
182 GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ZeroCopyStreamByteSink); 128 GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ZeroCopyStreamByteSink);
183 }; 129 };
184 } // namespace internal 130 } // namespace internal
185 131
186 } // namespace util 132 } // namespace util
187 } // namespace protobuf 133 } // namespace protobuf
188 134
189 } // namespace google 135 } // namespace google
190 #endif // GOOGLE_PROTOBUF_UTIL_JSON_UTIL_H__ 136 #endif // GOOGLE_PROTOBUF_UTIL_JSON_UTIL_H__
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698