reparseMessage<T extends GeneratedMessage> method
T
reparseMessage<T extends GeneratedMessage>(
- T message
Creates a shallow copy of message
, with all extensions in this
parsed
from the unknown fields of message
and of every nested submessage.
Extensions already present in message
will be preserved.
If message
is frozen, the result will be as well.
Returns the original message if no new extensions are parsed.
Throws an InvalidProtocolBufferException if the parsed extensions are malformed.
Using this method to retrieve extensions is more expensive overall than using an ExtensionRegistry with all the needed extensions when doing GeneratedMessage.mergeFromBuffer.
Example:
sample.proto
syntax = "proto2";
message Foo {
extensions 1 to max;
}
extend Foo {
optional string val1 = 1;
optional string val2 = 2;
}
main.dart
import 'package:protobuf/protobuf.dart';
import 'package:test/test.dart';
import 'src/generated/sample.pb.dart';
void main() {
ExtensionRegistry r1 = ExtensionRegistry()..add(Sample.val1);
ExtensionRegistry r2 = ExtensionRegistry()..add(Sample.val2);
Foo original = Foo()..setExtension(Sample.val1, 'a')..setExtension(Sample.val2, 'b');
Foo withUnknownFields = Foo.fromBuffer(original.writeToBuffer());
Foo reparsed1 = r1.reparseMessage(withUnknownFields);
Foo reparsed2 = r2.reparseMessage(reparsed1);
expect(withUnknownFields.hasExtension(Sample.val1), isFalse);
expect(withUnknownFields.hasExtension(Sample.val2), isFalse);
expect(reparsed1.hasExtension(Sample.val1), isTrue);
expect(reparsed1.hasExtension(Sample.val2), isFalse);
expect(reparsed2.hasExtension(Sample.val1), isTrue);
expect(reparsed2.hasExtension(Sample.val2), isTrue);
}
Implementation
T reparseMessage<T extends GeneratedMessage>(T message) =>
_reparseMessage(message, this);