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 static com.google.protobuf.FieldInfo.forField; 34 import static com.google.protobuf.FieldInfo.forFieldWithEnumVerifier; 35 import static com.google.protobuf.FieldInfo.forMapField; 36 import static com.google.protobuf.FieldInfo.forOneofMemberField; 37 import static com.google.protobuf.FieldInfo.forProto2OptionalField; 38 import static com.google.protobuf.FieldInfo.forProto2RequiredField; 39 import static com.google.protobuf.FieldInfo.forRepeatedMessageField; 40 41 import com.google.protobuf.testing.Proto2Testing; 42 import com.google.protobuf.testing.Proto2Testing.Proto2Empty; 43 import com.google.protobuf.testing.Proto2Testing.Proto2Message; 44 import com.google.protobuf.testing.Proto2Testing.Proto2Message.FieldGroup49; 45 import com.google.protobuf.testing.Proto2Testing.Proto2Message.FieldGroup69; 46 import com.google.protobuf.testing.Proto2Testing.Proto2Message.FieldGroupList51; 47 import com.google.protobuf.testing.Proto2Testing.Proto2Message.FieldRequiredGroup88; 48 import com.google.protobuf.testing.Proto2Testing.Proto2Message.RequiredNestedMessage; 49 import com.google.protobuf.testing.Proto2Testing.Proto2Message.TestEnum; 50 import com.google.protobuf.testing.Proto2Testing.Proto2MessageWithExtensions; 51 import com.google.protobuf.testing.Proto2Testing.Proto2MessageWithMaps; 52 import java.lang.reflect.Field; 53 54 /** A factory that generates a hard-coded message info for {@link Proto2Message}. */ 55 public final class Proto2MessageInfoFactory implements MessageInfoFactory { 56 private static final Proto2MessageInfoFactory INSTANCE = new Proto2MessageInfoFactory(); 57 Proto2MessageInfoFactory()58 private Proto2MessageInfoFactory() {} 59 getInstance()60 public static Proto2MessageInfoFactory getInstance() { 61 return INSTANCE; 62 } 63 64 @Override isSupported(Class<?> clazz)65 public boolean isSupported(Class<?> clazz) { 66 return true; 67 } 68 69 @Override messageInfoFor(Class<?> clazz)70 public MessageInfo messageInfoFor(Class<?> clazz) { 71 if (Proto2Message.class.isAssignableFrom(clazz)) { 72 return newMessageInfoForProto2Message(); 73 } else if (FieldGroup49.class.isAssignableFrom(clazz)) { 74 return newMessageInfoForFieldGroup49(); 75 } else if (FieldGroupList51.class.isAssignableFrom(clazz)) { 76 return newMessageInfoForFieldGroupList51(); 77 } else if (FieldGroup69.class.isAssignableFrom(clazz)) { 78 return newMessageInfoForFieldGroup69(); 79 } else if (FieldRequiredGroup88.class.isAssignableFrom(clazz)) { 80 return newMessageInfoForFieldRequiredGroup88(); 81 } else if (RequiredNestedMessage.class.isAssignableFrom(clazz)) { 82 return newMessageInfoForRequiredNestedMessage(); 83 } else if (Proto2Empty.class.isAssignableFrom(clazz)) { 84 return newMessageInfoForProto2Empty(); 85 } else if (Proto2MessageWithExtensions.class.isAssignableFrom(clazz)) { 86 return newMessageInfoForProto2MessageWithExtensions(); 87 } else if (Proto2Testing.FieldGroup49.class.isAssignableFrom(clazz)) { 88 return newMessageInfoForExtensionFieldGroup49(); 89 } else if (Proto2Testing.FieldGroupList51.class.isAssignableFrom(clazz)) { 90 return newMessageInfoForExtensionFieldGroupList51(); 91 } else if (Proto2Testing.Proto2MessageWithMaps.class.isAssignableFrom(clazz)) { 92 return newMessageInfoForProto2MessageWithMaps(); 93 } else { 94 throw new IllegalArgumentException("Unsupported class: " + clazz.getName()); 95 } 96 } 97 98 /** 99 * Creates a new hard-coded info for {@link Proto2Message}. Each time this is called, we manually 100 * go through the entire process of what a message would do if it self-registered its own info, 101 * including looking up each field by name. This is done for benchmarking purposes, so that we get 102 * a more accurate representation of the time it takes to perform this process. 103 */ newMessageInfoForProto2Message()104 private static StructuralMessageInfo newMessageInfoForProto2Message() { 105 StructuralMessageInfo.Builder builder = StructuralMessageInfo.newBuilder(50); 106 builder.withCheckInitialized( 107 new int[] { 108 10, 27, 62, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 109 }); 110 lookupFieldsByName(builder); 111 return builder.build(); 112 } 113 lookupFieldsByName(StructuralMessageInfo.Builder builder)114 private static void lookupFieldsByName(StructuralMessageInfo.Builder builder) { 115 Field bitField0 = field("bitField0_"); 116 117 builder.withDefaultInstance(Proto2Message.getDefaultInstance()); 118 builder.withSyntax(ProtoSyntax.PROTO2); 119 builder.withField( 120 forProto2OptionalField( 121 field("fieldDouble1_"), 1, FieldType.DOUBLE, bitField0, 0x00000001, false, null)); 122 builder.withField( 123 forProto2OptionalField( 124 field("fieldFloat2_"), 2, FieldType.FLOAT, bitField0, 0x00000002, false, null)); 125 builder.withField( 126 forProto2OptionalField( 127 field("fieldInt643_"), 3, FieldType.INT64, bitField0, 0x00000004, false, null)); 128 builder.withField( 129 forProto2OptionalField( 130 field("fieldUint644_"), 4, FieldType.UINT64, bitField0, 0x00000008, false, null)); 131 builder.withField( 132 forProto2OptionalField( 133 field("fieldInt325_"), 5, FieldType.INT32, bitField0, 0x00000010, false, null)); 134 builder.withField( 135 forProto2OptionalField( 136 field("fieldFixed646_"), 6, FieldType.FIXED64, bitField0, 0x00000020, false, null)); 137 builder.withField( 138 forProto2OptionalField( 139 field("fieldFixed327_"), 7, FieldType.FIXED32, bitField0, 0x00000040, false, null)); 140 builder.withField( 141 forProto2OptionalField( 142 field("fieldBool8_"), 8, FieldType.BOOL, bitField0, 0x00000080, false, null)); 143 builder.withField( 144 forProto2OptionalField( 145 field("fieldString9_"), 9, FieldType.STRING, bitField0, 0x00000100, false, null)); 146 builder.withField( 147 forProto2OptionalField( 148 field("fieldMessage10_"), 10, FieldType.MESSAGE, bitField0, 0x00000200, false, null)); 149 builder.withField( 150 forProto2OptionalField( 151 field("fieldBytes11_"), 11, FieldType.BYTES, bitField0, 0x00000400, false, null)); 152 builder.withField( 153 forProto2OptionalField( 154 field("fieldUint3212_"), 12, FieldType.UINT32, bitField0, 0x00000800, false, null)); 155 builder.withField( 156 forProto2OptionalField( 157 field("fieldEnum13_"), 158 13, 159 FieldType.ENUM, 160 bitField0, 161 0x00001000, 162 false, 163 asVerifier(TestEnum.internalGetValueMap()))); 164 builder.withField( 165 forProto2OptionalField( 166 field("fieldSfixed3214_"), 14, FieldType.SFIXED32, bitField0, 0x00002000, false, null)); 167 builder.withField( 168 forProto2OptionalField( 169 field("fieldSfixed6415_"), 15, FieldType.SFIXED64, bitField0, 0x00004000, false, null)); 170 builder.withField( 171 forProto2OptionalField( 172 field("fieldSint3216_"), 16, FieldType.SINT32, bitField0, 0x00008000, false, null)); 173 builder.withField( 174 forProto2OptionalField( 175 field("fieldSint6417_"), 17, FieldType.SINT64, bitField0, 0x00010000, false, null)); 176 builder.withField(forField(field("fieldDoubleList18_"), 18, FieldType.DOUBLE_LIST, false)); 177 builder.withField(forField(field("fieldFloatList19_"), 19, FieldType.FLOAT_LIST, false)); 178 builder.withField(forField(field("fieldInt64List20_"), 20, FieldType.INT64_LIST, false)); 179 builder.withField(forField(field("fieldUint64List21_"), 21, FieldType.UINT64_LIST, false)); 180 builder.withField(forField(field("fieldInt32List22_"), 22, FieldType.INT32_LIST, false)); 181 builder.withField(forField(field("fieldFixed64List23_"), 23, FieldType.FIXED64_LIST, false)); 182 builder.withField(forField(field("fieldFixed32List24_"), 24, FieldType.FIXED32_LIST, false)); 183 builder.withField(forField(field("fieldBoolList25_"), 25, FieldType.BOOL_LIST, false)); 184 builder.withField(forField(field("fieldStringList26_"), 26, FieldType.STRING_LIST, false)); 185 builder.withField( 186 forRepeatedMessageField( 187 field("fieldMessageList27_"), 27, FieldType.MESSAGE_LIST, Proto2Message.class)); 188 builder.withField(forField(field("fieldBytesList28_"), 28, FieldType.BYTES_LIST, false)); 189 builder.withField(forField(field("fieldUint32List29_"), 29, FieldType.UINT32_LIST, false)); 190 builder.withField( 191 forFieldWithEnumVerifier( 192 field("fieldEnumList30_"), 193 30, 194 FieldType.ENUM_LIST, 195 asVerifier(TestEnum.internalGetValueMap()))); 196 builder.withField(forField(field("fieldSfixed32List31_"), 31, FieldType.SFIXED32_LIST, false)); 197 builder.withField(forField(field("fieldSfixed64List32_"), 32, FieldType.SFIXED64_LIST, false)); 198 builder.withField(forField(field("fieldSint32List33_"), 33, FieldType.SINT32_LIST, false)); 199 builder.withField(forField(field("fieldSint64List34_"), 34, FieldType.SINT64_LIST, false)); 200 builder.withField( 201 forField(field("fieldDoubleListPacked35_"), 35, FieldType.DOUBLE_LIST_PACKED, false)); 202 builder.withField( 203 forField(field("fieldFloatListPacked36_"), 36, FieldType.FLOAT_LIST_PACKED, false)); 204 builder.withField( 205 forField(field("fieldInt64ListPacked37_"), 37, FieldType.INT64_LIST_PACKED, false)); 206 builder.withField( 207 forField(field("fieldUint64ListPacked38_"), 38, FieldType.UINT64_LIST_PACKED, false)); 208 builder.withField( 209 forField(field("fieldInt32ListPacked39_"), 39, FieldType.INT32_LIST_PACKED, false)); 210 builder.withField( 211 forField(field("fieldFixed64ListPacked40_"), 40, FieldType.FIXED64_LIST_PACKED, false)); 212 builder.withField( 213 forField(field("fieldFixed32ListPacked41_"), 41, FieldType.FIXED32_LIST_PACKED, false)); 214 builder.withField( 215 forField(field("fieldBoolListPacked42_"), 42, FieldType.BOOL_LIST_PACKED, false)); 216 builder.withField( 217 forField(field("fieldUint32ListPacked43_"), 43, FieldType.UINT32_LIST_PACKED, false)); 218 builder.withField( 219 forFieldWithEnumVerifier( 220 field("fieldEnumListPacked44_"), 221 44, 222 FieldType.ENUM_LIST_PACKED, 223 asVerifier(TestEnum.internalGetValueMap()))); 224 builder.withField( 225 forField(field("fieldSfixed32ListPacked45_"), 45, FieldType.SFIXED32_LIST_PACKED, false)); 226 builder.withField( 227 forField(field("fieldSfixed64ListPacked46_"), 46, FieldType.SFIXED64_LIST_PACKED, false)); 228 builder.withField( 229 forField(field("fieldSint32ListPacked47_"), 47, FieldType.SINT32_LIST_PACKED, false)); 230 builder.withField( 231 forField(field("fieldSint64ListPacked48_"), 48, FieldType.SINT64_LIST_PACKED, false)); 232 233 builder.withField( 234 forProto2OptionalField( 235 field("fieldGroup49_"), 49, FieldType.GROUP, bitField0, 0x00020000, false, null)); 236 builder.withField( 237 forRepeatedMessageField( 238 field("fieldGroupList51_"), 239 51, 240 FieldType.GROUP_LIST, 241 Proto2Message.FieldGroupList51.class)); 242 243 OneofInfo oneof = new OneofInfo(0, field("testOneofCase_"), field("testOneof_")); 244 builder.withField(forOneofMemberField(53, FieldType.DOUBLE, oneof, Double.class, false, null)); 245 builder.withField(forOneofMemberField(54, FieldType.FLOAT, oneof, Float.class, false, null)); 246 builder.withField(forOneofMemberField(55, FieldType.INT64, oneof, Long.class, false, null)); 247 builder.withField(forOneofMemberField(56, FieldType.UINT64, oneof, Long.class, false, null)); 248 builder.withField(forOneofMemberField(57, FieldType.INT32, oneof, Integer.class, false, null)); 249 builder.withField(forOneofMemberField(58, FieldType.FIXED64, oneof, Long.class, false, null)); 250 builder.withField( 251 forOneofMemberField(59, FieldType.FIXED32, oneof, Integer.class, false, null)); 252 builder.withField(forOneofMemberField(60, FieldType.BOOL, oneof, Boolean.class, false, null)); 253 builder.withField(forOneofMemberField(61, FieldType.STRING, oneof, String.class, false, null)); 254 builder.withField( 255 forOneofMemberField(62, FieldType.MESSAGE, oneof, Proto2Message.class, false, null)); 256 builder.withField( 257 forOneofMemberField(63, FieldType.BYTES, oneof, ByteString.class, false, null)); 258 builder.withField(forOneofMemberField(64, FieldType.UINT32, oneof, Integer.class, false, null)); 259 builder.withField( 260 forOneofMemberField(65, FieldType.SFIXED32, oneof, Integer.class, false, null)); 261 builder.withField(forOneofMemberField(66, FieldType.SFIXED64, oneof, Long.class, false, null)); 262 builder.withField(forOneofMemberField(67, FieldType.SINT32, oneof, Integer.class, false, null)); 263 builder.withField(forOneofMemberField(68, FieldType.SINT64, oneof, Long.class, false, null)); 264 builder.withField( 265 forOneofMemberField( 266 69, FieldType.GROUP, oneof, Proto2Message.FieldGroup69.class, false, null)); 267 268 Field bitField1 = field("bitField1_"); 269 builder.withField( 270 forProto2RequiredField( 271 field("fieldRequiredDouble71_"), 272 71, 273 FieldType.DOUBLE, 274 bitField1, 275 0x00000008, 276 false, 277 null)); 278 builder.withField( 279 forProto2RequiredField( 280 field("fieldRequiredFloat72_"), 281 72, 282 FieldType.FLOAT, 283 bitField1, 284 0x00000010, 285 false, 286 null)); 287 builder.withField( 288 forProto2RequiredField( 289 field("fieldRequiredInt6473_"), 290 73, 291 FieldType.INT64, 292 bitField1, 293 0x00000020, 294 false, 295 null)); 296 builder.withField( 297 forProto2RequiredField( 298 field("fieldRequiredUint6474_"), 299 74, 300 FieldType.UINT64, 301 bitField1, 302 0x00000040, 303 false, 304 null)); 305 builder.withField( 306 forProto2RequiredField( 307 field("fieldRequiredInt3275_"), 308 75, 309 FieldType.INT32, 310 bitField1, 311 0x00000080, 312 false, 313 null)); 314 builder.withField( 315 forProto2RequiredField( 316 field("fieldRequiredFixed6476_"), 317 76, 318 FieldType.FIXED64, 319 bitField1, 320 0x00000100, 321 false, 322 null)); 323 builder.withField( 324 forProto2RequiredField( 325 field("fieldRequiredFixed3277_"), 326 77, 327 FieldType.FIXED32, 328 bitField1, 329 0x00000200, 330 false, 331 null)); 332 builder.withField( 333 forProto2RequiredField( 334 field("fieldRequiredBool78_"), 78, FieldType.BOOL, bitField1, 0x00000400, false, null)); 335 builder.withField( 336 forProto2RequiredField( 337 field("fieldRequiredString79_"), 338 79, 339 FieldType.STRING, 340 bitField1, 341 0x00000800, 342 false, 343 null)); 344 builder.withField( 345 forProto2RequiredField( 346 field("fieldRequiredMessage80_"), 347 80, 348 FieldType.MESSAGE, 349 bitField1, 350 0x00001000, 351 false, 352 null)); 353 builder.withField( 354 forProto2RequiredField( 355 field("fieldRequiredBytes81_"), 356 81, 357 FieldType.BYTES, 358 bitField1, 359 0x00002000, 360 false, 361 null)); 362 builder.withField( 363 forProto2RequiredField( 364 field("fieldRequiredUint3282_"), 365 82, 366 FieldType.UINT32, 367 bitField1, 368 0x00004000, 369 false, 370 null)); 371 builder.withField( 372 forProto2RequiredField( 373 field("fieldRequiredEnum83_"), 374 83, 375 FieldType.ENUM, 376 bitField1, 377 0x00008000, 378 false, 379 asVerifier(TestEnum.internalGetValueMap()))); 380 builder.withField( 381 forProto2RequiredField( 382 field("fieldRequiredSfixed3284_"), 383 84, 384 FieldType.SFIXED32, 385 bitField1, 386 0x00010000, 387 false, 388 null)); 389 builder.withField( 390 forProto2RequiredField( 391 field("fieldRequiredSfixed6485_"), 392 85, 393 FieldType.SFIXED64, 394 bitField1, 395 0x00020000, 396 false, 397 null)); 398 builder.withField( 399 forProto2RequiredField( 400 field("fieldRequiredSint3286_"), 401 86, 402 FieldType.SINT32, 403 bitField1, 404 0x00040000, 405 false, 406 null)); 407 builder.withField( 408 forProto2RequiredField( 409 field("fieldRequiredSint6487_"), 410 87, 411 FieldType.SINT64, 412 bitField1, 413 0x00080000, 414 false, 415 null)); 416 builder.withField( 417 forProto2RequiredField( 418 field("fieldRequiredGroup88_"), 419 88, 420 FieldType.GROUP, 421 bitField1, 422 0x00100000, 423 false, 424 null)); 425 } 426 newMessageInfoForFieldGroup49()427 private static StructuralMessageInfo newMessageInfoForFieldGroup49() { 428 StructuralMessageInfo.Builder builder = StructuralMessageInfo.newBuilder(1); 429 builder.withSyntax(ProtoSyntax.PROTO2); 430 Field bitField0 = field(FieldGroup49.class, "bitField0_"); 431 builder.withField( 432 forProto2OptionalField( 433 field(FieldGroup49.class, "fieldInt3250_"), 434 50, 435 FieldType.INT32, 436 bitField0, 437 0x00000001, 438 false, 439 null)); 440 return builder.build(); 441 } 442 newMessageInfoForFieldGroupList51()443 private static StructuralMessageInfo newMessageInfoForFieldGroupList51() { 444 StructuralMessageInfo.Builder builder = StructuralMessageInfo.newBuilder(1); 445 builder.withSyntax(ProtoSyntax.PROTO2); 446 Field bitField0 = field(FieldGroupList51.class, "bitField0_"); 447 builder.withField( 448 forProto2OptionalField( 449 field(FieldGroupList51.class, "fieldInt3252_"), 450 52, 451 FieldType.INT32, 452 bitField0, 453 0x00000001, 454 false, 455 null)); 456 return builder.build(); 457 } 458 newMessageInfoForFieldGroup69()459 private static StructuralMessageInfo newMessageInfoForFieldGroup69() { 460 StructuralMessageInfo.Builder builder = StructuralMessageInfo.newBuilder(1); 461 builder.withSyntax(ProtoSyntax.PROTO2); 462 Field bitField0 = field(FieldGroup69.class, "bitField0_"); 463 builder.withField( 464 forProto2OptionalField( 465 field(FieldGroup69.class, "fieldInt3270_"), 466 70, 467 FieldType.INT32, 468 bitField0, 469 0x00000001, 470 false, 471 null)); 472 return builder.build(); 473 } 474 newMessageInfoForRequiredNestedMessage()475 private static StructuralMessageInfo newMessageInfoForRequiredNestedMessage() { 476 StructuralMessageInfo.Builder builder = StructuralMessageInfo.newBuilder(1); 477 builder.withSyntax(ProtoSyntax.PROTO2); 478 Field bitField0 = field(RequiredNestedMessage.class, "bitField0_"); 479 builder.withField( 480 forProto2OptionalField( 481 field(RequiredNestedMessage.class, "value_"), 482 1, 483 FieldType.INT32, 484 bitField0, 485 0x00000001, 486 false, 487 null)); 488 return builder.build(); 489 } 490 newMessageInfoForFieldRequiredGroup88()491 private static StructuralMessageInfo newMessageInfoForFieldRequiredGroup88() { 492 StructuralMessageInfo.Builder builder = StructuralMessageInfo.newBuilder(1); 493 builder.withSyntax(ProtoSyntax.PROTO2); 494 Field bitField0 = field(FieldRequiredGroup88.class, "bitField0_"); 495 builder.withField( 496 forProto2OptionalField( 497 field(FieldRequiredGroup88.class, "fieldInt3289_"), 498 89, 499 FieldType.INT32, 500 bitField0, 501 0x00000001, 502 false, 503 null)); 504 return builder.build(); 505 } 506 newMessageInfoForProto2Empty()507 private static StructuralMessageInfo newMessageInfoForProto2Empty() { 508 StructuralMessageInfo.Builder builder = StructuralMessageInfo.newBuilder(1); 509 builder.withSyntax(ProtoSyntax.PROTO2); 510 return builder.build(); 511 } 512 newMessageInfoForProto2MessageWithExtensions()513 private static StructuralMessageInfo newMessageInfoForProto2MessageWithExtensions() { 514 StructuralMessageInfo.Builder builder = StructuralMessageInfo.newBuilder(0); 515 builder.withSyntax(ProtoSyntax.PROTO2); 516 return builder.build(); 517 } 518 newMessageInfoForExtensionFieldGroup49()519 private static StructuralMessageInfo newMessageInfoForExtensionFieldGroup49() { 520 StructuralMessageInfo.Builder builder = StructuralMessageInfo.newBuilder(1); 521 builder.withSyntax(ProtoSyntax.PROTO2); 522 Field bitField0 = field(Proto2Testing.FieldGroup49.class, "bitField0_"); 523 builder.withField( 524 forProto2OptionalField( 525 field(Proto2Testing.FieldGroup49.class, "fieldInt3250_"), 526 50, 527 FieldType.INT32, 528 bitField0, 529 0x00000001, 530 false, 531 null)); 532 return builder.build(); 533 } 534 newMessageInfoForExtensionFieldGroupList51()535 private static StructuralMessageInfo newMessageInfoForExtensionFieldGroupList51() { 536 StructuralMessageInfo.Builder builder = StructuralMessageInfo.newBuilder(1); 537 builder.withSyntax(ProtoSyntax.PROTO2); 538 Field bitField0 = field(Proto2Testing.FieldGroupList51.class, "bitField0_"); 539 builder.withField( 540 forProto2OptionalField( 541 field(Proto2Testing.FieldGroupList51.class, "fieldInt3252_"), 542 52, 543 FieldType.INT32, 544 bitField0, 545 0x00000001, 546 false, 547 null)); 548 return builder.build(); 549 } 550 newMessageInfoForProto2MessageWithMaps()551 private static StructuralMessageInfo newMessageInfoForProto2MessageWithMaps() { 552 StructuralMessageInfo.Builder builder = StructuralMessageInfo.newBuilder(); 553 builder.withCheckInitialized( 554 new int[] { 555 10, 27, 44, 61, 78, 95, 112, 129, 146, 163, 180, 197, 556 }); 557 builder.withSyntax(ProtoSyntax.PROTO2); 558 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_bool_bool_1", 1)); 559 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_bool_bytes_2", 2)); 560 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_bool_double_3", 3)); 561 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_bool_enum_4", 4)); 562 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_bool_fixed32_5", 5)); 563 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_bool_fixed64_6", 6)); 564 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_bool_float_7", 7)); 565 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_bool_int32_8", 8)); 566 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_bool_int64_9", 9)); 567 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_bool_message_10", 10)); 568 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_bool_sfixed32_11", 11)); 569 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_bool_sfixed64_12", 12)); 570 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_bool_sint32_13", 13)); 571 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_bool_sint64_14", 14)); 572 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_bool_string_15", 15)); 573 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_bool_uint32_16", 16)); 574 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_bool_uint64_17", 17)); 575 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed32_bool_18", 18)); 576 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed32_bytes_19", 19)); 577 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed32_double_20", 20)); 578 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed32_enum_21", 21)); 579 builder.withField( 580 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed32_fixed32_22", 22)); 581 builder.withField( 582 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed32_fixed64_23", 23)); 583 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed32_float_24", 24)); 584 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed32_int32_25", 25)); 585 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed32_int64_26", 26)); 586 builder.withField( 587 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed32_message_27", 27)); 588 builder.withField( 589 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed32_sfixed32_28", 28)); 590 builder.withField( 591 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed32_sfixed64_29", 29)); 592 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed32_sint32_30", 30)); 593 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed32_sint64_31", 31)); 594 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed32_string_32", 32)); 595 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed32_uint32_33", 33)); 596 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed32_uint64_34", 34)); 597 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed64_bool_35", 35)); 598 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed64_bytes_36", 36)); 599 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed64_double_37", 37)); 600 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed64_enum_38", 38)); 601 builder.withField( 602 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed64_fixed32_39", 39)); 603 builder.withField( 604 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed64_fixed64_40", 40)); 605 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed64_float_41", 41)); 606 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed64_int32_42", 42)); 607 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed64_int64_43", 43)); 608 builder.withField( 609 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed64_message_44", 44)); 610 builder.withField( 611 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed64_sfixed32_45", 45)); 612 builder.withField( 613 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed64_sfixed64_46", 46)); 614 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed64_sint32_47", 47)); 615 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed64_sint64_48", 48)); 616 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed64_string_49", 49)); 617 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed64_uint32_50", 50)); 618 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_fixed64_uint64_51", 51)); 619 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int32_bool_52", 52)); 620 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int32_bytes_53", 53)); 621 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int32_double_54", 54)); 622 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int32_enum_55", 55)); 623 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int32_fixed32_56", 56)); 624 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int32_fixed64_57", 57)); 625 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int32_float_58", 58)); 626 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int32_int32_59", 59)); 627 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int32_int64_60", 60)); 628 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int32_message_61", 61)); 629 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int32_sfixed32_62", 62)); 630 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int32_sfixed64_63", 63)); 631 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int32_sint32_64", 64)); 632 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int32_sint64_65", 65)); 633 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int32_string_66", 66)); 634 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int32_uint32_67", 67)); 635 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int32_uint64_68", 68)); 636 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int64_bool_69", 69)); 637 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int64_bytes_70", 70)); 638 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int64_double_71", 71)); 639 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int64_enum_72", 72)); 640 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int64_fixed32_73", 73)); 641 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int64_fixed64_74", 74)); 642 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int64_float_75", 75)); 643 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int64_int32_76", 76)); 644 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int64_int64_77", 77)); 645 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int64_message_78", 78)); 646 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int64_sfixed32_79", 79)); 647 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int64_sfixed64_80", 80)); 648 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int64_sint32_81", 81)); 649 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int64_sint64_82", 82)); 650 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int64_string_83", 83)); 651 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int64_uint32_84", 84)); 652 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_int64_uint64_85", 85)); 653 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed32_bool_86", 86)); 654 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed32_bytes_87", 87)); 655 builder.withField( 656 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed32_double_88", 88)); 657 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed32_enum_89", 89)); 658 builder.withField( 659 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed32_fixed32_90", 90)); 660 builder.withField( 661 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed32_fixed64_91", 91)); 662 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed32_float_92", 92)); 663 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed32_int32_93", 93)); 664 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed32_int64_94", 94)); 665 builder.withField( 666 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed32_message_95", 95)); 667 builder.withField( 668 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed32_sfixed32_96", 96)); 669 builder.withField( 670 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed32_sfixed64_97", 97)); 671 builder.withField( 672 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed32_sint32_98", 98)); 673 builder.withField( 674 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed32_sint64_99", 99)); 675 builder.withField( 676 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed32_string_100", 100)); 677 builder.withField( 678 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed32_uint32_101", 101)); 679 builder.withField( 680 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed32_uint64_102", 102)); 681 builder.withField( 682 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed64_bool_103", 103)); 683 builder.withField( 684 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed64_bytes_104", 104)); 685 builder.withField( 686 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed64_double_105", 105)); 687 builder.withField( 688 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed64_enum_106", 106)); 689 builder.withField( 690 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed64_fixed32_107", 107)); 691 builder.withField( 692 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed64_fixed64_108", 108)); 693 builder.withField( 694 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed64_float_109", 109)); 695 builder.withField( 696 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed64_int32_110", 110)); 697 builder.withField( 698 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed64_int64_111", 111)); 699 builder.withField( 700 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed64_message_112", 112)); 701 builder.withField( 702 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed64_sfixed32_113", 113)); 703 builder.withField( 704 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed64_sfixed64_114", 114)); 705 builder.withField( 706 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed64_sint32_115", 115)); 707 builder.withField( 708 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed64_sint64_116", 116)); 709 builder.withField( 710 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed64_string_117", 117)); 711 builder.withField( 712 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed64_uint32_118", 118)); 713 builder.withField( 714 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sfixed64_uint64_119", 119)); 715 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint32_bool_120", 120)); 716 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint32_bytes_121", 121)); 717 builder.withField( 718 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint32_double_122", 122)); 719 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint32_enum_123", 123)); 720 builder.withField( 721 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint32_fixed32_124", 124)); 722 builder.withField( 723 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint32_fixed64_125", 125)); 724 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint32_float_126", 126)); 725 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint32_int32_127", 127)); 726 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint32_int64_128", 128)); 727 builder.withField( 728 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint32_message_129", 129)); 729 builder.withField( 730 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint32_sfixed32_130", 130)); 731 builder.withField( 732 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint32_sfixed64_131", 131)); 733 builder.withField( 734 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint32_sint32_132", 132)); 735 builder.withField( 736 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint32_sint64_133", 133)); 737 builder.withField( 738 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint32_string_134", 134)); 739 builder.withField( 740 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint32_uint32_135", 135)); 741 builder.withField( 742 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint32_uint64_136", 136)); 743 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint64_bool_137", 137)); 744 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint64_bytes_138", 138)); 745 builder.withField( 746 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint64_double_139", 139)); 747 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint64_enum_140", 140)); 748 builder.withField( 749 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint64_fixed32_141", 141)); 750 builder.withField( 751 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint64_fixed64_142", 142)); 752 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint64_float_143", 143)); 753 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint64_int32_144", 144)); 754 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint64_int64_145", 145)); 755 builder.withField( 756 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint64_message_146", 146)); 757 builder.withField( 758 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint64_sfixed32_147", 147)); 759 builder.withField( 760 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint64_sfixed64_148", 148)); 761 builder.withField( 762 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint64_sint32_149", 149)); 763 builder.withField( 764 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint64_sint64_150", 150)); 765 builder.withField( 766 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint64_string_151", 151)); 767 builder.withField( 768 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint64_uint32_152", 152)); 769 builder.withField( 770 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_sint64_uint64_153", 153)); 771 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_string_bool_154", 154)); 772 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_string_bytes_155", 155)); 773 builder.withField( 774 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_string_double_156", 156)); 775 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_string_enum_157", 157)); 776 builder.withField( 777 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_string_fixed32_158", 158)); 778 builder.withField( 779 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_string_fixed64_159", 159)); 780 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_string_float_160", 160)); 781 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_string_int32_161", 161)); 782 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_string_int64_162", 162)); 783 builder.withField( 784 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_string_message_163", 163)); 785 builder.withField( 786 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_string_sfixed32_164", 164)); 787 builder.withField( 788 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_string_sfixed64_165", 165)); 789 builder.withField( 790 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_string_sint32_166", 166)); 791 builder.withField( 792 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_string_sint64_167", 167)); 793 builder.withField( 794 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_string_string_168", 168)); 795 builder.withField( 796 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_string_uint32_169", 169)); 797 builder.withField( 798 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_string_uint64_170", 170)); 799 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint32_bool_171", 171)); 800 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint32_bytes_172", 172)); 801 builder.withField( 802 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint32_double_173", 173)); 803 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint32_enum_174", 174)); 804 builder.withField( 805 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint32_fixed32_175", 175)); 806 builder.withField( 807 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint32_fixed64_176", 176)); 808 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint32_float_177", 177)); 809 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint32_int32_178", 178)); 810 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint32_int64_179", 179)); 811 builder.withField( 812 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint32_message_180", 180)); 813 builder.withField( 814 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint32_sfixed32_181", 181)); 815 builder.withField( 816 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint32_sfixed64_182", 182)); 817 builder.withField( 818 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint32_sint32_183", 183)); 819 builder.withField( 820 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint32_sint64_184", 184)); 821 builder.withField( 822 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint32_string_185", 185)); 823 builder.withField( 824 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint32_uint32_186", 186)); 825 builder.withField( 826 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint32_uint64_187", 187)); 827 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint64_bool_188", 188)); 828 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint64_bytes_189", 189)); 829 builder.withField( 830 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint64_double_190", 190)); 831 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint64_enum_191", 191)); 832 builder.withField( 833 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint64_fixed32_192", 192)); 834 builder.withField( 835 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint64_fixed64_193", 193)); 836 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint64_float_194", 194)); 837 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint64_int32_195", 195)); 838 builder.withField(mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint64_int64_196", 196)); 839 builder.withField( 840 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint64_message_197", 197)); 841 builder.withField( 842 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint64_sfixed32_198", 198)); 843 builder.withField( 844 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint64_sfixed64_199", 199)); 845 builder.withField( 846 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint64_sint32_200", 200)); 847 builder.withField( 848 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint64_sint64_201", 201)); 849 builder.withField( 850 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint64_string_202", 202)); 851 builder.withField( 852 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint64_uint32_203", 203)); 853 builder.withField( 854 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint64_uint64_204", 204)); 855 856 return builder.build(); 857 } 858 mapFieldInfo(Class<?> clazz, String fieldName, int fieldNumber)859 private static FieldInfo mapFieldInfo(Class<?> clazz, String fieldName, int fieldNumber) { 860 try { 861 return forMapField( 862 field(clazz, SchemaUtil.toCamelCase(fieldName, false) + "_"), 863 fieldNumber, 864 SchemaUtil.getMapDefaultEntry(clazz, fieldName), 865 fieldName.contains("_enum_") ? asVerifier(TestEnum.internalGetValueMap()) : null); 866 } catch (Throwable t) { 867 throw new RuntimeException(t); 868 } 869 } 870 871 field(String name)872 private static Field field(String name) { 873 return field(Proto2Message.class, name); 874 } 875 field(Class<?> clazz, String name)876 private static Field field(Class<?> clazz, String name) { 877 try { 878 return clazz.getDeclaredField(name); 879 } catch (NoSuchFieldException | SecurityException e) { 880 throw new RuntimeException(e); 881 } 882 } 883 asVerifier(final Internal.EnumLiteMap<?> map)884 private static Internal.EnumVerifier asVerifier(final Internal.EnumLiteMap<?> map) { 885 return new Internal.EnumVerifier() { 886 @Override 887 public boolean isInRange(int number) { 888 return map.findValueByNumber(number) != null; 889 } 890 }; 891 } 892 } 893