SingleFieldBuilder 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. as the field and
deferring conversion of that Builder to an immutable Message. In this way, it's
possible to maintain a tree of Builder'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 SingleFieldBuilder and RepeatedFieldBuilder 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.
| Modifier and Type | Field and Description |
|---|---|
| private BType | |
| private boolean | |
| private MType | |
| private GeneratedMessage. |
| Access | Constructor and Description |
|---|---|
| public |
| Modifier and Type | Method and Description |
|---|---|
| public MType | |
| public SingleFieldBuilder | |
| public void | |
| public BType | |
| public MType | |
| public IType | Returns: the message or builder for the field as the base class interfaceGets the base class interface for the field. |
| public void | markDirty()
Implements com. |
| public SingleFieldBuilder | Returns: the builderthe value to merge from value)Merges the field from another field. |
| private void | onChanged()
Called when a the builder or one of its nested children has changed and any parent should be notified of its invalidation. |
| public SingleFieldBuilder | Returns: the builderthe message to set message)Sets a message for the field replacing any existing value. |
| builder | back to summary |
|---|---|
| private BType builder | |
| isClean | back to summary |
|---|---|
| private boolean isClean | |
| message | back to summary |
|---|---|
| private MType message | |
| parent | back to summary |
|---|---|
| private GeneratedMessage. | |
| SingleFieldBuilder | back to summary |
|---|---|
| public SingleFieldBuilder(MType message, GeneratedMessage. | |
| build | back to summary |
|---|---|
| public MType build() Builds the message and returns it.
| |
| clear | back to summary |
|---|---|
| public SingleFieldBuilder Clears the value of the field.
| |
| dispose | back to summary |
|---|---|
| public void dispose() | |
| getBuilder | back to summary |
|---|---|
| public BType getBuilder() Gets a builder for the field. If no builder has been created yet, a builder is created on
demand by calling
| |
| getMessage | back to summary |
|---|---|
| public MType getMessage() Get the message for the field. If the message is currently stored as a
| |
| getMessageOrBuilder | back to summary |
|---|---|
| public IType getMessageOrBuilder() Gets the base class interface for the field. This may either be a builder or a message. It will return whatever is more efficient.
| |
| markDirty | back to summary |
|---|---|
| public void markDirty() Implements com. Doc from com. 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.
| |
| mergeFrom | back to summary |
|---|---|
| public SingleFieldBuilder Merges the field from another field.
| |
| onChanged | back to summary |
|---|---|
| private void onChanged() Called when a the builder or one of its nested children has changed and any parent should be notified of its invalidation. | |
| setMessage | back to summary |
|---|---|
| public SingleFieldBuilder Sets a message for the field replacing any existing value.
| |