Public Member Functions | |
MType | build () |
SingleFieldBuilderV3< MType, BType, IType > | clear () |
void | dispose () |
BType | getBuilder () |
MType | getMessage () |
IType | getMessageOrBuilder () |
void | markDirty () |
SingleFieldBuilderV3< MType, BType, IType > | mergeFrom (MType value) |
SingleFieldBuilderV3< MType, BType, IType > | setMessage (MType message) |
SingleFieldBuilderV3 (MType message, AbstractMessage.BuilderParent parent, boolean isClean) | |
Private Member Functions | |
void | onChanged () |
Private Attributes | |
BType | builder |
boolean | isClean |
MType | message |
AbstractMessage.BuilderParent | parent |
implements a structure that a protocol message uses to hold a single field of another protocol message. It supports the classical use case of setting an immutable Message as the value of the field and is highly optimized around this.
It also supports the additional use case of setting a Message.Builder as the field and deferring conversion of that
to an immutable
. In this way, it's possible to maintain a tree of
's that acts as a fully read/write data structure.
Logically, one can think of a tree of builders as converting the entire tree to messages when build is called on the root or when any method is called that desires a Message instead of a Builder. In terms of the implementation, the
and
classes cache messages that were created so that messages only need to be created when some change occurred in its builder or a builder for one of its descendants.
<MType> | the type of message for the field |
<BType> | the type of builder for the field |
<IType> | the common interface for the message and the builder |
Definition at line 55 of file SingleFieldBuilderV3.java.
|
inline |
Definition at line 79 of file SingleFieldBuilderV3.java.
|
inline |
Builds the message and returns it.
Definition at line 111 of file SingleFieldBuilderV3.java.
|
inline |
Clears the value of the field.
Definition at line 191 of file SingleFieldBuilderV3.java.
|
inline |
Definition at line 85 of file SingleFieldBuilderV3.java.
|
inline |
Gets a builder for the field. If no builder has been created yet, a builder is created on demand by calling Message#toBuilder.
Definition at line 125 of file SingleFieldBuilderV3.java.
|
inline |
Get the message for the field. If the message is currently stored as a
, it is converted to a
by calling Message.Builder#buildPartial on it. If no message has been set, returns the default instance of the message.
Definition at line 98 of file SingleFieldBuilderV3.java.
|
inline |
Gets the base class interface for the field. This may either be a builder or a message. It will return whatever is more efficient.
Definition at line 145 of file SingleFieldBuilderV3.java.
|
inline |
A builder becomes dirty whenever a field is modified – including fields in nested builders – and becomes clean when build() is called. Thus, when a builder becomes dirty, all its parents become dirty as well, and when it becomes clean, all its children become clean. The dirtiness state is used to invalidate certain cached values.
To this end, a builder calls markDirty() on its parent whenever it transitions from clean to dirty. The parent must propagate this call to its own parent, unless it was already dirty, in which case the grandparent must necessarily already be dirty as well. The parent can only transition back to "clean" after calling build() on all children.
Implements com.google.protobuf.AbstractMessage.BuilderParent.
Definition at line 224 of file SingleFieldBuilderV3.java.
|
inline |
Merges the field from another field.
value | the value to merge from |
Definition at line 175 of file SingleFieldBuilderV3.java.
|
inlineprivate |
Called when a the builder or one of its nested children has changed and any parent should be notified of its invalidation.
Definition at line 209 of file SingleFieldBuilderV3.java.
|
inline |
Sets a message for the field replacing any existing value.
message | the message to set |
Definition at line 159 of file SingleFieldBuilderV3.java.
|
private |
Definition at line 69 of file SingleFieldBuilderV3.java.
|
private |
Definition at line 77 of file SingleFieldBuilderV3.java.
|
private |
Definition at line 73 of file SingleFieldBuilderV3.java.
|
private |
Definition at line 62 of file SingleFieldBuilderV3.java.