Package com.google.protobuf
Class GeneratedMessage
java.lang.Object
com.google.protobuf.AbstractMessageLite
com.google.protobuf.AbstractMessage
com.google.protobuf.GeneratedMessage
- All Implemented Interfaces:
Message
,MessageLite
,MessageLiteOrBuilder
,MessageOrBuilder
,Serializable
- Direct Known Subclasses:
GeneratedMessage.ExtendableMessage
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 class
protected static interface
TODO(xiaofeng): remove this after b/29368482 is fixed.private static class
static class
GeneratedMessage.ExtendableBuilder<MessageType extends GeneratedMessage.ExtendableMessage,
BuilderType extends GeneratedMessage.ExtendableBuilder<MessageType, BuilderType>> Generated message builders for message types that contain extension ranges subclass this.static class
Generated message classes for message types that contain extension ranges subclass this.static interface
(package private) static interface
Gets the descriptor for an extension.static final class
Users should ignore this class.static class
Type used to represent generated extensions.Nested classes/interfaces inherited from class com.google.protobuf.AbstractMessageLite
AbstractMessageLite.InternalOneOfEnum
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static boolean
For testing.private static final long
protected UnknownFieldSet
For use by generated code only.Fields inherited from class com.google.protobuf.AbstractMessage
memoizedSize
Fields inherited from class com.google.protobuf.AbstractMessageLite
memoizedHashCode
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
protected
GeneratedMessage
(GeneratedMessage.Builder<?> builder) -
Method Summary
Modifier and TypeMethodDescriptionprivate static <MessageType extends GeneratedMessage.ExtendableMessage<MessageType>,
T>
Extension<MessageType, T> checkNotLite
(ExtensionLite<MessageType, T> extension) Checks that theExtension
is non-Lite and returns it as aGeneratedMessage.GeneratedExtension
.protected static int
computeStringSize
(int fieldNumber, Object value) protected static int
computeStringSizeNoTag
(Object value) (package private) static void
For testing.Returns 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) Object
Obtains the value of the given field, or the default value if it is not set.private static Method
getMethodOrDie
(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 GeneratedMessage> 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.int
Gets the number of elements of a repeated field.int
Get the number of bytes required to encode this message.Get theUnknownFieldSet
for this message.boolean
Returns true if the given field is set.boolean
TODO(jieluo): Clear it when all subclasses have implemented this method.protected abstract GeneratedMessage.FieldAccessorTable
Get the FieldAccessorTable for this type.protected MapField
internalGetMapField
(int fieldNumber) Gets the map field with the given field number.private static Object
invokeOrDie
(Method method, Object object, Object... params) Calls invoke and throws a RuntimeException if it fails.boolean
Returns true if all required fields in the message and all embedded messages are set, false otherwise.protected void
Used by parsing constructors in generated classes.protected Message.Builder
Create a nested builder.protected abstract Message.Builder
TODO(xiaofeng): remove this together with GeneratedMessage.BuilderParent.static <ContainingType extends Message,
Type>
GeneratedMessage.GeneratedExtension<ContainingType, Type> newFileScopedGeneratedExtension
(Class singularType, Message defaultInstance) For use by generated code only.static <ContainingType extends Message,
Type>
GeneratedMessage.GeneratedExtension<ContainingType, Type> newFileScopedGeneratedExtension
(Class singularType, Message defaultInstance, String descriptorOuterClass, String extensionName) Used in proto1 generated code only.static <ContainingType extends Message,
Type>
GeneratedMessage.GeneratedExtension<ContainingType, Type> newMessageScopedGeneratedExtension
(Message scope, int descriptorIndex, Class singularType, Message defaultInstance) For use by generated code only.static <ContainingType extends Message,
Type>
GeneratedMessage.GeneratedExtension<ContainingType, Type> newMessageScopedGeneratedExtension
(Message scope, String name, Class singularType, Message defaultInstance) Used in proto1 generated code only.protected static <M extends Message>
MparseDelimitedWithIOException
(Parser<M> parser, InputStream input) protected static <M extends Message>
MparseDelimitedWithIOException
(Parser<M> parser, InputStream input, ExtensionRegistryLite extensions) protected boolean
parseUnknownField
(CodedInputStream input, UnknownFieldSet.Builder unknownFields, ExtensionRegistryLite extensionRegistry, int tag) Called by subclasses to parse an unknown field.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 Object
Replaces this object in the output stream with a serialized form.protected static void
writeString
(CodedOutputStream output, int fieldNumber, Object value) protected static void
writeStringNoTag
(CodedOutputStream output, Object value) void
writeTo
(CodedOutputStream output) Serializes the message and writes it tooutput
.Methods inherited from class com.google.protobuf.AbstractMessage
compareFields, equals, findInitializationErrors, getInitializationErrorString, getMemoizedSerializedSize, hashBoolean, hashCode, hashEnum, hashEnumList, hashFields, hashLong, newUninitializedMessageException, setMemoizedSerializedSize, toString
Methods inherited from class com.google.protobuf.AbstractMessageLite
addAll, addAll, checkByteStringIsUtf8, getSerializedSize, toByteArray, toByteString, writeDelimitedTo, writeTo
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface com.google.protobuf.Message
newBuilderForType, toBuilder
Methods inherited from interface com.google.protobuf.MessageLite
toByteArray, toByteString, writeDelimitedTo, writeTo
Methods inherited from interface com.google.protobuf.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
-
GeneratedMessage
protected GeneratedMessage() -
GeneratedMessage
-
-
Method Details
-
getParserForType
Description copied from interface:MessageLite
Gets the parser for a message of the same type as this message.- Specified by:
getParserForType
in interfaceMessage
- Specified by:
getParserForType
in interfaceMessageLite
-
enableAlwaysUseFieldBuildersForTesting
static void enableAlwaysUseFieldBuildersForTesting()For 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. SeeRepeatedFieldBuilder
andSingleFieldBuilder
. -
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:MessageOrBuilder
Get the message's type's descriptor. This differs from thegetDescriptor()
method of generated message classes in that this method is an abstract method of theMessage
interface whereasgetDescriptor()
is a static method of a specific class. They return the same thing.- Specified by:
getDescriptorForType
in interfaceMessageOrBuilder
-
getAllFieldsMutable
Internal helper to return a modifiable map containing all the fields. The returned Map is modifialbe 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:MessageLiteOrBuilder
Returns true if all required fields in the message and all embedded messages are set, false otherwise.- Specified by:
isInitialized
in interfaceMessageLiteOrBuilder
- Overrides:
isInitialized
in classAbstractMessage
-
getAllFields
Description copied from interface:MessageOrBuilder
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 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:
getAllFields
in 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:AbstractMessage
TODO(jieluo): Clear it when all subclasses have implemented this method.- Specified by:
hasOneof
in interfaceMessageOrBuilder
- Overrides:
hasOneof
in classAbstractMessage
-
getOneofFieldDescriptor
Description copied from class:AbstractMessage
TODO(jieluo): Clear it when all subclasses have implemented this method.- Specified by:
getOneofFieldDescriptor
in interfaceMessageOrBuilder
- Overrides:
getOneofFieldDescriptor
in classAbstractMessage
-
hasField
Description copied from interface:MessageOrBuilder
Returns true if the given field is set. This is exactly equivalent to calling the generated "has" accessor method corresponding to the field.- Specified by:
hasField
in interfaceMessageOrBuilder
-
getField
Description copied from interface:MessageOrBuilder
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.- Specified by:
getField
in 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:MessageOrBuilder
Gets 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:
getRepeatedFieldCount
in interfaceMessageOrBuilder
-
getRepeatedField
Description copied from interface:MessageOrBuilder
Gets 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:
getRepeatedField
in interfaceMessageOrBuilder
-
getUnknownFields
Description copied from interface:MessageOrBuilder
Get theUnknownFieldSet
for this message.- Specified by:
getUnknownFields
in interfaceMessageOrBuilder
-
parseUnknownField
protected boolean parseUnknownField(CodedInputStream input, UnknownFieldSet.Builder unknownFields, ExtensionRegistryLite extensionRegistry, int tag) throws IOException Called by subclasses to parse an unknown field.- Returns:
true
unless the tag is an end-group tag.- 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
-
writeTo
Description copied from interface:MessageLite
Serializes the message and writes it tooutput
. This does not flush or close the stream.- Specified by:
writeTo
in interfaceMessageLite
- Overrides:
writeTo
in classAbstractMessage
- Throws:
IOException
-
getSerializedSize
public int getSerializedSize()Description copied from interface:MessageLite
Get 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:
getSerializedSize
in interfaceMessageLite
- Overrides:
getSerializedSize
in classAbstractMessage
-
makeExtensionsImmutable
protected void makeExtensionsImmutable()Used by parsing constructors in generated classes. -
newBuilderForType
TODO(xiaofeng): remove this together with GeneratedMessage.BuilderParent. -
newBuilderForType
Description copied from class:AbstractMessage
Create a nested builder.- Overrides:
newBuilderForType
in classAbstractMessage
-
newMessageScopedGeneratedExtension
public static <ContainingType extends Message,Type> GeneratedMessage.GeneratedExtension<ContainingType,Type> newMessageScopedGeneratedExtension(Message scope, int descriptorIndex, Class singularType, Message defaultInstance) For use by generated code only. -
newFileScopedGeneratedExtension
public static <ContainingType extends Message,Type> GeneratedMessage.GeneratedExtension<ContainingType,Type> newFileScopedGeneratedExtension(Class singularType, Message defaultInstance) For use by generated code only. -
newMessageScopedGeneratedExtension
public static <ContainingType extends Message,Type> GeneratedMessage.GeneratedExtension<ContainingType,Type> newMessageScopedGeneratedExtension(Message scope, String name, Class singularType, Message defaultInstance) Used in proto1 generated code only. After enabling bridge, we can define proto2 extensions (the extended type is a proto2 mutable message) in a proto1 .proto file. For these extensions we should generate proto2 GeneratedExtensions. -
newFileScopedGeneratedExtension
public static <ContainingType extends Message,Type> GeneratedMessage.GeneratedExtension<ContainingType,Type> newFileScopedGeneratedExtension(Class singularType, Message defaultInstance, String descriptorOuterClass, String extensionName) Used in proto1 generated code only. After enabling bridge, we can define proto2 extensions (the extended type is a proto2 mutable message) in a proto1 .proto file. For these extensions we should generate proto2 GeneratedExtensions. -
getMethodOrDie
Calls Class.getMethod and throws a RuntimeException if it fails. -
invokeOrDie
Calls invoke and throws a RuntimeException if it fails. -
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 GeneratedMessage.ExtendableMessage<MessageType>,T> Extension<MessageType,T> checkNotLite(ExtensionLite<MessageType, T> extension) Checks that theExtension
is non-Lite and returns it as aGeneratedMessage.GeneratedExtension
. -
computeStringSize
-
computeStringSizeNoTag
-
writeString
protected static void writeString(CodedOutputStream output, int fieldNumber, Object value) throws IOException - Throws:
IOException
-
writeStringNoTag
- Throws:
IOException
-