Internal Change

PiperOrigin-RevId: 690909150
pull/19008/head
Protobuf Team Bot 5 months ago committed by Copybara-Service
parent 367ef9c2ff
commit 85bbceea81
  1. 48
      java/core/src/main/java/com/google/protobuf/GeneratedMessageLite.java

@ -496,23 +496,19 @@ public abstract class GeneratedMessageLite<
return (BuilderType) this; return (BuilderType) this;
} }
private static <MessageType> void mergeFromInstance(MessageType dest, MessageType src) {
Protobuf.getInstance().schemaFor(dest).mergeFrom(dest, src);
}
@Override
public MessageType getDefaultInstanceForType() {
return defaultInstance;
}
@Override @Override
public BuilderType mergeFrom( public BuilderType mergeFrom(
byte[] input, int offset, int length, ExtensionRegistryLite extensionRegistry) byte[] input, int offset, int length, ExtensionRegistryLite extensionRegistry)
throws InvalidProtocolBufferException { throws InvalidProtocolBufferException {
copyOnWrite(); copyOnWrite();
try { try {
Protobuf.getInstance().schemaFor(instance).mergeFrom( Protobuf.getInstance()
instance, input, offset, offset + length, .schemaFor(instance)
.mergeFrom(
instance,
input,
offset,
offset + length,
new ArrayDecoders.Registers(extensionRegistry)); new ArrayDecoders.Registers(extensionRegistry));
} catch (InvalidProtocolBufferException e) { } catch (InvalidProtocolBufferException e) {
throw e; throw e;
@ -525,8 +521,7 @@ public abstract class GeneratedMessageLite<
} }
@Override @Override
public BuilderType mergeFrom( public BuilderType mergeFrom(byte[] input, int offset, int length)
byte[] input, int offset, int length)
throws InvalidProtocolBufferException { throws InvalidProtocolBufferException {
return mergeFrom(input, offset, length, ExtensionRegistryLite.getEmptyRegistry()); return mergeFrom(input, offset, length, ExtensionRegistryLite.getEmptyRegistry());
} }
@ -540,8 +535,9 @@ public abstract class GeneratedMessageLite<
try { try {
// TODO: Try to make input with type CodedInputStream.ArrayDecoder use // TODO: Try to make input with type CodedInputStream.ArrayDecoder use
// fast path. // fast path.
Protobuf.getInstance().schemaFor(instance).mergeFrom( Protobuf.getInstance()
instance, CodedInputStreamReader.forCodedInput(input), extensionRegistry); .schemaFor(instance)
.mergeFrom(instance, CodedInputStreamReader.forCodedInput(input), extensionRegistry);
} catch (RuntimeException e) { } catch (RuntimeException e) {
if (e.getCause() instanceof IOException) { if (e.getCause() instanceof IOException) {
throw (IOException) e.getCause(); throw (IOException) e.getCause();
@ -550,6 +546,15 @@ public abstract class GeneratedMessageLite<
} }
return (BuilderType) this; return (BuilderType) this;
} }
private static <MessageType> void mergeFromInstance(MessageType dest, MessageType src) {
Protobuf.getInstance().schemaFor(dest).mergeFrom(dest, src);
}
@Override
public MessageType getDefaultInstanceForType() {
return defaultInstance;
}
} }
// ================================================================= // =================================================================
@ -667,7 +672,7 @@ public abstract class GeneratedMessageLite<
while (input.getBytesUntilLimit() > 0) { while (input.getBytesUntilLimit() > 0) {
Object value = Object value =
FieldSet.readPrimitiveField( FieldSet.readPrimitiveField(
input, extension.descriptor.getLiteType(), /*checkUtf8=*/ false); input, extension.descriptor.getLiteType(), /* checkUtf8= */ false);
extensions.addRepeatedField(extension.descriptor, value); extensions.addRepeatedField(extension.descriptor, value);
} }
} }
@ -708,7 +713,7 @@ public abstract class GeneratedMessageLite<
default: default:
value = value =
FieldSet.readPrimitiveField( FieldSet.readPrimitiveField(
input, extension.descriptor.getLiteType(), /*checkUtf8=*/ false); input, extension.descriptor.getLiteType(), /* checkUtf8= */ false);
break; break;
} }
@ -1422,8 +1427,10 @@ public abstract class GeneratedMessageLite<
java.lang.reflect.Field defaultInstanceField = java.lang.reflect.Field defaultInstanceField =
messageClass.getDeclaredField("DEFAULT_INSTANCE"); messageClass.getDeclaredField("DEFAULT_INSTANCE");
defaultInstanceField.setAccessible(true); defaultInstanceField.setAccessible(true);
MessageLite defaultInstance = (MessageLite) defaultInstanceField.get(null); MessageLite.Builder builder =
return defaultInstance.newBuilderForType().mergeFrom(asBytes).buildPartial(); ((MessageLite) defaultInstanceField.get(null)).newBuilderForType();
builder.mergeFrom(asBytes);
return builder.buildPartial();
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
throw new RuntimeException("Unable to find proto buffer class: " + messageClassName, e); throw new RuntimeException("Unable to find proto buffer class: " + messageClassName, e);
} catch (NoSuchFieldException e) { } catch (NoSuchFieldException e) {
@ -1698,7 +1705,8 @@ public abstract class GeneratedMessageLite<
// Validates last tag. // Validates last tag.
protected static <T extends GeneratedMessageLite<T, ?>> T parseFrom( protected static <T extends GeneratedMessageLite<T, ?>> T parseFrom(
T defaultInstance, byte[] data) throws InvalidProtocolBufferException { T defaultInstance, byte[] data) throws InvalidProtocolBufferException {
return checkMessageInitialized(parsePartialFrom( return checkMessageInitialized(
parsePartialFrom(
defaultInstance, data, 0, data.length, ExtensionRegistryLite.getEmptyRegistry())); defaultInstance, data, 0, data.length, ExtensionRegistryLite.getEmptyRegistry()));
} }

Loading…
Cancel
Save