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