aboutsummaryrefslogtreecommitdiff
path: root/java/core/src/main/java/com/google/protobuf/MessageReflection.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/core/src/main/java/com/google/protobuf/MessageReflection.java')
-rw-r--r--java/core/src/main/java/com/google/protobuf/MessageReflection.java332
1 files changed, 144 insertions, 188 deletions
diff --git a/java/core/src/main/java/com/google/protobuf/MessageReflection.java b/java/core/src/main/java/com/google/protobuf/MessageReflection.java
index 69ad7ddf..9fc72bd9 100644
--- a/java/core/src/main/java/com/google/protobuf/MessageReflection.java
+++ b/java/core/src/main/java/com/google/protobuf/MessageReflection.java
@@ -54,20 +54,19 @@ class MessageReflection {
message.getDescriptorForType().getOptions().getMessageSetWireFormat();
if (alwaysWriteRequiredFields) {
fields = new TreeMap<FieldDescriptor, Object>(fields);
- for (final FieldDescriptor field :
- message.getDescriptorForType().getFields()) {
+ for (final FieldDescriptor field : message.getDescriptorForType().getFields()) {
if (field.isRequired() && !fields.containsKey(field)) {
fields.put(field, message.getField(field));
}
}
}
- for (final Map.Entry<Descriptors.FieldDescriptor, Object> entry :
- fields.entrySet()) {
+ for (final Map.Entry<Descriptors.FieldDescriptor, Object> entry : fields.entrySet()) {
final Descriptors.FieldDescriptor field = entry.getKey();
final Object value = entry.getValue();
- if (isMessageSet && field.isExtension() &&
- field.getType() == Descriptors.FieldDescriptor.Type.MESSAGE &&
- !field.isRepeated()) {
+ if (isMessageSet
+ && field.isExtension()
+ && field.getType() == Descriptors.FieldDescriptor.Type.MESSAGE
+ && !field.isRepeated()) {
output.writeMessageSetExtension(field.getNumber(), (Message) value);
} else {
FieldSet.writeField(field, value, output);
@@ -82,22 +81,20 @@ class MessageReflection {
}
}
- static int getSerializedSize(
- Message message,
- Map<FieldDescriptor, Object> fields) {
+ static int getSerializedSize(Message message, Map<FieldDescriptor, Object> fields) {
int size = 0;
final boolean isMessageSet =
message.getDescriptorForType().getOptions().getMessageSetWireFormat();
- for (final Map.Entry<Descriptors.FieldDescriptor, Object> entry :
- fields.entrySet()) {
+ for (final Map.Entry<Descriptors.FieldDescriptor, Object> entry : fields.entrySet()) {
final Descriptors.FieldDescriptor field = entry.getKey();
final Object value = entry.getValue();
- if (isMessageSet && field.isExtension() &&
- field.getType() == Descriptors.FieldDescriptor.Type.MESSAGE &&
- !field.isRepeated()) {
- size += CodedOutputStream.computeMessageSetExtensionSize(
- field.getNumber(), (Message) value);
+ if (isMessageSet
+ && field.isExtension()
+ && field.getType() == Descriptors.FieldDescriptor.Type.MESSAGE
+ && !field.isRepeated()) {
+ size +=
+ CodedOutputStream.computeMessageSetExtensionSize(field.getNumber(), (Message) value);
} else {
size += FieldSet.computeFieldSize(field, value);
}
@@ -126,9 +123,7 @@ class MessageReflection {
@SuppressWarnings("unchecked")
static boolean isInitialized(MessageOrBuilder message) {
// Check that all required fields are present.
- for (final Descriptors.FieldDescriptor field : message
- .getDescriptorForType()
- .getFields()) {
+ for (final Descriptors.FieldDescriptor field : message.getDescriptorForType().getFields()) {
if (field.isRequired()) {
if (!message.hasField(field)) {
return false;
@@ -142,8 +137,7 @@ class MessageReflection {
final Descriptors.FieldDescriptor field = entry.getKey();
if (field.getJavaType() == Descriptors.FieldDescriptor.JavaType.MESSAGE) {
if (field.isRepeated()) {
- for (final Message element
- : (List<Message>) entry.getValue()) {
+ for (final Message element : (List<Message>) entry.getValue()) {
if (!element.isInitialized()) {
return false;
}
@@ -159,31 +153,24 @@ class MessageReflection {
return true;
}
- private static String subMessagePrefix(final String prefix,
- final Descriptors.FieldDescriptor field,
- final int index) {
+ private static String subMessagePrefix(
+ final String prefix, final Descriptors.FieldDescriptor field, final int index) {
final StringBuilder result = new StringBuilder(prefix);
if (field.isExtension()) {
- result.append('(')
- .append(field.getFullName())
- .append(')');
+ result.append('(').append(field.getFullName()).append(')');
} else {
result.append(field.getName());
}
if (index != -1) {
- result.append('[')
- .append(index)
- .append(']');
+ result.append('[').append(index).append(']');
}
result.append('.');
return result.toString();
}
- private static void findMissingFields(final MessageOrBuilder message,
- final String prefix,
- final List<String> results) {
- for (final Descriptors.FieldDescriptor field :
- message.getDescriptorForType().getFields()) {
+ private static void findMissingFields(
+ final MessageOrBuilder message, final String prefix, final List<String> results) {
+ for (final Descriptors.FieldDescriptor field : message.getDescriptorForType().getFields()) {
if (field.isRequired() && !message.hasField(field)) {
results.add(prefix + field.getName());
}
@@ -198,15 +185,13 @@ class MessageReflection {
if (field.isRepeated()) {
int i = 0;
for (final Object element : (List) value) {
- findMissingFields((MessageOrBuilder) element,
- subMessagePrefix(prefix, field, i++),
- results);
+ findMissingFields(
+ (MessageOrBuilder) element, subMessagePrefix(prefix, field, i++), results);
}
} else {
if (message.hasField(field)) {
- findMissingFields((MessageOrBuilder) value,
- subMessagePrefix(prefix, field, -1),
- results);
+ findMissingFields(
+ (MessageOrBuilder) value, subMessagePrefix(prefix, field, -1), results);
}
}
}
@@ -214,11 +199,10 @@ class MessageReflection {
}
/**
- * Populates {@code this.missingFields} with the full "path" of each missing
- * required field in the given message.
+ * Populates {@code this.missingFields} with the full "path" of each missing required field in the
+ * given message.
*/
- static List<String> findMissingFields(
- final MessageOrBuilder message) {
+ static List<String> findMissingFields(final MessageOrBuilder message) {
final List<String> results = new ArrayList<String>();
findMissingFields(message, "", results);
return results;
@@ -226,12 +210,11 @@ class MessageReflection {
static interface MergeTarget {
enum ContainerType {
- MESSAGE, EXTENSION_SET
+ MESSAGE,
+ EXTENSION_SET
}
- /**
- * Returns the descriptor for the target.
- */
+ /** Returns the descriptor for the target. */
public Descriptors.Descriptor getDescriptorForType();
public ContainerType getContainerType();
@@ -240,21 +223,19 @@ class MessageReflection {
ExtensionRegistry registry, String name);
public ExtensionRegistry.ExtensionInfo findExtensionByNumber(
- ExtensionRegistry registry, Descriptors.Descriptor containingType,
- int fieldNumber);
+ ExtensionRegistry registry, Descriptors.Descriptor containingType, int fieldNumber);
/**
- * Obtains the value of the given field, or the default value if it is not
- * set. For primitive fields, the boxed primitive value is returned. For
- * enum fields, the EnumValueDescriptor for the value is returned. For
- * embedded message fields, the sub-message is returned. For repeated
+ * Obtains the value of the given field, or the default value if it is not set. For primitive
+ * fields, the boxed primitive value is returned. For enum fields, the EnumValueDescriptor for
+ * the value is returned. For embedded message fields, the sub-message is returned. For repeated
* fields, a java.util.List is returned.
*/
public Object getField(Descriptors.FieldDescriptor field);
/**
- * Returns true if the given field is set. This is exactly equivalent to
- * calling the generated "has" accessor method corresponding to the field.
+ * Returns true if the given field is set. This is exactly equivalent to calling the generated
+ * "has" accessor method corresponding to the field.
*
* @throws IllegalArgumentException The field is a repeated field, or {@code
* field.getContainingType() != getDescriptorForType()}.
@@ -262,106 +243,98 @@ class MessageReflection {
boolean hasField(Descriptors.FieldDescriptor field);
/**
- * Sets a field to the given value. The value must be of the correct type
- * for this field, i.e. the same type that
- * {@link Message#getField(Descriptors.FieldDescriptor)}
- * would return.
+ * Sets a field to the given value. The value must be of the correct type for this field, i.e.
+ * the same type that {@link Message#getField(Descriptors.FieldDescriptor)} would return.
*/
MergeTarget setField(Descriptors.FieldDescriptor field, Object value);
/**
- * Clears the field. This is exactly equivalent to calling the generated
- * "clear" accessor method corresponding to the field.
+ * Clears the field. This is exactly equivalent to calling the generated "clear" accessor method
+ * corresponding to the field.
*/
MergeTarget clearField(Descriptors.FieldDescriptor field);
/**
- * Sets an element of a repeated field to the given value. The value must
- * be of the correct type for this field, i.e. the same type that {@link
+ * Sets an element of a repeated field to the given value. The value must be of the correct type
+ * for this field, i.e. the same type that {@link
* Message#getRepeatedField(Descriptors.FieldDescriptor, int)} would return.
*
- * @throws IllegalArgumentException The field is not a repeated field, or
- * {@code field.getContainingType() !=
- * getDescriptorForType()}.
+ * @throws IllegalArgumentException The field is not a repeated field, or {@code
+ * field.getContainingType() != getDescriptorForType()}.
*/
- MergeTarget setRepeatedField(Descriptors.FieldDescriptor field,
- int index, Object value);
+ MergeTarget setRepeatedField(Descriptors.FieldDescriptor field, int index, Object value);
/**
* Like {@code setRepeatedField}, but appends the value as a new element.
*
- * @throws IllegalArgumentException The field is not a repeated field, or
- * {@code field.getContainingType() !=
- * getDescriptorForType()}.
+ * @throws IllegalArgumentException The field is not a repeated field, or {@code
+ * field.getContainingType() != getDescriptorForType()}.
*/
- MergeTarget addRepeatedField(Descriptors.FieldDescriptor field,
- Object value);
+ MergeTarget addRepeatedField(Descriptors.FieldDescriptor field, Object value);
/**
* Returns true if the given oneof is set.
*
- * @throws IllegalArgumentException if
- * {@code oneof.getContainingType() != getDescriptorForType()}.
+ * @throws IllegalArgumentException if {@code oneof.getContainingType() !=
+ * getDescriptorForType()}.
*/
boolean hasOneof(Descriptors.OneofDescriptor oneof);
/**
- * Clears the oneof. This is exactly equivalent to calling the generated
- * "clear" accessor method corresponding to the oneof.
+ * Clears the oneof. This is exactly equivalent to calling the generated "clear" accessor method
+ * corresponding to the oneof.
*/
MergeTarget clearOneof(Descriptors.OneofDescriptor oneof);
- /**
- * Obtains the FieldDescriptor if the given oneof is set. Returns null
- * if no field is set.
- */
+ /** Obtains the FieldDescriptor if the given oneof is set. Returns null if no field is set. */
Descriptors.FieldDescriptor getOneofFieldDescriptor(Descriptors.OneofDescriptor oneof);
/**
- * Parse the input stream into a sub field group defined based on either
- * FieldDescriptor or the default instance.
+ * Parse the input stream into a sub field group defined based on either FieldDescriptor or the
+ * default instance.
*/
- Object parseGroup(CodedInputStream input, ExtensionRegistryLite registry,
- Descriptors.FieldDescriptor descriptor, Message defaultInstance)
+ Object parseGroup(
+ CodedInputStream input,
+ ExtensionRegistryLite registry,
+ Descriptors.FieldDescriptor descriptor,
+ Message defaultInstance)
throws IOException;
/**
- * Parse the input stream into a sub field message defined based on either
- * FieldDescriptor or the default instance.
+ * Parse the input stream into a sub field message defined based on either FieldDescriptor or
+ * the default instance.
*/
- Object parseMessage(CodedInputStream input, ExtensionRegistryLite registry,
- Descriptors.FieldDescriptor descriptor, Message defaultInstance)
+ Object parseMessage(
+ CodedInputStream input,
+ ExtensionRegistryLite registry,
+ Descriptors.FieldDescriptor descriptor,
+ Message defaultInstance)
throws IOException;
/**
- * Parse from a ByteString into a sub field message defined based on either
- * FieldDescriptor or the default instance. There isn't a varint indicating
- * the length of the message at the beginning of the input ByteString.
+ * Parse from a ByteString into a sub field message defined based on either FieldDescriptor or
+ * the default instance. There isn't a varint indicating the length of the message at the
+ * beginning of the input ByteString.
*/
Object parseMessageFromBytes(
- ByteString bytes, ExtensionRegistryLite registry,
- Descriptors.FieldDescriptor descriptor, Message defaultInstance)
+ ByteString bytes,
+ ExtensionRegistryLite registry,
+ Descriptors.FieldDescriptor descriptor,
+ Message defaultInstance)
throws IOException;
- /**
- * Returns the UTF8 validation level for the field.
- */
- WireFormat.Utf8Validation getUtf8Validation(Descriptors.FieldDescriptor
- descriptor);
+ /** Returns the UTF8 validation level for the field. */
+ WireFormat.Utf8Validation getUtf8Validation(Descriptors.FieldDescriptor descriptor);
/**
- * Returns a new merge target for a sub-field. When defaultInstance is
- * provided, it indicates the descriptor is for an extension type, and
- * implementations should create a new instance from the defaultInstance
- * prototype directly.
+ * Returns a new merge target for a sub-field. When defaultInstance is provided, it indicates
+ * the descriptor is for an extension type, and implementations should create a new instance
+ * from the defaultInstance prototype directly.
*/
MergeTarget newMergeTargetForField(
- Descriptors.FieldDescriptor descriptor,
- Message defaultInstance);
+ Descriptors.FieldDescriptor descriptor, Message defaultInstance);
- /**
- * Finishes the merge and returns the underlying object.
- */
+ /** Finishes the merge and returns the underlying object. */
Object finish();
}
@@ -443,8 +416,7 @@ class MessageReflection {
@Override
public ExtensionRegistry.ExtensionInfo findExtensionByNumber(
ExtensionRegistry registry, Descriptors.Descriptor containingType, int fieldNumber) {
- return registry.findImmutableExtensionByNumber(containingType,
- fieldNumber);
+ return registry.findImmutableExtensionByNumber(containingType, fieldNumber);
}
@Override
@@ -523,8 +495,7 @@ class MessageReflection {
public MergeTarget newMergeTargetForField(
Descriptors.FieldDescriptor field, Message defaultInstance) {
if (defaultInstance != null) {
- return new BuilderAdapter(
- defaultInstance.newBuilderForType());
+ return new BuilderAdapter(defaultInstance.newBuilderForType());
} else {
return new BuilderAdapter(builder.newBuilderForField(field));
}
@@ -536,8 +507,7 @@ class MessageReflection {
return WireFormat.Utf8Validation.STRICT;
}
// TODO(liujisi): support lazy strings for repeated fields.
- if (!descriptor.isRepeated()
- && builder instanceof GeneratedMessage.Builder) {
+ if (!descriptor.isRepeated() && builder instanceof GeneratedMessage.Builder) {
return WireFormat.Utf8Validation.LAZY;
}
return WireFormat.Utf8Validation.LOOSE;
@@ -560,8 +530,7 @@ class MessageReflection {
@Override
public Descriptors.Descriptor getDescriptorForType() {
- throw new UnsupportedOperationException(
- "getDescriptorForType() called on FieldSet object");
+ throw new UnsupportedOperationException("getDescriptorForType() called on FieldSet object");
}
@Override
@@ -629,8 +598,7 @@ class MessageReflection {
@Override
public ExtensionRegistry.ExtensionInfo findExtensionByNumber(
ExtensionRegistry registry, Descriptors.Descriptor containingType, int fieldNumber) {
- return registry.findImmutableExtensionByNumber(containingType,
- fieldNumber);
+ return registry.findImmutableExtensionByNumber(containingType, fieldNumber);
}
@Override
@@ -640,8 +608,7 @@ class MessageReflection {
Descriptors.FieldDescriptor field,
Message defaultInstance)
throws IOException {
- Message.Builder subBuilder =
- defaultInstance.newBuilderForType();
+ Message.Builder subBuilder = defaultInstance.newBuilderForType();
if (!field.isRepeated()) {
Message originalMessage = (Message) getField(field);
if (originalMessage != null) {
@@ -659,8 +626,7 @@ class MessageReflection {
Descriptors.FieldDescriptor field,
Message defaultInstance)
throws IOException {
- Message.Builder subBuilder =
- defaultInstance.newBuilderForType();
+ Message.Builder subBuilder = defaultInstance.newBuilderForType();
if (!field.isRepeated()) {
Message originalMessage = (Message) getField(field);
if (originalMessage != null) {
@@ -678,7 +644,7 @@ class MessageReflection {
Descriptors.FieldDescriptor field,
Message defaultInstance)
throws IOException {
- Message.Builder subBuilder = defaultInstance.newBuilderForType();
+ Message.Builder subBuilder = defaultInstance.newBuilderForType();
if (!field.isRepeated()) {
Message originalMessage = (Message) getField(field);
if (originalMessage != null) {
@@ -692,8 +658,7 @@ class MessageReflection {
@Override
public MergeTarget newMergeTargetForField(
Descriptors.FieldDescriptor descriptor, Message defaultInstance) {
- throw new UnsupportedOperationException(
- "newMergeTargetForField() called on FieldSet object");
+ throw new UnsupportedOperationException("newMergeTargetForField() called on FieldSet object");
}
@Override
@@ -707,8 +672,7 @@ class MessageReflection {
@Override
public Object finish() {
- throw new UnsupportedOperationException(
- "finish() called on FieldSet object");
+ throw new UnsupportedOperationException("finish() called on FieldSet object");
}
}
@@ -731,8 +695,7 @@ class MessageReflection {
MergeTarget target,
int tag)
throws IOException {
- if (type.getOptions().getMessageSetWireFormat() &&
- tag == WireFormat.MESSAGE_SET_ITEM_TAG) {
+ if (type.getOptions().getMessageSetWireFormat() && tag == WireFormat.MESSAGE_SET_ITEM_TAG) {
mergeMessageSetExtensionFromCodedStream(
input, unknownFields, extensionRegistry, type, target);
return true;
@@ -752,19 +715,16 @@ class MessageReflection {
// were empty.
if (extensionRegistry instanceof ExtensionRegistry) {
final ExtensionRegistry.ExtensionInfo extension =
- target.findExtensionByNumber((ExtensionRegistry) extensionRegistry,
- type, fieldNumber);
+ target.findExtensionByNumber((ExtensionRegistry) extensionRegistry, type, fieldNumber);
if (extension == null) {
field = null;
} else {
field = extension.descriptor;
defaultInstance = extension.defaultInstance;
- if (defaultInstance == null &&
- field.getJavaType()
- == Descriptors.FieldDescriptor.JavaType.MESSAGE) {
+ if (defaultInstance == null
+ && field.getJavaType() == Descriptors.FieldDescriptor.JavaType.MESSAGE) {
throw new IllegalStateException(
- "Message-typed extension lacked default instance: " +
- field.getFullName());
+ "Message-typed extension lacked default instance: " + field.getFullName());
}
}
} else {
@@ -779,21 +739,19 @@ class MessageReflection {
boolean unknown = false;
boolean packed = false;
if (field == null) {
- unknown = true; // Unknown field.
- } else if (wireType == FieldSet.getWireFormatForFieldType(
- field.getLiteType(),
- false /* isPacked */)) {
+ unknown = true; // Unknown field.
+ } else if (wireType
+ == FieldSet.getWireFormatForFieldType(field.getLiteType(), /* isPacked= */ false)) {
packed = false;
- } else if (field.isPackable() &&
- wireType == FieldSet.getWireFormatForFieldType(
- field.getLiteType(),
- true /* isPacked */)) {
+ } else if (field.isPackable()
+ && wireType
+ == FieldSet.getWireFormatForFieldType(field.getLiteType(), /* isPacked= */ true)) {
packed = true;
} else {
- unknown = true; // Unknown wire type.
+ unknown = true; // Unknown wire type.
}
- if (unknown) { // Unknown field or wrong wire type. Skip.
+ if (unknown) { // Unknown field or wrong wire type. Skip.
if (unknownFields != null) {
return unknownFields.mergeFieldFrom(tag, input);
} else {
@@ -808,8 +766,8 @@ class MessageReflection {
while (input.getBytesUntilLimit() > 0) {
final int rawValue = input.readEnum();
if (field.getFile().supportsUnknownEnumValue()) {
- target.addRepeatedField(field,
- field.getEnumType().findValueByNumberCreatingIfUnknown(rawValue));
+ target.addRepeatedField(
+ field, field.getEnumType().findValueByNumberCreatingIfUnknown(rawValue));
} else {
final Object value = field.getEnumType().findValueByNumber(rawValue);
if (value == null) {
@@ -822,8 +780,9 @@ class MessageReflection {
}
} else {
while (input.getBytesUntilLimit() > 0) {
- final Object value = WireFormat.readPrimitiveField(
- input, field.getLiteType(), target.getUtf8Validation(field));
+ final Object value =
+ WireFormat.readPrimitiveField(
+ input, field.getLiteType(), target.getUtf8Validation(field));
target.addRepeatedField(field, value);
}
}
@@ -831,16 +790,16 @@ class MessageReflection {
} else {
final Object value;
switch (field.getType()) {
- case GROUP: {
- value = target
- .parseGroup(input, extensionRegistry, field, defaultInstance);
- break;
- }
- case MESSAGE: {
- value = target
- .parseMessage(input, extensionRegistry, field, defaultInstance);
- break;
- }
+ case GROUP:
+ {
+ value = target.parseGroup(input, extensionRegistry, field, defaultInstance);
+ break;
+ }
+ case MESSAGE:
+ {
+ value = target.parseMessage(input, extensionRegistry, field, defaultInstance);
+ break;
+ }
case ENUM:
final int rawValue = input.readEnum();
if (field.getFile().supportsUnknownEnumValue()) {
@@ -858,8 +817,9 @@ class MessageReflection {
}
break;
default:
- value = WireFormat.readPrimitiveField(
- input, field.getLiteType(), target.getUtf8Validation(field));
+ value =
+ WireFormat.readPrimitiveField(
+ input, field.getLiteType(), target.getUtf8Validation(field));
break;
}
@@ -873,16 +833,14 @@ class MessageReflection {
return true;
}
- /**
- * Called by {@code #mergeFieldFrom()} to parse a MessageSet extension into
- * MergeTarget.
- */
+ /** Called by {@code #mergeFieldFrom()} to parse a MessageSet extension into MergeTarget. */
private static void mergeMessageSetExtensionFromCodedStream(
CodedInputStream input,
UnknownFieldSet.Builder unknownFields,
ExtensionRegistryLite extensionRegistry,
Descriptors.Descriptor type,
- MergeTarget target) throws IOException {
+ MergeTarget target)
+ throws IOException {
// The wire format for MessageSet is:
// message MessageSet {
@@ -921,19 +879,17 @@ class MessageReflection {
// extensions of it. Otherwise we will treat the registry as if it
// were empty.
if (extensionRegistry instanceof ExtensionRegistry) {
- extension = target.findExtensionByNumber(
- (ExtensionRegistry) extensionRegistry, type, typeId);
+ extension =
+ target.findExtensionByNumber((ExtensionRegistry) extensionRegistry, type, typeId);
}
}
} else if (tag == WireFormat.MESSAGE_SET_MESSAGE_TAG) {
if (typeId != 0) {
- if (extension != null &&
- ExtensionRegistryLite.isEagerlyParseMessageSets()) {
+ if (extension != null && ExtensionRegistryLite.isEagerlyParseMessageSets()) {
// We already know the type, so we can parse directly from the
// input with no copying. Hooray!
- eagerlyMergeMessageSetExtension(
- input, extension, extensionRegistry, target);
+ eagerlyMergeMessageSetExtension(input, extension, extensionRegistry, target);
rawBytes = null;
continue;
}
@@ -952,12 +908,11 @@ class MessageReflection {
// Process the raw bytes.
if (rawBytes != null && typeId != 0) { // Zero is not a valid type ID.
if (extension != null) { // We known the type
- mergeMessageSetExtensionFromBytes(
- rawBytes, extension, extensionRegistry, target);
+ mergeMessageSetExtensionFromBytes(rawBytes, extension, extensionRegistry, target);
} else { // We don't know how to parse this. Ignore it.
if (rawBytes != null && unknownFields != null) {
- unknownFields.mergeField(typeId, UnknownFieldSet.Field.newBuilder()
- .addLengthDelimited(rawBytes).build());
+ unknownFields.mergeField(
+ typeId, UnknownFieldSet.Field.newBuilder().addLengthDelimited(rawBytes).build());
}
}
}
@@ -967,20 +922,21 @@ class MessageReflection {
ByteString rawBytes,
ExtensionRegistry.ExtensionInfo extension,
ExtensionRegistryLite extensionRegistry,
- MergeTarget target) throws IOException {
+ MergeTarget target)
+ throws IOException {
Descriptors.FieldDescriptor field = extension.descriptor;
boolean hasOriginalValue = target.hasField(field);
if (hasOriginalValue || ExtensionRegistryLite.isEagerlyParseMessageSets()) {
// If the field already exists, we just parse the field.
- Object value = target.parseMessageFromBytes(
- rawBytes, extensionRegistry,field, extension.defaultInstance);
+ Object value =
+ target.parseMessageFromBytes(
+ rawBytes, extensionRegistry, field, extension.defaultInstance);
target.setField(field, value);
} else {
// Use LazyField to load MessageSet lazily.
- LazyField lazyField = new LazyField(
- extension.defaultInstance, extensionRegistry, rawBytes);
+ LazyField lazyField = new LazyField(extension.defaultInstance, extensionRegistry, rawBytes);
target.setField(field, lazyField);
}
}
@@ -989,10 +945,10 @@ class MessageReflection {
CodedInputStream input,
ExtensionRegistry.ExtensionInfo extension,
ExtensionRegistryLite extensionRegistry,
- MergeTarget target) throws IOException {
+ MergeTarget target)
+ throws IOException {
Descriptors.FieldDescriptor field = extension.descriptor;
- Object value = target.parseMessage(input, extensionRegistry, field,
- extension.defaultInstance);
+ Object value = target.parseMessage(input, extensionRegistry, field, extension.defaultInstance);
target.setField(field, value);
}
}