Class ConsolidatingChangeLog
- java.lang.Object
-
- org.apache.jackrabbit.spi.commons.batch.AbstractChangeLog<ConsolidatingChangeLog.CancelableOperation>
-
- org.apache.jackrabbit.spi.commons.batch.ConsolidatingChangeLog
-
public class ConsolidatingChangeLog extends AbstractChangeLog<ConsolidatingChangeLog.CancelableOperation>
AChangeLog
implementation which does basic consolidation on itsOperation
s. That is, cancelling operations are removed if possible. In general this is not possible acrossmove
operations. The individualCancelableOperation
implementations document their behavior concerning cancellation.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static interface
ConsolidatingChangeLog.CancelableOperation
This class represent anOperation
which can be cancelled by another operation or which cancels another operation.protected static class
ConsolidatingChangeLog.CancelableOperations
Factory for creatingCancelableOperation
s.
-
Field Summary
-
Fields inherited from class org.apache.jackrabbit.spi.commons.batch.AbstractChangeLog
operations
-
-
Constructor Summary
Constructors Constructor Description ConsolidatingChangeLog()
Create a new instance of a consolidating change log.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description 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 ofoperations
and the current operationop
: 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.protected static Path
getPath(ItemId itemId)
protected static Path
getPath(NodeId parentId, Name name)
void
move(NodeId srcNodeId, NodeId destParentNodeId, Name destName)
Move the node identified by the givensrcNodeId
to the new parent identified bydestParentNodeId
and change its name todestName
.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 givenNodeId
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 givennodeId
.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.
-
-
-
Method Detail
-
getPath
protected static Path getPath(NodeId parentId, Name name) throws RepositoryException
- Parameters:
parentId
- node id of the parentname
- name of the child- Returns:
- the path of the item
name
ornull
ifparentId
's path is not absolute - Throws:
RepositoryException
-
getPath
protected static Path getPath(ItemId itemId)
- Parameters:
itemId
-- Returns:
- path of the item
itemId
ornull
ifitemId
'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 ornull
. 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 benull
.- 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 givensrcNodeId
to the new parent identified bydestParentNodeId
and change its name todestName
.- 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 givenNodeId
s.- 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 givennodeId
.- 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 anull
value. Removing a property is achieved by callingBatch.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 anull
value. Removing a property is achieved by callingBatch.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[])
-
setTree
public void setTree(NodeId parentId, Tree contentTree) throws RepositoryException
Description copied from interface:Batch
Add a new content tree to the persistent layer.- Throws:
RepositoryException
-
addOperation
public void addOperation(ConsolidatingChangeLog.CancelableOperation op) throws RepositoryException
Determines the cancellation behavior from the list ofoperations
and the current operationop
:- 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 classAbstractChangeLog<ConsolidatingChangeLog.CancelableOperation>
- Parameters:
op
-Operation
to add- Throws:
RepositoryException
-
-