org.apache.jackrabbit.spi.commons.batch
Class ConsolidatingChangeLog

java.lang.Object
  extended by org.apache.jackrabbit.spi.commons.batch.AbstractChangeLog<ConsolidatingChangeLog.CancelableOperation>
      extended by org.apache.jackrabbit.spi.commons.batch.ConsolidatingChangeLog
All Implemented Interfaces:
Batch, ChangeLog

public class ConsolidatingChangeLog
extends AbstractChangeLog<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.


Nested Class Summary
protected static interface ConsolidatingChangeLog.CancelableOperation
          This class represent an Operation which can be cancelled by another operation or which cancels another operation.
protected static class ConsolidatingChangeLog.CancelableOperations
          Factory for creating CancelableOperations.
 
Field Summary
 
Fields inherited from class org.apache.jackrabbit.spi.commons.batch.AbstractChangeLog
operations
 
Constructor Summary
ConsolidatingChangeLog()
          Create a new instance of a consolidating change log.
 
Method Summary
 void addNode(NodeId parentId, Name nodeName, Name nodetypeName, String uuid)
          Add a new node to the persistent layer.
 void addOperation(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.
 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.
protected static Path getPath(ItemId itemId)
          Determine the Path from an ItemId.
protected static Path getPath(NodeId parentId, Name name)
          Create a Path from the NodeId of a parent and the Name of a child.
 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 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 org.apache.jackrabbit.spi.commons.batch.AbstractChangeLog
apply, equals, equals, hashCode, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ConsolidatingChangeLog

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

Method Detail

getPath

protected static Path getPath(NodeId parentId,
                              Name name)
                       throws RepositoryException
Create a Path from the NodeId of a parent and the Name of a child.

Parameters:
parentId - node id of the parent
name - name of the child
Returns:
the path of the item name or null if parentId's path is not absolute
Throws:
RepositoryException

getPath

protected static Path getPath(ItemId itemId)
Determine the Path from an ItemId.

Parameters:
itemId -
Returns:
path of the item itemId or null if itemId's path is not absolute

addNode

public void addNode(NodeId parentId,
                    Name nodeName,
                    Name nodetypeName,
                    String uuid)
             throws 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:
ItemExistsException
PathNotFoundException
VersionException
ConstraintViolationException
NoSuchNodeTypeException
LockException
AccessDeniedException
UnsupportedRepositoryOperationException
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 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:
ValueFormatException
VersionException
LockException
ConstraintViolationException
PathNotFoundException
ItemExistsException
AccessDeniedException
UnsupportedRepositoryOperationException
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 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:
ValueFormatException
VersionException
LockException
ConstraintViolationException
PathNotFoundException
ItemExistsException
AccessDeniedException
UnsupportedRepositoryOperationException
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 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:
ItemExistsException
PathNotFoundException
VersionException
ConstraintViolationException
LockException
AccessDeniedException
UnsupportedRepositoryOperationException
RepositoryException
See Also:
Session.move(String, String)

remove

public void remove(ItemId itemId)
            throws RepositoryException
Description copied from interface: Batch
Remove an existing item.

Parameters:
itemId - ItemId identifying the item to be removed.
Throws:
VersionException
LockException
ConstraintViolationException
AccessDeniedException
UnsupportedRepositoryOperationException
RepositoryException
See Also:
Item.remove()

reorderNodes

public void reorderNodes(NodeId parentId,
                         NodeId srcNodeId,
                         NodeId beforeNodeId)
                  throws 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:
UnsupportedRepositoryOperationException
VersionException
ConstraintViolationException
ItemNotFoundException
LockException
AccessDeniedException
RepositoryException
See Also:
Node.orderBefore(String, String)

setMixins

public void setMixins(NodeId nodeId,
                      Name[] mixinNodeTypeNames)
               throws 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:
NoSuchNodeTypeException
VersionException
ConstraintViolationException
LockException
AccessDeniedException
UnsupportedRepositoryOperationException
RepositoryException
See Also:
Node.addMixin(String), Node.removeMixin(String)

setPrimaryType

public void setPrimaryType(NodeId nodeId,
                           Name primaryNodeTypeName)
                    throws 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:
RepositoryException
See Also:
Node.setPrimaryType(String)

setValue

public void setValue(PropertyId propertyId,
                     QValue value)
              throws 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:
ValueFormatException
VersionException
LockException
ConstraintViolationException
AccessDeniedException
UnsupportedRepositoryOperationException
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 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:
ValueFormatException
VersionException
LockException
ConstraintViolationException
AccessDeniedException
UnsupportedRepositoryOperationException
RepositoryException
See Also:
Property.setValue(javax.jcr.Value[]), Property.setValue(String[])

addOperation

public void addOperation(ConsolidatingChangeLog.CancelableOperation op)
                  throws RepositoryException
Determines the cancellation behavior from the list of operations and the current operation op:

Overrides:
addOperation in class AbstractChangeLog<ConsolidatingChangeLog.CancelableOperation>
Parameters:
op - Operation to add
Throws:
RepositoryException


Copyright © 2011-2013 Adobe Systems Incorporated. All Rights Reserved.