public class BatchedItemOperations extends ItemValidator
BatchedItemOperations is an internal helper class that
provides both high- and low-level operations directly on the
ItemState level.| Modifier and Type | Field and Description |
|---|---|
protected static int |
CLONE |
protected static int |
CLONE_REMOVE_EXISTING |
protected static int |
COPY |
protected SessionImpl |
session
current session used for checking access rights
|
protected UpdatableItemStateManager |
stateMgr
wrapped item state manager
|
CHECK_ACCESS, CHECK_CHECKED_OUT, CHECK_CONSTRAINTS, CHECK_HOLD, CHECK_LOCK, CHECK_PENDING_CHANGES, CHECK_PENDING_CHANGES_ON_NODE, CHECK_REFERENCES, CHECK_RETENTION, context| Constructor and Description |
|---|
BatchedItemOperations(UpdatableItemStateManager stateMgr,
SessionContext sessionContext)
Creates a new
BatchedItemOperations instance. |
| Modifier and Type | Method and Description |
|---|---|
void |
cancel()
Cancel an update operation.
|
void |
checkAddNode(NodeState parentState,
Name nodeName,
Name nodeTypeName,
int options)
Checks if adding a child node called
nodeName of node type
nodeTypeName to the given parent node is allowed in the
current context. |
void |
checkRemoveNode(NodeState targetState,
int options)
Checks if removing the given target node is allowed in the current context.
|
void |
checkRemoveNode(NodeState targetState,
NodeId parentId,
int options)
Checks if removing the given target node from the specifed parent
is allowed in the current context.
|
NodeId |
clone(NodeState srcState,
NodeState destParentState,
Name destName)
Implementation of
clone(Path, Path) that has already determined
the affected NodeStates. |
NodeId |
clone(Path srcPath,
Path destPath)
Clones the subtree at the node
srcAbsPath in to the new
location at destAbsPath. |
NodeId |
copy(Path srcPath,
ItemStateManager srcStateMgr,
HierarchyManager srcHierMgr,
AccessManager srcAccessMgr,
Path destPath,
int flag)
Copies the tree at
srcPath retrieved using the specified
srcStateMgr to the new location at destPath. |
NodeId |
copy(Path srcPath,
Path destPath,
int flag)
Copies the tree at
srcPath to the new location at
destPath. |
NodeState |
createNodeState(NodeState parent,
Name nodeName,
Name nodeTypeName,
Name[] mixinNames,
NodeId id)
Creates a new node.
|
NodeState |
createNodeState(NodeState parent,
Name nodeName,
Name nodeTypeName,
Name[] mixinNames,
NodeId id,
QNodeDefinition def)
Creates a new node based on the given definition.
|
PropertyState |
createPropertyState(NodeState parent,
Name propName,
int type,
int numValues)
Creates a new property.
|
PropertyState |
createPropertyState(NodeState parent,
Name propName,
int type,
QPropertyDefinition def)
Creates a new property based on the given definition.
|
void |
destroy(ItemState state)
Destroy an item state.
|
void |
edit()
Starts an edit operation on the wrapped state manager.
|
ItemState |
getItemState(ItemId id)
Retrieves the state of the item with the given id.
|
protected ItemState |
getItemState(ItemStateManager srcStateMgr,
ItemId id)
Retrieves the state of the item with the specified id using the given
item state manager.
|
protected NodeState |
getNodeState(ItemStateManager srcStateMgr,
HierarchyManager srcHierMgr,
Path nodePath)
Retrieves the state of the node at
nodePath using the given
item state manager. |
NodeState |
getNodeState(NodeId id)
Retrieves the state of the node with the given id.
|
NodeState |
getNodeState(Path nodePath)
Retrieves the state of the node at the given path.
|
PropertyState |
getPropertyState(PropertyId id)
Retrieves the state of the property with the given id.
|
NodeId |
move(Path srcPath,
Path destPath)
Moves the tree at
srcPath to the new location at
destPath. |
void |
removeNode(Path nodePath)
Removes the specified node, recursively removing its properties and
child nodes.
|
void |
removeNodeState(NodeState target)
Unlinks the specified node state from its parent and recursively
removes it including its properties and child nodes.
|
void |
store(ItemState state)
Store an item state.
|
void |
update()
End an update operation.
|
void |
verifyCanRead(Path nodePath)
Verifies that the node at
nodePath can be read. |
void |
verifyCanWrite(Path nodePath)
Verifies that the node at
nodePath is writable. |
protected void |
verifyCheckedOut(Path nodePath)
Verifies that the node at
nodePath is checked-out; throws a
VersionException if that's not the case. |
protected void |
verifyNotProtected(Path nodePath)
Verifies that the node at
nodePath is not protected. |
protected void |
verifyUnlocked(Path nodePath)
Verifies that the node at
nodePath is not locked by
somebody else than the current session. |
canModify, checkModify, checkRemove, findApplicableNodeDefinition, findApplicablePropertyDefinition, findApplicablePropertyDefinition, getEffectiveNodeType, performRelaxed, safeGetJCRPath, safeGetJCRPath, validate, validateprotected static final int COPY
protected static final int CLONE
protected static final int CLONE_REMOVE_EXISTING
protected final UpdatableItemStateManager stateMgr
protected final SessionImpl session
public BatchedItemOperations(UpdatableItemStateManager stateMgr, SessionContext sessionContext) throws RepositoryException
BatchedItemOperations instance.stateMgr - item state managersessionContext - the session contextRepositoryExceptionpublic void edit()
throws IllegalStateException
update() or cancel()
must be invoked.IllegalStateException - if the state manager is already in edit modepublic void store(ItemState state) throws IllegalStateException
state - item state that should be storedIllegalStateException - if the manager is not in edit mode.public void destroy(ItemState state) throws IllegalStateException
state - item state that should be destroyedIllegalStateException - if the manager is not in edit mode.public void update()
throws RepositoryException,
IllegalStateException
edit(). If this operation fails,
no item will have been saved.RepositoryException - if the update operation failedIllegalStateException - if the state manager is not in edit modepublic void cancel()
throws IllegalStateException
edit().IllegalStateException - if the state manager is not in edit modepublic NodeId clone(Path srcPath, Path destPath) throws ConstraintViolationException, AccessDeniedException, VersionException, PathNotFoundException, ItemExistsException, LockException, RepositoryException, IllegalStateException
srcAbsPath in to the new
location at destAbsPath. This operation is only supported:
mix:shareable (or some
derived node type)destAbsPath has not already a shareable
node in the same shared set as the node at srcPath.srcPath - source pathdestPath - destination pathConstraintViolationException - if the operation would violate a
node-type or other implementation-specific constraint.VersionException - if the parent node of destAbsPath is
versionable and checked-in, or is non-versionable but its nearest versionable ancestor is
checked-in. This exception will also be thrown if removeExisting is true,
and a UUID conflict occurs that would require the moving and/or altering of a node that is checked-in.AccessDeniedException - if the current session does not have
sufficient access rights to complete the operation.PathNotFoundException - if the node at srcAbsPath in
srcWorkspace or the parent of destAbsPath in this workspace does not exist.ItemExistsException - if a property already exists at
destAbsPath or a node already exist there, and same name
siblings are not allowed or if removeExisting is false and a
UUID conflict occurs.LockException - if a lock prevents the clone.RepositoryException - if the last element of destAbsPath
has an index or if another error occurs.IllegalStateExceptionpublic NodeId clone(NodeState srcState, NodeState destParentState, Name destName) throws ConstraintViolationException, AccessDeniedException, VersionException, PathNotFoundException, ItemExistsException, LockException, RepositoryException, IllegalStateException
clone(Path, Path) that has already determined
the affected NodeStates.srcState - source statedestParentState - destination parent statedestName - destination nameConstraintViolationException - if the operation would violate a
node-type or other implementation-specific constraint.VersionException - if the parent node of destAbsPath is
versionable and checked-in, or is non-versionable but its nearest versionable ancestor is
checked-in. This exception will also be thrown if removeExisting is true,
and a UUID conflict occurs that would require the moving and/or altering of a node that is checked-in.AccessDeniedException - if the current session does not have
sufficient access rights to complete the operation.PathNotFoundException - if the node at srcAbsPath in
srcWorkspace or the parent of destAbsPath in this workspace does not exist.ItemExistsException - if a property already exists at
destAbsPath or a node already exist there, and same name
siblings are not allowed or if removeExisting is false and a
UUID conflict occurs.LockException - if a lock prevents the clone.RepositoryException - if the last element of destAbsPath
has an index or if another error occurs.IllegalStateExceptionclone(Path, Path)public NodeId copy(Path srcPath, Path destPath, int flag) throws RepositoryException
srcPath to the new location at
destPath. Returns the id of the node at its new position.
Precondition: the state manager needs to be in edit mode.
srcPath - destPath - flag - one of
COPYCLONECLONE_REMOVE_EXISTINGRepositoryException - if the copy operation failspublic NodeId copy(Path srcPath, ItemStateManager srcStateMgr, HierarchyManager srcHierMgr, AccessManager srcAccessMgr, Path destPath, int flag) throws ConstraintViolationException, AccessDeniedException, VersionException, PathNotFoundException, ItemExistsException, LockException, RepositoryException, IllegalStateException
srcPath retrieved using the specified
srcStateMgr to the new location at destPath.
Returns the id of the node at its new position.
Precondition: the state manager needs to be in edit mode.
srcPath - srcStateMgr - srcHierMgr - srcAccessMgr - destPath - flag - one of
COPYCLONECLONE_REMOVE_EXISTINGConstraintViolationExceptionAccessDeniedExceptionVersionExceptionPathNotFoundExceptionItemExistsExceptionLockExceptionRepositoryExceptionIllegalStateException - if the state manager is not in edit mode.public NodeId move(Path srcPath, Path destPath) throws ConstraintViolationException, VersionException, AccessDeniedException, PathNotFoundException, ItemExistsException, LockException, RepositoryException, IllegalStateException
srcPath to the new location at
destPath. Returns the id of the moved node.
Precondition: the state manager needs to be in edit mode.
srcPath - destPath - ConstraintViolationExceptionVersionExceptionAccessDeniedExceptionPathNotFoundExceptionItemExistsExceptionLockExceptionRepositoryExceptionIllegalStateException - if the state manager is not in edit modepublic void removeNode(Path nodePath) throws ConstraintViolationException, AccessDeniedException, VersionException, LockException, ItemNotFoundException, ReferentialIntegrityException, RepositoryException, IllegalStateException
Precondition: the state manager needs to be in edit mode.
public void checkAddNode(NodeState parentState, Name nodeName, Name nodeTypeName, int options) throws ConstraintViolationException, AccessDeniedException, VersionException, LockException, ItemNotFoundException, ItemExistsException, RepositoryException
nodeName of node type
nodeTypeName to the given parent node is allowed in the
current context.parentState - nodeName - nodeTypeName - options - bit-wise OR'ed flags specifying the checks that should be
performed; any combination of the following constants:
ItemValidator.CHECK_ACCESS: make sure
current session is granted read & write access on
parent nodeItemValidator.CHECK_LOCK: make sure
there's no foreign lock on parent nodeItemValidator.CHECK_CHECKED_OUT: make sure
parent node is checked-outItemValidator.CHECK_CONSTRAINTS:
make sure no node type constraints would be violatedItemValidator.CHECK_HOLD: check for effective holds preventing the add operationItemValidator.CHECK_RETENTION: check for effective retention policy preventing the add operationConstraintViolationExceptionAccessDeniedExceptionVersionExceptionLockExceptionItemNotFoundExceptionItemExistsExceptionRepositoryExceptionpublic void checkRemoveNode(NodeState targetState, int options) throws ConstraintViolationException, AccessDeniedException, VersionException, LockException, ItemNotFoundException, ReferentialIntegrityException, RepositoryException
targetState - options - bit-wise OR'ed flags specifying the checks that should be
performed; any combination of the following constants:
ItemValidator.CHECK_ACCESS: make sure
current session is granted read access on parent
and remove privilege on target nodeItemValidator.CHECK_LOCK: make sure
there's no foreign lock on parent nodeItemValidator.CHECK_CHECKED_OUT: make sure
parent node is checked-outItemValidator.CHECK_CONSTRAINTS:
make sure no node type constraints would be violatedItemValidator.CHECK_REFERENCES:
make sure no references exist on target nodeItemValidator.CHECK_HOLD: check for effective holds preventing the add operationItemValidator.CHECK_RETENTION: check for effective retention policy preventing the add operationConstraintViolationExceptionAccessDeniedExceptionVersionExceptionLockExceptionItemNotFoundExceptionReferentialIntegrityExceptionRepositoryExceptionpublic void checkRemoveNode(NodeState targetState, NodeId parentId, int options) throws ConstraintViolationException, AccessDeniedException, VersionException, LockException, ItemNotFoundException, ReferentialIntegrityException, RepositoryException
targetState - parentId - options - bit-wise OR'ed flags specifying the checks that should be
performed; any combination of the following constants:
ItemValidator.CHECK_ACCESS: make sure
current session is granted read access on parent
and remove privilege on target nodeItemValidator.CHECK_LOCK: make sure
there's no foreign lock on parent nodeItemValidator.CHECK_CHECKED_OUT: make sure
parent node is checked-outItemValidator.CHECK_CONSTRAINTS:
make sure no node type constraints would be violatedItemValidator.CHECK_REFERENCES:
make sure no references exist on target nodeItemValidator.CHECK_HOLD: check for effective holds preventing the add operationItemValidator.CHECK_RETENTION: check for effective retention policy preventing the add operationConstraintViolationExceptionAccessDeniedExceptionVersionExceptionLockExceptionItemNotFoundExceptionReferentialIntegrityExceptionRepositoryExceptionpublic void verifyCanWrite(Path nodePath) throws PathNotFoundException, AccessDeniedException, ConstraintViolationException, VersionException, LockException, RepositoryException
nodePath is writable. The
following conditions must hold true:
nodePath - path of node to checkPathNotFoundException - if no node exists at
nodePath of the current
session is not granted read access
to the specified pathAccessDeniedException - if write access to the specified
path is not allowedConstraintViolationException - if the node at nodePath
is protectedVersionException - if the node at nodePath
is checked-inLockException - if the node at nodePath
is locked by another sessionRepositoryException - if another error occurspublic void verifyCanRead(Path nodePath) throws PathNotFoundException, RepositoryException
nodePath can be read. The
following conditions must hold true:
nodePath - path of node to checkPathNotFoundException - if no node exists at
nodePath of the current
session is not granted read access
to the specified pathRepositoryException - if another error occurspublic NodeState createNodeState(NodeState parent, Name nodeName, Name nodeTypeName, Name[] mixinNames, NodeId id) throws ItemExistsException, ConstraintViolationException, RepositoryException, IllegalStateException
Note that access rights are not enforced!
Precondition: the state manager needs to be in edit mode.
parent - nodeName - nodeTypeName - mixinNames - id - ItemExistsExceptionConstraintViolationExceptionRepositoryExceptionIllegalStateException - if the state manager is not in edit mode.public NodeState createNodeState(NodeState parent, Name nodeName, Name nodeTypeName, Name[] mixinNames, NodeId id, QNodeDefinition def) throws ItemExistsException, ConstraintViolationException, RepositoryException, IllegalStateException
Note that access rights are not enforced!
Precondition: the state manager needs to be in edit mode.
parent - nodeName - nodeTypeName - mixinNames - id - def - ItemExistsExceptionConstraintViolationExceptionRepositoryExceptionIllegalStateExceptionpublic PropertyState createPropertyState(NodeState parent, Name propName, int type, int numValues) throws ItemExistsException, ConstraintViolationException, RepositoryException, IllegalStateException
Note that access rights are not enforced!
Precondition: the state manager needs to be in edit mode.
parent - propName - type - numValues - ItemExistsExceptionConstraintViolationExceptionRepositoryExceptionIllegalStateException - if the state manager is not in edit modepublic PropertyState createPropertyState(NodeState parent, Name propName, int type, QPropertyDefinition def) throws ItemExistsException, RepositoryException
Note that access rights are not enforced!
Precondition: the state manager needs to be in edit mode.
parent - propName - type - def - ItemExistsExceptionRepositoryExceptionpublic void removeNodeState(NodeState target) throws RepositoryException
Note that no checks (access rights etc.) are performed on the specified target node state. Those checks have to be performed beforehand by the caller. However, the (recursive) removal of target node's child nodes are subject to the following checks: access rights, locking, versioning.
target - RepositoryException - if an error occurspublic NodeState getNodeState(Path nodePath) throws PathNotFoundException, RepositoryException
Note that access rights are not enforced!
nodePath - PathNotFoundExceptionRepositoryExceptionpublic NodeState getNodeState(NodeId id) throws ItemNotFoundException, RepositoryException
Note that access rights are not enforced!
id - ItemNotFoundExceptionRepositoryExceptionpublic PropertyState getPropertyState(PropertyId id) throws ItemNotFoundException, RepositoryException
Note that access rights are not enforced!
id - ItemNotFoundExceptionRepositoryExceptionpublic ItemState getItemState(ItemId id) throws ItemNotFoundException, RepositoryException
Note that access rights are not enforced!
id - ItemNotFoundExceptionRepositoryExceptionprotected void verifyCheckedOut(Path nodePath) throws PathNotFoundException, VersionException, RepositoryException
nodePath is checked-out; throws a
VersionException if that's not the case.
A node is considered checked-out if it is versionable and checked-out, or is non-versionable but its nearest versionable ancestor is checked-out, or is non-versionable and there are no versionable ancestors.
nodePath - PathNotFoundExceptionVersionExceptionRepositoryExceptionprotected void verifyUnlocked(Path nodePath) throws LockException, RepositoryException
nodePath is not locked by
somebody else than the current session.nodePath - path of node to checkPathNotFoundExceptionLockException - if write access to the specified path is not allowedRepositoryException - if another error occursprotected void verifyNotProtected(Path nodePath) throws PathNotFoundException, ConstraintViolationException, RepositoryException
nodePath is not protected.nodePath - path of node to checkPathNotFoundException - if no node exists at nodePathConstraintViolationException - if write access to the specified
path is not allowedRepositoryException - if another error occursprotected NodeState getNodeState(ItemStateManager srcStateMgr, HierarchyManager srcHierMgr, Path nodePath) throws PathNotFoundException, RepositoryException
nodePath using the given
item state manager.
Note that access rights are not enforced!
srcStateMgr - srcHierMgr - nodePath - PathNotFoundExceptionRepositoryExceptionprotected ItemState getItemState(ItemStateManager srcStateMgr, ItemId id) throws ItemNotFoundException, RepositoryException
Note that access rights are not enforced!
srcStateMgr - id - ItemNotFoundExceptionRepositoryExceptionCopyright © 2004–2022 The Apache Software Foundation. All rights reserved.