public interface Batch
Batch
defines an ordered list of of operations that must be
executed at once on the persistent layer. If any of the modifications added
to the batch fails, none of the other changes must be persisted, thus leaving
the persistent layer unaffected.
The Batch
object is obtained by calling
RepositoryService.createBatch(SessionInfo,ItemId)
. The following
methods can then be called on the returned Batch
object to queue
the corresponding operations:
RepositoryService.submit(Batch)
. The operations queued in the batch
must be validated as a single unit and (if validation succeeds) applied to
the persistent layer. If validation fails submitting the Batch
is aborted and an exception is thrown.
The Batch mechanism is required because there are sets of operations for which the following are both true:
Batch
mechanism is desirable in order to
minimize calls to the persistent layer, which enables client-server
implementations to reduce the number of network roundtrips.
Since the batch records the delta of pending changes within the scope of
an Item.save()
(or a Session.save()
it is
intended to be constructed upon save (not before) and then submitted to the
persistent layer as a single logical operation (see above).
Note however, that methods of the JCR API that have immediate effect on the
persistent storage have to call that storage, validate and return. The batch
does not play a role in these operations, instead they are covered by the
RepositoryService
.
Modifier and Type | Method and Description |
---|---|
void |
addNode(NodeId parentId,
Name nodeName,
Name nodetypeName,
String uuid)
Add a new node to the persistent layer.
|
void |
addProperty(NodeId parentId,
Name propertyName,
QValue value)
Add a new property to the persistent layer.
|
void |
addProperty(NodeId parentId,
Name propertyName,
QValue[] values)
Add a new multi-valued property to the persistent layer.
|
void |
move(NodeId srcNodeId,
NodeId destParentNodeId,
Name destName)
Move the node identified by the given
srcNodeId to the
new parent identified by destParentNodeId and change its
name to destName . |
void |
remove(ItemId itemId)
Remove an existing item.
|
void |
reorderNodes(NodeId parentId,
NodeId srcNodeId,
NodeId beforeNodeId)
Modify the order of the child nodes identified by the given
NodeId s. |
void |
setMixins(NodeId nodeId,
Name[] mixinNodeTypeNames)
Modify the set of mixin node types present on the node identified by the
given id.
|
void |
setPrimaryType(NodeId nodeId,
Name primaryNodeTypeName)
Change the primary type of the node identified by the given
nodeId . |
void |
setTree(NodeId parentId,
Tree contentTree)
Add a new content tree to the persistent layer.
|
void |
setValue(PropertyId propertyId,
QValue value)
Modify the value of an existing property.
|
void |
setValue(PropertyId propertyId,
QValue[] values)
Modify the value of an existing, multi-valued property.
|
void addNode(NodeId parentId, Name nodeName, Name nodetypeName, String uuid) throws RepositoryException
parentId
- NodeId identifying the parent node.nodeName
- Name of the node to be created.nodetypeName
- Primary node type name of the node to be created.uuid
- Value for the jcr:uuid property of the node to be created or
null
. If due to an import the uuid of the resulting node is
already defined, it must be passed as separate uuid parameter, indicating
a binding value for the server. Otherwise the uuid must be null
.ItemExistsException
PathNotFoundException
VersionException
ConstraintViolationException
NoSuchNodeTypeException
LockException
AccessDeniedException
UnsupportedRepositoryOperationException
RepositoryException
Node.addNode(String)
,
Node.addNode(String, String)
,
Session.importXML(String, java.io.InputStream, int)
,
Query.storeAsNode(String)
void addProperty(NodeId parentId, Name propertyName, QValue value) throws ValueFormatException, VersionException, LockException, ConstraintViolationException, PathNotFoundException, ItemExistsException, AccessDeniedException, UnsupportedRepositoryOperationException, RepositoryException
Note: this call should succeed in case the property already exists.
parentId
- NodeId identifying the parent node.propertyName
- Name of the property to be created.value
- The value of the property to be created.ValueFormatException
VersionException
LockException
ConstraintViolationException
PathNotFoundException
ItemExistsException
AccessDeniedException
UnsupportedRepositoryOperationException
RepositoryException
Node.setProperty(String, javax.jcr.Value)
,
Node.setProperty(String, javax.jcr.Value, int)
,
Node.setProperty(String, String)
,
Node.setProperty(String, String, int)
,
Node.setProperty(String, java.util.Calendar)
,
Node.setProperty(String, boolean)
,
Node.setProperty(String, double)
,
Node.setProperty(String, long)
,
Node.setProperty(String, javax.jcr.Node)
,
Session.importXML(String, java.io.InputStream, int)
,
Query.storeAsNode(String)
void addProperty(NodeId parentId, Name propertyName, QValue[] values) throws ValueFormatException, VersionException, LockException, ConstraintViolationException, PathNotFoundException, ItemExistsException, AccessDeniedException, UnsupportedRepositoryOperationException, RepositoryException
Note: this call should succeed in case the property already exists.
parentId
- NodeId identifying the parent node.propertyName
- Name of the property to be created.values
- The values of the property to be created.ValueFormatException
VersionException
LockException
ConstraintViolationException
PathNotFoundException
ItemExistsException
AccessDeniedException
UnsupportedRepositoryOperationException
RepositoryException
Node.setProperty(String, javax.jcr.Value[])
,
Node.setProperty(String, javax.jcr.Value[], int)
,
Node.setProperty(String, String[])
,
Node.setProperty(String, String[], int)
,
Session.importXML(String, java.io.InputStream, int)
void setValue(PropertyId propertyId, QValue value) throws RepositoryException
null
value.
Removing a property is achieved by calling remove(ItemId)
.propertyId
- PropertyId identifying the property to be modified.value
- The new value.ValueFormatException
VersionException
LockException
ConstraintViolationException
AccessDeniedException
UnsupportedRepositoryOperationException
RepositoryException
Property.setValue(javax.jcr.Value)
,
Property.setValue(String)
,
Property.setValue(long)
,
Property.setValue(double)
,
Property.setValue(java.util.Calendar)
,
Property.setValue(boolean)
,
Property.setValue(javax.jcr.Node)
void setValue(PropertyId propertyId, QValue[] values) throws RepositoryException
null
value. Removing a property is achieved by calling remove(ItemId)
.propertyId
- PropertyId identifying the property to be modified.values
- The new values.ValueFormatException
VersionException
LockException
ConstraintViolationException
AccessDeniedException
UnsupportedRepositoryOperationException
RepositoryException
Property.setValue(javax.jcr.Value[])
,
Property.setValue(String[])
void remove(ItemId itemId) throws RepositoryException
itemId
- ItemId identifying the item to be removed.VersionException
LockException
ConstraintViolationException
AccessDeniedException
UnsupportedRepositoryOperationException
RepositoryException
Item.remove()
void reorderNodes(NodeId parentId, NodeId srcNodeId, NodeId beforeNodeId) throws RepositoryException
NodeId
s.parentId
- NodeId identifying the parent node.srcNodeId
- NodeId identifying the node to be reordered.beforeNodeId
- NodeId identifying the child node, before which the
source node must be placed.UnsupportedRepositoryOperationException
VersionException
ConstraintViolationException
ItemNotFoundException
LockException
AccessDeniedException
RepositoryException
Node.orderBefore(String, String)
void setMixins(NodeId nodeId, Name[] mixinNodeTypeNames) throws RepositoryException
nodeId
- NodeId identifying the node to be modified.mixinNodeTypeNames
- The new set of mixin types. Compared to the
previous values this may result in both adding and/or removing mixin types.NoSuchNodeTypeException
VersionException
ConstraintViolationException
LockException
AccessDeniedException
UnsupportedRepositoryOperationException
RepositoryException
Node.addMixin(String)
,
Node.removeMixin(String)
void setPrimaryType(NodeId nodeId, Name primaryNodeTypeName) throws RepositoryException
nodeId
.nodeId
- NodeId identifying the node to be modified.primaryNodeTypeName
- RepositoryException
Node.setPrimaryType(String)
void move(NodeId srcNodeId, NodeId destParentNodeId, Name destName) throws RepositoryException
srcNodeId
to the
new parent identified by destParentNodeId
and change its
name to destName
.srcNodeId
- NodeId identifying the node to be moved.destParentNodeId
- NodeId identifying the new parent.destName
- The new name of the moved node.ItemExistsException
PathNotFoundException
VersionException
ConstraintViolationException
LockException
AccessDeniedException
UnsupportedRepositoryOperationException
RepositoryException
Session.move(String, String)
void setTree(NodeId parentId, Tree contentTree) throws RepositoryException
parentId
- contentTree
- RepositoryException
Copyright © 2004–2021 The Apache Software Foundation. All rights reserved.