public class ReadOnlyBuilder extends java.lang.Object implements NodeBuilder
UnsupportedOperationException on
all attempts to modify the given base state.| Constructor and Description |
|---|
ReadOnlyBuilder(@NotNull NodeState state) |
| Modifier and Type | Method and Description |
|---|---|
@NotNull ReadOnlyBuilder |
child(@NotNull java.lang.String name)
Returns a builder for constructing changes to the named child node.
|
Blob |
createBlob(java.io.InputStream stream) |
boolean |
exists()
Checks whether this builder represents a node that exists.
|
@NotNull NodeState |
getBaseState()
Returns the original base state that this builder is modifying.
|
boolean |
getBoolean(@NotNull java.lang.String name)
Returns the boolean value of the named property.
|
@NotNull NodeBuilder |
getChildNode(@NotNull java.lang.String name)
Returns a builder for constructing changes to the named child node.
|
long |
getChildNodeCount(long max)
Returns the current number of child nodes.
|
@NotNull java.lang.Iterable<java.lang.String> |
getChildNodeNames()
Returns the names of current child nodes.
|
@Nullable java.lang.String |
getName(@NotNull java.lang.String name)
Returns the name value of the named property.
|
@NotNull java.lang.Iterable<java.lang.String> |
getNames(@NotNull java.lang.String name)
Returns the name values of the named property.
|
@NotNull NodeState |
getNodeState()
Returns an immutable node state that matches the current state of
the builder.
|
@NotNull java.lang.Iterable<? extends PropertyState> |
getProperties()
Returns the current properties.
|
PropertyState |
getProperty(java.lang.String name)
Returns the current state of the named property, or
null
if the property is not set. |
long |
getPropertyCount()
Returns the current number of properties.
|
@Nullable java.lang.String |
getString(@NotNull java.lang.String name)
Returns the name value of the named property.
|
boolean |
hasChildNode(@NotNull java.lang.String name)
Checks whether the named child node currently exists.
|
boolean |
hasProperty(java.lang.String name)
Checks whether the named property exists.
|
boolean |
isModified()
Check whether this builder represents a modified node, which has either modified properties
or removed or added child nodes.
|
boolean |
isNew()
Check whether this builder represents a new node, which is not present in the base state.
|
boolean |
isNew(java.lang.String name)
Check whether the named property is new, i.e.
|
boolean |
isReplaced()
Check whether this builder represents a node that used to exist but
was then replaced with other content, for example as a result of
a
NodeBuilder.setChildNode(String) call. |
boolean |
isReplaced(java.lang.String name)
Check whether the named property exists in the base state but is
replaced with other content, for example as a result of
a
NodeBuilder.setProperty(PropertyState) call. |
boolean |
moveTo(@NotNull NodeBuilder newParent,
@NotNull java.lang.String newName)
Move this child to a new parent with a new name.
|
boolean |
remove()
Remove this child node from its parent.
|
@NotNull NodeBuilder |
removeProperty(java.lang.String name)
Remove the named property.
|
@NotNull NodeBuilder |
setChildNode(@NotNull java.lang.String name)
Adds the named child node and returns a builder for modifying it.
|
@NotNull NodeBuilder |
setChildNode(@NotNull java.lang.String name,
@NotNull NodeState nodeState)
Adds or replaces a subtree.
|
@NotNull NodeBuilder |
setProperty(@NotNull PropertyState property)
Set a property state
|
<T> @NotNull NodeBuilder |
setProperty(java.lang.String name,
T value)
Set a property state
|
<T> @NotNull NodeBuilder |
setProperty(java.lang.String name,
T value,
Type<T> type)
Set a property state
|
public ReadOnlyBuilder(@NotNull
@NotNull NodeState state)
public boolean exists()
NodeBuilderexists in interface NodeBuildertrue if the node exists, false otherwisepublic boolean isNew()
NodeBuilderisNew in interface NodeBuildertrue for a new nodepublic boolean isNew(java.lang.String name)
NodeBuilderisNew in interface NodeBuildername - property nametrue for a new propertypublic boolean isModified()
NodeBuilderisModified in interface NodeBuildertrue for a modified nodepublic boolean isReplaced()
NodeBuilderNodeBuilder.setChildNode(String) call.isReplaced in interface NodeBuildertrue for a replaced nodepublic boolean isReplaced(java.lang.String name)
NodeBuilderNodeBuilder.setProperty(PropertyState) call.isReplaced in interface NodeBuildername - property nametrue for a replaced property@NotNull public @NotNull NodeState getNodeState()
NodeBuildergetNodeState in interface NodeBuilder@NotNull public @NotNull NodeState getBaseState()
NodeBuilderexists method
returns false) if this builder represents a new node that
didn't exist in the base content tree.getBaseState in interface NodeBuilderpublic long getChildNodeCount(long max)
NodeBuilderIf an implementation does know the exact value, it returns it (even if the value is higher than max). If the implementation does not know the exact value, and the child node count is higher than max, it may return Long.MAX_VALUE. The cost of the operation is at most O(max).
getChildNodeCount in interface NodeBuildermax - the maximum valuepublic boolean hasChildNode(@NotNull
@NotNull java.lang.String name)
NodeBuilderhasChildNode in interface NodeBuildername - child node nametrue if the named child node exists,
false otherwise@NotNull public @NotNull java.lang.Iterable<java.lang.String> getChildNodeNames()
NodeBuildergetChildNodeNames in interface NodeBuilder@NotNull public @NotNull NodeBuilder setChildNode(@NotNull @NotNull java.lang.String name, @NotNull @NotNull NodeState nodeState)
NodeBuildersetChildNode in interface NodeBuildername - name of the child node containing the new subtreenodeState - subtreepublic boolean remove()
NodeBuilderremove in interface NodeBuildertrue for existing nodes, false otherwisepublic boolean moveTo(@NotNull
@NotNull NodeBuilder newParent,
@NotNull
@NotNull java.lang.String newName)
NodeBuildernewParent as child newName. Otherwise neither
this builder nor newParent are modified.
The move succeeds if both, this builder and newParent exist, there is no child with
newName at newParent and newParent is not in the subtree of this
builder.
The move fails if the this builder or newParent does not exist or if there is
already a child newName at newParent.
For all remaining cases (e.g. moving a builder into its own subtree) it is left to the implementation whether the move succeeds or fails as long as the state of the involved builder stays consistent.
moveTo in interface NodeBuildernewParent - builder for the new parent.newName - name of this child at the new parenttrue on success, false otherwisepublic long getPropertyCount()
NodeBuildergetPropertyCount in interface NodeBuilder@NotNull public @NotNull java.lang.Iterable<? extends PropertyState> getProperties()
NodeBuildergetProperties in interface NodeBuilderpublic boolean hasProperty(java.lang.String name)
NodeBuildergetProperty(name) != null, but may be optimized
to avoid having to load the property value.hasProperty in interface NodeBuildername - property nametrue if the named property exists,
false otherwisepublic PropertyState getProperty(java.lang.String name)
NodeBuildernull
if the property is not set.getProperty in interface NodeBuildername - property namepublic boolean getBoolean(@NotNull
@NotNull java.lang.String name)
NodeBuilder
PropertyState property = builder.getProperty(name);
return property != null
&& property.getType() == Type.BOOLEAN
&& property.getValue(Type.BOOLEAN);
getBoolean in interface NodeBuildername - property namefalse@Nullable
public @Nullable java.lang.String getString(@NotNull
@NotNull java.lang.String name)
NodeBuilder
PropertyState property = builder.getProperty(name);
if (property != null && property.getType() == Type.STRING) {
return property.getValue(Type.STRING);
} else {
return null;
}
getString in interface NodeBuildername - property namenull@Nullable
public @Nullable java.lang.String getName(@NotNull
@NotNull java.lang.String name)
NodeBuilder
PropertyState property = builder.getProperty(name);
if (property != null && property.getType() == Type.NAME) {
return property.getValue(Type.NAME);
} else {
return null;
}
getName in interface NodeBuildername - property namenull@NotNull
public @NotNull java.lang.Iterable<java.lang.String> getNames(@NotNull
@NotNull java.lang.String name)
NodeBuilder
PropertyState property = builder.getProperty(name);
if (property != null && property.getType() == Type.NAMES) {
return property.getValue(Type.NAMES);
} else {
return Collections.emptyList();
}
getNames in interface NodeBuildername - property name@NotNull public @NotNull NodeBuilder removeProperty(java.lang.String name)
NodeBuildername does not exist.removeProperty in interface NodeBuildername - name of the property@NotNull public @NotNull NodeBuilder setProperty(@NotNull @NotNull PropertyState property)
NodeBuildersetProperty in interface NodeBuilderproperty - The property state to set@NotNull public <T> @NotNull NodeBuilder setProperty(java.lang.String name, @NotNull T value)
NodeBuildersetProperty in interface NodeBuilderT - The type of this property. Must be one of String, Blob, byte[], Long, Integer, Double, Boolean, BigDecimalname - The name of this propertyvalue - The value of this property@NotNull public <T> @NotNull NodeBuilder setProperty(java.lang.String name, @NotNull T value, Type<T> type)
NodeBuildersetProperty in interface NodeBuilderT - The type of this property.name - The name of this propertyvalue - The value of this property@NotNull public @NotNull ReadOnlyBuilder child(@NotNull @NotNull java.lang.String name)
NodeBuilder
All updates to the returned child builder will implicitly affect
also this builder, as if a
setNode(name, childBuilder.getNodeState()) method call
had been made after each update. Repeated calls to this method with
the same name will return the same child builder instance until an
explicit NodeBuilder.setChildNode(String, NodeState) or
NodeBuilder.remove() call is made, at which point the link
between this builder and a previously returned child builder for
that child node name will get broken.
child in interface NodeBuildername - name of the child node@NotNull public @NotNull NodeBuilder getChildNode(@NotNull @NotNull java.lang.String name)
NodeBuilderIllegalStateExceptions to be thrown.getChildNode in interface NodeBuildername - name of the child node@NotNull public @NotNull NodeBuilder setChildNode(@NotNull @NotNull java.lang.String name)
NodeBuildersetChildNode in interface NodeBuildername - name of the child nodepublic Blob createBlob(java.io.InputStream stream) throws java.io.IOException
createBlob in interface NodeBuilderjava.io.IOExceptionCopyright © 2010 - 2023 Adobe. All Rights Reserved