Class NodeImpl
- java.lang.Object
-
- org.apache.jackrabbit.core.ItemImpl
-
- org.apache.jackrabbit.core.NodeImpl
-
- All Implemented Interfaces:
Item
,Node
,JackrabbitNode
- Direct Known Subclasses:
VersionHistoryImpl
,VersionImpl
public class NodeImpl extends ItemImpl implements Node, JackrabbitNode
NodeImpl
implements theNode
interface.
-
-
Field Summary
Fields Modifier and Type Field Description protected static short
CREATED
-
Fields inherited from class org.apache.jackrabbit.core.ItemImpl
id, itemMgr, sessionContext, stateMgr, STATUS_DESTROYED, STATUS_INVALIDATED, STATUS_MODIFIED, STATUS_NORMAL
-
Fields inherited from interface javax.jcr.Node
JCR_CHILD_NODE_DEFINITION, JCR_CONTENT, JCR_FROZEN_NODE, JCR_PROPERTY_DEFINITION, JCR_ROOT_VERSION, JCR_VERSION_LABELS
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
NodeImpl(ItemManager itemMgr, SessionContext sessionContext, AbstractNodeData data)
Protected constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
accept(ItemVisitor visitor)
void
addMixin(String mixinName)
Wrapper aroundaddMixin(Name)
.void
addMixin(Name mixinName)
Node
addNode(String relPath)
Node
addNode(String relPath, String nodeTypeName)
NodeImpl
addNode(Name nodeName, Name nodeTypeName, NodeId id)
Same as
except that this method takesNode.addNode(String, String)
Name
arguments instead ofString
s and has an additionaluuid
argument.Node
addNodeWithUuid(String relPath, String uuid)
Adds a node with the given UUID.Node
addNodeWithUuid(String relPath, String nodeTypeName, String uuid)
Adds a node with the given node type and UUID.void
assignLifecyclePolicy(Node policy, String state)
Assigns the given lifecycle policy to this node and sets the current state to the one given.boolean
canAddMixin(String mixinName)
void
cancelMerge(Version version)
Deprecated.Version
checkin()
Deprecated.Version
checkin(Calendar created)
Deprecated.protected void
checkLock()
Deprecated.void
checkout()
Deprecated.protected void
checkSetProperty()
Checks various pre-conditions that are common to allsetProperty()
methods.NodeImpl
clone(NodeImpl src, Name name)
Create a child node that is a clone of a shareable node.protected NodeImpl
createChildNode(Name name, NodeTypeImpl nodeType, NodeId id)
protected PropertyImpl
createChildProperty(Name name, int type, PropertyDefinitionImpl def)
Creates a new property with the given name andtype
hint and property definition.void
doneMerge(Version version)
Deprecated.void
followLifecycleTransition(String transition)
Transitions this node through its lifecycle to the given target state.String[]
getAllowedLifecycleTransistions()
Returns all allowed transitions from the current lifecycle state of this node.protected NodeDefinitionImpl
getApplicableChildNodeDefinition(Name nodeName, Name nodeTypeName)
Returns the applicable child node definition for a child node with the specified name and node type.protected PropertyDefinitionImpl
getApplicablePropertyDefinition(Name propertyName, int type, boolean multiValued, boolean exactTypeMatch)
Returns the applicable property definition for a property with the specified name and type.Version
getBaseVersion()
Deprecated.String
getCorrespondingNodePath(String workspaceName)
NodeDefinition
getDefinition()
EffectiveNodeType
getEffectiveNodeType()
Returns the effective (i.e.String
getIdentifier()
int
getIndex()
Lock
getLock()
NodeType[]
getMixinNodeTypes()
Set<Name>
getMixinTypeNames()
Returns theName
s of this node's mixin types.String
getName()
Node
getNode(String relPath)
NodeImpl
getNode(Name name)
Returns the child node ofthis
node with the specifiedname
.NodeImpl
getNode(Name name, int index)
Returns the child node ofthis
node with the specifiedname
.NodeId
getNodeId()
Returns the identifier of thisNode
.NodeIterator
getNodes()
NodeIterator
getNodes(String namePattern)
NodeIterator
getNodes(String[] nameGlobs)
protected PropertyImpl
getOrCreateProperty(String name, int type, boolean multiValued, boolean exactTypeMatch, BitSet status)
protected PropertyImpl
getOrCreateProperty(Name name, int type, boolean multiValued, boolean exactTypeMatch, BitSet status)
protected ItemState
getOrCreateTransientItemState()
Node
getParent()
NodeId
getParentId()
Helper method, returning the parent id this node is attached to.Item
getPrimaryItem()
NodeType
getPrimaryNodeType()
Name
getPrimaryNodeTypeName()
Returns the name of the primary node type as exposed on the node state without retrieving the node type.Path
getPrimaryPath()
Returns the primary path to thisItem
.PropertyIterator
getProperties()
PropertyIterator
getProperties(String namePattern)
PropertyIterator
getProperties(String[] nameGlobs)
Property
getProperty(String relPath)
PropertyImpl
getProperty(Name name)
Returns the property ofthis
node with the specifiedname
.Name
getQName()
PropertyIterator
getReferences()
PropertyIterator
getReferences(String name)
NodeIterator
getSharedSet()
Returns an iterator over all nodes that are in the shared set of this node.String
getUUID()
VersionHistory
getVersionHistory()
Deprecated.PropertyIterator
getWeakReferences()
PropertyIterator
getWeakReferences(String name)
boolean
hasNode(String relPath)
boolean
hasNode(Name name)
Indicates whether a child node with the specifiedname
exists.boolean
hasNode(Name name, int index)
Indicates whether a child node with the specifiedname
exists.boolean
hasNodes()
protected boolean
hasPendingChanges()
Determines if there are pending unsaved changes either on this node or on any node or property in the subtree below it.boolean
hasProperties()
boolean
hasProperty(String relPath)
boolean
hasProperty(Name name)
Indicates whether a property with the specifiedname
exists.boolean
holdsLock()
protected Property
internalSetProperty(Name name, InternalValue value)
Sets the internal value of a property without checking any constraints.protected Property
internalSetProperty(Name name, InternalValue[] values)
Sets the internal value of a property without checking any constraints.protected Property
internalSetProperty(Name name, InternalValue[] values, int type)
Sets the internal value of a property without checking any constraints.boolean
isAccessControllable()
Test if this node is access controlled.boolean
isCheckedOut()
boolean
isLocked()
boolean
isNode()
boolean
isNodeType(String nodeTypeName)
boolean
isNodeType(Name ntName)
Lock
lock(boolean isDeep, boolean isSessionScoped)
protected void
makePersistent()
NodeIterator
merge(String srcWorkspace, boolean bestEffort)
Deprecated.protected void
onRedefine(QNodeDefinition def)
protected void
onRemove(NodeId parentId)
void
orderBefore(String srcName, String destName)
void
orderBefore(Path.Element srcName, Path.Element dstName)
Same as
except that this method takes aNode.orderBefore(String, String)
Path.Element
arguments instead ofString
s.protected void
removeChildNode(NodeId childId)
protected void
removeChildProperty(Name propName)
void
removeMixin(String mixinName)
Wrapper aroundremoveMixin(Name)
.void
removeMixin(Name mixinName)
void
removeShare()
A special kind ofremove()
that removes this node, but does not remove any other node in the shared set of this node.void
removeSharedSet()
A special kind ofremove()
that removes this node and every other node in the shared set of this node.void
rename(String newName)
protected void
renameChildNode(NodeId id, Name newName, boolean replace)
protected void
renameChildNode(Name oldName, int index, NodeId id, Name newName)
Deprecated.use #renameChildNode(NodeId, Name, boolean)NodeImpl
replaceChildNode(NodeId id, Name nodeName, Name nodeTypeName, Name[] mixinNames)
Replaces the child node with the specifiedid
by a new child node with the same id and specifiednodeName
,nodeTypeName
andmixinNames
.protected NodeId
resolveRelativeNodePath(String relPath)
Returns the id of the node atrelPath
ornull
if no node exists atrelPath
.protected PropertyId
resolveRelativePropertyPath(String relPath)
Returns the id of the property atrelPath
ornull
if no property exists atrelPath
.void
restore(String versionName, boolean removeExisting)
Deprecated.void
restore(Version version, boolean removeExisting)
Deprecated.void
restore(Version version, String relPath, boolean removeExisting)
Deprecated.void
restoreByLabel(String versionLabel, boolean removeExisting)
Deprecated.protected void
restoreTransient(NodeState transientState)
void
setMixins(String[] mixinNames)
void
setPrimaryType(String nodeTypeName)
Property
setProperty(String name, boolean value)
Wrapper aroundsetProperty(String, Value)
Property
setProperty(String name, double value)
Wrapper aroundsetProperty(String, Value)
Property
setProperty(String name, long value)
Wrapper aroundsetProperty(String, Value)
Property
setProperty(String name, InputStream value)
Wrapper aroundsetProperty(String, Value)
Property
setProperty(String name, String value)
Wrapper aroundsetProperty(String, Value)
Property
setProperty(String name, String[] strings)
Wrapper aroundsetProperty(Name, Value[], int, boolean)
Property
setProperty(String name, String[] values, int type)
Wrapper aroundsetProperty(Name, Value[], int, boolean)
Property
setProperty(String name, String value, int type)
Wrapper aroundsetProperty(String, Value, int)
Property
setProperty(String name, BigDecimal value)
Property
setProperty(String name, Calendar value)
Wrapper aroundsetProperty(String, Value)
Property
setProperty(String name, Binary value)
Property
setProperty(String name, Node value)
Wrapper aroundsetProperty(String, Value)
Property
setProperty(String name, Value value)
Wrapper aroundNodeImpl.SetPropertyOperation
Property
setProperty(String name, Value[] values)
Wrapper aroundsetProperty(Name, Value[], int, boolean)
Property
setProperty(String name, Value[] values, int type)
Wrapper aroundsetProperty(Name, Value[], int, boolean)
Property
setProperty(String name, Value value, int type)
Wrapper aroundNodeImpl.SetPropertyOperation
PropertyImpl
setProperty(Name name, Value value)
Same as
except that this method takes aNode.setProperty(String, Value)
Name
name argument instead of aString
.PropertyImpl
setProperty(Name name, Value[] values, int type)
Same as
except that this method takes aNode.setProperty(String, Value[], int)
Name
name argument instead of aString
.protected PropertyImpl
setProperty(Name name, Value[] values, int type, boolean enforceType)
Implementation forsetProperty()
using aValue
array.String
toString()
Return a string representation of this node for diagnostic purposes.void
unlock()
void
update(String srcWorkspaceName)
-
Methods inherited from class org.apache.jackrabbit.core.ItemImpl
getAncestor, getDepth, getId, getPath, getQName, getSession, getType, getValueFactory, getValues, isModified, isNew, isSame, isTransactionalNew, isTransient, itemSanityCheck, perform, refresh, remove, safeGetJCRPath, sanityCheck, save, setRemoved
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface javax.jcr.Item
getAncestor, getDepth, getPath, getSession, isModified, isNew, isSame, refresh, remove, save
-
Methods inherited from interface org.apache.jackrabbit.api.JackrabbitNode
getNodeOrNull, getPropertyOrNull
-
-
-
-
Field Detail
-
CREATED
protected static final short CREATED
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
NodeImpl
protected NodeImpl(ItemManager itemMgr, SessionContext sessionContext, AbstractNodeData data)
Protected constructor.- Parameters:
itemMgr
- theItemManager
that created thisNode
instancesessionContext
- the component context of the associated sessiondata
- the node data
-
-
Method Detail
-
resolveRelativePropertyPath
protected PropertyId resolveRelativePropertyPath(String relPath) throws RepositoryException
Returns the id of the property atrelPath
ornull
if no property exists atrelPath
.Note that access rights are not checked.
- Parameters:
relPath
- relative path of a (possible) property- Returns:
- the id of the property at
relPath
ornull
if no property exists atrelPath
- Throws:
RepositoryException
- ifrelPath
is not a valid relative path
-
resolveRelativeNodePath
protected NodeId resolveRelativeNodePath(String relPath) throws RepositoryException
Returns the id of the node atrelPath
ornull
if no node exists atrelPath
.Note that access rights are not checked.
- Parameters:
relPath
- relative path of a (possible) node- Returns:
- the id of the node at
relPath
ornull
if no node exists atrelPath
- Throws:
RepositoryException
- ifrelPath
is not a valid relative path
-
hasPendingChanges
protected boolean hasPendingChanges() throws RepositoryException
Determines if there are pending unsaved changes either on this node or on any node or property in the subtree below it.- Returns:
true
if there are pending unsaved changes,false
otherwise.- Throws:
RepositoryException
- if an error occurred
-
getOrCreateTransientItemState
protected ItemState getOrCreateTransientItemState() throws RepositoryException
- Specified by:
getOrCreateTransientItemState
in classItemImpl
- Throws:
RepositoryException
-
getOrCreateProperty
protected PropertyImpl getOrCreateProperty(String name, int type, boolean multiValued, boolean exactTypeMatch, BitSet status) throws ConstraintViolationException, RepositoryException
- Parameters:
name
-type
-multiValued
-exactTypeMatch
-status
-- Returns:
- Throws:
ConstraintViolationException
- if no applicable property definition could be foundRepositoryException
- if another error occurs
-
getOrCreateProperty
protected PropertyImpl getOrCreateProperty(Name name, int type, boolean multiValued, boolean exactTypeMatch, BitSet status) throws ConstraintViolationException, RepositoryException
- Parameters:
name
-type
-multiValued
-exactTypeMatch
-status
-- Returns:
- Throws:
ConstraintViolationException
- if no applicable property definition could be foundRepositoryException
- if another error occurs
-
createChildProperty
protected PropertyImpl createChildProperty(Name name, int type, PropertyDefinitionImpl def) throws RepositoryException
Creates a new property with the given name andtype
hint and property definition. If the given property definition is not of typeUNDEFINED
, then it takes precedence over thetype
hint.- Parameters:
name
- the name of the property to create.type
- the type hint.def
- the associated property definition.- Returns:
- the property instance.
- Throws:
RepositoryException
- if the property cannot be created.
-
createChildNode
protected NodeImpl createChildNode(Name name, NodeTypeImpl nodeType, NodeId id) throws RepositoryException
- Throws:
RepositoryException
-
renameChildNode
protected void renameChildNode(Name oldName, int index, NodeId id, Name newName) throws RepositoryException
Deprecated.use #renameChildNode(NodeId, Name, boolean)- Parameters:
oldName
-index
-id
-newName
-- Throws:
RepositoryException
-
renameChildNode
protected void renameChildNode(NodeId id, Name newName, boolean replace) throws RepositoryException
- Parameters:
id
-newName
-replace
-- Throws:
RepositoryException
-
removeChildProperty
protected void removeChildProperty(Name propName) throws RepositoryException
- Throws:
RepositoryException
-
removeChildNode
protected void removeChildNode(NodeId childId) throws RepositoryException
- Throws:
RepositoryException
-
onRedefine
protected void onRedefine(QNodeDefinition def) throws RepositoryException
- Throws:
RepositoryException
-
onRemove
protected void onRemove(NodeId parentId) throws RepositoryException
- Throws:
RepositoryException
-
getMixinTypeNames
public Set<Name> getMixinTypeNames()
Returns theName
s of this node's mixin types.- Returns:
- a set of the
Name
s of this node's mixin types.
-
getEffectiveNodeType
public EffectiveNodeType getEffectiveNodeType() throws RepositoryException
Returns the effective (i.e. merged and resolved) node type representation of this node's primary and mixin node types.- Returns:
- the effective node type
- Throws:
RepositoryException
- if an error occurs
-
getApplicableChildNodeDefinition
protected NodeDefinitionImpl getApplicableChildNodeDefinition(Name nodeName, Name nodeTypeName) throws ConstraintViolationException, RepositoryException
Returns the applicable child node definition for a child node with the specified name and node type.- Parameters:
nodeName
-nodeTypeName
-- Returns:
- Throws:
ConstraintViolationException
- if no applicable child node definition could be foundRepositoryException
- if another error occurs
-
getApplicablePropertyDefinition
protected PropertyDefinitionImpl getApplicablePropertyDefinition(Name propertyName, int type, boolean multiValued, boolean exactTypeMatch) throws ConstraintViolationException, RepositoryException
Returns the applicable property definition for a property with the specified name and type.- Parameters:
propertyName
-type
-multiValued
-exactTypeMatch
-- Returns:
- Throws:
ConstraintViolationException
- if no applicable property definition could be foundRepositoryException
- if another error occurs
-
makePersistent
protected void makePersistent() throws RepositoryException
- Specified by:
makePersistent
in classItemImpl
- Throws:
RepositoryException
-
restoreTransient
protected void restoreTransient(NodeState transientState) throws RepositoryException
- Throws:
RepositoryException
-
addMixin
public void addMixin(Name mixinName) throws RepositoryException
- Throws:
RepositoryException
- See Also:
Node.addMixin(String)
-
removeMixin
public void removeMixin(Name mixinName) throws RepositoryException
- Throws:
RepositoryException
- See Also:
Node.removeMixin(String)
-
isNodeType
public boolean isNodeType(Name ntName) throws RepositoryException
- Parameters:
ntName
- name of node type- Returns:
true
if this node is of the specified node type; otherwisefalse
- Throws:
RepositoryException
-
checkSetProperty
protected void checkSetProperty() throws VersionException, LockException, RepositoryException
Checks various pre-conditions that are common to allsetProperty()
methods. The checks performed are:- this node must be checked-out
- this node must not be locked by somebody else
Property.setValue()
methods.- Throws:
VersionException
- if this node is not checked-outLockException
- if this node is locked by somebody elseRepositoryException
- if another error occurs- See Also:
Node.setProperty(java.lang.String, javax.jcr.Value)
-
internalSetProperty
protected Property internalSetProperty(Name name, InternalValue value) throws ValueFormatException, RepositoryException
Sets the internal value of a property without checking any constraints.Note that no type conversion is being performed, i.e. it's the caller's responsibility to make sure that the type of the given value is compatible with the specified property's definition.
- Parameters:
name
-value
-- Returns:
- Throws:
ValueFormatException
RepositoryException
-
internalSetProperty
protected Property internalSetProperty(Name name, InternalValue[] values) throws ValueFormatException, RepositoryException
Sets the internal value of a property without checking any constraints.Note that no type conversion is being performed, i.e. it's the caller's responsibility to make sure that the type of the given values is compatible with the specified property's definition.
- Parameters:
name
-values
-- Returns:
- Throws:
ValueFormatException
RepositoryException
-
internalSetProperty
protected Property internalSetProperty(Name name, InternalValue[] values, int type) throws ValueFormatException, RepositoryException
Sets the internal value of a property without checking any constraints.Note that no type conversion is being performed, i.e. it's the caller's responsibility to make sure that the type of the given values is compatible with the specified property's definition.
- Parameters:
name
-values
-type
-- Returns:
- Throws:
ValueFormatException
RepositoryException
-
getNode
public NodeImpl getNode(Name name) throws ItemNotFoundException, RepositoryException
Returns the child node ofthis
node with the specifiedname
.- Parameters:
name
- The name of the child node to retrieve.- Returns:
- The child node with the specified
name
. - Throws:
ItemNotFoundException
- If no child node exists with the specified name.RepositoryException
- If another error occurs.
-
getNode
public NodeImpl getNode(Name name, int index) throws ItemNotFoundException, RepositoryException
Returns the child node ofthis
node with the specifiedname
.- Parameters:
name
- The name of the child node to retrieve.index
- The index of the child node to retrieve (in the case of same-name siblings).- Returns:
- The child node with the specified
name
. - Throws:
ItemNotFoundException
- If no child node exists with the specified name.RepositoryException
- If another error occurs.
-
hasNode
public boolean hasNode(Name name) throws RepositoryException
Indicates whether a child node with the specifiedname
exists. Returnstrue
if the child node exists andfalse
otherwise.- Parameters:
name
- The name of the child node.- Returns:
true
if the child node exists;false
otherwise.- Throws:
RepositoryException
- If an unspecified error occurs.
-
hasNode
public boolean hasNode(Name name, int index) throws RepositoryException
Indicates whether a child node with the specifiedname
exists. Returnstrue
if the child node exists andfalse
otherwise.- Parameters:
name
- The name of the child node.index
- The index of the child node (in the case of same-name siblings).- Returns:
true
if the child node exists;false
otherwise.- Throws:
RepositoryException
- If an unspecified error occurs.
-
getProperty
public PropertyImpl getProperty(Name name) throws ItemNotFoundException, RepositoryException
Returns the property ofthis
node with the specifiedname
.- Parameters:
name
- The name of the property to retrieve.- Returns:
- The property with the specified
name
. - Throws:
ItemNotFoundException
- If no property exists with the specified name.RepositoryException
- If another error occurs.
-
hasProperty
public boolean hasProperty(Name name) throws RepositoryException
Indicates whether a property with the specifiedname
exists. Returnstrue
if the property exists andfalse
otherwise.- Parameters:
name
- The name of the property.- Returns:
true
if the property exists;false
otherwise.- Throws:
RepositoryException
- If an unspecified error occurs.
-
addNode
public NodeImpl addNode(Name nodeName, Name nodeTypeName, NodeId id) throws RepositoryException
Same as
except that this method takesNode.addNode(String, String)
Name
arguments instead ofString
s and has an additionaluuid
argument.Important Notice: This method is for internal use only! Passing already assigned uuid's might lead to unexpected results and data corruption in the worst case.
- Parameters:
nodeName
- name of the new nodenodeTypeName
- name of the new node's node type ornull
if it should be determined automaticallyid
- id of the new node ornull
if a new id should be assigned- Returns:
- the newly added node
- Throws:
RepositoryException
- if the node can not added
-
setProperty
public PropertyImpl setProperty(Name name, Value[] values, int type) throws ValueFormatException, VersionException, LockException, ConstraintViolationException, RepositoryException
Same as
except that this method takes aNode.setProperty(String, Value[], int)
Name
name argument instead of aString
.- Parameters:
name
-values
-type
-- Returns:
- Throws:
ValueFormatException
VersionException
LockException
ConstraintViolationException
RepositoryException
-
setProperty
public PropertyImpl setProperty(Name name, Value value) throws RepositoryException
Same as
except that this method takes aNode.setProperty(String, Value)
Name
name argument instead of aString
.- Throws:
RepositoryException
-
getQName
public Name getQName() throws RepositoryException
Description copied from class:ItemImpl
- Specified by:
getQName
in classItemImpl
- Returns:
- the name of this item as
Name
- Throws:
RepositoryException
- if an error occurs.- See Also:
ItemImpl.getQName()
-
getNodeId
public NodeId getNodeId()
Returns the identifier of thisNode
.- Returns:
- the id of this
Node
-
getPrimaryNodeTypeName
public Name getPrimaryNodeTypeName()
Returns the name of the primary node type as exposed on the node state without retrieving the node type.- Returns:
- the name of the primary node type.
-
isAccessControllable
public boolean isAccessControllable() throws RepositoryException
Test if this node is access controlled. The node is access controlled if it is of node type"rep:AccessControllable"
and if it has a child node namedAccessControlConstants.N_POLICY
.- Returns:
true
if this node is access controlled and has a rep:policy child;false
otherwise.- Throws:
RepositoryException
- if an error occurs
-
orderBefore
public void orderBefore(Path.Element srcName, Path.Element dstName) throws UnsupportedRepositoryOperationException, VersionException, ConstraintViolationException, ItemNotFoundException, LockException, RepositoryException
Same as
except that this method takes aNode.orderBefore(String, String)
Path.Element
arguments instead ofString
s.- Parameters:
srcName
-dstName
-- Throws:
UnsupportedRepositoryOperationException
VersionException
ConstraintViolationException
ItemNotFoundException
LockException
RepositoryException
-
replaceChildNode
public NodeImpl replaceChildNode(NodeId id, Name nodeName, Name nodeTypeName, Name[] mixinNames) throws ItemNotFoundException, NoSuchNodeTypeException, VersionException, ConstraintViolationException, LockException, RepositoryException
Replaces the child node with the specifiedid
by a new child node with the same id and specifiednodeName
,nodeTypeName
andmixinNames
.- Parameters:
id
- id of the child node to be replacednodeName
- name of the new nodenodeTypeName
- name of the new node's node typemixinNames
- name of the new node's mixin types- Returns:
- the new child node replacing the existing child
- Throws:
ItemNotFoundException
NoSuchNodeTypeException
VersionException
ConstraintViolationException
LockException
RepositoryException
-
clone
public NodeImpl clone(NodeImpl src, Name name) throws ItemExistsException, VersionException, ConstraintViolationException, LockException, RepositoryException
Create a child node that is a clone of a shareable node.- Parameters:
src
- shareable source nodename
- name of new node- Returns:
- child node
- Throws:
ItemExistsException
- if there already is a child node with the name given and the definition does not allow creating another oneVersionException
- if this node is not checked outConstraintViolationException
- if no definition is found in this node that would allow creating the child nodeLockException
- if this node is lockedRepositoryException
- if some other error occurs
-
isNode
public boolean isNode()
-
getName
public String getName() throws RepositoryException
- Specified by:
getName
in interfaceItem
- Specified by:
getName
in classItemImpl
- Throws:
RepositoryException
-
accept
public void accept(ItemVisitor visitor) throws RepositoryException
- Specified by:
accept
in interfaceItem
- Specified by:
accept
in classItemImpl
- Throws:
RepositoryException
-
getParent
public Node getParent() throws RepositoryException
- Specified by:
getParent
in interfaceItem
- Specified by:
getParent
in classItemImpl
- Throws:
RepositoryException
-
addNode
public Node addNode(String relPath) throws RepositoryException
- Specified by:
addNode
in interfaceNode
- Throws:
RepositoryException
-
addNode
public Node addNode(String relPath, String nodeTypeName) throws RepositoryException
- Specified by:
addNode
in interfaceNode
- Throws:
RepositoryException
-
addNodeWithUuid
public Node addNodeWithUuid(String relPath, String uuid) throws RepositoryException
Adds a node with the given UUID. You can only add a node with a UUID that is not already assigned to another node in this workspace.- Parameters:
relPath
- path of the new nodeuuid
- UUID of the new node, ornull
for a random new UUID- Returns:
- the newly added node
- Throws:
RepositoryException
- if the node can not be added- Since:
- Apache Jackrabbit 1.6
- See Also:
- JCR-1972,
Node.addNode(String)
-
addNodeWithUuid
public Node addNodeWithUuid(String relPath, String nodeTypeName, String uuid) throws RepositoryException
Adds a node with the given node type and UUID. You can only add a node with a UUID that is not already assigned to another node in this workspace.- Parameters:
relPath
- path of the new nodenodeTypeName
- name of the new node's node type, ornull
for automatic type assignmentuuid
- UUID of the new node, ornull
for a random new UUID- Returns:
- the newly added node
- Throws:
RepositoryException
- if the node can not be added- Since:
- Apache Jackrabbit 1.6
- See Also:
- JCR-1972,
Node.addNode(String, String)
-
orderBefore
public void orderBefore(String srcName, String destName) throws UnsupportedRepositoryOperationException, VersionException, ConstraintViolationException, ItemNotFoundException, LockException, RepositoryException
- Specified by:
orderBefore
in interfaceNode
- Throws:
UnsupportedRepositoryOperationException
VersionException
ConstraintViolationException
ItemNotFoundException
LockException
RepositoryException
-
setProperty
public Property setProperty(String name, Value[] values) throws RepositoryException
Wrapper aroundsetProperty(Name, Value[], int, boolean)
- Specified by:
setProperty
in interfaceNode
- Throws:
RepositoryException
-
setProperty
public Property setProperty(String name, Value[] values, int type) throws RepositoryException
Wrapper aroundsetProperty(Name, Value[], int, boolean)
- Specified by:
setProperty
in interfaceNode
- Throws:
RepositoryException
-
setProperty
public Property setProperty(String name, String[] strings) throws RepositoryException
Wrapper aroundsetProperty(Name, Value[], int, boolean)
- Specified by:
setProperty
in interfaceNode
- Throws:
RepositoryException
-
setProperty
public Property setProperty(String name, String[] values, int type) throws RepositoryException
Wrapper aroundsetProperty(Name, Value[], int, boolean)
- Specified by:
setProperty
in interfaceNode
- Throws:
RepositoryException
-
setProperty
public Property setProperty(String name, String value) throws RepositoryException
Wrapper aroundsetProperty(String, Value)
- Specified by:
setProperty
in interfaceNode
- Throws:
RepositoryException
-
setProperty
public Property setProperty(String name, String value, int type) throws RepositoryException
Wrapper aroundsetProperty(String, Value, int)
- Specified by:
setProperty
in interfaceNode
- Throws:
RepositoryException
-
setProperty
public Property setProperty(String name, Value value, int type) throws RepositoryException
Wrapper aroundNodeImpl.SetPropertyOperation
- Specified by:
setProperty
in interfaceNode
- Throws:
RepositoryException
-
setProperty
public Property setProperty(String name, Value value) throws RepositoryException
Wrapper aroundNodeImpl.SetPropertyOperation
- Specified by:
setProperty
in interfaceNode
- Throws:
RepositoryException
-
setProperty
public Property setProperty(String name, InputStream value) throws RepositoryException
Wrapper aroundsetProperty(String, Value)
- Specified by:
setProperty
in interfaceNode
- Throws:
RepositoryException
-
setProperty
public Property setProperty(String name, boolean value) throws RepositoryException
Wrapper aroundsetProperty(String, Value)
- Specified by:
setProperty
in interfaceNode
- Throws:
RepositoryException
-
setProperty
public Property setProperty(String name, double value) throws RepositoryException
Wrapper aroundsetProperty(String, Value)
- Specified by:
setProperty
in interfaceNode
- Throws:
RepositoryException
-
setProperty
public Property setProperty(String name, long value) throws RepositoryException
Wrapper aroundsetProperty(String, Value)
- Specified by:
setProperty
in interfaceNode
- Throws:
RepositoryException
-
setProperty
public Property setProperty(String name, Calendar value) throws RepositoryException
Wrapper aroundsetProperty(String, Value)
- Specified by:
setProperty
in interfaceNode
- Throws:
RepositoryException
-
setProperty
public Property setProperty(String name, Node value) throws RepositoryException
Wrapper aroundsetProperty(String, Value)
- Specified by:
setProperty
in interfaceNode
- Throws:
RepositoryException
-
setProperty
protected PropertyImpl setProperty(Name name, Value[] values, int type, boolean enforceType) throws RepositoryException
Implementation forsetProperty()
using aValue
array. The type of the returned property is enforced based on theenforceType
flag. If set totrue
, the returned property is of the passed type if it didn't exist before. If set tofalse
, then the returned property may be of some other type, but still must be based on an existing property definition for the given name and multi-valued flag. The resulting type is taken from that definition and the implementation tries to convert the passed values to that type. If that fails, then aValueFormatException
is thrown.- Parameters:
name
- the name of the property to set.values
- the values to set. Ifnull
the property is removed.type
- the target type of the values to set.enforceType
- if the target type is enforced.- Returns:
- the
Property
object set, ornull
if this method was used to remove a property (by setting its value tonull
). - Throws:
ValueFormatException
- if a value cannot be converted to the specified type or if the property already exists and is not multi-valued.VersionException
- if this node is read-only due to a checked-in node and this implementation performs this validation immediately.LockException
- if a lock prevents the setting of the property and this implementation performs this validation immediately.ConstraintViolationException
- if the change would violate a node-type or other constraint and this implementation performs this validation immediately.RepositoryException
- if another error occurs.
-
getNode
public Node getNode(String relPath) throws RepositoryException
- Specified by:
getNode
in interfaceNode
- Throws:
RepositoryException
-
getNodes
public NodeIterator getNodes() throws RepositoryException
- Specified by:
getNodes
in interfaceNode
- Throws:
RepositoryException
-
getProperties
public PropertyIterator getProperties() throws RepositoryException
- Specified by:
getProperties
in interfaceNode
- Throws:
RepositoryException
-
getProperty
public Property getProperty(String relPath) throws PathNotFoundException, RepositoryException
- Specified by:
getProperty
in interfaceNode
- Throws:
PathNotFoundException
RepositoryException
-
hasNode
public boolean hasNode(String relPath) throws RepositoryException
- Specified by:
hasNode
in interfaceNode
- Throws:
RepositoryException
-
hasNodes
public boolean hasNodes() throws RepositoryException
- Specified by:
hasNodes
in interfaceNode
- Throws:
RepositoryException
-
hasProperties
public boolean hasProperties() throws RepositoryException
- Specified by:
hasProperties
in interfaceNode
- Throws:
RepositoryException
-
isNodeType
public boolean isNodeType(String nodeTypeName) throws RepositoryException
- Specified by:
isNodeType
in interfaceNode
- Throws:
RepositoryException
-
getPrimaryNodeType
public NodeType getPrimaryNodeType() throws RepositoryException
- Specified by:
getPrimaryNodeType
in interfaceNode
- Throws:
RepositoryException
-
getMixinNodeTypes
public NodeType[] getMixinNodeTypes() throws RepositoryException
- Specified by:
getMixinNodeTypes
in interfaceNode
- Throws:
RepositoryException
-
addMixin
public void addMixin(String mixinName) throws RepositoryException
Wrapper aroundaddMixin(Name)
.- Specified by:
addMixin
in interfaceNode
- Throws:
RepositoryException
-
removeMixin
public void removeMixin(String mixinName) throws RepositoryException
Wrapper aroundremoveMixin(Name)
.- Specified by:
removeMixin
in interfaceNode
- Throws:
RepositoryException
-
canAddMixin
public boolean canAddMixin(String mixinName) throws NoSuchNodeTypeException, RepositoryException
- Specified by:
canAddMixin
in interfaceNode
- Throws:
NoSuchNodeTypeException
RepositoryException
-
hasProperty
public boolean hasProperty(String relPath) throws RepositoryException
- Specified by:
hasProperty
in interfaceNode
- Throws:
RepositoryException
-
getReferences
public PropertyIterator getReferences() throws RepositoryException
- Specified by:
getReferences
in interfaceNode
- Throws:
RepositoryException
-
getDefinition
public NodeDefinition getDefinition() throws RepositoryException
- Specified by:
getDefinition
in interfaceNode
- Throws:
RepositoryException
-
getNodes
public NodeIterator getNodes(String namePattern) throws RepositoryException
- Specified by:
getNodes
in interfaceNode
- Throws:
RepositoryException
-
getProperties
public PropertyIterator getProperties(String namePattern) throws RepositoryException
- Specified by:
getProperties
in interfaceNode
- Throws:
RepositoryException
-
getPrimaryItem
public Item getPrimaryItem() throws ItemNotFoundException, RepositoryException
- Specified by:
getPrimaryItem
in interfaceNode
- Throws:
ItemNotFoundException
RepositoryException
-
getUUID
public String getUUID() throws UnsupportedRepositoryOperationException, RepositoryException
- Specified by:
getUUID
in interfaceNode
- Throws:
UnsupportedRepositoryOperationException
RepositoryException
-
getCorrespondingNodePath
public String getCorrespondingNodePath(String workspaceName) throws ItemNotFoundException, NoSuchWorkspaceException, AccessDeniedException, RepositoryException
- Specified by:
getCorrespondingNodePath
in interfaceNode
- Throws:
ItemNotFoundException
NoSuchWorkspaceException
AccessDeniedException
RepositoryException
-
getIndex
public int getIndex() throws RepositoryException
- Specified by:
getIndex
in interfaceNode
- Throws:
RepositoryException
-
getSharedSet
public NodeIterator getSharedSet() throws RepositoryException
Returns an iterator over all nodes that are in the shared set of this node. If this node is not shared then the returned iterator contains only this node.- Specified by:
getSharedSet
in interfaceNode
- Returns:
- a
NodeIterator
- Throws:
RepositoryException
- if an error occurs.- Since:
- JCR 2.0
-
removeSharedSet
public void removeSharedSet() throws VersionException, LockException, ConstraintViolationException, RepositoryException
A special kind ofremove()
that removes this node and every other node in the shared set of this node.This removal must be done atomically, i.e., if one of the nodes cannot be removed, the function throws the exception
remove()
would have thrown in that case, and none of the nodes are removed.If this node is not shared this method removes only this node.
- Specified by:
removeSharedSet
in interfaceNode
- Throws:
VersionException
LockException
ConstraintViolationException
RepositoryException
- Since:
- JCR 2.0
- See Also:
removeShare()
,Item.remove()
-
removeShare
public void removeShare() throws VersionException, LockException, ConstraintViolationException, RepositoryException
A special kind ofremove()
that removes this node, but does not remove any other node in the shared set of this node.All of the exceptions defined for
remove()
apply to this function. In addition, aRepositoryException
is thrown if this node cannot be removed without removing another node in the shared set of this node.If this node is not shared this method removes only this node.
- Specified by:
removeShare
in interfaceNode
- Throws:
VersionException
LockException
ConstraintViolationException
RepositoryException
- Since:
- JCR 2.0
- See Also:
removeSharedSet()
,Item.remove()
-
getParentId
public NodeId getParentId()
Helper method, returning the parent id this node is attached to. If this node is shareable, it returns the primary parent id (which remains fixed since shareable nodes are not moveable). Otherwise returns the underlying state's parent id.- Returns:
- parent id
-
getPrimaryPath
public Path getPrimaryPath() throws RepositoryException
Returns the primary path to thisItem
. Overridden to return a different path for shareable nodes. TODO SN: copies functionality in that is already available in HierarchyManagerImpl, namely composing a path by concatenating the parent path + this node's name and index: rather use hierarchy manager to do this- Overrides:
getPrimaryPath
in classItemImpl
- Returns:
- the primary path to this
Item
- Throws:
RepositoryException
-
isCheckedOut
public boolean isCheckedOut() throws RepositoryException
- Specified by:
isCheckedOut
in interfaceNode
- Throws:
RepositoryException
-
update
public void update(String srcWorkspaceName) throws RepositoryException
- Specified by:
update
in interfaceNode
- Throws:
RepositoryException
-
checkin
@Deprecated public Version checkin() throws RepositoryException
Deprecated.UseVersionManager.checkin(String)
instead- Specified by:
checkin
in interfaceNode
- Throws:
RepositoryException
-
checkin
@Deprecated public Version checkin(Calendar created) throws RepositoryException
Deprecated.UseVersionManagerImpl.checkin(String, Calendar)
instead- Throws:
RepositoryException
- Since:
- Apache Jackrabbit 1.6
- See Also:
- JCR-1972
-
checkout
@Deprecated public void checkout() throws RepositoryException
Deprecated.UseVersionManager.checkout(String)
instead- Specified by:
checkout
in interfaceNode
- Throws:
RepositoryException
-
merge
@Deprecated public NodeIterator merge(String srcWorkspace, boolean bestEffort) throws RepositoryException
Deprecated.UseVersionManager.merge(String, String, boolean)
instead- Specified by:
merge
in interfaceNode
- Throws:
RepositoryException
-
cancelMerge
@Deprecated public void cancelMerge(Version version) throws RepositoryException
Deprecated.UseVersionManager.cancelMerge(String, Version)
instead- Specified by:
cancelMerge
in interfaceNode
- Throws:
RepositoryException
-
doneMerge
@Deprecated public void doneMerge(Version version) throws RepositoryException
Deprecated.UseVersionManager.doneMerge(String, Version)
instead- Specified by:
doneMerge
in interfaceNode
- Throws:
RepositoryException
-
restore
@Deprecated public void restore(String versionName, boolean removeExisting) throws RepositoryException
Deprecated.UseVersionManager.restore(String, String, boolean)
instead- Specified by:
restore
in interfaceNode
- Throws:
RepositoryException
-
restore
@Deprecated public void restore(Version version, boolean removeExisting) throws RepositoryException
Deprecated.UseVersionManager.restore(String, Version, boolean)
instead- Specified by:
restore
in interfaceNode
- Throws:
RepositoryException
-
restore
@Deprecated public void restore(Version version, String relPath, boolean removeExisting) throws RepositoryException
Deprecated.UseVersionManager.restore(String, Version, boolean)
instead- Specified by:
restore
in interfaceNode
- Throws:
RepositoryException
-
restoreByLabel
@Deprecated public void restoreByLabel(String versionLabel, boolean removeExisting) throws RepositoryException
Deprecated.- Specified by:
restoreByLabel
in interfaceNode
- Throws:
RepositoryException
-
getVersionHistory
@Deprecated public VersionHistory getVersionHistory() throws RepositoryException
Deprecated.UseVersionManager.getVersionHistory(String)
instead- Specified by:
getVersionHistory
in interfaceNode
- Throws:
RepositoryException
-
getBaseVersion
@Deprecated public Version getBaseVersion() throws RepositoryException
Deprecated.UseVersionManager.getBaseVersion(String)
instead- Specified by:
getBaseVersion
in interfaceNode
- Throws:
RepositoryException
-
lock
public Lock lock(boolean isDeep, boolean isSessionScoped) throws UnsupportedRepositoryOperationException, LockException, AccessDeniedException, InvalidItemStateException, RepositoryException
- Specified by:
lock
in interfaceNode
- Throws:
UnsupportedRepositoryOperationException
LockException
AccessDeniedException
InvalidItemStateException
RepositoryException
-
getLock
public Lock getLock() throws UnsupportedRepositoryOperationException, LockException, AccessDeniedException, RepositoryException
- Specified by:
getLock
in interfaceNode
- Throws:
UnsupportedRepositoryOperationException
LockException
AccessDeniedException
RepositoryException
-
unlock
public void unlock() throws UnsupportedRepositoryOperationException, LockException, AccessDeniedException, InvalidItemStateException, RepositoryException
- Specified by:
unlock
in interfaceNode
- Throws:
UnsupportedRepositoryOperationException
LockException
AccessDeniedException
InvalidItemStateException
RepositoryException
-
holdsLock
public boolean holdsLock() throws RepositoryException
- Specified by:
holdsLock
in interfaceNode
- Throws:
RepositoryException
-
isLocked
public boolean isLocked() throws RepositoryException
- Specified by:
isLocked
in interfaceNode
- Throws:
RepositoryException
-
checkLock
protected void checkLock() throws LockException, RepositoryException
Deprecated.Check whether this node is locked by somebody else.- Throws:
LockException
- if this node is locked by somebody elseRepositoryException
- if some other error occurs
-
getIdentifier
public String getIdentifier() throws RepositoryException
- Specified by:
getIdentifier
in interfaceNode
- Throws:
RepositoryException
-
getReferences
public PropertyIterator getReferences(String name) throws RepositoryException
- Specified by:
getReferences
in interfaceNode
- Throws:
RepositoryException
-
getWeakReferences
public PropertyIterator getWeakReferences() throws RepositoryException
- Specified by:
getWeakReferences
in interfaceNode
- Throws:
RepositoryException
-
getWeakReferences
public PropertyIterator getWeakReferences(String name) throws RepositoryException
- Specified by:
getWeakReferences
in interfaceNode
- Throws:
RepositoryException
-
getNodes
public NodeIterator getNodes(String[] nameGlobs) throws RepositoryException
- Specified by:
getNodes
in interfaceNode
- Throws:
RepositoryException
-
getProperties
public PropertyIterator getProperties(String[] nameGlobs) throws RepositoryException
- Specified by:
getProperties
in interfaceNode
- Throws:
RepositoryException
-
setPrimaryType
public void setPrimaryType(String nodeTypeName) throws NoSuchNodeTypeException, VersionException, ConstraintViolationException, LockException, RepositoryException
- Specified by:
setPrimaryType
in interfaceNode
- Throws:
NoSuchNodeTypeException
VersionException
ConstraintViolationException
LockException
RepositoryException
-
setProperty
public Property setProperty(String name, BigDecimal value) throws ValueFormatException, VersionException, LockException, ConstraintViolationException, RepositoryException
- Specified by:
setProperty
in interfaceNode
- Throws:
ValueFormatException
VersionException
LockException
ConstraintViolationException
RepositoryException
-
setProperty
public Property setProperty(String name, Binary value) throws ValueFormatException, VersionException, LockException, ConstraintViolationException, RepositoryException
- Specified by:
setProperty
in interfaceNode
- Throws:
ValueFormatException
VersionException
LockException
ConstraintViolationException
RepositoryException
-
getAllowedLifecycleTransistions
public String[] getAllowedLifecycleTransistions() throws UnsupportedRepositoryOperationException, RepositoryException
Returns all allowed transitions from the current lifecycle state of this node.The lifecycle policy node referenced by the "jcr:lifecyclePolicy" property is expected to contain a "transitions" node with a list of child nodes, one for each transition. These transition nodes must have single-valued string "from" and "to" properties that identify the allowed source and target states of each transition.
Note that future versions of Apache Jackrabbit may well use different lifecycle policy implementations.
- Specified by:
getAllowedLifecycleTransistions
in interfaceNode
- Returns:
- allowed transitions for the current lifecycle state of this node
- Throws:
UnsupportedRepositoryOperationException
- if this node does not have the mix:lifecycle mixin node typeRepositoryException
- if a repository error occurs- Since:
- Apache Jackrabbit 2.0
-
followLifecycleTransition
public void followLifecycleTransition(String transition) throws UnsupportedRepositoryOperationException, InvalidLifecycleTransitionException, RepositoryException
Transitions this node through its lifecycle to the given target state.- Specified by:
followLifecycleTransition
in interfaceNode
- Parameters:
transition
- target lifecycle state- Throws:
UnsupportedRepositoryOperationException
- if this node does not have the mix:lifecycle mixin node typeInvalidLifecycleTransitionException
- if the given target state is not among the allowed transitions from the current lifecycle state of this nodeRepositoryException
- if a repository error occurs- Since:
- Apache Jackrabbit 2.0
- See Also:
getAllowedLifecycleTransistions()
-
assignLifecyclePolicy
public void assignLifecyclePolicy(Node policy, String state) throws RepositoryException
Assigns the given lifecycle policy to this node and sets the current state to the one given.Note that currently no special checks are made against the given arguments, and that you will need to explicitly persist these changes by calling save().
Note that future versions of Apache Jackrabbit may well use different lifecycle policy implementations.
- Parameters:
policy
- lifecycle policy nodestate
- current lifecycle state- Throws:
RepositoryException
- if a repository error occurs
-
rename
public void rename(String newName) throws RepositoryException
- Specified by:
rename
in interfaceJackrabbitNode
- Throws:
RepositoryException
-
setMixins
public void setMixins(String[] mixinNames) throws NoSuchNodeTypeException, VersionException, ConstraintViolationException, LockException, RepositoryException
- Specified by:
setMixins
in interfaceJackrabbitNode
- Throws:
NoSuchNodeTypeException
VersionException
ConstraintViolationException
LockException
RepositoryException
-
-