am d20f0a42: Merge "Fix NPE when clearing an extension in nano protos"
* commit 'd20f0a4260763531acf5de677e4830afe0bfc53e': Fix NPE when clearing an extension in nano protos
This commit is contained in:
commit
3e46c9b5da
@ -268,7 +268,7 @@ public class Extension<M extends ExtendableMessageNano<M>, T> {
|
||||
|
||||
// After deletion or no-op addition (due to 'value' being an array of empty or
|
||||
// null-only elements), unknownFields may be empty. Discard the ArrayList if so.
|
||||
return (unknownFields.size() == 0) ? null : unknownFields;
|
||||
return (unknownFields == null || unknownFields.isEmpty()) ? null : unknownFields;
|
||||
}
|
||||
|
||||
protected UnknownFieldData writeData(Object value) {
|
||||
|
@ -2910,6 +2910,20 @@ public class NanoTest extends TestCase {
|
||||
assertTrue(Arrays.equals(enums, message.getExtension(RepeatedExtensions.repeatedEnum)));
|
||||
}
|
||||
|
||||
public void testNullExtensions() throws Exception {
|
||||
// Check that clearing the extension on an empty message is a no-op.
|
||||
Extensions.ExtendableMessage message = new Extensions.ExtendableMessage();
|
||||
message.setExtension(SingularExtensions.someMessage, null);
|
||||
assertEquals(0, MessageNano.toByteArray(message).length);
|
||||
|
||||
// Check that the message is empty after setting and clearing an extension.
|
||||
AnotherMessage another = new AnotherMessage();
|
||||
message.setExtension(SingularExtensions.someMessage, another);
|
||||
assertTrue(MessageNano.toByteArray(message).length > 0);
|
||||
message.setExtension(SingularExtensions.someMessage, null);
|
||||
assertEquals(0, MessageNano.toByteArray(message).length);
|
||||
}
|
||||
|
||||
public void testUnknownFields() throws Exception {
|
||||
// Check that we roundtrip (serialize and deserialize) unrecognized fields.
|
||||
AnotherMessage message = new AnotherMessage();
|
||||
|
Loading…
Reference in New Issue
Block a user