Class GeneratedMessageV3
java.lang.Object
com.google.protobuf.AbstractMessageLite
com.google.protobuf.AbstractMessage
com.google.protobuf.GeneratedMessageV3
- All Implemented Interfaces:
Message, MessageLite, MessageLiteOrBuilder, MessageOrBuilder, Serializable
- Direct Known Subclasses:
Any, Api, BoolValue, BytesValue, DescriptorProtos.DescriptorProto, DescriptorProtos.DescriptorProto.ExtensionRange, DescriptorProtos.DescriptorProto.ReservedRange, DescriptorProtos.EnumDescriptorProto, DescriptorProtos.EnumDescriptorProto.EnumReservedRange, DescriptorProtos.EnumValueDescriptorProto, DescriptorProtos.FieldDescriptorProto, DescriptorProtos.FileDescriptorProto, DescriptorProtos.FileDescriptorSet, DescriptorProtos.GeneratedCodeInfo, DescriptorProtos.GeneratedCodeInfo.Annotation, DescriptorProtos.MethodDescriptorProto, DescriptorProtos.OneofDescriptorProto, DescriptorProtos.ServiceDescriptorProto, DescriptorProtos.SourceCodeInfo, DescriptorProtos.SourceCodeInfo.Location, DescriptorProtos.UninterpretedOption, DescriptorProtos.UninterpretedOption.NamePart, DoubleValue, Duration, Empty, Enum, EnumValue, Field, FieldMask, FloatValue, GeneratedMessageV3.ExtendableMessage, Int32Value, Int64Value, ListValue, Method, Mixin, Option, PluginProtos.CodeGeneratorRequest, PluginProtos.CodeGeneratorResponse, PluginProtos.CodeGeneratorResponse.File, PluginProtos.Version, SourceContext, StringValue, Struct, Timestamp, Type, UInt32Value, UInt64Value, Value
All generated protocol message classes extend this class. This class
implements most of the Message and Builder interfaces using Java reflection.
Users can ignore this class and pretend that generated messages implement
the Message interface directly.
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classprotected static interfaceTODO(xiaofeng): remove this after b/29368482 is fixed.static classGeneratedMessageV3.ExtendableBuilder<MessageType extends GeneratedMessageV3.ExtendableMessage, BuilderType extends GeneratedMessageV3.ExtendableBuilder<MessageType, BuilderType>>Generated message builders for message types that contain extension ranges subclass this.static classGenerated message classes for message types that contain extension ranges subclass this.static interfaceGeneratedMessageV3.ExtendableMessageOrBuilder<MessageType extends GeneratedMessageV3.ExtendableMessage>(package private) static interfaceGets the descriptor for an extension.static final classUsers should ignore this class.protected static final classThis class is used to make a generated protected method inaccessible from user's code (e.g., thenewInstance(GeneratedMessageV3.UnusedPrivateParameter)method below).Nested classes/interfaces inherited from class AbstractMessageLite
AbstractMessageLite.InternalOneOfEnum -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static booleanFor testing.private static final longprotected UnknownFieldSetFor use by generated code only.Fields inherited from class AbstractMessage
memoizedSizeFields inherited from class AbstractMessageLite
memoizedHashCode -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedprotectedGeneratedMessageV3(GeneratedMessageV3.Builder<?> builder) -
Method Summary
Modifier and TypeMethodDescriptionprotected static booleanprivate static <MessageType extends GeneratedMessageV3.ExtendableMessage<MessageType>, T>
Extension<MessageType, T> checkNotLite(ExtensionLite<MessageType, T> extension) Checks that theExtensionis non-Lite and returns it as aGeneratedMessage.GeneratedExtension.protected static intcomputeStringSize(int fieldNumber, Object value) protected static intcomputeStringSizeNoTag(Object value) protected static Internal.BooleanListprotected static Internal.DoubleListprotected static Internal.FloatListprotected static Internal.IntListprotected static Internal.LongList(package private) static voidReturns a collection of all the fields in this message which are set and their corresponding values.private Map<Descriptors.FieldDescriptor, Object> getAllFieldsMutable(boolean getBytesForString) Internal helper to return a modifiable map containing all the fields.(package private) Map<Descriptors.FieldDescriptor, Object> Returns a collection of all the fields in this message which are set and their corresponding values.Get the message's type's descriptor.Obtains the value of the given field, or the default value if it is not set.(package private) ObjectObtains the value of the given field, or the default value if it is not set.private static MethodgetMethodOrDie(Class clazz, String name, Class... params) Calls Class.getMethod and throws a RuntimeException if it fails.TODO(jieluo): Clear it when all subclasses have implemented this method.Parser<? extends GeneratedMessageV3> Gets the parser for a message of the same type as this message.getRepeatedField(Descriptors.FieldDescriptor field, int index) Gets an element of a repeated field.intGets the number of elements of a repeated field.intGet the number of bytes required to encode this message.Get theUnknownFieldSetfor this message.booleanReturns true if the given field is set.booleanTODO(jieluo): Clear it when all subclasses have implemented this method.protected abstract GeneratedMessageV3.FieldAccessorTableGet the FieldAccessorTable for this type.protected MapFieldinternalGetMapField(int fieldNumber) Gets the map field with the given field number.private static ObjectinvokeOrDie(Method method, Object object, Object... params) Calls invoke and throws a RuntimeException if it fails.booleanReturns true if all required fields in the message and all embedded messages are set, false otherwise.protected static booleanisStringEmpty(Object value) protected voidUsed by parsing constructors in generated classes.private static <V> voidmaybeSerializeBooleanEntryTo(CodedOutputStream out, Map<Boolean, V> m, MapEntry<Boolean, V> defaultEntry, int fieldNumber, boolean key) protected voidmergeFromAndMakeImmutableInternal(CodedInputStream input, ExtensionRegistryLite extensionRegistry) Deprecated.protected static Internal.BooleanListprotected static Internal.DoubleListprotected static Internal.FloatListprotected static Internal.IntListmutableCopy(Internal.IntList list) protected static Internal.LongListmutableCopy(Internal.LongList list) protected static Internal.BooleanListprotected Message.BuilderCreate a nested builder.protected abstract Message.BuilderTODO(xiaofeng): remove this together with GeneratedMessageV3.BuilderParent.protected static Internal.DoubleListprotected static Internal.FloatListprotected ObjectCreates a new instance of this message type.protected static Internal.IntListprotected static Internal.LongListprotected static <M extends Message>
MparseDelimitedWithIOException(Parser<M> parser, InputStream input) protected static <M extends Message>
MparseDelimitedWithIOException(Parser<M> parser, InputStream input, ExtensionRegistryLite extensions) protected booleanparseUnknownField(CodedInputStream input, UnknownFieldSet.Builder unknownFields, ExtensionRegistryLite extensionRegistry, int tag) Called by subclasses to parse an unknown field.protected booleanparseUnknownFieldProto3(CodedInputStream input, UnknownFieldSet.Builder unknownFields, ExtensionRegistryLite extensionRegistry, int tag) Delegates to parseUnknownField.protected static <M extends Message>
MparseWithIOException(Parser<M> parser, CodedInputStream input) protected static <M extends Message>
MparseWithIOException(Parser<M> parser, CodedInputStream input, ExtensionRegistryLite extensions) protected static <M extends Message>
MparseWithIOException(Parser<M> parser, InputStream input) protected static <M extends Message>
MparseWithIOException(Parser<M> parser, InputStream input, ExtensionRegistryLite extensions) protected static <V> voidserializeBooleanMapTo(CodedOutputStream out, MapField<Boolean, V> field, MapEntry<Boolean, V> defaultEntry, int fieldNumber) protected static <V> voidserializeIntegerMapTo(CodedOutputStream out, MapField<Integer, V> field, MapEntry<Integer, V> defaultEntry, int fieldNumber) protected static <V> voidserializeLongMapTo(CodedOutputStream out, MapField<Long, V> field, MapEntry<Long, V> defaultEntry, int fieldNumber) private static <K,V> void serializeMapTo(CodedOutputStream out, Map<K, V> m, MapEntry<K, V> defaultEntry, int fieldNumber) Serialize the map using the iteration order.protected static <V> voidserializeStringMapTo(CodedOutputStream out, MapField<String, V> field, MapEntry<String, V> defaultEntry, int fieldNumber) (package private) static voidsetAlwaysUseFieldBuildersForTesting(boolean useBuilders) For testing.protected ObjectReplaces this object in the output stream with a serialized form.protected static voidwriteString(CodedOutputStream output, int fieldNumber, Object value) protected static voidwriteStringNoTag(CodedOutputStream output, Object value) voidwriteTo(CodedOutputStream output) Serializes the message and writes it tooutput.Methods inherited from class AbstractMessage
compareFields, equals, findInitializationErrors, getInitializationErrorString, getMemoizedSerializedSize, hashBoolean, hashCode, hashEnum, hashEnumList, hashFields, hashLong, newUninitializedMessageException, setMemoizedSerializedSize, toStringMethods inherited from class AbstractMessageLite
addAll, addAll, checkByteStringIsUtf8, getSerializedSize, toByteArray, toByteString, writeDelimitedTo, writeToMethods inherited from interface Message
newBuilderForType, toBuilderMethods inherited from interface MessageLite
toByteArray, toByteString, writeDelimitedTo, writeToMethods inherited from interface MessageOrBuilder
getDefaultInstanceForType
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
alwaysUseFieldBuilders
protected static boolean alwaysUseFieldBuildersFor testing. Allows a test to disable the optimization that avoids using field builders for nested messages until they are requested. By disabling this optimization, existing tests can be reused to test the field builders. -
unknownFields
For use by generated code only.
-
-
Constructor Details
-
GeneratedMessageV3
protected GeneratedMessageV3() -
GeneratedMessageV3
-
-
Method Details
-
getParserForType
Description copied from interface:MessageLiteGets the parser for a message of the same type as this message.- Specified by:
getParserForTypein interfaceMessage- Specified by:
getParserForTypein interfaceMessageLite
-
enableAlwaysUseFieldBuildersForTesting
static void enableAlwaysUseFieldBuildersForTesting()- See Also:
-
setAlwaysUseFieldBuildersForTesting
static void setAlwaysUseFieldBuildersForTesting(boolean useBuilders) For testing. Allows a test to disable/re-enable the optimization that avoids using field builders for nested messages until they are requested. By disabling this optimization, existing tests can be reused to test the field builders. SeeRepeatedFieldBuilderandSingleFieldBuilder. -
internalGetFieldAccessorTable
Get the FieldAccessorTable for this type. We can't have the message class pass this in to the constructor because of bootstrapping trouble with DescriptorProtos. -
getDescriptorForType
Description copied from interface:MessageOrBuilderGet the message's type's descriptor. This differs from thegetDescriptor()method of generated message classes in that this method is an abstract method of theMessageinterface whereasgetDescriptor()is a static method of a specific class. They return the same thing.- Specified by:
getDescriptorForTypein interfaceMessageOrBuilder
-
mergeFromAndMakeImmutableInternal
@Deprecated protected void mergeFromAndMakeImmutableInternal(CodedInputStream input, ExtensionRegistryLite extensionRegistry) throws InvalidProtocolBufferException Deprecated.- Throws:
InvalidProtocolBufferException
-
getAllFieldsMutable
Internal helper to return a modifiable map containing all the fields. The returned Map is modifiable so that the caller can add additional extension fields to implementgetAllFields().- Parameters:
getBytesForString- whether to generate ByteString for string fields
-
isInitialized
public boolean isInitialized()Description copied from interface:MessageLiteOrBuilderReturns true if all required fields in the message and all embedded messages are set, false otherwise.- Specified by:
isInitializedin interfaceMessageLiteOrBuilder- Overrides:
isInitializedin classAbstractMessage
-
getAllFields
Description copied from interface:MessageOrBuilderReturns a collection of all the fields in this message which are set and their corresponding values. A singular ("required" or "optional") field is set iff hasField() returns true for that field. A "repeated" field is set iff getRepeatedFieldCount() is greater than zero. The values are exactly what would be returned by callingMessageOrBuilder.getField(Descriptors.FieldDescriptor)for each field. The map is guaranteed to be a sorted map, so iterating over it will return fields in order by field number.
If this is for a builder, the returned map may or may not reflect future changes to the builder. Either way, the returned map is itself unmodifiable.- Specified by:
getAllFieldsin interfaceMessageOrBuilder
-
getAllFieldsRaw
Map<Descriptors.FieldDescriptor, Object> getAllFieldsRaw()Returns a collection of all the fields in this message which are set and their corresponding values. A singular ("required" or "optional") field is set iff hasField() returns true for that field. A "repeated" field is set iff getRepeatedFieldCount() is greater than zero. The values are exactly what would be returned by callinggetFieldRaw(Descriptors.FieldDescriptor)for each field. The map is guaranteed to be a sorted map, so iterating over it will return fields in order by field number. -
hasOneof
Description copied from class:AbstractMessageTODO(jieluo): Clear it when all subclasses have implemented this method.- Specified by:
hasOneofin interfaceMessageOrBuilder- Overrides:
hasOneofin classAbstractMessage
-
getOneofFieldDescriptor
Description copied from class:AbstractMessageTODO(jieluo): Clear it when all subclasses have implemented this method.- Specified by:
getOneofFieldDescriptorin interfaceMessageOrBuilder- Overrides:
getOneofFieldDescriptorin classAbstractMessage
-
hasField
Description copied from interface:MessageOrBuilderReturns true if the given field is set. This is exactly equivalent to calling the generated "has" accessor method corresponding to the field.- Specified by:
hasFieldin interfaceMessageOrBuilder
-
getField
Description copied from interface:MessageOrBuilderObtains 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.- Specified by:
getFieldin interfaceMessageOrBuilder
-
getFieldRaw
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. For present string fields, a ByteString is returned representing the bytes that the field contains. -
getRepeatedFieldCount
Description copied from interface:MessageOrBuilderGets the number of elements of a repeated field. This is exactly equivalent to calling the generated "Count" accessor method corresponding to the field.- Specified by:
getRepeatedFieldCountin interfaceMessageOrBuilder
-
getRepeatedField
Description copied from interface:MessageOrBuilderGets an element of a repeated field. 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.- Specified by:
getRepeatedFieldin interfaceMessageOrBuilder
-
getUnknownFields
Description copied from interface:MessageOrBuilderGet theUnknownFieldSetfor this message.- Specified by:
getUnknownFieldsin interfaceMessageOrBuilder
-
parseUnknownField
protected boolean parseUnknownField(CodedInputStream input, UnknownFieldSet.Builder unknownFields, ExtensionRegistryLite extensionRegistry, int tag) throws IOException Called by subclasses to parse an unknown field.TODO(b/248153893) remove this method
- Returns:
trueunless the tag is an end-group tag.- Throws:
IOException
-
parseUnknownFieldProto3
protected boolean parseUnknownFieldProto3(CodedInputStream input, UnknownFieldSet.Builder unknownFields, ExtensionRegistryLite extensionRegistry, int tag) throws IOException Delegates to parseUnknownField. This method is obsolete, but we must retain it for compatibility with older generated code.TODO(b/248153893) remove this method
- Throws:
IOException
-
parseWithIOException
protected static <M extends Message> M parseWithIOException(Parser<M> parser, InputStream input) throws IOException - Throws:
IOException
-
parseWithIOException
protected static <M extends Message> M parseWithIOException(Parser<M> parser, InputStream input, ExtensionRegistryLite extensions) throws IOException - Throws:
IOException
-
parseWithIOException
protected static <M extends Message> M parseWithIOException(Parser<M> parser, CodedInputStream input) throws IOException - Throws:
IOException
-
parseWithIOException
protected static <M extends Message> M parseWithIOException(Parser<M> parser, CodedInputStream input, ExtensionRegistryLite extensions) throws IOException - Throws:
IOException
-
parseDelimitedWithIOException
protected static <M extends Message> M parseDelimitedWithIOException(Parser<M> parser, InputStream input) throws IOException - Throws:
IOException
-
parseDelimitedWithIOException
protected static <M extends Message> M parseDelimitedWithIOException(Parser<M> parser, InputStream input, ExtensionRegistryLite extensions) throws IOException - Throws:
IOException
-
canUseUnsafe
protected static boolean canUseUnsafe() -
emptyIntList
-
newIntList
-
mutableCopy
-
emptyLongList
-
newLongList
-
mutableCopy
-
emptyFloatList
-
newFloatList
-
mutableCopy
-
emptyDoubleList
-
newDoubleList
-
mutableCopy
-
emptyBooleanList
-
newBooleanList
-
mutableCopy
-
writeTo
Description copied from interface:MessageLiteSerializes the message and writes it tooutput. This does not flush or close the stream.- Specified by:
writeToin interfaceMessageLite- Overrides:
writeToin classAbstractMessage- Throws:
IOException
-
getSerializedSize
public int getSerializedSize()Description copied from interface:MessageLiteGet the number of bytes required to encode this message. The result is only computed on the first call and memoized after that. If this message requires more than Integer.MAX_VALUE bytes to encode, the return value will be smaller than the actual number of bytes required and might be negative.- Specified by:
getSerializedSizein interfaceMessageLite- Overrides:
getSerializedSizein classAbstractMessage
-
newInstance
Creates a new instance of this message type. Overridden in the generated code. -
makeExtensionsImmutable
protected void makeExtensionsImmutable()Used by parsing constructors in generated classes. -
newBuilderForType
TODO(xiaofeng): remove this together with GeneratedMessageV3.BuilderParent. -
newBuilderForType
Description copied from class:AbstractMessageCreate a nested builder.- Overrides:
newBuilderForTypein classAbstractMessage
-
getMethodOrDie
-
invokeOrDie
-
internalGetMapField
Gets the map field with the given field number. This method should be overridden in the generated message class if the message contains map fields.Unlike other field types, reflection support for map fields can't be implemented based on generated public API because we need to access a map field as a list in reflection API but the generated API only allows us to access it as a map. This method returns the underlying map field directly and thus enables us to access the map field as a list.
-
writeReplace
Replaces this object in the output stream with a serialized form. Part of Java's serialization magic. Generated sub-classes must override this method by callingreturn super.writeReplace();- Returns:
- a SerializedForm of this message
- Throws:
ObjectStreamException
-
checkNotLite
private static <MessageType extends GeneratedMessageV3.ExtendableMessage<MessageType>, T> Extension<MessageType, T> checkNotLite(ExtensionLite<MessageType, T> extension) Checks that theExtensionis non-Lite and returns it as aGeneratedMessage.GeneratedExtension. -
isStringEmpty
-
computeStringSize
-
computeStringSizeNoTag
-
writeString
protected static void writeString(CodedOutputStream output, int fieldNumber, Object value) throws IOException - Throws:
IOException
-
writeStringNoTag
- Throws:
IOException
-
serializeIntegerMapTo
protected static <V> void serializeIntegerMapTo(CodedOutputStream out, MapField<Integer, V> field, MapEntry<Integer, throws IOExceptionV> defaultEntry, int fieldNumber) - Throws:
IOException
-
serializeLongMapTo
protected static <V> void serializeLongMapTo(CodedOutputStream out, MapField<Long, V> field, MapEntry<Long, throws IOExceptionV> defaultEntry, int fieldNumber) - Throws:
IOException
-
serializeStringMapTo
protected static <V> void serializeStringMapTo(CodedOutputStream out, MapField<String, V> field, MapEntry<String, throws IOExceptionV> defaultEntry, int fieldNumber) - Throws:
IOException
-
serializeBooleanMapTo
protected static <V> void serializeBooleanMapTo(CodedOutputStream out, MapField<Boolean, V> field, MapEntry<Boolean, throws IOExceptionV> defaultEntry, int fieldNumber) - Throws:
IOException
-
maybeSerializeBooleanEntryTo
private static <V> void maybeSerializeBooleanEntryTo(CodedOutputStream out, Map<Boolean, V> m, MapEntry<Boolean, throws IOExceptionV> defaultEntry, int fieldNumber, boolean key) - Throws:
IOException
-
serializeMapTo
private static <K,V> void serializeMapTo(CodedOutputStream out, Map<K, V> m, MapEntry<K, throws IOExceptionV> defaultEntry, int fieldNumber) Serialize the map using the iteration order.- Throws:
IOException
-