Class ConsolidatingChangeLog

  • All Implemented Interfaces:
    Batch, ChangeLog

    public class ConsolidatingChangeLog
    extends AbstractChangeLog<org.apache.jackrabbit.spi.commons.batch.ConsolidatingChangeLog.CancelableOperation>
    A ChangeLog implementation which does basic consolidation on its Operations. That is, cancelling operations are removed if possible. In general this is not possible across move operations. The individual CancelableOperation implementations document their behavior concerning cancellation.
    • Constructor Summary

      Constructors 
      Constructor Description
      ConsolidatingChangeLog()
      Create a new instance of a consolidating change log.
    • Method Summary

      All Methods Instance Methods Concrete 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 addOperation​(org.apache.jackrabbit.spi.commons.batch.ConsolidatingChangeLog.CancelableOperation op)
      Determines the cancellation behavior from the list of operations and the current operation op: When the current operation is cancelled by the last operation, the list of operations is not modified. When the current operation and the last operation cancel each other, the last operation is removed from the list of operations. When the last operation is cancelled by this operation, the last operation is removed from the list of operations and determination of cancellation starts from scratch. Otherwise add the current operation to the list of operations.
      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.
      • Methods inherited from class java.lang.Object

        getClass, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • ConsolidatingChangeLog

        public ConsolidatingChangeLog()
        Create a new instance of a consolidating change log.
    • Method Detail

      • addNode

        public void addNode​(NodeId parentId,
                            Name nodeName,
                            Name nodetypeName,
                            java.lang.String uuid)
                     throws javax.jcr.RepositoryException
        Description copied from interface: Batch
        Add a new node to the persistent layer.
        Parameters:
        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.
        Throws:
        javax.jcr.ItemExistsException
        javax.jcr.PathNotFoundException
        javax.jcr.version.VersionException
        javax.jcr.nodetype.ConstraintViolationException
        javax.jcr.nodetype.NoSuchNodeTypeException
        javax.jcr.lock.LockException
        javax.jcr.AccessDeniedException
        javax.jcr.UnsupportedRepositoryOperationException
        javax.jcr.RepositoryException
        See Also:
        Node.addNode(String), Node.addNode(String, String), Session.importXML(String, java.io.InputStream, int), Query.storeAsNode(String)
      • addProperty

        public void addProperty​(NodeId parentId,
                                Name propertyName,
                                QValue value)
                         throws javax.jcr.RepositoryException
        Description copied from interface: Batch
        Add a new property to the persistent layer.

        Note: this call should succeed in case the property already exists.

        Parameters:
        parentId - NodeId identifying the parent node.
        propertyName - Name of the property to be created.
        value - The value of the property to be created.
        Throws:
        javax.jcr.ValueFormatException
        javax.jcr.version.VersionException
        javax.jcr.lock.LockException
        javax.jcr.nodetype.ConstraintViolationException
        javax.jcr.PathNotFoundException
        javax.jcr.ItemExistsException
        javax.jcr.AccessDeniedException
        javax.jcr.UnsupportedRepositoryOperationException
        javax.jcr.RepositoryException
        See Also:
        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)
      • addProperty

        public void addProperty​(NodeId parentId,
                                Name propertyName,
                                QValue[] values)
                         throws javax.jcr.RepositoryException
        Description copied from interface: Batch
        Add a new multi-valued property to the persistent layer.

        Note: this call should succeed in case the property already exists.

        Parameters:
        parentId - NodeId identifying the parent node.
        propertyName - Name of the property to be created.
        values - The values of the property to be created.
        Throws:
        javax.jcr.ValueFormatException
        javax.jcr.version.VersionException
        javax.jcr.lock.LockException
        javax.jcr.nodetype.ConstraintViolationException
        javax.jcr.PathNotFoundException
        javax.jcr.ItemExistsException
        javax.jcr.AccessDeniedException
        javax.jcr.UnsupportedRepositoryOperationException
        javax.jcr.RepositoryException
        See Also:
        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)
      • move

        public void move​(NodeId srcNodeId,
                         NodeId destParentNodeId,
                         Name destName)
                  throws javax.jcr.RepositoryException
        Description copied from interface: Batch
        Move the node identified by the given srcNodeId to the new parent identified by destParentNodeId and change its name to destName.
        Parameters:
        srcNodeId - NodeId identifying the node to be moved.
        destParentNodeId - NodeId identifying the new parent.
        destName - The new name of the moved node.
        Throws:
        javax.jcr.ItemExistsException
        javax.jcr.PathNotFoundException
        javax.jcr.version.VersionException
        javax.jcr.nodetype.ConstraintViolationException
        javax.jcr.lock.LockException
        javax.jcr.AccessDeniedException
        javax.jcr.UnsupportedRepositoryOperationException
        javax.jcr.RepositoryException
        See Also:
        Session.move(String, String)
      • remove

        public void remove​(ItemId itemId)
                    throws javax.jcr.RepositoryException
        Description copied from interface: Batch
        Remove an existing item.
        Parameters:
        itemId - ItemId identifying the item to be removed.
        Throws:
        javax.jcr.version.VersionException
        javax.jcr.lock.LockException
        javax.jcr.nodetype.ConstraintViolationException
        javax.jcr.AccessDeniedException
        javax.jcr.UnsupportedRepositoryOperationException
        javax.jcr.RepositoryException
        See Also:
        Item.remove()
      • reorderNodes

        public void reorderNodes​(NodeId parentId,
                                 NodeId srcNodeId,
                                 NodeId beforeNodeId)
                          throws javax.jcr.RepositoryException
        Description copied from interface: Batch
        Modify the order of the child nodes identified by the given NodeIds.
        Parameters:
        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.
        Throws:
        javax.jcr.UnsupportedRepositoryOperationException
        javax.jcr.version.VersionException
        javax.jcr.nodetype.ConstraintViolationException
        javax.jcr.ItemNotFoundException
        javax.jcr.lock.LockException
        javax.jcr.AccessDeniedException
        javax.jcr.RepositoryException
        See Also:
        Node.orderBefore(String, String)
      • setMixins

        public void setMixins​(NodeId nodeId,
                              Name[] mixinNodeTypeNames)
                       throws javax.jcr.RepositoryException
        Description copied from interface: Batch
        Modify the set of mixin node types present on the node identified by the given id.
        Parameters:
        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.
        Throws:
        javax.jcr.nodetype.NoSuchNodeTypeException
        javax.jcr.version.VersionException
        javax.jcr.nodetype.ConstraintViolationException
        javax.jcr.lock.LockException
        javax.jcr.AccessDeniedException
        javax.jcr.UnsupportedRepositoryOperationException
        javax.jcr.RepositoryException
        See Also:
        Node.addMixin(String), Node.removeMixin(String)
      • setPrimaryType

        public void setPrimaryType​(NodeId nodeId,
                                   Name primaryNodeTypeName)
                            throws javax.jcr.RepositoryException
        Description copied from interface: Batch
        Change the primary type of the node identified by the given nodeId.
        Parameters:
        nodeId - NodeId identifying the node to be modified.
        Throws:
        javax.jcr.RepositoryException
        See Also:
        Node.setPrimaryType(String)
      • setValue

        public void setValue​(PropertyId propertyId,
                             QValue value)
                      throws javax.jcr.RepositoryException
        Description copied from interface: Batch
        Modify the value of an existing property. Note that in contrast to the JCR API this method should not accept a null value. Removing a property is achieved by calling Batch.remove(ItemId).
        Parameters:
        propertyId - PropertyId identifying the property to be modified.
        value - The new value.
        Throws:
        javax.jcr.ValueFormatException
        javax.jcr.version.VersionException
        javax.jcr.lock.LockException
        javax.jcr.nodetype.ConstraintViolationException
        javax.jcr.AccessDeniedException
        javax.jcr.UnsupportedRepositoryOperationException
        javax.jcr.RepositoryException
        See Also:
        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)
      • setValue

        public void setValue​(PropertyId propertyId,
                             QValue[] values)
                      throws javax.jcr.RepositoryException
        Description copied from interface: Batch
        Modify the value of an existing, multi-valued property. Note that in contrast to the JCR API this method should not accept a null value. Removing a property is achieved by calling Batch.remove(ItemId).
        Parameters:
        propertyId - PropertyId identifying the property to be modified.
        values - The new values.
        Throws:
        javax.jcr.ValueFormatException
        javax.jcr.version.VersionException
        javax.jcr.lock.LockException
        javax.jcr.nodetype.ConstraintViolationException
        javax.jcr.AccessDeniedException
        javax.jcr.UnsupportedRepositoryOperationException
        javax.jcr.RepositoryException
        See Also:
        Property.setValue(javax.jcr.Value[]), Property.setValue(String[])
      • setTree

        public void setTree​(NodeId parentId,
                            Tree contentTree)
                     throws javax.jcr.RepositoryException
        Description copied from interface: Batch
        Add a new content tree to the persistent layer.
        Throws:
        javax.jcr.RepositoryException
      • addOperation

        public void addOperation​(org.apache.jackrabbit.spi.commons.batch.ConsolidatingChangeLog.CancelableOperation op)
                          throws javax.jcr.RepositoryException
        Determines the cancellation behavior from the list of operations and the current operation op:
        • When the current operation is cancelled by the last operation, the list of operations is not modified.
        • When the current operation and the last operation cancel each other, the last operation is removed from the list of operations.
        • When the last operation is cancelled by this operation, the last operation is removed from the list of operations and determination of cancellation starts from scratch.
        • Otherwise add the current operation to the list of operations.
        Overrides:
        addOperation in class AbstractChangeLog<org.apache.jackrabbit.spi.commons.batch.ConsolidatingChangeLog.CancelableOperation>
        Parameters:
        op - Operation to add
        Throws:
        javax.jcr.RepositoryException