1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc. All rights reserved.
3 // https://developers.google.com/protocol-buffers/
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are
9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer.
11 // * Redistributions in binary form must reproduce the above
12 // copyright notice, this list of conditions and the following disclaimer
13 // in the documentation and/or other materials provided with the
15 // * Neither the name of Google Inc. nor the names of its
16 // contributors may be used to endorse or promote products derived from
17 // this software without specific prior written permission.
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
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.
31 package com.google.protobuf;
33 import com.google.protobuf.testing.Proto2TestingLite.Proto2MessageLite;
34 import com.google.protobuf.testing.Proto2TestingLite.Proto2MessageLiteWithMaps;
35 import java.util.ArrayList;
36 import java.util.HashMap;
37 import java.util.List;
40 /** Creates instances of {@link Proto2MessageLite} based on the tree configuration. */
41 public final class Proto2MessageLiteFactory
42 implements ExperimentalMessageFactory<Proto2MessageLite> {
43 private final int numRepeatedFields;
44 private final int branchingFactor;
45 private final Proto2MessageLiteFactory nextLevel;
46 private final ExperimentalTestDataProvider data;
48 public Proto2MessageLiteFactory(
49 int numRepeatedFields, int stringLength, int branchingFactor, int treeDepth) {
51 new ExperimentalTestDataProvider(stringLength),
57 private Proto2MessageLiteFactory(
58 ExperimentalTestDataProvider data,
59 int numRepeatedFields,
62 this.numRepeatedFields = numRepeatedFields;
63 this.branchingFactor = branchingFactor;
67 new Proto2MessageLiteFactory(data, numRepeatedFields, branchingFactor, treeDepth - 1);
74 public ExperimentalTestDataProvider dataProvider() {
79 public Proto2MessageLite newMessage() {
80 Proto2MessageLite.Builder builder = Proto2MessageLite.newBuilder();
81 builder.setFieldDouble1(data.getDouble());
82 builder.setFieldFloat2(data.getFloat());
83 builder.setFieldInt643(data.getLong());
84 builder.setFieldUint644(data.getLong());
85 builder.setFieldInt325(data.getInt());
86 builder.setFieldFixed646(data.getLong());
87 builder.setFieldFixed327(data.getInt());
88 builder.setFieldBool8(data.getBool());
89 builder.setFieldString9(data.getString());
90 // We don't populate the message field. Instead we apply the branching factor to the
91 // repeated message field below.
92 builder.setFieldBytes11(data.getBytes());
93 builder.setFieldUint3212(data.getInt());
94 builder.setFieldEnum13(Proto2MessageLite.TestEnum.forNumber(data.getEnum()));
95 builder.setFieldSfixed3214(data.getInt());
96 builder.setFieldSfixed6415(data.getLong());
97 builder.setFieldSint3216(data.getInt());
98 builder.setFieldSint6417(data.getLong());
100 for (int i = 0; i < numRepeatedFields; ++i) {
101 builder.addFieldDoubleList18(data.getDouble());
102 builder.addFieldFloatList19(data.getFloat());
103 builder.addFieldInt64List20(data.getLong());
104 builder.addFieldUint64List21(data.getLong());
105 builder.addFieldInt32List22(data.getInt());
106 builder.addFieldFixed64List23(data.getLong());
107 builder.addFieldFixed32List24(data.getInt());
108 builder.addFieldBoolList25(data.getBool());
109 builder.addFieldStringList26(data.getString());
110 // Repeated message field is controlled by the branching factor below.
111 builder.addFieldBytesList28(data.getBytes());
112 builder.addFieldUint32List29(data.getInt());
113 builder.addFieldEnumList30(Proto2MessageLite.TestEnum.forNumber(data.getEnum()));
114 builder.addFieldSfixed32List31(data.getInt());
115 builder.addFieldSfixed64List32(data.getLong());
116 builder.addFieldSint32List33(data.getInt());
117 builder.addFieldSint64List34(data.getLong());
119 builder.addFieldDoubleListPacked35(data.getDouble());
120 builder.addFieldFloatListPacked36(data.getFloat());
121 builder.addFieldInt64ListPacked37(data.getLong());
122 builder.addFieldUint64ListPacked38(data.getLong());
123 builder.addFieldInt32ListPacked39(data.getInt());
124 builder.addFieldFixed64ListPacked40(data.getLong());
125 builder.addFieldFixed32ListPacked41(data.getInt());
126 builder.addFieldBoolListPacked42(data.getBool());
127 builder.addFieldUint32ListPacked43(data.getInt());
128 builder.addFieldEnumListPacked44(Proto2MessageLite.TestEnum.forNumber(data.getEnum()));
129 builder.addFieldSfixed32ListPacked45(data.getInt());
130 builder.addFieldSfixed64ListPacked46(data.getLong());
131 builder.addFieldSint32ListPacked47(data.getInt());
132 builder.addFieldSint64ListPacked48(data.getLong());
135 builder.setFieldGroup49(
136 Proto2MessageLite.FieldGroup49.newBuilder().setFieldInt3250(data.getInt()));
138 for (int i = 0; i < branchingFactor; ++i) {
139 builder.addFieldGroupList51(
140 Proto2MessageLite.FieldGroupList51.newBuilder().setFieldInt3252(data.getInt()));
143 // Set all required fields.
144 populateRequiredFields(builder, INCLUDE_ALL_REQUIRED_FIELDS);
146 // Handle the branching factor.
147 if (nextLevel != null) {
148 for (int i = 0; i < branchingFactor; ++i) {
149 builder.addFieldMessageList27(nextLevel.newMessage());
153 return builder.build();
156 private interface MapValueProvider<T> {
160 private final MapValueProvider<Integer> integerProvider =
161 new MapValueProvider<Integer>() {
163 public Integer getValue() {
164 return data.getInt();
167 private final MapValueProvider<Long> longProvider =
168 new MapValueProvider<Long>() {
170 public Long getValue() {
171 return data.getLong();
174 private final MapValueProvider<String> stringProvider =
175 new MapValueProvider<String>() {
177 public String getValue() {
178 return data.getString();
181 private final MapValueProvider<ByteString> bytesProvider =
182 new MapValueProvider<ByteString>() {
184 public ByteString getValue() {
185 return data.getBytes();
188 private final MapValueProvider<Boolean> booleanProvider =
189 new MapValueProvider<Boolean>() {
191 public Boolean getValue() {
192 return data.getBool();
195 private final MapValueProvider<Float> floatProvider =
196 new MapValueProvider<Float>() {
198 public Float getValue() {
199 return data.getFloat();
202 private final MapValueProvider<Double> doubleProvider =
203 new MapValueProvider<Double>() {
205 public Double getValue() {
206 return data.getDouble();
209 private final MapValueProvider<Proto2MessageLite> messageProvider =
210 new MapValueProvider<Proto2MessageLite>() {
212 public Proto2MessageLite getValue() {
216 private final MapValueProvider<Proto2MessageLite.TestEnum> enumProvider =
217 new MapValueProvider<Proto2MessageLite.TestEnum>() {
219 public Proto2MessageLite.TestEnum getValue() {
220 return Proto2MessageLite.TestEnum.forNumber(data.getEnum());
224 private <V> Map<Integer, V> populateIntegerMap(MapValueProvider<V> provider) {
225 Map<Integer, V> map = new HashMap<>();
226 for (int i = 0; i < numRepeatedFields; ++i) {
227 map.put(data.getInt(), provider.getValue());
232 private <V> Map<Long, V> populateLongMap(MapValueProvider<V> provider) {
233 Map<Long, V> map = new HashMap<>();
234 for (int i = 0; i < numRepeatedFields; ++i) {
235 map.put(data.getLong(), provider.getValue());
240 private <V> Map<String, V> populateStringMap(MapValueProvider<V> provider) {
241 Map<String, V> map = new HashMap<>();
242 for (int i = 0; i < numRepeatedFields; ++i) {
243 map.put(data.getString(), provider.getValue());
248 private <V> Map<Boolean, V> populateBooleanMap(MapValueProvider<V> provider) {
249 Map<Boolean, V> map = new HashMap<>();
250 map.put(false, provider.getValue());
251 map.put(true, provider.getValue());
255 public Proto2MessageLiteWithMaps newMessageWithMaps() {
256 Proto2MessageLiteWithMaps.Builder builder = Proto2MessageLiteWithMaps.newBuilder();
258 builder.putAllFieldMapBoolBool1(populateBooleanMap(booleanProvider));
259 builder.putAllFieldMapBoolBytes2(populateBooleanMap(bytesProvider));
260 builder.putAllFieldMapBoolDouble3(populateBooleanMap(doubleProvider));
261 builder.putAllFieldMapBoolEnum4(populateBooleanMap(enumProvider));
262 builder.putAllFieldMapBoolFixed325(populateBooleanMap(integerProvider));
263 builder.putAllFieldMapBoolFixed646(populateBooleanMap(longProvider));
264 builder.putAllFieldMapBoolFloat7(populateBooleanMap(floatProvider));
265 builder.putAllFieldMapBoolInt328(populateBooleanMap(integerProvider));
266 builder.putAllFieldMapBoolInt649(populateBooleanMap(longProvider));
267 builder.putAllFieldMapBoolMessage10(populateBooleanMap(messageProvider));
268 builder.putAllFieldMapBoolSfixed3211(populateBooleanMap(integerProvider));
269 builder.putAllFieldMapBoolSfixed6412(populateBooleanMap(longProvider));
270 builder.putAllFieldMapBoolSint3213(populateBooleanMap(integerProvider));
271 builder.putAllFieldMapBoolSint6414(populateBooleanMap(longProvider));
272 builder.putAllFieldMapBoolString15(populateBooleanMap(stringProvider));
273 builder.putAllFieldMapBoolUint3216(populateBooleanMap(integerProvider));
274 builder.putAllFieldMapBoolUint6417(populateBooleanMap(longProvider));
275 builder.putAllFieldMapFixed32Bool18(populateIntegerMap(booleanProvider));
276 builder.putAllFieldMapFixed32Bytes19(populateIntegerMap(bytesProvider));
277 builder.putAllFieldMapFixed32Double20(populateIntegerMap(doubleProvider));
278 builder.putAllFieldMapFixed32Enum21(populateIntegerMap(enumProvider));
279 builder.putAllFieldMapFixed32Fixed3222(populateIntegerMap(integerProvider));
280 builder.putAllFieldMapFixed32Fixed6423(populateIntegerMap(longProvider));
281 builder.putAllFieldMapFixed32Float24(populateIntegerMap(floatProvider));
282 builder.putAllFieldMapFixed32Int3225(populateIntegerMap(integerProvider));
283 builder.putAllFieldMapFixed32Int6426(populateIntegerMap(longProvider));
284 builder.putAllFieldMapFixed32Message27(populateIntegerMap(messageProvider));
285 builder.putAllFieldMapFixed32Sfixed3228(populateIntegerMap(integerProvider));
286 builder.putAllFieldMapFixed32Sfixed6429(populateIntegerMap(longProvider));
287 builder.putAllFieldMapFixed32Sint3230(populateIntegerMap(integerProvider));
288 builder.putAllFieldMapFixed32Sint6431(populateIntegerMap(longProvider));
289 builder.putAllFieldMapFixed32String32(populateIntegerMap(stringProvider));
290 builder.putAllFieldMapFixed32Uint3233(populateIntegerMap(integerProvider));
291 builder.putAllFieldMapFixed32Uint6434(populateIntegerMap(longProvider));
292 builder.putAllFieldMapFixed64Bool35(populateLongMap(booleanProvider));
293 builder.putAllFieldMapFixed64Bytes36(populateLongMap(bytesProvider));
294 builder.putAllFieldMapFixed64Double37(populateLongMap(doubleProvider));
295 builder.putAllFieldMapFixed64Enum38(populateLongMap(enumProvider));
296 builder.putAllFieldMapFixed64Fixed3239(populateLongMap(integerProvider));
297 builder.putAllFieldMapFixed64Fixed6440(populateLongMap(longProvider));
298 builder.putAllFieldMapFixed64Float41(populateLongMap(floatProvider));
299 builder.putAllFieldMapFixed64Int3242(populateLongMap(integerProvider));
300 builder.putAllFieldMapFixed64Int6443(populateLongMap(longProvider));
301 builder.putAllFieldMapFixed64Message44(populateLongMap(messageProvider));
302 builder.putAllFieldMapFixed64Sfixed3245(populateLongMap(integerProvider));
303 builder.putAllFieldMapFixed64Sfixed6446(populateLongMap(longProvider));
304 builder.putAllFieldMapFixed64Sint3247(populateLongMap(integerProvider));
305 builder.putAllFieldMapFixed64Sint6448(populateLongMap(longProvider));
306 builder.putAllFieldMapFixed64String49(populateLongMap(stringProvider));
307 builder.putAllFieldMapFixed64Uint3250(populateLongMap(integerProvider));
308 builder.putAllFieldMapFixed64Uint6451(populateLongMap(longProvider));
309 builder.putAllFieldMapInt32Bool52(populateIntegerMap(booleanProvider));
310 builder.putAllFieldMapInt32Bytes53(populateIntegerMap(bytesProvider));
311 builder.putAllFieldMapInt32Double54(populateIntegerMap(doubleProvider));
312 builder.putAllFieldMapInt32Enum55(populateIntegerMap(enumProvider));
313 builder.putAllFieldMapInt32Fixed3256(populateIntegerMap(integerProvider));
314 builder.putAllFieldMapInt32Fixed6457(populateIntegerMap(longProvider));
315 builder.putAllFieldMapInt32Float58(populateIntegerMap(floatProvider));
316 builder.putAllFieldMapInt32Int3259(populateIntegerMap(integerProvider));
317 builder.putAllFieldMapInt32Int6460(populateIntegerMap(longProvider));
318 builder.putAllFieldMapInt32Message61(populateIntegerMap(messageProvider));
319 builder.putAllFieldMapInt32Sfixed3262(populateIntegerMap(integerProvider));
320 builder.putAllFieldMapInt32Sfixed6463(populateIntegerMap(longProvider));
321 builder.putAllFieldMapInt32Sint3264(populateIntegerMap(integerProvider));
322 builder.putAllFieldMapInt32Sint6465(populateIntegerMap(longProvider));
323 builder.putAllFieldMapInt32String66(populateIntegerMap(stringProvider));
324 builder.putAllFieldMapInt32Uint3267(populateIntegerMap(integerProvider));
325 builder.putAllFieldMapInt32Uint6468(populateIntegerMap(longProvider));
326 builder.putAllFieldMapInt64Bool69(populateLongMap(booleanProvider));
327 builder.putAllFieldMapInt64Bytes70(populateLongMap(bytesProvider));
328 builder.putAllFieldMapInt64Double71(populateLongMap(doubleProvider));
329 builder.putAllFieldMapInt64Enum72(populateLongMap(enumProvider));
330 builder.putAllFieldMapInt64Fixed3273(populateLongMap(integerProvider));
331 builder.putAllFieldMapInt64Fixed6474(populateLongMap(longProvider));
332 builder.putAllFieldMapInt64Float75(populateLongMap(floatProvider));
333 builder.putAllFieldMapInt64Int3276(populateLongMap(integerProvider));
334 builder.putAllFieldMapInt64Int6477(populateLongMap(longProvider));
335 builder.putAllFieldMapInt64Message78(populateLongMap(messageProvider));
336 builder.putAllFieldMapInt64Sfixed3279(populateLongMap(integerProvider));
337 builder.putAllFieldMapInt64Sfixed6480(populateLongMap(longProvider));
338 builder.putAllFieldMapInt64Sint3281(populateLongMap(integerProvider));
339 builder.putAllFieldMapInt64Sint6482(populateLongMap(longProvider));
340 builder.putAllFieldMapInt64String83(populateLongMap(stringProvider));
341 builder.putAllFieldMapInt64Uint3284(populateLongMap(integerProvider));
342 builder.putAllFieldMapInt64Uint6485(populateLongMap(longProvider));
343 builder.putAllFieldMapSfixed32Bool86(populateIntegerMap(booleanProvider));
344 builder.putAllFieldMapSfixed32Bytes87(populateIntegerMap(bytesProvider));
345 builder.putAllFieldMapSfixed32Double88(populateIntegerMap(doubleProvider));
346 builder.putAllFieldMapSfixed32Enum89(populateIntegerMap(enumProvider));
347 builder.putAllFieldMapSfixed32Fixed3290(populateIntegerMap(integerProvider));
348 builder.putAllFieldMapSfixed32Fixed6491(populateIntegerMap(longProvider));
349 builder.putAllFieldMapSfixed32Float92(populateIntegerMap(floatProvider));
350 builder.putAllFieldMapSfixed32Int3293(populateIntegerMap(integerProvider));
351 builder.putAllFieldMapSfixed32Int6494(populateIntegerMap(longProvider));
352 builder.putAllFieldMapSfixed32Message95(populateIntegerMap(messageProvider));
353 builder.putAllFieldMapSfixed32Sfixed3296(populateIntegerMap(integerProvider));
354 builder.putAllFieldMapSfixed32Sfixed6497(populateIntegerMap(longProvider));
355 builder.putAllFieldMapSfixed32Sint3298(populateIntegerMap(integerProvider));
356 builder.putAllFieldMapSfixed32Sint6499(populateIntegerMap(longProvider));
357 builder.putAllFieldMapSfixed32String100(populateIntegerMap(stringProvider));
358 builder.putAllFieldMapSfixed32Uint32101(populateIntegerMap(integerProvider));
359 builder.putAllFieldMapSfixed32Uint64102(populateIntegerMap(longProvider));
360 builder.putAllFieldMapSfixed64Bool103(populateLongMap(booleanProvider));
361 builder.putAllFieldMapSfixed64Bytes104(populateLongMap(bytesProvider));
362 builder.putAllFieldMapSfixed64Double105(populateLongMap(doubleProvider));
363 builder.putAllFieldMapSfixed64Enum106(populateLongMap(enumProvider));
364 builder.putAllFieldMapSfixed64Fixed32107(populateLongMap(integerProvider));
365 builder.putAllFieldMapSfixed64Fixed64108(populateLongMap(longProvider));
366 builder.putAllFieldMapSfixed64Float109(populateLongMap(floatProvider));
367 builder.putAllFieldMapSfixed64Int32110(populateLongMap(integerProvider));
368 builder.putAllFieldMapSfixed64Int64111(populateLongMap(longProvider));
369 builder.putAllFieldMapSfixed64Message112(populateLongMap(messageProvider));
370 builder.putAllFieldMapSfixed64Sfixed32113(populateLongMap(integerProvider));
371 builder.putAllFieldMapSfixed64Sfixed64114(populateLongMap(longProvider));
372 builder.putAllFieldMapSfixed64Sint32115(populateLongMap(integerProvider));
373 builder.putAllFieldMapSfixed64Sint64116(populateLongMap(longProvider));
374 builder.putAllFieldMapSfixed64String117(populateLongMap(stringProvider));
375 builder.putAllFieldMapSfixed64Uint32118(populateLongMap(integerProvider));
376 builder.putAllFieldMapSfixed64Uint64119(populateLongMap(longProvider));
377 builder.putAllFieldMapSint32Bool120(populateIntegerMap(booleanProvider));
378 builder.putAllFieldMapSint32Bytes121(populateIntegerMap(bytesProvider));
379 builder.putAllFieldMapSint32Double122(populateIntegerMap(doubleProvider));
380 builder.putAllFieldMapSint32Enum123(populateIntegerMap(enumProvider));
381 builder.putAllFieldMapSint32Fixed32124(populateIntegerMap(integerProvider));
382 builder.putAllFieldMapSint32Fixed64125(populateIntegerMap(longProvider));
383 builder.putAllFieldMapSint32Float126(populateIntegerMap(floatProvider));
384 builder.putAllFieldMapSint32Int32127(populateIntegerMap(integerProvider));
385 builder.putAllFieldMapSint32Int64128(populateIntegerMap(longProvider));
386 builder.putAllFieldMapSint32Message129(populateIntegerMap(messageProvider));
387 builder.putAllFieldMapSint32Sfixed32130(populateIntegerMap(integerProvider));
388 builder.putAllFieldMapSint32Sfixed64131(populateIntegerMap(longProvider));
389 builder.putAllFieldMapSint32Sint32132(populateIntegerMap(integerProvider));
390 builder.putAllFieldMapSint32Sint64133(populateIntegerMap(longProvider));
391 builder.putAllFieldMapSint32String134(populateIntegerMap(stringProvider));
392 builder.putAllFieldMapSint32Uint32135(populateIntegerMap(integerProvider));
393 builder.putAllFieldMapSint32Uint64136(populateIntegerMap(longProvider));
394 builder.putAllFieldMapSint64Bool137(populateLongMap(booleanProvider));
395 builder.putAllFieldMapSint64Bytes138(populateLongMap(bytesProvider));
396 builder.putAllFieldMapSint64Double139(populateLongMap(doubleProvider));
397 builder.putAllFieldMapSint64Enum140(populateLongMap(enumProvider));
398 builder.putAllFieldMapSint64Fixed32141(populateLongMap(integerProvider));
399 builder.putAllFieldMapSint64Fixed64142(populateLongMap(longProvider));
400 builder.putAllFieldMapSint64Float143(populateLongMap(floatProvider));
401 builder.putAllFieldMapSint64Int32144(populateLongMap(integerProvider));
402 builder.putAllFieldMapSint64Int64145(populateLongMap(longProvider));
403 builder.putAllFieldMapSint64Message146(populateLongMap(messageProvider));
404 builder.putAllFieldMapSint64Sfixed32147(populateLongMap(integerProvider));
405 builder.putAllFieldMapSint64Sfixed64148(populateLongMap(longProvider));
406 builder.putAllFieldMapSint64Sint32149(populateLongMap(integerProvider));
407 builder.putAllFieldMapSint64Sint64150(populateLongMap(longProvider));
408 builder.putAllFieldMapSint64String151(populateLongMap(stringProvider));
409 builder.putAllFieldMapSint64Uint32152(populateLongMap(integerProvider));
410 builder.putAllFieldMapSint64Uint64153(populateLongMap(longProvider));
411 builder.putAllFieldMapStringBool154(populateStringMap(booleanProvider));
412 builder.putAllFieldMapStringBytes155(populateStringMap(bytesProvider));
413 builder.putAllFieldMapStringDouble156(populateStringMap(doubleProvider));
414 builder.putAllFieldMapStringEnum157(populateStringMap(enumProvider));
415 builder.putAllFieldMapStringFixed32158(populateStringMap(integerProvider));
416 builder.putAllFieldMapStringFixed64159(populateStringMap(longProvider));
417 builder.putAllFieldMapStringFloat160(populateStringMap(floatProvider));
418 builder.putAllFieldMapStringInt32161(populateStringMap(integerProvider));
419 builder.putAllFieldMapStringInt64162(populateStringMap(longProvider));
420 builder.putAllFieldMapStringMessage163(populateStringMap(messageProvider));
421 builder.putAllFieldMapStringSfixed32164(populateStringMap(integerProvider));
422 builder.putAllFieldMapStringSfixed64165(populateStringMap(longProvider));
423 builder.putAllFieldMapStringSint32166(populateStringMap(integerProvider));
424 builder.putAllFieldMapStringSint64167(populateStringMap(longProvider));
425 builder.putAllFieldMapStringString168(populateStringMap(stringProvider));
426 builder.putAllFieldMapStringUint32169(populateStringMap(integerProvider));
427 builder.putAllFieldMapStringUint64170(populateStringMap(longProvider));
428 builder.putAllFieldMapUint32Bool171(populateIntegerMap(booleanProvider));
429 builder.putAllFieldMapUint32Bytes172(populateIntegerMap(bytesProvider));
430 builder.putAllFieldMapUint32Double173(populateIntegerMap(doubleProvider));
431 builder.putAllFieldMapUint32Enum174(populateIntegerMap(enumProvider));
432 builder.putAllFieldMapUint32Fixed32175(populateIntegerMap(integerProvider));
433 builder.putAllFieldMapUint32Fixed64176(populateIntegerMap(longProvider));
434 builder.putAllFieldMapUint32Float177(populateIntegerMap(floatProvider));
435 builder.putAllFieldMapUint32Int32178(populateIntegerMap(integerProvider));
436 builder.putAllFieldMapUint32Int64179(populateIntegerMap(longProvider));
437 builder.putAllFieldMapUint32Message180(populateIntegerMap(messageProvider));
438 builder.putAllFieldMapUint32Sfixed32181(populateIntegerMap(integerProvider));
439 builder.putAllFieldMapUint32Sfixed64182(populateIntegerMap(longProvider));
440 builder.putAllFieldMapUint32Sint32183(populateIntegerMap(integerProvider));
441 builder.putAllFieldMapUint32Sint64184(populateIntegerMap(longProvider));
442 builder.putAllFieldMapUint32String185(populateIntegerMap(stringProvider));
443 builder.putAllFieldMapUint32Uint32186(populateIntegerMap(integerProvider));
444 builder.putAllFieldMapUint32Uint64187(populateIntegerMap(longProvider));
445 builder.putAllFieldMapUint64Bool188(populateLongMap(booleanProvider));
446 builder.putAllFieldMapUint64Bytes189(populateLongMap(bytesProvider));
447 builder.putAllFieldMapUint64Double190(populateLongMap(doubleProvider));
448 builder.putAllFieldMapUint64Enum191(populateLongMap(enumProvider));
449 builder.putAllFieldMapUint64Fixed32192(populateLongMap(integerProvider));
450 builder.putAllFieldMapUint64Fixed64193(populateLongMap(longProvider));
451 builder.putAllFieldMapUint64Float194(populateLongMap(floatProvider));
452 builder.putAllFieldMapUint64Int32195(populateLongMap(integerProvider));
453 builder.putAllFieldMapUint64Int64196(populateLongMap(longProvider));
454 builder.putAllFieldMapUint64Message197(populateLongMap(messageProvider));
455 builder.putAllFieldMapUint64Sfixed32198(populateLongMap(integerProvider));
456 builder.putAllFieldMapUint64Sfixed64199(populateLongMap(longProvider));
457 builder.putAllFieldMapUint64Sint32200(populateLongMap(integerProvider));
458 builder.putAllFieldMapUint64Sint64201(populateLongMap(longProvider));
459 builder.putAllFieldMapUint64String202(populateLongMap(stringProvider));
460 builder.putAllFieldMapUint64Uint32203(populateLongMap(integerProvider));
461 builder.putAllFieldMapUint64Uint64204(populateLongMap(longProvider));
463 return builder.build();
466 public List<Proto2MessageLite> newMessagesMissingRequiredFields() {
467 List<Proto2MessageLite> results = new ArrayList<>();
468 for (int i = 71; i <= 88; ++i) {
469 Proto2MessageLite.Builder builder = Proto2MessageLite.newBuilder();
470 populateRequiredFields(builder, i);
471 results.add(builder.buildPartial());
474 // A nested optional message field is missing required fields.
475 Proto2MessageLite.Builder builder = Proto2MessageLite.newBuilder();
476 populateRequiredFields(builder, INCLUDE_ALL_REQUIRED_FIELDS);
477 builder.setFieldMessage10(Proto2MessageLite.getDefaultInstance());
478 results.add(builder.buildPartial());
481 // A nested repeated message field is missing required fields.
482 Proto2MessageLite.Builder builder = Proto2MessageLite.newBuilder();
483 populateRequiredFields(builder, INCLUDE_ALL_REQUIRED_FIELDS);
484 builder.addFieldMessageList27(Proto2MessageLite.getDefaultInstance());
485 results.add(builder.buildPartial());
488 // A nested oneof message field is missing required fields.
489 Proto2MessageLite.Builder builder = Proto2MessageLite.newBuilder();
490 populateRequiredFields(builder, INCLUDE_ALL_REQUIRED_FIELDS);
491 builder.setFieldMessage62(Proto2MessageLite.getDefaultInstance());
492 results.add(builder.buildPartial());
497 // 0 is not a valid field number so we use it to mean no fields are excluded.
498 private static final int INCLUDE_ALL_REQUIRED_FIELDS = 0;
500 private void populateRequiredFields(Proto2MessageLite.Builder builder, int excludedFieldNumber) {
501 if (excludedFieldNumber != 71) {
502 builder.setFieldRequiredDouble71(data.getDouble());
504 if (excludedFieldNumber != 72) {
505 builder.setFieldRequiredFloat72(data.getFloat());
507 if (excludedFieldNumber != 73) {
508 builder.setFieldRequiredInt6473(data.getLong());
510 if (excludedFieldNumber != 74) {
511 builder.setFieldRequiredUint6474(data.getLong());
513 if (excludedFieldNumber != 75) {
514 builder.setFieldRequiredInt3275(data.getInt());
516 if (excludedFieldNumber != 76) {
517 builder.setFieldRequiredFixed6476(data.getLong());
519 if (excludedFieldNumber != 77) {
520 builder.setFieldRequiredFixed3277(data.getInt());
522 if (excludedFieldNumber != 78) {
523 builder.setFieldRequiredBool78(data.getBool());
525 if (excludedFieldNumber != 79) {
526 builder.setFieldRequiredString79(data.getString());
528 if (excludedFieldNumber != 80) {
529 builder.setFieldRequiredMessage80(
530 Proto2MessageLite.RequiredNestedMessage.newBuilder().setValue(data.getInt()));
532 if (excludedFieldNumber != 81) {
533 builder.setFieldRequiredBytes81(data.getBytes());
535 if (excludedFieldNumber != 82) {
536 builder.setFieldRequiredUint3282(data.getInt());
538 if (excludedFieldNumber != 83) {
539 builder.setFieldRequiredEnum83(Proto2MessageLite.TestEnum.forNumber(data.getEnum()));
541 if (excludedFieldNumber != 84) {
542 builder.setFieldRequiredSfixed3284(data.getInt());
544 if (excludedFieldNumber != 85) {
545 builder.setFieldRequiredSfixed6485(data.getLong());
547 if (excludedFieldNumber != 86) {
548 builder.setFieldRequiredSint3286(data.getInt());
550 if (excludedFieldNumber != 87) {
551 builder.setFieldRequiredSint6487(data.getLong());
553 if (excludedFieldNumber != 88) {
554 builder.setFieldRequiredGroup88(
555 Proto2MessageLite.FieldRequiredGroup88.newBuilder().setFieldInt3289(data.getInt()));