- 15 Jul, 2014 1 commit
-
-
Max Cai authored
Instead of publishing its class I chose to encapsulate the troublesome references in equals()/hashCode() in the generated code into superclass methods in ExtendableMessageNano. Changed a couple of java packages in the test suite to catch this issue easier in the future. Change-Id: I43f88411f63bb6f3ffc8d63361f2f77bebf6220a
-
- 14 Jul, 2014 2 commits
-
-
Max Cai authored
-
Juan Silveira authored
The current implementation of getExtension deserialises the field from bytes and returns a new object every time. This means that changes to those objects are reflected when the messages is serialised unless setExtension is called. It also means that every call to getExtension and setExtension is expensive. This change introduces a FieldData class that contains everything that's known about the field at the time. This can be all the tag/byte[] pairs associated with a given field or an Extension and a value object. This is so that two messages with a repeated extension can be compared even if the extension has been deserialised in one of them but not the other. This change also adds FieldArray class based on SparseArray from the Android compatibility library. This is used in ExtendableMessageNano to make lookup of FieldDatas by their field number faster. Implications: * calling getExtension multiple times deserialises the field only once and returns the same object. * calling setExtension doesn't cause the object to be serialised immediately, that only happens when the container message is serialised. * getExtension is no longer a read-only thread-safe operation. README.txt has been updated to relfect that. * comparison using equals and hashCode continues to work. Bug: 10863158 Change-Id: I81c7cb0c73cc0611a1f7c1eabf5eed259738e8bc
-
- 02 May, 2014 3 commits
- 01 May, 2014 3 commits
-
-
Jan-Willem Maarse authored
* commit 'd20f0a4260763531acf5de677e4830afe0bfc53e': Fix NPE when clearing an extension in nano protos
-
Jan-Willem Maarse authored
-
Jan-Willem Maarse authored
If ExtendableMessageNano doesn't have any unknown fields, trying to clear an extension by setting it to null would throw an NPE. Change-Id: I6abcdfcc0193de44f97b21dd6cc2f40604938a1a
-
- 29 Apr, 2014 1 commit
-
-
Bill Yi authored
-
- 25 Apr, 2014 2 commits
-
-
Jeff Davidson authored
-
Jeff Davidson authored
This CL adds the "parcelable_messages" option. When enabled, all generated message classes will conform to the Android Parcelable contract. This is achieved by introducing a new parent class for generated classes which implements the required functionality. Since the store_unknown_fields option also makes use of a superclass, ExtendableMessageNano, we have two versions of the new Parcelable superclass: one extending MessageNano, and one extending ExtendableMessageNano. These classes are otherwise identical. As these classes depend on Android framework jars, they are not included in the host .jar build of the nanoproto library. Finally, add a test suite for running tests of Android-specific functionality, as this cannot be done on a desktop JVM. Change-Id: Icc2a257f03317e947f7078dbb9857c3286857497
-
- 24 Apr, 2014 1 commit
-
-
Max Cai authored
-
- 23 Apr, 2014 1 commit
-
-
Jie Dai authored
Nano proto compiler normally throws an error if any service is defined. If --ignore-services=true is set, no error is thrown and the service is simply skipped. Change-Id: Id82583555085cc55550d03a485d3f0189885240b
-
- 14 Apr, 2014 1 commit
-
-
Max Cai authored
-
- 10 Apr, 2014 1 commit
-
-
Dave Hawkey authored
This avoids a race-condition when cachedSize is momentarily set to 0 for non-empty messages if multiple threads call getSerializedSize (e.g. during serialization). This is a retry of https://android-review.googlesource.com/#/c/88570/. getSerializedSize() has been kept non-final so that messages generated with a previous version of the compiler will not break. Change-Id: I8d8154a10938cde579ae19c55eae55b1e70e0bda
-
- 22 Mar, 2014 3 commits
-
-
Wink Saville authored
* commit 'ce2f59915e0b41c935e3f72a2b7b71b6c19b6860': Revert "Don't reset cachedSize to 0 in getSerializedSize"
-
Wink Saville authored
-
Wink Saville authored
This reverts commit c6e12c6702ca764486f952654ba1568f00efe813.
-
- 21 Mar, 2014 3 commits
-
-
Wink Saville authored
* commit 'ec0b12c34a6329d2f98003e9102fe2d75726c797': Don't reset cachedSize to 0 in getSerializedSize
-
Wink Saville authored
-
Dave Hawkey authored
This avoids a race-condition when cachedSize is momentarily set to 0 for non-empty messages if multiple threads call getSerializedSize (e.g. during serialization). Change-Id: I15a8ded92edbf41bf1c8d787960c5bbbc8a323c5
-
- 08 Mar, 2014 1 commit
-
-
Wink Saville authored
* commit '51ef8f39de376fe71ce5d2c682abe4f974cf8074': Fix compile error on mac 10.9
-
- 07 Mar, 2014 2 commits
- 17 Feb, 2014 1 commit
-
-
Max Cai authored
-
- 10 Feb, 2014 1 commit
-
-
Max Cai authored
* changes: Fix repeated packed field merging code for non-packed data. Add validation when parsing enum fields.
-
- 16 Jan, 2014 2 commits
-
-
Max Cai authored
Enum fix is already included in the previous commit. Bug: https://code.google.com/p/android/issues/detail?id=64893 Change-Id: I9fecff3c8822918a019028eb57fa39b361a2c960
-
Max Cai authored
Invalid values from the wire are silently ignored. Unlike full/lite, the invalid values are not stored into the unknown fields, because there's no way to get them out from Nano's unknown fields without a matching Extension. Edited README and slightly moved it towards a standalone section for Nano, independent of the Micro section. Change-Id: I2c1eb07f4d6d8f3aea242b8ddd95b9c966f3f177
-
- 14 Jan, 2014 3 commits
- 13 Jan, 2014 4 commits
- 10 Jan, 2014 3 commits
-
-
Max Cai authored
Special values for float and double make it inaccurate to test the equality with ==. The main Java library uses the standard Object.equals() implementation for all fields, which for floating point fields means Float.equals() or Double.equals(). They define equality as bitwise equality, with all NaN representations normalized to the same bit sequence (and therefore equal to each other). This test checks that the nano implementation complies with Object.equals(), so NaN == NaN and +0.0 != -0.0. Change-Id: I97bb4a3687223d8a212c70cd736436b9dd80c1d7
-
Max Cai authored
Change-Id: Ibbe944fff83e44a8f2206e18ee9ec6f10661297a
-
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
-
- 19 Dec, 2013 1 commit
-
-
Andrew Flynn authored
* commit 'e7741c064ee4cdc5fa41e6444ed45131672fed97': Fix MessageNanoPrinter for accessors
-