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.Proto2Testing.Proto2MessageWithMaps; 39 import com.google.protobuf.testing.Proto3Testing.Proto3Empty; 40 import com.google.protobuf.testing.Proto3Testing.Proto3Message; 41 import com.google.protobuf.testing.Proto3Testing.Proto3MessageWithMaps; 42 import java.lang.reflect.Field; 43 44 /** A factory that generates a hard-coded info for {@link Proto3Message}. */ 45 public final class Proto3MessageInfoFactory implements MessageInfoFactory { 46 private static final Proto3MessageInfoFactory INSTANCE = new Proto3MessageInfoFactory(); 47 Proto3MessageInfoFactory()48 private Proto3MessageInfoFactory() {} 49 getInstance()50 public static Proto3MessageInfoFactory getInstance() { 51 return INSTANCE; 52 } 53 54 @Override isSupported(Class<?> clazz)55 public boolean isSupported(Class<?> clazz) { 56 return true; 57 } 58 59 @Override messageInfoFor(Class<?> clazz)60 public MessageInfo messageInfoFor(Class<?> clazz) { 61 if (Proto3Message.class.isAssignableFrom(clazz)) { 62 return newMessageInfoForProto3Message(); 63 } else if (Proto3Empty.class.isAssignableFrom(clazz)) { 64 return newMessageInfoForProto3Empty(); 65 } else if (Proto3MessageWithMaps.class.isAssignableFrom(clazz)) { 66 return newMessageInfoForProto3MessageWithMaps(); 67 } else { 68 throw new IllegalArgumentException("Unsupported class: " + clazz.getName()); 69 } 70 } 71 72 /** 73 * Creates a new hard-coded info for {@link Proto3Message}. Each time this is called, we manually 74 * go through the entire process of what a message would do if it self-registered its own info, 75 * including looking up each field by name. This is done for benchmarking purposes, so that we get 76 * a more accurate representation of the time it takes to perform this process. 77 */ newMessageInfoForProto3Message()78 private static StructuralMessageInfo newMessageInfoForProto3Message() { 79 StructuralMessageInfo.Builder builder = StructuralMessageInfo.newBuilder(48); 80 lookupFieldsByName(builder); 81 return builder.build(); 82 } 83 lookupFieldsByName(StructuralMessageInfo.Builder builder)84 private static void lookupFieldsByName(StructuralMessageInfo.Builder builder) { 85 builder.withDefaultInstance(Proto3Message.getDefaultInstance()); 86 builder.withSyntax(ProtoSyntax.PROTO3); 87 builder.withField(forField(field("fieldDouble1_"), 1, FieldType.DOUBLE, true)); 88 builder.withField(forField(field("fieldFloat2_"), 2, FieldType.FLOAT, true)); 89 builder.withField(forField(field("fieldInt643_"), 3, FieldType.INT64, true)); 90 builder.withField(forField(field("fieldUint644_"), 4, FieldType.UINT64, true)); 91 builder.withField(forField(field("fieldInt325_"), 5, FieldType.INT32, true)); 92 builder.withField(forField(field("fieldFixed646_"), 6, FieldType.FIXED64, true)); 93 builder.withField(forField(field("fieldFixed327_"), 7, FieldType.FIXED32, true)); 94 builder.withField(forField(field("fieldBool8_"), 8, FieldType.BOOL, true)); 95 builder.withField(forField(field("fieldString9_"), 9, FieldType.STRING, true)); 96 builder.withField(forField(field("fieldMessage10_"), 10, FieldType.MESSAGE, true)); 97 builder.withField(forField(field("fieldBytes11_"), 11, FieldType.BYTES, true)); 98 builder.withField(forField(field("fieldUint3212_"), 12, FieldType.UINT32, true)); 99 builder.withField(forField(field("fieldEnum13_"), 13, FieldType.ENUM, true)); 100 builder.withField(forField(field("fieldSfixed3214_"), 14, FieldType.SFIXED32, true)); 101 builder.withField(forField(field("fieldSfixed6415_"), 15, FieldType.SFIXED64, true)); 102 builder.withField(forField(field("fieldSint3216_"), 16, FieldType.SINT32, true)); 103 builder.withField(forField(field("fieldSint6417_"), 17, FieldType.SINT64, true)); 104 builder.withField(forField(field("fieldDoubleList18_"), 18, FieldType.DOUBLE_LIST, true)); 105 builder.withField(forField(field("fieldFloatList19_"), 19, FieldType.FLOAT_LIST, true)); 106 builder.withField(forField(field("fieldInt64List20_"), 20, FieldType.INT64_LIST, true)); 107 builder.withField(forField(field("fieldUint64List21_"), 21, FieldType.UINT64_LIST, true)); 108 builder.withField(forField(field("fieldInt32List22_"), 22, FieldType.INT32_LIST, true)); 109 builder.withField(forField(field("fieldFixed64List23_"), 23, FieldType.FIXED64_LIST, true)); 110 builder.withField(forField(field("fieldFixed32List24_"), 24, FieldType.FIXED32_LIST, true)); 111 builder.withField(forField(field("fieldBoolList25_"), 25, FieldType.BOOL_LIST, true)); 112 builder.withField(forField(field("fieldStringList26_"), 26, FieldType.STRING_LIST, true)); 113 builder.withField( 114 forRepeatedMessageField( 115 field("fieldMessageList27_"), 27, FieldType.MESSAGE_LIST, Proto3Message.class)); 116 builder.withField(forField(field("fieldBytesList28_"), 28, FieldType.BYTES_LIST, true)); 117 builder.withField(forField(field("fieldUint32List29_"), 29, FieldType.UINT32_LIST, true)); 118 builder.withField(forField(field("fieldEnumList30_"), 30, FieldType.ENUM_LIST, true)); 119 builder.withField(forField(field("fieldSfixed32List31_"), 31, FieldType.SFIXED32_LIST, true)); 120 builder.withField(forField(field("fieldSfixed64List32_"), 32, FieldType.SFIXED64_LIST, true)); 121 builder.withField(forField(field("fieldSint32List33_"), 33, FieldType.SINT32_LIST, true)); 122 builder.withField(forField(field("fieldSint64List34_"), 34, FieldType.SINT64_LIST, true)); 123 builder.withField( 124 forField(field("fieldDoubleListPacked35_"), 35, FieldType.DOUBLE_LIST_PACKED, true)); 125 builder.withField( 126 forField(field("fieldFloatListPacked36_"), 36, FieldType.FLOAT_LIST_PACKED, true)); 127 builder.withField( 128 forField(field("fieldInt64ListPacked37_"), 37, FieldType.INT64_LIST_PACKED, true)); 129 builder.withField( 130 forField(field("fieldUint64ListPacked38_"), 38, FieldType.UINT64_LIST_PACKED, true)); 131 builder.withField( 132 forField(field("fieldInt32ListPacked39_"), 39, FieldType.INT32_LIST_PACKED, true)); 133 builder.withField( 134 forField(field("fieldFixed64ListPacked40_"), 40, FieldType.FIXED64_LIST_PACKED, true)); 135 builder.withField( 136 forField(field("fieldFixed32ListPacked41_"), 41, FieldType.FIXED32_LIST_PACKED, true)); 137 builder.withField( 138 forField(field("fieldBoolListPacked42_"), 42, FieldType.BOOL_LIST_PACKED, true)); 139 builder.withField( 140 forField(field("fieldUint32ListPacked43_"), 43, FieldType.UINT32_LIST_PACKED, true)); 141 builder.withField( 142 forField(field("fieldEnumListPacked44_"), 44, FieldType.ENUM_LIST_PACKED, true)); 143 builder.withField( 144 forField(field("fieldSfixed32ListPacked45_"), 45, FieldType.SFIXED32_LIST_PACKED, true)); 145 builder.withField( 146 forField(field("fieldSfixed64ListPacked46_"), 46, FieldType.SFIXED64_LIST_PACKED, true)); 147 builder.withField( 148 forField(field("fieldSint32ListPacked47_"), 47, FieldType.SINT32_LIST_PACKED, true)); 149 builder.withField( 150 forField(field("fieldSint64ListPacked48_"), 48, FieldType.SINT64_LIST_PACKED, true)); 151 152 OneofInfo oneof = new OneofInfo(0, field("testOneofCase_"), field("testOneof_")); 153 builder.withField(forOneofMemberField(53, FieldType.DOUBLE, oneof, Double.class, true, null)); 154 builder.withField(forOneofMemberField(54, FieldType.FLOAT, oneof, Float.class, true, null)); 155 builder.withField(forOneofMemberField(55, FieldType.INT64, oneof, Long.class, true, null)); 156 builder.withField(forOneofMemberField(56, FieldType.UINT64, oneof, Long.class, true, null)); 157 builder.withField(forOneofMemberField(57, FieldType.INT32, oneof, Integer.class, true, null)); 158 builder.withField(forOneofMemberField(58, FieldType.FIXED64, oneof, Long.class, true, null)); 159 builder.withField(forOneofMemberField(59, FieldType.FIXED32, oneof, Integer.class, true, null)); 160 builder.withField(forOneofMemberField(60, FieldType.BOOL, oneof, Boolean.class, true, null)); 161 builder.withField(forOneofMemberField(61, FieldType.STRING, oneof, String.class, true, null)); 162 builder.withField( 163 forOneofMemberField(62, FieldType.MESSAGE, oneof, Proto3Message.class, true, null)); 164 builder.withField( 165 forOneofMemberField(63, FieldType.BYTES, oneof, ByteString.class, true, null)); 166 builder.withField(forOneofMemberField(64, FieldType.UINT32, oneof, Integer.class, true, null)); 167 builder.withField( 168 forOneofMemberField(65, FieldType.SFIXED32, oneof, Integer.class, true, null)); 169 builder.withField(forOneofMemberField(66, FieldType.SFIXED64, oneof, Long.class, true, null)); 170 builder.withField(forOneofMemberField(67, FieldType.SINT32, oneof, Integer.class, true, null)); 171 builder.withField(forOneofMemberField(68, FieldType.SINT64, oneof, Long.class, true, null)); 172 } 173 newMessageInfoForProto3Empty()174 private StructuralMessageInfo newMessageInfoForProto3Empty() { 175 StructuralMessageInfo.Builder builder = StructuralMessageInfo.newBuilder(1); 176 builder.withSyntax(ProtoSyntax.PROTO3); 177 return builder.build(); 178 } 179 newMessageInfoForProto3MessageWithMaps()180 private StructuralMessageInfo newMessageInfoForProto3MessageWithMaps() { 181 StructuralMessageInfo.Builder builder = StructuralMessageInfo.newBuilder(); 182 builder.withSyntax(ProtoSyntax.PROTO3); 183 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_bool_bool_1", 1)); 184 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_bool_bytes_2", 2)); 185 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_bool_double_3", 3)); 186 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_bool_enum_4", 4)); 187 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_bool_fixed32_5", 5)); 188 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_bool_fixed64_6", 6)); 189 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_bool_float_7", 7)); 190 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_bool_int32_8", 8)); 191 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_bool_int64_9", 9)); 192 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_bool_message_10", 10)); 193 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_bool_sfixed32_11", 11)); 194 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_bool_sfixed64_12", 12)); 195 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_bool_sint32_13", 13)); 196 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_bool_sint64_14", 14)); 197 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_bool_string_15", 15)); 198 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_bool_uint32_16", 16)); 199 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_bool_uint64_17", 17)); 200 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed32_bool_18", 18)); 201 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed32_bytes_19", 19)); 202 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed32_double_20", 20)); 203 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed32_enum_21", 21)); 204 builder.withField( 205 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed32_fixed32_22", 22)); 206 builder.withField( 207 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed32_fixed64_23", 23)); 208 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed32_float_24", 24)); 209 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed32_int32_25", 25)); 210 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed32_int64_26", 26)); 211 builder.withField( 212 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed32_message_27", 27)); 213 builder.withField( 214 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed32_sfixed32_28", 28)); 215 builder.withField( 216 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed32_sfixed64_29", 29)); 217 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed32_sint32_30", 30)); 218 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed32_sint64_31", 31)); 219 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed32_string_32", 32)); 220 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed32_uint32_33", 33)); 221 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed32_uint64_34", 34)); 222 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed64_bool_35", 35)); 223 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed64_bytes_36", 36)); 224 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed64_double_37", 37)); 225 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed64_enum_38", 38)); 226 builder.withField( 227 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed64_fixed32_39", 39)); 228 builder.withField( 229 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed64_fixed64_40", 40)); 230 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed64_float_41", 41)); 231 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed64_int32_42", 42)); 232 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed64_int64_43", 43)); 233 builder.withField( 234 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed64_message_44", 44)); 235 builder.withField( 236 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed64_sfixed32_45", 45)); 237 builder.withField( 238 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed64_sfixed64_46", 46)); 239 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed64_sint32_47", 47)); 240 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed64_sint64_48", 48)); 241 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed64_string_49", 49)); 242 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed64_uint32_50", 50)); 243 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_fixed64_uint64_51", 51)); 244 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int32_bool_52", 52)); 245 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int32_bytes_53", 53)); 246 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int32_double_54", 54)); 247 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int32_enum_55", 55)); 248 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int32_fixed32_56", 56)); 249 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int32_fixed64_57", 57)); 250 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int32_float_58", 58)); 251 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int32_int32_59", 59)); 252 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int32_int64_60", 60)); 253 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int32_message_61", 61)); 254 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int32_sfixed32_62", 62)); 255 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int32_sfixed64_63", 63)); 256 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int32_sint32_64", 64)); 257 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int32_sint64_65", 65)); 258 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int32_string_66", 66)); 259 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int32_uint32_67", 67)); 260 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int32_uint64_68", 68)); 261 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int64_bool_69", 69)); 262 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int64_bytes_70", 70)); 263 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int64_double_71", 71)); 264 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int64_enum_72", 72)); 265 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int64_fixed32_73", 73)); 266 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int64_fixed64_74", 74)); 267 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int64_float_75", 75)); 268 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int64_int32_76", 76)); 269 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int64_int64_77", 77)); 270 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int64_message_78", 78)); 271 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int64_sfixed32_79", 79)); 272 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int64_sfixed64_80", 80)); 273 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int64_sint32_81", 81)); 274 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int64_sint64_82", 82)); 275 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int64_string_83", 83)); 276 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int64_uint32_84", 84)); 277 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_int64_uint64_85", 85)); 278 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed32_bool_86", 86)); 279 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed32_bytes_87", 87)); 280 builder.withField( 281 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed32_double_88", 88)); 282 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed32_enum_89", 89)); 283 builder.withField( 284 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed32_fixed32_90", 90)); 285 builder.withField( 286 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed32_fixed64_91", 91)); 287 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed32_float_92", 92)); 288 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed32_int32_93", 93)); 289 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed32_int64_94", 94)); 290 builder.withField( 291 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed32_message_95", 95)); 292 builder.withField( 293 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed32_sfixed32_96", 96)); 294 builder.withField( 295 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed32_sfixed64_97", 97)); 296 builder.withField( 297 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed32_sint32_98", 98)); 298 builder.withField( 299 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed32_sint64_99", 99)); 300 builder.withField( 301 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed32_string_100", 100)); 302 builder.withField( 303 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed32_uint32_101", 101)); 304 builder.withField( 305 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed32_uint64_102", 102)); 306 builder.withField( 307 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed64_bool_103", 103)); 308 builder.withField( 309 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed64_bytes_104", 104)); 310 builder.withField( 311 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed64_double_105", 105)); 312 builder.withField( 313 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed64_enum_106", 106)); 314 builder.withField( 315 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed64_fixed32_107", 107)); 316 builder.withField( 317 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed64_fixed64_108", 108)); 318 builder.withField( 319 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed64_float_109", 109)); 320 builder.withField( 321 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed64_int32_110", 110)); 322 builder.withField( 323 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed64_int64_111", 111)); 324 builder.withField( 325 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed64_message_112", 112)); 326 builder.withField( 327 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed64_sfixed32_113", 113)); 328 builder.withField( 329 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed64_sfixed64_114", 114)); 330 builder.withField( 331 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed64_sint32_115", 115)); 332 builder.withField( 333 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed64_sint64_116", 116)); 334 builder.withField( 335 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed64_string_117", 117)); 336 builder.withField( 337 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed64_uint32_118", 118)); 338 builder.withField( 339 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sfixed64_uint64_119", 119)); 340 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint32_bool_120", 120)); 341 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint32_bytes_121", 121)); 342 builder.withField( 343 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint32_double_122", 122)); 344 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint32_enum_123", 123)); 345 builder.withField( 346 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint32_fixed32_124", 124)); 347 builder.withField( 348 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint32_fixed64_125", 125)); 349 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint32_float_126", 126)); 350 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint32_int32_127", 127)); 351 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint32_int64_128", 128)); 352 builder.withField( 353 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint32_message_129", 129)); 354 builder.withField( 355 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint32_sfixed32_130", 130)); 356 builder.withField( 357 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint32_sfixed64_131", 131)); 358 builder.withField( 359 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint32_sint32_132", 132)); 360 builder.withField( 361 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint32_sint64_133", 133)); 362 builder.withField( 363 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint32_string_134", 134)); 364 builder.withField( 365 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint32_uint32_135", 135)); 366 builder.withField( 367 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint32_uint64_136", 136)); 368 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint64_bool_137", 137)); 369 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint64_bytes_138", 138)); 370 builder.withField( 371 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint64_double_139", 139)); 372 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint64_enum_140", 140)); 373 builder.withField( 374 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint64_fixed32_141", 141)); 375 builder.withField( 376 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint64_fixed64_142", 142)); 377 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint64_float_143", 143)); 378 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint64_int32_144", 144)); 379 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint64_int64_145", 145)); 380 builder.withField( 381 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint64_message_146", 146)); 382 builder.withField( 383 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint64_sfixed32_147", 147)); 384 builder.withField( 385 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint64_sfixed64_148", 148)); 386 builder.withField( 387 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint64_sint32_149", 149)); 388 builder.withField( 389 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint64_sint64_150", 150)); 390 builder.withField( 391 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint64_string_151", 151)); 392 builder.withField( 393 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint64_uint32_152", 152)); 394 builder.withField( 395 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_sint64_uint64_153", 153)); 396 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_string_bool_154", 154)); 397 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_string_bytes_155", 155)); 398 builder.withField( 399 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_string_double_156", 156)); 400 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_string_enum_157", 157)); 401 builder.withField( 402 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_string_fixed32_158", 158)); 403 builder.withField( 404 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_string_fixed64_159", 159)); 405 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_string_float_160", 160)); 406 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_string_int32_161", 161)); 407 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_string_int64_162", 162)); 408 builder.withField( 409 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_string_message_163", 163)); 410 builder.withField( 411 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_string_sfixed32_164", 164)); 412 builder.withField( 413 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_string_sfixed64_165", 165)); 414 builder.withField( 415 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_string_sint32_166", 166)); 416 builder.withField( 417 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_string_sint64_167", 167)); 418 builder.withField( 419 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_string_string_168", 168)); 420 builder.withField( 421 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_string_uint32_169", 169)); 422 builder.withField( 423 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_string_uint64_170", 170)); 424 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint32_bool_171", 171)); 425 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint32_bytes_172", 172)); 426 builder.withField( 427 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint32_double_173", 173)); 428 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint32_enum_174", 174)); 429 builder.withField( 430 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint32_fixed32_175", 175)); 431 builder.withField( 432 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint32_fixed64_176", 176)); 433 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint32_float_177", 177)); 434 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint32_int32_178", 178)); 435 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint32_int64_179", 179)); 436 builder.withField( 437 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint32_message_180", 180)); 438 builder.withField( 439 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint32_sfixed32_181", 181)); 440 builder.withField( 441 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint32_sfixed64_182", 182)); 442 builder.withField( 443 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint32_sint32_183", 183)); 444 builder.withField( 445 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint32_sint64_184", 184)); 446 builder.withField( 447 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint32_string_185", 185)); 448 builder.withField( 449 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint32_uint32_186", 186)); 450 builder.withField( 451 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint32_uint64_187", 187)); 452 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint64_bool_188", 188)); 453 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint64_bytes_189", 189)); 454 builder.withField( 455 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint64_double_190", 190)); 456 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint64_enum_191", 191)); 457 builder.withField( 458 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint64_fixed32_192", 192)); 459 builder.withField( 460 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint64_fixed64_193", 193)); 461 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint64_float_194", 194)); 462 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint64_int32_195", 195)); 463 builder.withField(mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint64_int64_196", 196)); 464 builder.withField( 465 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint64_message_197", 197)); 466 builder.withField( 467 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint64_sfixed32_198", 198)); 468 builder.withField( 469 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint64_sfixed64_199", 199)); 470 builder.withField( 471 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint64_sint32_200", 200)); 472 builder.withField( 473 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint64_sint64_201", 201)); 474 builder.withField( 475 mapFieldInfo(Proto3MessageWithMaps.class, "field_map_uint64_string_202", 202)); 476 builder.withField( 477 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint64_uint32_203", 203)); 478 builder.withField( 479 mapFieldInfo(Proto2MessageWithMaps.class, "field_map_uint64_uint64_204", 204)); 480 return builder.build(); 481 } 482 field(String name)483 private static Field field(String name) { 484 return field(Proto3Message.class, name); 485 } 486 field(Class<?> clazz, String name)487 private static Field field(Class<?> clazz, String name) { 488 try { 489 return clazz.getDeclaredField(name); 490 } catch (NoSuchFieldException | SecurityException e) { 491 throw new RuntimeException(e); 492 } 493 } 494 mapFieldInfo(Class<?> clazz, String fieldName, int fieldNumber)495 private static FieldInfo mapFieldInfo(Class<?> clazz, String fieldName, int fieldNumber) { 496 try { 497 return forMapField( 498 field(clazz, SchemaUtil.toCamelCase(fieldName, false) + "_"), 499 fieldNumber, 500 SchemaUtil.getMapDefaultEntry(clazz, fieldName), 501 null); 502 } catch (Throwable t) { 503 throw new RuntimeException(t); 504 } 505 } 506 } 507