|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.jackrabbit.core.ItemValidator org.apache.jackrabbit.core.BatchedItemOperations
BatchedItemOperations
is an internal helper class that
provides both high- and low-level operations directly on the
ItemState
level.
Fields inherited from class org.apache.jackrabbit.core.ItemValidator |
hierMgr, nsResolver, ntReg |
Constructor Summary | |
BatchedItemOperations(UpdatableItemStateManager stateMgr,
NodeTypeRegistry ntReg,
LockManager lockMgr,
SessionImpl session,
HierarchyManager hierMgr,
NamespaceResolver nsResolver)
Creates a new BatchedItemOperations instance. |
Method Summary | |
void |
cancel()
Cancel an update operation. |
void |
checkAddNode(NodeState parentState,
QName nodeName,
QName 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. |
void |
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 . |
void |
copy(Path srcPath,
Path destPath,
int flag)
Copies the tree at srcPath to the new location at
destPath . |
NodeState |
createNodeState(NodeState parent,
QName nodeName,
QName nodeTypeName,
QName[] mixinNames,
NodeId id)
Creates a new node. |
NodeState |
createNodeState(NodeState parent,
QName nodeName,
QName nodeTypeName,
QName[] mixinNames,
NodeId id,
NodeDef def)
Creates a new node based on the given definition. |
PropertyState |
createPropertyState(NodeState parent,
QName propName,
int type,
int numValues)
Creates a new property. |
PropertyState |
createPropertyState(NodeState parent,
QName propName,
int type,
PropDef 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. |
NodeDef |
findApplicableNodeDefinition(QName name,
QName nodeTypeName,
NodeState parentState)
Helper method that finds the applicable definition for a child node with the given name and node type in the parent node's node type and mixin types. |
PropDef |
findApplicablePropertyDefinition(QName name,
int type,
boolean multiValued,
NodeState parentState)
Helper method that finds the applicable definition for a property with the given name, type and multiValued characteristic in the parent node's node type and mixin types. |
PropDef |
findApplicablePropertyDefinition(QName name,
int type,
NodeState parentState)
Helper method that finds the applicable definition for a property with the given name, type in the parent node's node type and mixin types. |
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. |
void |
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. |
Methods inherited from class org.apache.jackrabbit.core.ItemValidator |
getEffectiveNodeType, safeGetJCRPath, safeGetJCRPath, validate, validate |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected static final int COPY
protected static final int CLONE
protected static final int CLONE_REMOVE_EXISTING
public static final int CHECK_ACCESS
checkAddNode(org.apache.jackrabbit.core.state.NodeState, org.apache.jackrabbit.name.QName, org.apache.jackrabbit.name.QName, int)
and
checkRemoveNode(org.apache.jackrabbit.core.state.NodeState, int)
methods:
check access rights
public static final int CHECK_LOCK
checkAddNode(org.apache.jackrabbit.core.state.NodeState, org.apache.jackrabbit.name.QName, org.apache.jackrabbit.name.QName, int)
and
checkRemoveNode(org.apache.jackrabbit.core.state.NodeState, int)
methods:
check lock status
public static final int CHECK_VERSIONING
checkAddNode(org.apache.jackrabbit.core.state.NodeState, org.apache.jackrabbit.name.QName, org.apache.jackrabbit.name.QName, int)
and
checkRemoveNode(org.apache.jackrabbit.core.state.NodeState, int)
methods:
check checked-out status
public static final int CHECK_CONSTRAINTS
checkAddNode(org.apache.jackrabbit.core.state.NodeState, org.apache.jackrabbit.name.QName, org.apache.jackrabbit.name.QName, int)
and
checkRemoveNode(org.apache.jackrabbit.core.state.NodeState, int)
methods:
check constraints defined in node type
public static final int CHECK_REFERENCES
checkRemoveNode(org.apache.jackrabbit.core.state.NodeState, int)
method:
check that target node is not being referenced
protected final UpdatableItemStateManager stateMgr
protected final LockManager lockMgr
protected final SessionImpl session
Constructor Detail |
public BatchedItemOperations(UpdatableItemStateManager stateMgr, NodeTypeRegistry ntReg, LockManager lockMgr, SessionImpl session, HierarchyManager hierMgr, NamespaceResolver nsResolver)
BatchedItemOperations
instance.
stateMgr
- item state managerntReg
- node type registrylockMgr
- lock managersession
- current sessionhierMgr
- hierarchy managernsResolver
- namespace resolverMethod Detail |
public void edit() throws IllegalStateException
update()
or cancel()
must be invoked.
IllegalStateException
- if the state mananger is already in edit modepublic void store(ItemState state) throws IllegalStateException
state
- item state that should be stored
IllegalStateException
- if the manager is not in edit mode.public void destroy(ItemState state) throws IllegalStateException
state
- item state that should be destroyed
IllegalStateException
- 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 failed
IllegalStateException
- if the state mananger is not in edit modepublic void cancel() throws IllegalStateException
edit()
.
IllegalStateException
- if the state mananger is not in edit modepublic void copy(Path srcPath, Path destPath, int flag) throws ConstraintViolationException, AccessDeniedException, VersionException, PathNotFoundException, ItemExistsException, LockException, RepositoryException
srcPath
to the new location at
destPath
.
Precondition: the state manager needs to be in edit mode.
srcPath
- destPath
- flag
- one of
COPY
CLONE
CLONE_REMOVE_EXISTING
ConstraintViolationException
AccessDeniedException
VersionException
PathNotFoundException
ItemExistsException
LockException
RepositoryException
public void 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
.
Precondition: the state manager needs to be in edit mode.
srcPath
- srcStateMgr
- srcHierMgr
- srcAccessMgr
- destPath
- flag
- one of
COPY
CLONE
CLONE_REMOVE_EXISTING
ConstraintViolationException
AccessDeniedException
VersionException
PathNotFoundException
ItemExistsException
LockException
RepositoryException
IllegalStateException
- if the state mananger is not in edit modepublic void move(Path srcPath, Path destPath) throws ConstraintViolationException, VersionException, AccessDeniedException, PathNotFoundException, ItemExistsException, LockException, RepositoryException, IllegalStateException
srcPath
to the new location at
destPath
.
Precondition: the state manager needs to be in edit mode.
srcPath
- destPath
-
ConstraintViolationException
VersionException
AccessDeniedException
PathNotFoundException
ItemExistsException
LockException
RepositoryException
IllegalStateException
- if the state mananger is not in edit modepublic void removeNode(Path nodePath) throws ConstraintViolationException, AccessDeniedException, VersionException, LockException, ItemNotFoundException, ReferentialIntegrityException, RepositoryException, IllegalStateException
nodePath
-
ConstraintViolationException
AccessDeniedException
VersionException
LockException
ItemNotFoundException
ReferentialIntegrityException
RepositoryException
IllegalStateException
public void checkAddNode(NodeState parentState, QName nodeName, QName 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:
CHECK_ACCESS
: make sure
current session is granted read & write access on
parent nodeCHECK_LOCK
: make sure
there's no foreign lock on parent nodeCHECK_VERSIONING
: make sure
parent node is checked-outCHECK_CONSTRAINTS
:
make sure no node type constraints would be violatedCHECK_REFERENCES
ConstraintViolationException
AccessDeniedException
VersionException
LockException
ItemNotFoundException
ItemExistsException
RepositoryException
public 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:
CHECK_ACCESS
: make sure
current session is granted read access on parent
and remove privilege on target nodeCHECK_LOCK
: make sure
there's no foreign lock on parent nodeCHECK_VERSIONING
: make sure
parent node is checked-outCHECK_CONSTRAINTS
:
make sure no node type constraints would be violatedCHECK_REFERENCES
:
make sure no references exist on target nodeConstraintViolationException
AccessDeniedException
VersionException
LockException
ItemNotFoundException
ReferentialIntegrityException
RepositoryException
public 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:
CHECK_ACCESS
: make sure
current session is granted read access on parent
and remove privilege on target nodeCHECK_LOCK
: make sure
there's no foreign lock on parent nodeCHECK_VERSIONING
: make sure
parent node is checked-outCHECK_CONSTRAINTS
:
make sure no node type constraints would be violatedCHECK_REFERENCES
:
make sure no references exist on target nodeConstraintViolationException
AccessDeniedException
VersionException
LockException
ItemNotFoundException
ReferentialIntegrityException
RepositoryException
public 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 check
PathNotFoundException
- if no node exists at
nodePath
of the current
session is not granted read access
to the specified path
AccessDeniedException
- if write access to the specified
path is not allowed
ConstraintViolationException
- if the node at nodePath
is protected
VersionException
- if the node at nodePath
is checked-in
LockException
- if the node at nodePath
is locked by another session
RepositoryException
- 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 check
PathNotFoundException
- if no node exists at
nodePath
of the current
session is not granted read access
to the specified path
RepositoryException
- if another error occurspublic NodeDef findApplicableNodeDefinition(QName name, QName nodeTypeName, NodeState parentState) throws RepositoryException, ConstraintViolationException
name
- nodeTypeName
- parentState
-
NodeDef
ConstraintViolationException
- if no applicable child node definition
could be found
RepositoryException
- if another error occurspublic PropDef findApplicablePropertyDefinition(QName name, int type, boolean multiValued, NodeState parentState) throws RepositoryException, ConstraintViolationException
name
- type
- multiValued
- parentState
-
PropDef
ConstraintViolationException
- if no applicable property definition
could be found
RepositoryException
- if another error occurspublic PropDef findApplicablePropertyDefinition(QName name, int type, NodeState parentState) throws RepositoryException, ConstraintViolationException
findApplicablePropertyDefinition(QName, int, boolean, NodeState)
this method does not take the multiValued flag into account in the
selection algorithm. If there more than one applicable definitions then
the following rules are applied:
name
- type
- parentState
-
PropDef
ConstraintViolationException
- if no applicable property definition
could be found
RepositoryException
- if another error occurspublic NodeState createNodeState(NodeState parent, QName nodeName, QName nodeTypeName, QName[] mixinNames, NodeId id) throws ItemExistsException, ConstraintViolationException, RepositoryException, IllegalStateException
parent
- nodeName
- nodeTypeName
- mixinNames
- id
-
ItemExistsException
ConstraintViolationException
RepositoryException
IllegalStateException
- if the state mananger is not in edit modepublic NodeState createNodeState(NodeState parent, QName nodeName, QName nodeTypeName, QName[] mixinNames, NodeId id, NodeDef def) throws ItemExistsException, ConstraintViolationException, RepositoryException, IllegalStateException
parent
- nodeName
- nodeTypeName
- mixinNames
- id
- def
-
ItemExistsException
ConstraintViolationException
RepositoryException
IllegalStateException
public PropertyState createPropertyState(NodeState parent, QName propName, int type, int numValues) throws ItemExistsException, ConstraintViolationException, RepositoryException, IllegalStateException
parent
- propName
- type
- numValues
-
ItemExistsException
ConstraintViolationException
RepositoryException
IllegalStateException
- if the state mananger is not in edit modepublic PropertyState createPropertyState(NodeState parent, QName propName, int type, PropDef def) throws ItemExistsException, RepositoryException
parent
- propName
- type
- def
-
ItemExistsException
RepositoryException
public void removeNodeState(NodeState target) throws RepositoryException
target
-
RepositoryException
- if an error occurspublic NodeState getNodeState(Path nodePath) throws PathNotFoundException, RepositoryException
nodePath
-
PathNotFoundException
RepositoryException
public NodeState getNodeState(NodeId id) throws ItemNotFoundException, RepositoryException
id
-
ItemNotFoundException
RepositoryException
public PropertyState getPropertyState(PropertyId id) throws ItemNotFoundException, RepositoryException
id
-
ItemNotFoundException
RepositoryException
public ItemState getItemState(ItemId id) throws ItemNotFoundException, RepositoryException
id
-
ItemNotFoundException
RepositoryException
protected 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
-
PathNotFoundException
VersionException
RepositoryException
protected void verifyUnlocked(Path nodePath) throws LockException, RepositoryException
nodePath
is not locked by
somebody else than the current session.
nodePath
- path of node to check
PathNotFoundException
LockException
- if write access to the specified path is not allowed
RepositoryException
- if another error occursprotected void verifyNotProtected(Path nodePath) throws PathNotFoundException, ConstraintViolationException, RepositoryException
nodePath
is not protected.
nodePath
- path of node to check
PathNotFoundException
- if no node exists at nodePath
ConstraintViolationException
- if write access to the specified
path is not allowed
RepositoryException
- 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
-
PathNotFoundException
RepositoryException
protected ItemState getItemState(ItemStateManager srcStateMgr, ItemId id) throws ItemNotFoundException, RepositoryException
srcStateMgr
- id
-
ItemNotFoundException
RepositoryException
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |