• Max Cai's avatar
    Extension overhaul. · e3714f00
    Max Cai authored
    - Get rid of TypeLiteral<T>. It was introduced to read the component
      type of a List<T> at runtime. But we use arrays everywhere else,
      and we can always read the component type of an array type at
      runtime.
    - Properly read/write "minor" types (e.g. sint32, sfixed32). The old
      implementation could only read/write data as the "typical" types
      (one per Java type), e.g. java.lang.Integer -> int32, java.lang.Long
      -> int64. So if e.g. an extension specifies sfixed32 as the type, it
      would be read/written in the totally incompatible int32 format.
    - Properly serialize repeated packed fields. The old implementation
      doesn't do packed serialization. As an added bonus, and to be more
      aligned with the rest of protobuf nano / main, repeated packable
      extensions can deserialize both packed and non-packed data.
    - Split Extension class into a hierarchy so under typical usage a
      large chunk of code dealing with primitive type extensions can be
      removed by ProGuard.
    
    Bug: https://code.google.com/p/android/issues/detail?id=62586
    Change-Id: I0d692f35cc2a8ad3a5a1cb3ce001282b2356b041
    e3714f00
unittest_extension_repeated_nano.proto 1.29 KB