Class GeneratedMessage
- java.lang.Object
-
- com.google.protobuf.AbstractMessageLite
-
- com.google.protobuf.AbstractMessage
-
- com.google.protobuf.GeneratedMessage
-
- All Implemented Interfaces:
Message,com.google.protobuf.MessageLite,com.google.protobuf.MessageLiteOrBuilder,MessageOrBuilder,java.io.Serializable
- Direct Known Subclasses:
Any,Api,BoolValue,BytesValue,DescriptorProtos.DescriptorProto,DescriptorProtos.DescriptorProto.ExtensionRange,DescriptorProtos.DescriptorProto.ReservedRange,DescriptorProtos.EnumDescriptorProto,DescriptorProtos.EnumDescriptorProto.EnumReservedRange,DescriptorProtos.EnumValueDescriptorProto,DescriptorProtos.ExtensionRangeOptions.Declaration,DescriptorProtos.FeatureSet.VisibilityFeature,DescriptorProtos.FeatureSetDefaults,DescriptorProtos.FeatureSetDefaults.FeatureSetEditionDefault,DescriptorProtos.FieldDescriptorProto,DescriptorProtos.FieldOptions.EditionDefault,DescriptorProtos.FieldOptions.FeatureSupport,DescriptorProtos.FileDescriptorProto,DescriptorProtos.GeneratedCodeInfo,DescriptorProtos.GeneratedCodeInfo.Annotation,DescriptorProtos.MethodDescriptorProto,DescriptorProtos.OneofDescriptorProto,DescriptorProtos.ServiceDescriptorProto,DescriptorProtos.SourceCodeInfo.Location,DescriptorProtos.UninterpretedOption,DescriptorProtos.UninterpretedOption.NamePart,DoubleValue,Duration,Empty,Enum,EnumValue,Field,FieldMask,FloatValue,GeneratedMessage.ExtendableMessage,Int32Value,Int64Value,JavaFeaturesProto.JavaFeatures,JavaFeaturesProto.JavaFeatures.NestInFileClassFeature,ListValue,Method,Mixin,Option,PluginProtos.CodeGeneratorRequest,PluginProtos.CodeGeneratorResponse,PluginProtos.CodeGeneratorResponse.File,PluginProtos.Version,SourceContext,StringValue,Struct,Timestamp,Type,UInt32Value,UInt64Value,Value
public abstract class GeneratedMessage extends AbstractMessage implements java.io.Serializable
All generated protocol message classes extend this class. This class implements most of the Message and Builder interfaces using Java reflection.Users should generally ignore this class and use the Message interface instead.
This class is intended to only be extended by protoc created gencode. It is not intended or supported to extend this class, and any protected methods may be removed without it being considered a breaking change as long as all supported gencode does not depend on the changed methods.
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classGeneratedMessage.Builder<BuilderT extends GeneratedMessage.Builder<BuilderT>>Builder class forGeneratedMessage.static classGeneratedMessage.ExtendableBuilder<MessageT extends GeneratedMessage.ExtendableMessage<MessageT>,BuilderT extends GeneratedMessage.ExtendableBuilder<MessageT,BuilderT>>Generated message builders for message types that contain extension ranges subclass this.static classGeneratedMessage.ExtendableMessage<MessageT extends GeneratedMessage.ExtendableMessage<MessageT>>Generated message classes for message types that contain extension ranges subclass this.static interfaceGeneratedMessage.ExtendableMessageOrBuilder<MessageT extends GeneratedMessage.ExtendableMessage<MessageT>>ExtendsMessageOrBuilderwith extension-related functions.static classGeneratedMessage.FieldAccessorTableUsers should ignore this class.static classGeneratedMessage.GeneratedExtension<ContainingT extends Message,T>Type used to represent generated extensions.protected static classGeneratedMessage.UnusedPrivateParameterThis class is used to make a generated protected method inaccessible from user's code (e.g., thenewInstance(com.google.protobuf.GeneratedMessage.UnusedPrivateParameter)method below).-
Nested classes/interfaces inherited from class com.google.protobuf.AbstractMessage
AbstractMessage.BuilderParent
-
-
Field Summary
Fields Modifier and Type Field Description protected static booleanalwaysUseFieldBuildersFor testing.protected static java.util.Set<java.lang.String>loggedPre22TypeNamesprotected UnknownFieldSetunknownFieldsFor use by generated code only.-
Fields inherited from class com.google.protobuf.AbstractMessage
memoizedSize
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedGeneratedMessage()protectedGeneratedMessage(GeneratedMessage.Builder<?> builder)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected static booleancanUseUnsafe()protected static intcomputeStringSize(int fieldNumber, java.lang.Object value)protected static intcomputeStringSizeNoTag(java.lang.Object value)protected static com.google.protobuf.Internal.BooleanListemptyBooleanList()protected static com.google.protobuf.Internal.DoubleListemptyDoubleList()protected static com.google.protobuf.Internal.FloatListemptyFloatList()protected static com.google.protobuf.Internal.IntListemptyIntList()protected static <T> com.google.protobuf.Internal.ProtobufList<T>emptyList(java.lang.Class<T> elementType)protected static com.google.protobuf.Internal.LongListemptyLongList()java.util.Map<Descriptors.FieldDescriptor,java.lang.Object>getAllFields()Returns a collection of all the fields in this message which are set and their corresponding values.Descriptors.DescriptorgetDescriptorForType()Get the message's type's descriptor.java.lang.ObjectgetField(Descriptors.FieldDescriptor field)Obtains the value of the given field, or the default value if it is not set.Descriptors.FieldDescriptorgetOneofFieldDescriptor(Descriptors.OneofDescriptor oneof)Obtains the FieldDescriptor if the given oneof is set.com.google.protobuf.Parser<? extends GeneratedMessage>getParserForType()TODO: Remove this unnecessary intermediate implementation of this method.java.lang.ObjectgetRepeatedField(Descriptors.FieldDescriptor field, int index)Gets an element of a repeated field.intgetRepeatedFieldCount(Descriptors.FieldDescriptor field)Gets the number of elements of a repeated field.intgetSerializedSize()UnknownFieldSetgetUnknownFields()Get theUnknownFieldSetfor this message.booleanhasField(Descriptors.FieldDescriptor field)Returns true if the given field is set.booleanhasOneof(Descriptors.OneofDescriptor oneof)Returns true if the given oneof is set.protected abstract GeneratedMessage.FieldAccessorTableinternalGetFieldAccessorTable()Get the FieldAccessorTable for this type.protected MapFieldinternalGetMapField(int fieldNumber)Deprecated.protected MapFieldReflectionAccessorinternalGetMapFieldReflection(int fieldNumber)Gets the map field with the given field number.booleanisInitialized()protected static booleanisStringEmpty(java.lang.Object value)protected voidmakeExtensionsImmutable()This method only exists as a shim for pre-22 gencode.protected static <ListT extends com.google.protobuf.Internal.ProtobufList<?>>
ListTmakeMutableCopy(ListT list)protected static <ListT extends com.google.protobuf.Internal.ProtobufList<?>>
ListTmakeMutableCopy(ListT list, int minCapacity)protected voidmergeFromAndMakeImmutableInternal(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)Deprecated.use newBuilder().mergeFrom() insteadstatic <ContainingT extends Message,T>
GeneratedMessage.GeneratedExtension<ContainingT,T>newFileScopedGeneratedExtension(java.lang.Class<?> singularType, Message defaultInstance)For use by generated code only.protected java.lang.ObjectnewInstance(GeneratedMessage.UnusedPrivateParameter unused)Creates a new instance of this message type.static <ContainingT extends Message,T>
GeneratedMessage.GeneratedExtension<ContainingT,T>newMessageScopedGeneratedExtension(Message scope, int descriptorIndex, java.lang.Class<?> singularType, Message defaultInstance)For use by generated code only.protected static <M extends Message>
MparseDelimitedWithIOException(com.google.protobuf.Parser<M> parser, java.io.InputStream input)Used by generated code.protected static <M extends Message>
MparseDelimitedWithIOException(com.google.protobuf.Parser<M> parser, java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensions)Used by generated code.protected booleanparseUnknownField(com.google.protobuf.CodedInputStream input, UnknownFieldSet.Builder unknownFields, com.google.protobuf.ExtensionRegistryLite extensionRegistry, int tag)Called by subclasses to parse an unknown field.protected booleanparseUnknownFieldProto3(com.google.protobuf.CodedInputStream input, UnknownFieldSet.Builder unknownFields, com.google.protobuf.ExtensionRegistryLite extensionRegistry, int tag)Delegates to parseUnknownField.protected static <M extends Message>
MparseWithIOException(com.google.protobuf.Parser<M> parser, com.google.protobuf.CodedInputStream input)Used by generated code.protected static <M extends Message>
MparseWithIOException(com.google.protobuf.Parser<M> parser, com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensions)Used by generated code.protected static <M extends Message>
MparseWithIOException(com.google.protobuf.Parser<M> parser, java.io.InputStream input)Used by generated code.protected static <M extends Message>
MparseWithIOException(com.google.protobuf.Parser<M> parser, java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensions)Used by generated code.protected static <V> voidserializeBooleanMapTo(com.google.protobuf.CodedOutputStream out, MapField<java.lang.Boolean,V> field, MapEntry<java.lang.Boolean,V> defaultEntry, int fieldNumber)protected static <V> voidserializeIntegerMapTo(com.google.protobuf.CodedOutputStream out, MapField<java.lang.Integer,V> field, MapEntry<java.lang.Integer,V> defaultEntry, int fieldNumber)protected static <V> voidserializeLongMapTo(com.google.protobuf.CodedOutputStream out, MapField<java.lang.Long,V> field, MapEntry<java.lang.Long,V> defaultEntry, int fieldNumber)protected static <V> voidserializeStringMapTo(com.google.protobuf.CodedOutputStream out, MapField<java.lang.String,V> field, MapEntry<java.lang.String,V> defaultEntry, int fieldNumber)protected java.lang.ObjectwriteReplace()Replaces this object in the output stream with a serialized form.protected static voidwriteString(com.google.protobuf.CodedOutputStream output, int fieldNumber, java.lang.Object value)protected static voidwriteStringNoTag(com.google.protobuf.CodedOutputStream output, java.lang.Object value)voidwriteTo(com.google.protobuf.CodedOutputStream output)-
Methods inherited from class com.google.protobuf.AbstractMessage
equals, findInitializationErrors, getInitializationErrorString, hashCode, hashFields, newBuilderForType, toString
-
Methods inherited from class com.google.protobuf.AbstractMessageLite
addAll, checkByteStringIsUtf8, 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 Detail
-
alwaysUseFieldBuilders
protected static boolean alwaysUseFieldBuilders
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.
-
unknownFields
protected UnknownFieldSet unknownFields
For use by generated code only.TODO: mark this private and final (breaking change)
-
loggedPre22TypeNames
protected static final java.util.Set<java.lang.String> loggedPre22TypeNames
-
-
Constructor Detail
-
GeneratedMessage
protected GeneratedMessage()
-
GeneratedMessage
protected GeneratedMessage(GeneratedMessage.Builder<?> builder)
-
-
Method Detail
-
getParserForType
public com.google.protobuf.Parser<? extends GeneratedMessage> getParserForType()
TODO: Remove this unnecessary intermediate implementation of this method.- Specified by:
getParserForTypein interfaceMessage- Specified by:
getParserForTypein interfacecom.google.protobuf.MessageLite
-
internalGetFieldAccessorTable
protected abstract GeneratedMessage.FieldAccessorTable 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
public Descriptors.Descriptor 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(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferExceptionDeprecated.use newBuilder().mergeFrom() insteadTODO: This method should be removed. It enables parsing directly into an "immutable" message. Have to leave it for now to support old gencode.- Throws:
com.google.protobuf.InvalidProtocolBufferException
-
isInitialized
public boolean isInitialized()
- Specified by:
isInitializedin interfacecom.google.protobuf.MessageLiteOrBuilder- Overrides:
isInitializedin classAbstractMessage
-
getAllFields
public java.util.Map<Descriptors.FieldDescriptor,java.lang.Object> 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
-
hasOneof
public boolean hasOneof(Descriptors.OneofDescriptor oneof)
Description copied from interface:MessageOrBuilderReturns true if the given oneof is set.- Specified by:
hasOneofin interfaceMessageOrBuilder- Overrides:
hasOneofin classAbstractMessage
-
getOneofFieldDescriptor
public Descriptors.FieldDescriptor getOneofFieldDescriptor(Descriptors.OneofDescriptor oneof)
Description copied from interface:MessageOrBuilderObtains the FieldDescriptor if the given oneof is set. Returns null if no field is set.- Specified by:
getOneofFieldDescriptorin interfaceMessageOrBuilder- Overrides:
getOneofFieldDescriptorin classAbstractMessage
-
hasField
public boolean hasField(Descriptors.FieldDescriptor field)
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. The return value of hasField() is semantically meaningful only for fields where field.hasPresence() == true.- Specified by:
hasFieldin interfaceMessageOrBuilder
-
getField
public java.lang.Object getField(Descriptors.FieldDescriptor field)
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
-
getRepeatedFieldCount
public int getRepeatedFieldCount(Descriptors.FieldDescriptor field)
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
public java.lang.Object getRepeatedField(Descriptors.FieldDescriptor field, int index)
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
public UnknownFieldSet getUnknownFields()
Description copied from interface:MessageOrBuilderGet theUnknownFieldSetfor this message.- Specified by:
getUnknownFieldsin interfaceMessageOrBuilder
-
parseUnknownField
protected boolean parseUnknownField(com.google.protobuf.CodedInputStream input, UnknownFieldSet.Builder unknownFields, com.google.protobuf.ExtensionRegistryLite extensionRegistry, int tag) throws java.io.IOExceptionCalled by subclasses to parse an unknown field.TODO remove this method
- Returns:
trueunless the tag is an end-group tag.- Throws:
java.io.IOException
-
parseUnknownFieldProto3
protected boolean parseUnknownFieldProto3(com.google.protobuf.CodedInputStream input, UnknownFieldSet.Builder unknownFields, com.google.protobuf.ExtensionRegistryLite extensionRegistry, int tag) throws java.io.IOExceptionDelegates to parseUnknownField. This method is obsolete, but we must retain it for compatibility with older generated code.TODO remove this method
- Throws:
java.io.IOException
-
parseWithIOException
protected static <M extends Message> M parseWithIOException(com.google.protobuf.Parser<M> parser, java.io.InputStream input) throws java.io.IOException
Used by generated code.- Throws:
java.io.IOException
-
parseWithIOException
protected static <M extends Message> M parseWithIOException(com.google.protobuf.Parser<M> parser, java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensions) throws java.io.IOException
Used by generated code.- Throws:
java.io.IOException
-
parseWithIOException
protected static <M extends Message> M parseWithIOException(com.google.protobuf.Parser<M> parser, com.google.protobuf.CodedInputStream input) throws java.io.IOException
Used by generated code.- Throws:
java.io.IOException
-
parseWithIOException
protected static <M extends Message> M parseWithIOException(com.google.protobuf.Parser<M> parser, com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensions) throws java.io.IOException
Used by generated code.- Throws:
java.io.IOException
-
parseDelimitedWithIOException
protected static <M extends Message> M parseDelimitedWithIOException(com.google.protobuf.Parser<M> parser, java.io.InputStream input) throws java.io.IOException
Used by generated code.- Throws:
java.io.IOException
-
parseDelimitedWithIOException
protected static <M extends Message> M parseDelimitedWithIOException(com.google.protobuf.Parser<M> parser, java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensions) throws java.io.IOException
Used by generated code.- Throws:
java.io.IOException
-
canUseUnsafe
protected static boolean canUseUnsafe()
-
emptyIntList
protected static com.google.protobuf.Internal.IntList emptyIntList()
-
makeExtensionsImmutable
protected void makeExtensionsImmutable()
This method only exists as a shim for pre-22 gencode. This function is a no-op other than warning or throwing an error for messages that are not extendable.- Throws:
java.lang.UnsupportedOperationException- if thePRE22_GENCODE_ERROR_PROPERTYsystem property is set.
-
emptyLongList
protected static com.google.protobuf.Internal.LongList emptyLongList()
-
emptyFloatList
protected static com.google.protobuf.Internal.FloatList emptyFloatList()
-
emptyDoubleList
protected static com.google.protobuf.Internal.DoubleList emptyDoubleList()
-
emptyBooleanList
protected static com.google.protobuf.Internal.BooleanList emptyBooleanList()
-
makeMutableCopy
protected static <ListT extends com.google.protobuf.Internal.ProtobufList<?>> ListT makeMutableCopy(ListT list)
-
makeMutableCopy
protected static <ListT extends com.google.protobuf.Internal.ProtobufList<?>> ListT makeMutableCopy(ListT list, int minCapacity)
-
emptyList
protected static <T> com.google.protobuf.Internal.ProtobufList<T> emptyList(java.lang.Class<T> elementType)
-
writeTo
public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException- Specified by:
writeToin interfacecom.google.protobuf.MessageLite- Overrides:
writeToin classAbstractMessage- Throws:
java.io.IOException
-
getSerializedSize
public int getSerializedSize()
- Specified by:
getSerializedSizein interfacecom.google.protobuf.MessageLite- Overrides:
getSerializedSizein classAbstractMessage
-
newInstance
protected java.lang.Object newInstance(GeneratedMessage.UnusedPrivateParameter unused)
Creates a new instance of this message type. Overridden in the generated code.
-
newMessageScopedGeneratedExtension
public static <ContainingT extends Message,T> GeneratedMessage.GeneratedExtension<ContainingT,T> newMessageScopedGeneratedExtension(Message scope, int descriptorIndex, java.lang.Class<?> singularType, Message defaultInstance)
For use by generated code only.
-
newFileScopedGeneratedExtension
public static <ContainingT extends Message,T> GeneratedMessage.GeneratedExtension<ContainingT,T> newFileScopedGeneratedExtension(java.lang.Class<?> singularType, Message defaultInstance)
For use by generated code only.
-
internalGetMapFieldReflection
protected MapFieldReflectionAccessor internalGetMapFieldReflection(int fieldNumber)
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.
-
internalGetMapField
@Deprecated protected MapField internalGetMapField(int fieldNumber)
Deprecated.TODO: Remove, exists for compatibility with generated code.
-
writeReplace
protected java.lang.Object writeReplace() throws java.io.ObjectStreamExceptionReplaces 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:
java.io.ObjectStreamException
-
isStringEmpty
protected static boolean isStringEmpty(java.lang.Object value)
-
computeStringSize
protected static int computeStringSize(int fieldNumber, java.lang.Object value)
-
computeStringSizeNoTag
protected static int computeStringSizeNoTag(java.lang.Object value)
-
writeString
protected static void writeString(com.google.protobuf.CodedOutputStream output, int fieldNumber, java.lang.Object value) throws java.io.IOException- Throws:
java.io.IOException
-
writeStringNoTag
protected static void writeStringNoTag(com.google.protobuf.CodedOutputStream output, java.lang.Object value) throws java.io.IOException- Throws:
java.io.IOException
-
serializeIntegerMapTo
protected static <V> void serializeIntegerMapTo(com.google.protobuf.CodedOutputStream out, MapField<java.lang.Integer,V> field, MapEntry<java.lang.Integer,V> defaultEntry, int fieldNumber) throws java.io.IOException- Throws:
java.io.IOException
-
serializeLongMapTo
protected static <V> void serializeLongMapTo(com.google.protobuf.CodedOutputStream out, MapField<java.lang.Long,V> field, MapEntry<java.lang.Long,V> defaultEntry, int fieldNumber) throws java.io.IOException- Throws:
java.io.IOException
-
serializeStringMapTo
protected static <V> void serializeStringMapTo(com.google.protobuf.CodedOutputStream out, MapField<java.lang.String,V> field, MapEntry<java.lang.String,V> defaultEntry, int fieldNumber) throws java.io.IOException- Throws:
java.io.IOException
-
-