public abstract static class GeneratedMessage.ExtendableBuilder<MessageType extends GeneratedMessage.ExtendableMessage,BuilderType extends GeneratedMessage.ExtendableBuilder> extends GeneratedMessage.Builder<BuilderType> implements GeneratedMessage.ExtendableMessageOrBuilder<MessageType>
This class implements type-safe accessors for extensions. They
implement all the same operations that you can do with normal fields --
e.g. "get", "set", and "add" -- but for extensions. The extensions are
identified using instances of the class GeneratedMessage.GeneratedExtension
; the
protocol compiler generates a static instance of this class for every
extension in its input. Through the magic of generics, all is made
type-safe.
For example, imagine you have the .proto
file:
option java_class = "MyProto"; message Foo { extensions 1000 to max; } extend Foo { optional int32 bar; }
Then you might write code like:
MyProto.Foo foo = MyProto.Foo.newBuilder() .setExtension(MyProto.bar, 123) .build();
See also GeneratedMessage.ExtendableMessage
.
Modifier | Constructor and Description |
---|---|
protected |
GeneratedMessage.ExtendableBuilder() |
protected |
GeneratedMessage.ExtendableBuilder(GeneratedMessage.BuilderParent parent) |
Modifier and Type | Method and Description |
---|---|
<Type> BuilderType |
addExtension(ExtensionLite<MessageType,java.util.List<Type>> extensionLite,
Type value)
Append a value to a repeated extension.
|
BuilderType |
addRepeatedField(Descriptors.FieldDescriptor field,
java.lang.Object value)
Like
setRepeatedField , but appends the value as a new element. |
BuilderType |
clear()
Called by the initialization and clear code paths to allow subclasses to
reset any of their builtin fields back to the initial values.
|
<Type> BuilderType |
clearExtension(ExtensionLite<MessageType,?> extensionLite)
Clear an extension.
|
BuilderType |
clearField(Descriptors.FieldDescriptor field)
Clears the field.
|
BuilderType |
clone()
Clones the Builder.
|
protected boolean |
extensionsAreInitialized()
Called by subclasses to check if all extensions are initialized.
|
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.
|
<Type> Type |
getExtension(ExtensionLite<MessageType,java.util.List<Type>> extensionLite,
int index)
Get one element of a repeated extension.
|
<Type> Type |
getExtension(ExtensionLite<MessageType,Type> extensionLite)
Get the value of an extension.
|
<Type> int |
getExtensionCount(ExtensionLite<MessageType,java.util.List<Type>> extensionLite)
Get the number of elements in a repeated extension.
|
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.
|
<Type> boolean |
hasExtension(ExtensionLite<MessageType,Type> extensionLite)
Check if a singular extension is present.
|
boolean |
hasField(Descriptors.FieldDescriptor field)
Returns true if the given field is set.
|
boolean |
isInitialized()
Returns true if all required fields in the message and all embedded
messages are set, false otherwise.
|
protected void |
mergeExtensionFields(GeneratedMessage.ExtendableMessage other) |
protected boolean |
parseUnknownField(CodedInputStream input,
UnknownFieldSet.Builder unknownFields,
ExtensionRegistryLite extensionRegistry,
int tag)
Called by subclasses to parse an unknown field or an extension.
|
<Type> BuilderType |
setExtension(ExtensionLite<MessageType,java.util.List<Type>> extensionLite,
int index,
Type value)
Set the value of one element of a repeated extension.
|
<Type> BuilderType |
setExtension(ExtensionLite<MessageType,Type> extensionLite,
Type value)
Set the value of an extension.
|
BuilderType |
setField(Descriptors.FieldDescriptor field,
java.lang.Object value)
Sets a field to the given value.
|
BuilderType |
setRepeatedField(Descriptors.FieldDescriptor field,
int index,
java.lang.Object value)
Sets an element of a repeated field to the given value.
|
clearOneof, getDescriptorForType, getFieldBuilder, getOneofFieldDescriptor, getParentForChildren, getRepeatedFieldBuilder, getUnknownFields, hasOneof, internalGetFieldAccessorTable, internalGetMapField, internalGetMutableMapField, isClean, markClean, mergeUnknownFields, newBuilderForField, onBuilt, onChanged, setUnknownFields
findInitializationErrors, getInitializationErrorString, mergeDelimitedFrom, mergeDelimitedFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, newUninitializedMessageException, toString
addAll, newUninitializedMessageException
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getDefaultInstanceForType
findInitializationErrors, getDescriptorForType, getInitializationErrorString, getOneofFieldDescriptor, getUnknownFields, hasOneof
build, buildPartial
protected GeneratedMessage.ExtendableBuilder()
protected GeneratedMessage.ExtendableBuilder(GeneratedMessage.BuilderParent parent)
public BuilderType clear()
GeneratedMessage.Builder
clear
in interface Message.Builder
clear
in interface MessageLite.Builder
clear
in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>
public BuilderType clone()
MessageLite.Builder
clone
in interface Message.Builder
clone
in interface MessageLite.Builder
clone
in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>
Object.clone()
public final <Type> boolean hasExtension(ExtensionLite<MessageType,Type> extensionLite)
hasExtension
in interface GeneratedMessage.ExtendableMessageOrBuilder<MessageType extends GeneratedMessage.ExtendableMessage>
public final <Type> int getExtensionCount(ExtensionLite<MessageType,java.util.List<Type>> extensionLite)
getExtensionCount
in interface GeneratedMessage.ExtendableMessageOrBuilder<MessageType extends GeneratedMessage.ExtendableMessage>
public final <Type> Type getExtension(ExtensionLite<MessageType,Type> extensionLite)
getExtension
in interface GeneratedMessage.ExtendableMessageOrBuilder<MessageType extends GeneratedMessage.ExtendableMessage>
public final <Type> Type getExtension(ExtensionLite<MessageType,java.util.List<Type>> extensionLite, int index)
getExtension
in interface GeneratedMessage.ExtendableMessageOrBuilder<MessageType extends GeneratedMessage.ExtendableMessage>
public final <Type> BuilderType setExtension(ExtensionLite<MessageType,Type> extensionLite, Type value)
public final <Type> BuilderType setExtension(ExtensionLite<MessageType,java.util.List<Type>> extensionLite, int index, Type value)
public final <Type> BuilderType addExtension(ExtensionLite<MessageType,java.util.List<Type>> extensionLite, Type value)
public final <Type> BuilderType clearExtension(ExtensionLite<MessageType,?> extensionLite)
protected boolean extensionsAreInitialized()
public boolean isInitialized()
MessageLiteOrBuilder
isInitialized
in interface MessageLiteOrBuilder
isInitialized
in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>
protected boolean parseUnknownField(CodedInputStream input, UnknownFieldSet.Builder unknownFields, ExtensionRegistryLite extensionRegistry, int tag) throws java.io.IOException
parseUnknownField
in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>
true
unless the tag is an end-group tag.java.io.IOException
public java.util.Map<Descriptors.FieldDescriptor,java.lang.Object> getAllFields()
MessageOrBuilder
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.
getAllFields
in interface MessageOrBuilder
getAllFields
in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>
public java.lang.Object getField(Descriptors.FieldDescriptor field)
MessageOrBuilder
getField
in interface MessageOrBuilder
getField
in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>
public int getRepeatedFieldCount(Descriptors.FieldDescriptor field)
MessageOrBuilder
getRepeatedFieldCount
in interface MessageOrBuilder
getRepeatedFieldCount
in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>
public java.lang.Object getRepeatedField(Descriptors.FieldDescriptor field, int index)
MessageOrBuilder
getRepeatedField
in interface MessageOrBuilder
getRepeatedField
in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>
public boolean hasField(Descriptors.FieldDescriptor field)
MessageOrBuilder
hasField
in interface MessageOrBuilder
hasField
in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>
public BuilderType setField(Descriptors.FieldDescriptor field, java.lang.Object value)
Message.Builder
MessageOrBuilder.getField(Descriptors.FieldDescriptor)
would return.setField
in interface Message.Builder
setField
in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>
public BuilderType clearField(Descriptors.FieldDescriptor field)
Message.Builder
clearField
in interface Message.Builder
clearField
in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>
public BuilderType setRepeatedField(Descriptors.FieldDescriptor field, int index, java.lang.Object value)
Message.Builder
MessageOrBuilder.getRepeatedField(Descriptors.FieldDescriptor,int)
would
return.setRepeatedField
in interface Message.Builder
setRepeatedField
in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>
public BuilderType addRepeatedField(Descriptors.FieldDescriptor field, java.lang.Object value)
Message.Builder
setRepeatedField
, but appends the value as a new element.addRepeatedField
in interface Message.Builder
addRepeatedField
in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>
protected final void mergeExtensionFields(GeneratedMessage.ExtendableMessage other)