Class GeneratedMessageV3

    • 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.
    • Constructor Detail

      • GeneratedMessageV3

        protected GeneratedMessageV3()
    • Method Detail

      • 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. See RepeatedFieldBuilder and SingleFieldBuilder.
      • internalGetFieldAccessorTable

        protected abstract GeneratedMessageV3.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: MessageOrBuilder
        Get the message's type's descriptor. This differs from the getDescriptor() method of generated message classes in that this method is an abstract method of the Message interface whereas getDescriptor() is a static method of a specific class. They return the same thing.
        Specified by:
        getDescriptorForType in interface MessageOrBuilder
      • getAllFieldsMutable

        private java.util.Map<Descriptors.FieldDescriptor,​java.lang.Object> getAllFieldsMutable​(boolean getBytesForString)
        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 implement getAllFields().
        Parameters:
        getBytesForString - whether to generate ByteString for string fields
      • getAllFields

        public java.util.Map<Descriptors.FieldDescriptor,​java.lang.Object> 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 calling MessageOrBuilder.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 interface MessageOrBuilder
      • getAllFieldsRaw

        java.util.Map<Descriptors.FieldDescriptor,​java.lang.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 calling getFieldRaw(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.
      • getField

        public java.lang.Object getField​(Descriptors.FieldDescriptor field)
        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 interface MessageOrBuilder
      • getFieldRaw

        java.lang.Object getFieldRaw​(Descriptors.FieldDescriptor field)
        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.
      • getRepeatedField

        public java.lang.Object getRepeatedField​(Descriptors.FieldDescriptor field,
                                                 int index)
        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 interface MessageOrBuilder
      • parseUnknownField

        protected boolean parseUnknownField​(CodedInputStream input,
                                            UnknownFieldSet.Builder unknownFields,
                                            ExtensionRegistryLite extensionRegistry,
                                            int tag)
                                     throws java.io.IOException
        Called by subclasses to parse an unknown field.

        TODO(b/248153893) remove this method

        Returns:
        true unless the tag is an end-group tag.
        Throws:
        java.io.IOException
      • parseUnknownFieldProto3

        protected boolean parseUnknownFieldProto3​(CodedInputStream input,
                                                  UnknownFieldSet.Builder unknownFields,
                                                  ExtensionRegistryLite extensionRegistry,
                                                  int tag)
                                           throws java.io.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:
        java.io.IOException
      • parseWithIOException

        protected static <M extends Message> M parseWithIOException​(Parser<M> parser,
                                                                    java.io.InputStream input)
                                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • parseWithIOException

        protected static <M extends Message> M parseWithIOException​(Parser<M> parser,
                                                                    java.io.InputStream input,
                                                                    ExtensionRegistryLite extensions)
                                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • parseWithIOException

        protected static <M extends Message> M parseWithIOException​(Parser<M> parser,
                                                                    CodedInputStream input)
                                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • parseDelimitedWithIOException

        protected static <M extends Message> M parseDelimitedWithIOException​(Parser<M> parser,
                                                                             java.io.InputStream input)
                                                                      throws java.io.IOException
        Throws:
        java.io.IOException
      • parseDelimitedWithIOException

        protected static <M extends Message> M parseDelimitedWithIOException​(Parser<M> parser,
                                                                             java.io.InputStream input,
                                                                             ExtensionRegistryLite extensions)
                                                                      throws java.io.IOException
        Throws:
        java.io.IOException
      • canUseUnsafe

        protected static boolean canUseUnsafe()
      • writeTo

        public void writeTo​(CodedOutputStream output)
                     throws java.io.IOException
        Description copied from interface: MessageLite
        Serializes the message and writes it to output. This does not flush or close the stream.
        Specified by:
        writeTo in interface MessageLite
        Overrides:
        writeTo in class AbstractMessage
        Throws:
        java.io.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 interface MessageLite
        Overrides:
        getSerializedSize in class AbstractMessage
      • makeExtensionsImmutable

        protected void makeExtensionsImmutable()
        Used by parsing constructors in generated classes.
      • getMethodOrDie

        private static java.lang.reflect.Method getMethodOrDie​(java.lang.Class clazz,
                                                               java.lang.String name,
                                                               java.lang.Class... params)
        Calls Class.getMethod and throws a RuntimeException if it fails.
      • invokeOrDie

        private static java.lang.Object invokeOrDie​(java.lang.reflect.Method method,
                                                    java.lang.Object object,
                                                    java.lang.Object... params)
        Calls invoke and throws a RuntimeException if it fails.
      • internalGetMapField

        protected MapField internalGetMapField​(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.

      • writeReplace

        protected java.lang.Object writeReplace()
                                         throws java.io.ObjectStreamException
        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 calling return 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​(CodedOutputStream output,
                                          int fieldNumber,
                                          java.lang.Object value)
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • writeStringNoTag

        protected static void writeStringNoTag​(CodedOutputStream output,
                                               java.lang.Object value)
                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • serializeIntegerMapTo

        protected static <V> void serializeIntegerMapTo​(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​(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​(CodedOutputStream out,
                                                       MapField<java.lang.String,​V> field,
                                                       MapEntry<java.lang.String,​V> defaultEntry,
                                                       int fieldNumber)
                                                throws java.io.IOException
        Throws:
        java.io.IOException
      • serializeBooleanMapTo

        protected static <V> void serializeBooleanMapTo​(CodedOutputStream out,
                                                        MapField<java.lang.Boolean,​V> field,
                                                        MapEntry<java.lang.Boolean,​V> defaultEntry,
                                                        int fieldNumber)
                                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • maybeSerializeBooleanEntryTo

        private static <V> void maybeSerializeBooleanEntryTo​(CodedOutputStream out,
                                                             java.util.Map<java.lang.Boolean,​V> m,
                                                             MapEntry<java.lang.Boolean,​V> defaultEntry,
                                                             int fieldNumber,
                                                             boolean key)
                                                      throws java.io.IOException
        Throws:
        java.io.IOException
      • serializeMapTo

        private static <K,​V> void serializeMapTo​(CodedOutputStream out,
                                                       java.util.Map<K,​V> m,
                                                       MapEntry<K,​V> defaultEntry,
                                                       int fieldNumber)
                                                throws java.io.IOException
        Serialize the map using the iteration order.
        Throws:
        java.io.IOException