diff options
author | Max Cai <maxtroy@google.com> | 2013-11-20 18:59:01 +0000 |
---|---|---|
committer | Max Cai <maxtroy@google.com> | 2014-01-10 11:50:32 +0000 |
commit | 382ddccb550e1c822ef26a0e65988998f7446624 (patch) | |
tree | 5159c510e6a895f4ce56310b8f23b7bb4aafc2f0 /src/google/protobuf/unittest_extension_repeated_nano.proto | |
parent | e7741c064ee4cdc5fa41e6444ed45131672fed97 (diff) | |
download | external_protobuf-382ddccb550e1c822ef26a0e65988998f7446624.zip external_protobuf-382ddccb550e1c822ef26a0e65988998f7446624.tar.gz external_protobuf-382ddccb550e1c822ef26a0e65988998f7446624.tar.bz2 |
Extension overhaul.
- 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
Diffstat (limited to 'src/google/protobuf/unittest_extension_repeated_nano.proto')
-rw-r--r-- | src/google/protobuf/unittest_extension_repeated_nano.proto | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/google/protobuf/unittest_extension_repeated_nano.proto b/src/google/protobuf/unittest_extension_repeated_nano.proto new file mode 100644 index 0000000..546c2df --- /dev/null +++ b/src/google/protobuf/unittest_extension_repeated_nano.proto @@ -0,0 +1,34 @@ +syntax = "proto2"; + +option java_multiple_files = true; +option java_package = "com.google.protobuf.nano"; + +import "google/protobuf/unittest_extension_nano.proto"; + +// Must be compiled separately due to extension number reuse. +// The reuse is deliberate, for testing wire compatibility. + +message RepeatedExtensions { + extend ExtendableMessage { + repeated int32 repeated_int32 = 10; + repeated uint32 repeated_uint32 = 11; + repeated sint32 repeated_sint32 = 12; + repeated int64 repeated_int64 = 13; + repeated uint64 repeated_uint64 = 14; + repeated sint64 repeated_sint64 = 15; + repeated fixed32 repeated_fixed32 = 16; + repeated sfixed32 repeated_sfixed32 = 17; + repeated fixed64 repeated_fixed64 = 18; + repeated sfixed64 repeated_sfixed64 = 19; + repeated bool repeated_bool = 20; + repeated float repeated_float = 21; + repeated double repeated_double = 22; + repeated AnEnum repeated_enum = 23; + repeated string repeated_string = 24; + repeated bytes repeated_bytes = 25; + repeated AnotherMessage repeated_message = 26; + repeated group RepeatedGroup = 27 { + optional int32 a = 1; + } + } +} |