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, setUnknownFieldsfindInitializationErrors, getInitializationErrorString, mergeDelimitedFrom, mergeDelimitedFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, newUninitializedMessageException, toStringaddAll, newUninitializedMessageExceptionequals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetDefaultInstanceForTypefindInitializationErrors, getDescriptorForType, getInitializationErrorString, getOneofFieldDescriptor, getUnknownFields, hasOneofbuild, buildPartialprotected GeneratedMessage.ExtendableBuilder()
protected GeneratedMessage.ExtendableBuilder(GeneratedMessage.BuilderParent parent)
public BuilderType clear()
GeneratedMessage.Builderclear in interface Message.Builderclear in interface MessageLite.Builderclear in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>public BuilderType clone()
MessageLite.Builderclone in interface Message.Builderclone in interface MessageLite.Builderclone 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()
MessageLiteOrBuilderisInitialized in interface MessageLiteOrBuilderisInitialized 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.IOExceptionpublic java.util.Map<Descriptors.FieldDescriptor,java.lang.Object> getAllFields()
MessageOrBuilderMessageOrBuilder.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 MessageOrBuildergetAllFields in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>public java.lang.Object getField(Descriptors.FieldDescriptor field)
MessageOrBuildergetField in interface MessageOrBuildergetField in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>public int getRepeatedFieldCount(Descriptors.FieldDescriptor field)
MessageOrBuildergetRepeatedFieldCount in interface MessageOrBuildergetRepeatedFieldCount in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>public java.lang.Object getRepeatedField(Descriptors.FieldDescriptor field, int index)
MessageOrBuildergetRepeatedField in interface MessageOrBuildergetRepeatedField in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>public boolean hasField(Descriptors.FieldDescriptor field)
MessageOrBuilderhasField in interface MessageOrBuilderhasField in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>public BuilderType setField(Descriptors.FieldDescriptor field, java.lang.Object value)
Message.BuilderMessageOrBuilder.getField(Descriptors.FieldDescriptor) would return.setField in interface Message.BuildersetField in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>public BuilderType clearField(Descriptors.FieldDescriptor field)
Message.BuilderclearField in interface Message.BuilderclearField in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>public BuilderType setRepeatedField(Descriptors.FieldDescriptor field, int index, java.lang.Object value)
Message.BuilderMessageOrBuilder.getRepeatedField(Descriptors.FieldDescriptor,int) would
return.setRepeatedField in interface Message.BuildersetRepeatedField in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>public BuilderType addRepeatedField(Descriptors.FieldDescriptor field, java.lang.Object value)
Message.BuildersetRepeatedField, but appends the value as a new element.addRepeatedField in interface Message.BuilderaddRepeatedField in class GeneratedMessage.Builder<BuilderType extends GeneratedMessage.ExtendableBuilder>protected final void mergeExtensionFields(GeneratedMessage.ExtendableMessage other)