1 // Protocol Buffers - Google's data interchange format 2 // Copyright 2008 Google Inc. All rights reserved. 3 // https://developers.google.com/protocol-buffers/ 4 // 5 // Redistribution and use in source and binary forms, with or without 6 // modification, are permitted provided that the following conditions are 7 // met: 8 // 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 14 // distribution. 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. 18 // 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. 30 31 package com.google.protobuf; 32 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; 38 import java.util.Map; 39 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; 47 Proto2MessageLiteFactory( int numRepeatedFields, int stringLength, int branchingFactor, int treeDepth)48 public Proto2MessageLiteFactory( 49 int numRepeatedFields, int stringLength, int branchingFactor, int treeDepth) { 50 this( 51 new ExperimentalTestDataProvider(stringLength), 52 numRepeatedFields, 53 branchingFactor, 54 treeDepth); 55 } 56 Proto2MessageLiteFactory( ExperimentalTestDataProvider data, int numRepeatedFields, int branchingFactor, int treeDepth)57 private Proto2MessageLiteFactory( 58 ExperimentalTestDataProvider data, 59 int numRepeatedFields, 60 int branchingFactor, 61 int treeDepth) { 62 this.numRepeatedFields = numRepeatedFields; 63 this.branchingFactor = branchingFactor; 64 this.data = data; 65 if (treeDepth > 0) { 66 nextLevel = 67 new Proto2MessageLiteFactory(data, numRepeatedFields, branchingFactor, treeDepth - 1); 68 } else { 69 nextLevel = null; 70 } 71 } 72 73 @Override dataProvider()74 public ExperimentalTestDataProvider dataProvider() { 75 return data; 76 } 77 78 @Override newMessage()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()); 99 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()); 118 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()); 133 } 134 135 builder.setFieldGroup49( 136 Proto2MessageLite.FieldGroup49.newBuilder().setFieldInt3250(data.getInt())); 137 138 for (int i = 0; i < branchingFactor; ++i) { 139 builder.addFieldGroupList51( 140 Proto2MessageLite.FieldGroupList51.newBuilder().setFieldInt3252(data.getInt())); 141 } 142 143 // Set all required fields. 144 populateRequiredFields(builder, INCLUDE_ALL_REQUIRED_FIELDS); 145 146 // Handle the branching factor. 147 if (nextLevel != null) { 148 for (int i = 0; i < branchingFactor; ++i) { 149 builder.addFieldMessageList27(nextLevel.newMessage()); 150 } 151 } 152 153 return builder.build(); 154 } 155 156 private interface MapValueProvider<T> { getValue()157 public T getValue(); 158 } 159 160 private final MapValueProvider<Integer> integerProvider = 161 new MapValueProvider<Integer>() { 162 @Override 163 public Integer getValue() { 164 return data.getInt(); 165 } 166 }; 167 private final MapValueProvider<Long> longProvider = 168 new MapValueProvider<Long>() { 169 @Override 170 public Long getValue() { 171 return data.getLong(); 172 } 173 }; 174 private final MapValueProvider<String> stringProvider = 175 new MapValueProvider<String>() { 176 @Override 177 public String getValue() { 178 return data.getString(); 179 } 180 }; 181 private final MapValueProvider<ByteString> bytesProvider = 182 new MapValueProvider<ByteString>() { 183 @Override 184 public ByteString getValue() { 185 return data.getBytes(); 186 } 187 }; 188 private final MapValueProvider<Boolean> booleanProvider = 189 new MapValueProvider<Boolean>() { 190 @Override 191 public Boolean getValue() { 192 return data.getBool(); 193 } 194 }; 195 private final MapValueProvider<Float> floatProvider = 196 new MapValueProvider<Float>() { 197 @Override 198 public Float getValue() { 199 return data.getFloat(); 200 } 201 }; 202 private final MapValueProvider<Double> doubleProvider = 203 new MapValueProvider<Double>() { 204 @Override 205 public Double getValue() { 206 return data.getDouble(); 207 } 208 }; 209 private final MapValueProvider<Proto2MessageLite> messageProvider = 210 new MapValueProvider<Proto2MessageLite>() { 211 @Override 212 public Proto2MessageLite getValue() { 213 return newMessage(); 214 } 215 }; 216 private final MapValueProvider<Proto2MessageLite.TestEnum> enumProvider = 217 new MapValueProvider<Proto2MessageLite.TestEnum>() { 218 @Override 219 public Proto2MessageLite.TestEnum getValue() { 220 return Proto2MessageLite.TestEnum.forNumber(data.getEnum()); 221 } 222 }; 223 populateIntegerMap(MapValueProvider<V> provider)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()); 228 } 229 return map; 230 } 231 populateLongMap(MapValueProvider<V> provider)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()); 236 } 237 return map; 238 } 239 populateStringMap(MapValueProvider<V> provider)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()); 244 } 245 return map; 246 } 247 populateBooleanMap(MapValueProvider<V> provider)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()); 252 return map; 253 } 254 newMessageWithMaps()255 public Proto2MessageLiteWithMaps newMessageWithMaps() { 256 Proto2MessageLiteWithMaps.Builder builder = Proto2MessageLiteWithMaps.newBuilder(); 257 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)); 462 463 return builder.build(); 464 } 465 newMessagesMissingRequiredFields()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()); 472 } 473 { 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()); 479 } 480 { 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()); 486 } 487 { 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()); 493 } 494 return results; 495 } 496 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; 499 populateRequiredFields(Proto2MessageLite.Builder builder, int excludedFieldNumber)500 private void populateRequiredFields(Proto2MessageLite.Builder builder, int excludedFieldNumber) { 501 if (excludedFieldNumber != 71) { 502 builder.setFieldRequiredDouble71(data.getDouble()); 503 } 504 if (excludedFieldNumber != 72) { 505 builder.setFieldRequiredFloat72(data.getFloat()); 506 } 507 if (excludedFieldNumber != 73) { 508 builder.setFieldRequiredInt6473(data.getLong()); 509 } 510 if (excludedFieldNumber != 74) { 511 builder.setFieldRequiredUint6474(data.getLong()); 512 } 513 if (excludedFieldNumber != 75) { 514 builder.setFieldRequiredInt3275(data.getInt()); 515 } 516 if (excludedFieldNumber != 76) { 517 builder.setFieldRequiredFixed6476(data.getLong()); 518 } 519 if (excludedFieldNumber != 77) { 520 builder.setFieldRequiredFixed3277(data.getInt()); 521 } 522 if (excludedFieldNumber != 78) { 523 builder.setFieldRequiredBool78(data.getBool()); 524 } 525 if (excludedFieldNumber != 79) { 526 builder.setFieldRequiredString79(data.getString()); 527 } 528 if (excludedFieldNumber != 80) { 529 builder.setFieldRequiredMessage80( 530 Proto2MessageLite.RequiredNestedMessage.newBuilder().setValue(data.getInt())); 531 } 532 if (excludedFieldNumber != 81) { 533 builder.setFieldRequiredBytes81(data.getBytes()); 534 } 535 if (excludedFieldNumber != 82) { 536 builder.setFieldRequiredUint3282(data.getInt()); 537 } 538 if (excludedFieldNumber != 83) { 539 builder.setFieldRequiredEnum83(Proto2MessageLite.TestEnum.forNumber(data.getEnum())); 540 } 541 if (excludedFieldNumber != 84) { 542 builder.setFieldRequiredSfixed3284(data.getInt()); 543 } 544 if (excludedFieldNumber != 85) { 545 builder.setFieldRequiredSfixed6485(data.getLong()); 546 } 547 if (excludedFieldNumber != 86) { 548 builder.setFieldRequiredSint3286(data.getInt()); 549 } 550 if (excludedFieldNumber != 87) { 551 builder.setFieldRequiredSint6487(data.getLong()); 552 } 553 if (excludedFieldNumber != 88) { 554 builder.setFieldRequiredGroup88( 555 Proto2MessageLite.FieldRequiredGroup88.newBuilder().setFieldInt3289(data.getInt())); 556 } 557 } 558 } 559