Interface Batch

  • All Known Subinterfaces:
    ChangeLog
    All Known Implementing Classes:
    AbstractChangeLog, BatchLogger, ChangeLogImpl, ConsolidatingChangeLog, SerializableBatch

    public interface Batch
    The 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:

    • addNode,
    • addProperty,
    • setValue,
    • remove,
    • reorderNodes,
    • setMixins,
    • move
    The operations collected in a Batch are persisted upon a successful call to 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:

    • The set can only be validated and put into effect as a single logical unit.
      For example, adding mutually referring reference properties.
    • The set contains operations that can only be validated on the persistent layer.
      For example, operations that require a referential integrity check.
    In addition the 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.

    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      void addNode​(NodeId parentId, Name nodeName, Name nodetypeName, java.lang.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 NodeIds.
      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.