com.google.protobuf
Interface Message

All Known Implementing Classes:
AbstractMessage, DescriptorProtos.DescriptorProto, DescriptorProtos.DescriptorProto.ExtensionRange, DescriptorProtos.EnumDescriptorProto, DescriptorProtos.EnumOptions, DescriptorProtos.EnumValueDescriptorProto, DescriptorProtos.EnumValueOptions, DescriptorProtos.FieldDescriptorProto, DescriptorProtos.FieldOptions, DescriptorProtos.FileDescriptorProto, DescriptorProtos.FileDescriptorSet, DescriptorProtos.FileOptions, DescriptorProtos.MessageOptions, DescriptorProtos.MethodDescriptorProto, DescriptorProtos.MethodOptions, DescriptorProtos.ServiceDescriptorProto, DescriptorProtos.ServiceOptions, DescriptorProtos.UninterpretedOption, DescriptorProtos.UninterpretedOption.NamePart, DynamicMessage, GeneratedMessage, GeneratedMessage.ExtendableMessage

public interface Message

Abstract interface implemented by Protocol Message objects.

Author:
[email protected] Kenton Varda

Nested Class Summary
static interface Message.Builder
          Abstract interface implemented by Protocol Message builders.
 
Method Summary
 boolean equals(java.lang.Object other)
          Compares the specified object with this message for equality.
 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.
 Message getDefaultInstanceForType()
          Get an instance of the type with all fields set to their default values.
 Descriptors.Descriptor getDescriptorForType()
          Get the message's type's descriptor.
 java.lang.Object getField(Descriptors.FieldDescriptor field)
          Obtains the value of the given field, or the default value if it is not set.
 java.lang.Object getRepeatedField(Descriptors.FieldDescriptor field, int index)
          Gets an element of a repeated field.
 int getRepeatedFieldCount(Descriptors.FieldDescriptor field)
          Gets the number of elements of a repeated field.
 int getSerializedSize()
          Get the number of bytes required to encode this message.
 UnknownFieldSet getUnknownFields()
          Get the UnknownFieldSet for this message.
 boolean hasField(Descriptors.FieldDescriptor field)
          Returns true if the given field is set.
 int hashCode()
          Returns the hash code value for this message.
 boolean isInitialized()
          Returns true if all required fields in the message and all embedded messages are set, false otherwise.
 Message.Builder newBuilderForType()
          Constructs a new builder for a message of the same type as this message.
 Message.Builder toBuilder()
          Constructs a builder initialized with the current message.
 byte[] toByteArray()
          Serializes the message to a byte array and returns it.
 ByteString toByteString()
          Serializes the message to a ByteString and returns it.
 java.lang.String toString()
          Converts the message to a string in protocol buffer text format.
 void writeDelimitedTo(java.io.OutputStream output)
          Like writeTo(OutputStream), but writes the size of the message as a varint before writing the data.
 void writeTo(CodedOutputStream output)
          Serializes the message and writes it to output.
 void writeTo(java.io.OutputStream output)
          Serializes the message and writes it to output.
 

Method Detail

getDescriptorForType

Descriptors.Descriptor getDescriptorForType()
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.


getDefaultInstanceForType

Message getDefaultInstanceForType()
Get an instance of the type with all fields set to their default values. This may or may not be a singleton. This differs from the getDefaultInstance() method of generated message classes in that this method is an abstract method of the Message interface whereas getDefaultInstance() is a static method of a specific class. They return the same thing.


getAllFields

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. A singular ("required" or "optional") field is set iff hasField() returns true for that field. A "repeated" field is set iff getRepeatedFieldSize() is greater than zero. The values are exactly what would be returned by calling 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.


hasField

boolean hasField(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.

Throws:
java.lang.IllegalArgumentException - The field is a repeated field, or field.getContainingType() != getDescriptorForType().

getField

java.lang.Object getField(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 returend. For embedded message fields, the sub-message is returned. For repeated fields, a java.util.List is returned.


getRepeatedFieldCount

int getRepeatedFieldCount(Descriptors.FieldDescriptor field)
Gets the number of elements of a repeated field. This is exactly equivalent to calling the generated "Count" accessor method corresponding to the field.

Throws:
java.lang.IllegalArgumentException - The field is not a repeated field, or field.getContainingType() != getDescriptorForType().

getRepeatedField

java.lang.Object getRepeatedField(Descriptors.FieldDescriptor field,
                                  int index)
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 returend. For embedded message fields, the sub-message is returned.

Throws:
java.lang.IllegalArgumentException - The field is not a repeated field, or field.getContainingType() != getDescriptorForType().

getUnknownFields

UnknownFieldSet getUnknownFields()
Get the UnknownFieldSet for this message.


isInitialized

boolean isInitialized()
Returns true if all required fields in the message and all embedded messages are set, false otherwise.


writeTo

void writeTo(CodedOutputStream output)
             throws java.io.IOException
Serializes the message and writes it to output. This does not flush or close the stream.

Throws:
java.io.IOException

getSerializedSize

int getSerializedSize()
Get the number of bytes required to encode this message. The result is only computed on the first call and memoized after that.


equals

boolean equals(java.lang.Object other)
Compares the specified object with this message for equality. Returns true if the given object is a message of the same type (as defined by getDescriptorForType()) and has identical values for all of its fields.

Overrides:
equals in class java.lang.Object
Parameters:
other - object to be compared for equality with this message
Returns:
true if the specified object is equal to this message

hashCode

int hashCode()
Returns the hash code value for this message. The hash code of a message is defined to be getDescriptor().hashCode() ^ map.hashCode(), where map is a map of field numbers to field values.

Overrides:
hashCode in class java.lang.Object
Returns:
the hash code value for this message
See Also:
Map.hashCode()

toString

java.lang.String toString()
Converts the message to a string in protocol buffer text format. This is just a trivial wrapper around TextFormat.printToString(Message).

Overrides:
toString in class java.lang.Object

toByteString

ByteString toByteString()
Serializes the message to a ByteString and returns it. This is just a trivial wrapper around writeTo(CodedOutputStream).


toByteArray

byte[] toByteArray()
Serializes the message to a byte array and returns it. This is just a trivial wrapper around writeTo(CodedOutputStream).


writeTo

void writeTo(java.io.OutputStream output)
             throws java.io.IOException
Serializes the message and writes it to output. This is just a trivial wrapper around writeTo(CodedOutputStream). This does not flush or close the stream.

NOTE: Protocol Buffers are not self-delimiting. Therefore, if you write any more data to the stream after the message, you must somehow ensure that the parser on the receiving end does not interpret this as being part of the protocol message. This can be done e.g. by writing the size of the message before the data, then making sure to limit the input to that size on the receiving end (e.g. by wrapping the InputStream in one which limits the input). Alternatively, just use writeDelimitedTo(OutputStream).

Throws:
java.io.IOException

writeDelimitedTo

void writeDelimitedTo(java.io.OutputStream output)
                      throws java.io.IOException
Like writeTo(OutputStream), but writes the size of the message as a varint before writing the data. This allows more data to be written to the stream after the message without the need to delimit the message data yourself. Use Message.Builder.mergeDelimitedFrom(InputStream) (or the static method YourMessageType.parseDelimitedFrom(InputStream)) to parse messages written by this method.

Throws:
java.io.IOException

newBuilderForType

Message.Builder newBuilderForType()
Constructs a new builder for a message of the same type as this message.


toBuilder

Message.Builder toBuilder()
Constructs a builder initialized with the current message. Use this to derive a new message from the current one.



Copyright © 2008-2009. All Rights Reserved.