|
|
@ -255,6 +255,9 @@ final class ExtensionSchemaLite extends ExtensionSchema<ExtensionDescriptor> { |
|
|
|
value = reader.readString(); |
|
|
|
value = reader.readString(); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case GROUP: |
|
|
|
case GROUP: |
|
|
|
|
|
|
|
// Special case handling for non-repeated sub-messages: merge in-place rather than
|
|
|
|
|
|
|
|
// building up new sub-messages and merging those, which is too slow.
|
|
|
|
|
|
|
|
// TODO(b/249368670): clean this up
|
|
|
|
if (!extension.isRepeated()) { |
|
|
|
if (!extension.isRepeated()) { |
|
|
|
Object oldValue = extensions.getField(extension.descriptor); |
|
|
|
Object oldValue = extensions.getField(extension.descriptor); |
|
|
|
if (oldValue instanceof GeneratedMessageLite) { |
|
|
|
if (oldValue instanceof GeneratedMessageLite) { |
|
|
@ -275,6 +278,9 @@ final class ExtensionSchemaLite extends ExtensionSchema<ExtensionDescriptor> { |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case MESSAGE: |
|
|
|
case MESSAGE: |
|
|
|
|
|
|
|
// Special case handling for non-repeated sub-messages: merge in-place rather than
|
|
|
|
|
|
|
|
// building up new sub-messages and merging those, which is too slow.
|
|
|
|
|
|
|
|
// TODO(b/249368670): clean this up
|
|
|
|
if (!extension.isRepeated()) { |
|
|
|
if (!extension.isRepeated()) { |
|
|
|
Object oldValue = extensions.getField(extension.descriptor); |
|
|
|
Object oldValue = extensions.getField(extension.descriptor); |
|
|
|
if (oldValue instanceof GeneratedMessageLite) { |
|
|
|
if (oldValue instanceof GeneratedMessageLite) { |
|
|
@ -304,6 +310,7 @@ final class ExtensionSchemaLite extends ExtensionSchema<ExtensionDescriptor> { |
|
|
|
switch (extension.getLiteType()) { |
|
|
|
switch (extension.getLiteType()) { |
|
|
|
case MESSAGE: |
|
|
|
case MESSAGE: |
|
|
|
case GROUP: |
|
|
|
case GROUP: |
|
|
|
|
|
|
|
// TODO(b/249368670): this shouldn't be reachable, clean this up
|
|
|
|
Object oldValue = extensions.getField(extension.descriptor); |
|
|
|
Object oldValue = extensions.getField(extension.descriptor); |
|
|
|
if (oldValue != null) { |
|
|
|
if (oldValue != null) { |
|
|
|
value = Internal.mergeMessage(oldValue, value); |
|
|
|
value = Internal.mergeMessage(oldValue, value); |
|
|
|