org.priha.core
Class NodeImpl

java.lang.Object
  extended by org.priha.core.ItemImpl
      extended by org.priha.core.NodeImpl
All Implemented Interfaces:
java.lang.Comparable<Node>
Direct Known Subclasses:
AbstractVersion

public class NodeImpl
extends ItemImpl
implements java.lang.Comparable<Node>

Implements a Node. This is one of the most heavy classes in Priha, with a lot of stuff happening. The NodeImpl class does some basic caching for some state objects, so keeping references can be faster in some cases.


Field Summary
protected  java.lang.String m_cachedUUID
           
static QName Q_PRIHA_TMPMOVE
           
 
Fields inherited from class org.priha.core.ItemImpl
m_isNew, m_path, m_session
 
Constructor Summary
protected NodeImpl(SessionImpl session, Path path, QNodeType primaryType, QNodeDefinition nDef, boolean populateDefaults)
           
protected NodeImpl(SessionImpl session, java.lang.String path, QNodeType primaryType, QNodeDefinition nDef, boolean populateDefaults)
           
 
Method Summary
 void addMixin(java.lang.String mixinName)
           
 NodeImpl addNode(java.lang.String relPath)
           
 NodeImpl addNode(java.lang.String relPath, java.lang.String primaryNodeTypeName)
           
 boolean canAddMixin(java.lang.String mixinName)
           
 void cancelMerge(Version version)
           
 VersionImpl checkin()
           
 void checkout()
           
 int compareTo(Node nd)
           
 void doneMerge(Version version)
           
 boolean equals(java.lang.Object obj)
          We consider nodes to be equal if they have the exact same path, and all the properties are equal too.
 QPropertyDefinition findPropertyDefinition(QName propertyName, boolean multiple)
          Locates a PropertyDefinition for the given property name from the array of the mixintypes and the primary type for this Node.
 VersionImpl getBaseVersion()
           
protected  java.util.List<Path> getChildOrder()
           
 PropertyImpl getChildProperty(java.lang.String name)
           
 java.lang.String getCorrespondingNodePath(java.lang.String workspaceName)
           
 NodeDefinition getDefinition()
           
 int getIndex()
           
 QLock.Impl getLock()
           
 NodeType[] getMixinNodeTypes()
           
 NodeImpl getNode(Path absPath)
           
 NodeImpl getNode(QName name)
           
 NodeImpl getNode(java.lang.String relPath)
           
 NodeIterator getNodes()
          Returns a lazy iterator over the children of this Node.
 NodeIterator getNodes(java.lang.String namePattern)
           
 ItemImpl getPrimaryItem()
           
 QNodeType.Impl getPrimaryNodeType()
           
 QNodeType getPrimaryQNodeType()
           
 LazyPropertyIteratorImpl getProperties()
           
 PropertyIterator getProperties(java.lang.String namePattern)
           
 PropertyImpl getProperty(QName propName)
           
 PropertyImpl getProperty(java.lang.String relPath)
           
 QNodeDefinition getQDefinition()
           
 PropertyIterator getReferences()
           
 java.lang.String getUUID()
          Returns the UUID for this node.
 VersionHistoryImpl getVersionHistory()
           
 boolean hasMixinType(java.lang.String mixinType)
           
 boolean hasNode(QName name)
          Returns true, if this Node has a child with the given QName.
 boolean hasNode(java.lang.String relPath)
           
 boolean hasNodes()
           
 boolean hasProperties()
           
 boolean hasProperty(QName propName)
           
 boolean hasProperty(java.lang.String relPath)
           
 boolean hasTag(java.lang.String name)
          Returns true, if this Node has the named tag (i.e.
 boolean holdsLock()
           
protected  void internalSave()
           
 boolean isCheckedOut()
           
 boolean isLocked()
           
protected  boolean isLockedWithoutToken()
          Returns true, if this Node is locked (that is, it or it's parents are locked) but the Session which owns this Session does not hold a token to modify it.
 boolean isNode()
          
 boolean isNodeType(java.lang.String nodeTypeName)
           
 Lock lock(boolean isDeep, boolean isSessionScoped)
           
 NodeIterator merge(java.lang.String srcWorkspace, boolean bestEffort)
           
 void orderBefore(java.lang.String srcChildRelPath, java.lang.String destChildRelPath)
           
protected  PropertyImpl prepareProperty(QName name, java.lang.Object value)
          Finds a property and checks if we're supposed to remove it or not.
protected  PropertyImpl prepareProperty(java.lang.String name, java.lang.Object value)
           
protected  void preSave()
          Performs mandatory housekeeping right before saving.
 void remove()
          
 void removeMixin(java.lang.String mixinName)
           
 void removeNodeOnly()
           
protected  void removeProperty(PropertyImpl prop)
          Removes a given property from the node.
 void restore(java.lang.String versionName, boolean removeExisting)
           
 void restore(Version version, boolean removeExisting)
           
 void restore(Version version, java.lang.String relPath, boolean removeExisting)
           
 void restoreByLabel(java.lang.String versionLabel, boolean removeExisting)
           
 void sanitize()
          Assumes nothing, goes through the properties, makes sure all things are correct.
 void save()
          
protected  void setChildOrder(java.util.List<Path> list)
           
 PropertyImpl setProperty(java.lang.String name, Node value)
           
 Property setProperty(java.lang.String name, java.lang.String[] values)
           
 Property setProperty(java.lang.String name, java.lang.String[] values, int type)
           
 PropertyImpl setProperty(java.lang.String name, Value value)
           
 PropertyImpl setProperty(java.lang.String name, Value[] values)
           
 Property setProperty(java.lang.String name, Value[] values, int type)
           
 PropertyImpl setProperty(java.lang.String name, Value value, int type)
           
 void tag(java.lang.String name)
          Tag a Node with the given transient property.
 void tag(java.lang.String name, java.lang.String value)
          Tags a Node with a given transient property with a String value.
 void unlock()
           
 void update(java.lang.String srcWorkspaceName)
           
 
Methods inherited from class org.priha.core.ItemImpl
accept, enterState, getAncestor, getCreationTime, getDepth, getInternalPath, getName, getParent, getPath, getPathReference, getQName, getSession, getState, hashCode, isModified, isNew, isSame, postSave, refresh, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

Q_PRIHA_TMPMOVE

public static final QName Q_PRIHA_TMPMOVE

m_cachedUUID

protected java.lang.String m_cachedUUID
Constructor Detail

NodeImpl

protected NodeImpl(SessionImpl session,
                   Path path,
                   QNodeType primaryType,
                   QNodeDefinition nDef,
                   boolean populateDefaults)
            throws ValueFormatException,
                   VersionException,
                   LockException,
                   ConstraintViolationException,
                   RepositoryException
Throws:
ValueFormatException
VersionException
LockException
ConstraintViolationException
RepositoryException

NodeImpl

protected NodeImpl(SessionImpl session,
                   java.lang.String path,
                   QNodeType primaryType,
                   QNodeDefinition nDef,
                   boolean populateDefaults)
            throws ValueFormatException,
                   VersionException,
                   LockException,
                   ConstraintViolationException,
                   RepositoryException
Throws:
ValueFormatException
VersionException
LockException
ConstraintViolationException
RepositoryException
Method Detail

addNode

public NodeImpl addNode(java.lang.String relPath)
                 throws ItemExistsException,
                        PathNotFoundException,
                        NoSuchNodeTypeException,
                        LockException,
                        VersionException,
                        ConstraintViolationException,
                        RepositoryException
Throws:
ItemExistsException
PathNotFoundException
NoSuchNodeTypeException
LockException
VersionException
ConstraintViolationException
RepositoryException

addNode

public NodeImpl addNode(java.lang.String relPath,
                        java.lang.String primaryNodeTypeName)
                 throws ItemExistsException,
                        PathNotFoundException,
                        VersionException,
                        ConstraintViolationException,
                        LockException,
                        RepositoryException
Throws:
ItemExistsException
PathNotFoundException
VersionException
ConstraintViolationException
LockException
RepositoryException

getCorrespondingNodePath

public java.lang.String getCorrespondingNodePath(java.lang.String workspaceName)
                                          throws ItemNotFoundException,
                                                 NoSuchWorkspaceException,
                                                 AccessDeniedException,
                                                 RepositoryException
Throws:
ItemNotFoundException
NoSuchWorkspaceException
AccessDeniedException
RepositoryException

getDefinition

public NodeDefinition getDefinition()
                             throws RepositoryException
Throws:
RepositoryException

getQDefinition

public QNodeDefinition getQDefinition()

getIndex

public int getIndex()
             throws RepositoryException
Throws:
RepositoryException

getChildOrder

protected java.util.List<Path> getChildOrder()

setChildOrder

protected void setChildOrder(java.util.List<Path> list)

getNode

public NodeImpl getNode(Path absPath)
                 throws PathNotFoundException,
                        RepositoryException
Throws:
PathNotFoundException
RepositoryException

getNode

public NodeImpl getNode(java.lang.String relPath)
                 throws PathNotFoundException,
                        RepositoryException
Throws:
PathNotFoundException
RepositoryException

getNode

public NodeImpl getNode(QName name)
                 throws PathNotFoundException,
                        RepositoryException
Throws:
PathNotFoundException
RepositoryException

getNodes

public NodeIterator getNodes()
                      throws RepositoryException
Returns a lazy iterator over the children of this Node.

Throws:
RepositoryException

getNodes

public NodeIterator getNodes(java.lang.String namePattern)
                      throws RepositoryException
Throws:
RepositoryException

getPrimaryItem

public ItemImpl getPrimaryItem()
                        throws ItemNotFoundException,
                               RepositoryException
Throws:
ItemNotFoundException
RepositoryException

getPrimaryQNodeType

public QNodeType getPrimaryQNodeType()

getPrimaryNodeType

public QNodeType.Impl getPrimaryNodeType()
                                  throws RepositoryException
Throws:
RepositoryException

getProperties

public LazyPropertyIteratorImpl getProperties()
                                       throws RepositoryException
Throws:
RepositoryException

getProperties

public PropertyIterator getProperties(java.lang.String namePattern)
                               throws RepositoryException
Throws:
RepositoryException

getChildProperty

public PropertyImpl getChildProperty(java.lang.String name)
                              throws RepositoryException
Throws:
RepositoryException

getProperty

public PropertyImpl getProperty(QName propName)
                         throws PathNotFoundException,
                                RepositoryException
Throws:
PathNotFoundException
RepositoryException

getProperty

public PropertyImpl getProperty(java.lang.String relPath)
                         throws PathNotFoundException,
                                RepositoryException
Throws:
PathNotFoundException
RepositoryException

getReferences

public PropertyIterator getReferences()
                               throws RepositoryException
Throws:
RepositoryException

getUUID

public java.lang.String getUUID()
                         throws UnsupportedRepositoryOperationException,
                                RepositoryException
Returns the UUID for this node. Utilizes an internal cache for the UUID, so is fast after the first call.

Throws:
UnsupportedRepositoryOperationException
RepositoryException

getVersionHistory

public VersionHistoryImpl getVersionHistory()
                                     throws UnsupportedRepositoryOperationException,
                                            RepositoryException
Throws:
UnsupportedRepositoryOperationException
RepositoryException

hasNode

public boolean hasNode(java.lang.String relPath)
                throws RepositoryException
Throws:
RepositoryException

hasNode

public boolean hasNode(QName name)
                throws RepositoryException
Returns true, if this Node has a child with the given QName.

Parameters:
name - A QName.
Returns:
True, if there is a child by this name.
Throws:
RepositoryException

hasNodes

public boolean hasNodes()
                 throws RepositoryException
Throws:
RepositoryException

hasProperties

public boolean hasProperties()
                      throws RepositoryException
Throws:
RepositoryException

hasProperty

public boolean hasProperty(QName propName)
                    throws RepositoryException
Throws:
RepositoryException

hasProperty

public boolean hasProperty(java.lang.String relPath)
                    throws RepositoryException
Throws:
RepositoryException

isNodeType

public boolean isNodeType(java.lang.String nodeTypeName)
                   throws RepositoryException
Throws:
RepositoryException

orderBefore

public void orderBefore(java.lang.String srcChildRelPath,
                        java.lang.String destChildRelPath)
                 throws UnsupportedRepositoryOperationException,
                        VersionException,
                        ConstraintViolationException,
                        ItemNotFoundException,
                        LockException,
                        RepositoryException
Throws:
UnsupportedRepositoryOperationException
VersionException
ConstraintViolationException
ItemNotFoundException
LockException
RepositoryException

prepareProperty

protected PropertyImpl prepareProperty(java.lang.String name,
                                       java.lang.Object value)
                                throws PathNotFoundException,
                                       RepositoryException
Throws:
PathNotFoundException
RepositoryException

prepareProperty

protected PropertyImpl prepareProperty(QName name,
                                       java.lang.Object value)
                                throws PathNotFoundException,
                                       RepositoryException
Finds a property and checks if we're supposed to remove it or not. It also creates the property if it does not exist. The property value itself is empty until the property is loaded with loadValue()

Parameters:
name -
value -
Returns:
Throws:
PathNotFoundException
RepositoryException

removeProperty

protected void removeProperty(PropertyImpl prop)
                       throws RepositoryException
Removes a given property from the node.

Parameters:
prop -
Throws:
RepositoryException

setProperty

public PropertyImpl setProperty(java.lang.String name,
                                Value value)
                         throws ValueFormatException,
                                VersionException,
                                LockException,
                                ConstraintViolationException,
                                RepositoryException
Throws:
ValueFormatException
VersionException
LockException
ConstraintViolationException
RepositoryException

setProperty

public PropertyImpl setProperty(java.lang.String name,
                                Value value,
                                int type)
                         throws ValueFormatException,
                                VersionException,
                                LockException,
                                ConstraintViolationException,
                                RepositoryException
Throws:
ValueFormatException
VersionException
LockException
ConstraintViolationException
RepositoryException

setProperty

public PropertyImpl setProperty(java.lang.String name,
                                Value[] values)
                         throws ValueFormatException,
                                VersionException,
                                LockException,
                                ConstraintViolationException,
                                RepositoryException
Throws:
ValueFormatException
VersionException
LockException
ConstraintViolationException
RepositoryException

setProperty

public Property setProperty(java.lang.String name,
                            Value[] values,
                            int type)
                     throws ValueFormatException,
                            VersionException,
                            LockException,
                            ConstraintViolationException,
                            RepositoryException
Throws:
ValueFormatException
VersionException
LockException
ConstraintViolationException
RepositoryException

setProperty

public Property setProperty(java.lang.String name,
                            java.lang.String[] values)
                     throws ValueFormatException,
                            VersionException,
                            LockException,
                            ConstraintViolationException,
                            RepositoryException
Throws:
ValueFormatException
VersionException
LockException
ConstraintViolationException
RepositoryException

setProperty

public Property setProperty(java.lang.String name,
                            java.lang.String[] values,
                            int type)
                     throws ValueFormatException,
                            VersionException,
                            LockException,
                            ConstraintViolationException,
                            RepositoryException
Throws:
ValueFormatException
VersionException
LockException
ConstraintViolationException
RepositoryException

tag

public void tag(java.lang.String name)
         throws ValueFormatException,
                VersionException,
                LockException,
                ConstraintViolationException,
                RepositoryException
Tag a Node with the given transient property. Priha uses this internally to store metadata (or a property) which is never saved. Transient properties are never saved.

Parameters:
name -
Throws:
ValueFormatException
VersionException
LockException
ConstraintViolationException
RepositoryException
See Also:
PropertyImpl.isTransient()

tag

public void tag(java.lang.String name,
                java.lang.String value)
         throws ValueFormatException,
                VersionException,
                LockException,
                ConstraintViolationException,
                RepositoryException
Tags a Node with a given transient property with a String value. In practice, this sets a String property and marks it transient (i.e. never saved).

Parameters:
name - Name of the property to set
value - Value for the property
Throws:
ValueFormatException
VersionException
LockException
ConstraintViolationException
RepositoryException
See Also:
PropertyImpl.isTransient()

hasTag

public boolean hasTag(java.lang.String name)
               throws RepositoryException
Returns true, if this Node has the named tag (i.e. it has a transient Property by this name).

Parameters:
name - Tag to check for
Returns:
True, if the tag exists. False otherwise.
Throws:
RepositoryException - If the Repository is b0rken.
See Also:
PropertyImpl.isTransient()

setProperty

public PropertyImpl setProperty(java.lang.String name,
                                Node value)
                         throws ValueFormatException,
                                VersionException,
                                LockException,
                                ConstraintViolationException,
                                RepositoryException
Throws:
ValueFormatException
VersionException
LockException
ConstraintViolationException
RepositoryException

update

public void update(java.lang.String srcWorkspaceName)
            throws NoSuchWorkspaceException,
                   AccessDeniedException,
                   LockException,
                   InvalidItemStateException,
                   RepositoryException
Throws:
NoSuchWorkspaceException
AccessDeniedException
LockException
InvalidItemStateException
RepositoryException

isNode

public boolean isNode()
Description copied from class: ItemImpl

Overrides:
isNode in class ItemImpl

internalSave

protected void internalSave()
                     throws RepositoryException
Throws:
RepositoryException

save

public void save()
          throws AccessDeniedException,
                 ItemExistsException,
                 ConstraintViolationException,
                 InvalidItemStateException,
                 ReferentialIntegrityException,
                 VersionException,
                 LockException,
                 NoSuchNodeTypeException,
                 RepositoryException
Description copied from class: ItemImpl

Specified by:
save in class ItemImpl
Throws:
AccessDeniedException
ItemExistsException
ConstraintViolationException
InvalidItemStateException
ReferentialIntegrityException
VersionException
LockException
NoSuchNodeTypeException
RepositoryException

compareTo

public int compareTo(Node nd)
Specified by:
compareTo in interface java.lang.Comparable<Node>

remove

public void remove()
            throws VersionException,
                   LockException,
                   ConstraintViolationException,
                   RepositoryException
Description copied from class: ItemImpl

Specified by:
remove in class ItemImpl
Throws:
VersionException
LockException
ConstraintViolationException
RepositoryException

removeNodeOnly

public void removeNodeOnly()
                    throws VersionException,
                           LockException,
                           ConstraintViolationException,
                           RepositoryException
Throws:
VersionException
LockException
ConstraintViolationException
RepositoryException

findPropertyDefinition

public QPropertyDefinition findPropertyDefinition(QName propertyName,
                                                  boolean multiple)
                                           throws RepositoryException
Locates a PropertyDefinition for the given property name from the array of the mixintypes and the primary type for this Node.

Parameters:
propertyName - The QName of the property to look for
multiple - Is this a multiproperty or a single property?
Returns:
A valid PropertyDefinition, or null, if it cannot be located.
Throws:
RepositoryException - If mixin node types cannot be determined.

sanitize

public void sanitize()
              throws RepositoryException
Assumes nothing, goes through the properties, makes sure all things are correct.

Throws:
RepositoryException

equals

public boolean equals(java.lang.Object obj)
We consider nodes to be equal if they have the exact same path, and all the properties are equal too.

Overrides:
equals in class java.lang.Object

preSave

protected void preSave()
                throws RepositoryException
Description copied from class: ItemImpl
Performs mandatory housekeeping right before saving.

Overrides:
preSave in class ItemImpl
Throws:
RepositoryException - If something goes wrong

addMixin

public void addMixin(java.lang.String mixinName)
              throws NoSuchNodeTypeException,
                     VersionException,
                     ConstraintViolationException,
                     LockException,
                     RepositoryException
Throws:
NoSuchNodeTypeException
VersionException
ConstraintViolationException
LockException
RepositoryException

canAddMixin

public boolean canAddMixin(java.lang.String mixinName)
                    throws NoSuchNodeTypeException,
                           RepositoryException
Throws:
NoSuchNodeTypeException
RepositoryException

hasMixinType

public boolean hasMixinType(java.lang.String mixinType)

getMixinNodeTypes

public NodeType[] getMixinNodeTypes()
                             throws RepositoryException
Throws:
RepositoryException

removeMixin

public void removeMixin(java.lang.String mixinName)
                 throws NoSuchNodeTypeException,
                        VersionException,
                        ConstraintViolationException,
                        LockException,
                        RepositoryException
Throws:
NoSuchNodeTypeException
VersionException
ConstraintViolationException
LockException
RepositoryException

lock

public Lock lock(boolean isDeep,
                 boolean isSessionScoped)
          throws UnsupportedRepositoryOperationException,
                 LockException,
                 AccessDeniedException,
                 InvalidItemStateException,
                 RepositoryException
Throws:
UnsupportedRepositoryOperationException
LockException
AccessDeniedException
InvalidItemStateException
RepositoryException

unlock

public void unlock()
            throws UnsupportedRepositoryOperationException,
                   LockException,
                   AccessDeniedException,
                   InvalidItemStateException,
                   RepositoryException
Throws:
UnsupportedRepositoryOperationException
LockException
AccessDeniedException
InvalidItemStateException
RepositoryException

getLock

public QLock.Impl getLock()
                   throws UnsupportedRepositoryOperationException,
                          LockException,
                          AccessDeniedException,
                          RepositoryException
Throws:
UnsupportedRepositoryOperationException
LockException
AccessDeniedException
RepositoryException

holdsLock

public boolean holdsLock()
                  throws RepositoryException
Throws:
RepositoryException

isLocked

public boolean isLocked()
                 throws RepositoryException
Throws:
RepositoryException

isLockedWithoutToken

protected boolean isLockedWithoutToken()
Returns true, if this Node is locked (that is, it or it's parents are locked) but the Session which owns this Session does not hold a token to modify it.

Returns:
True, if you cannot modify this Node due to missing token.

isCheckedOut

public boolean isCheckedOut()
                     throws RepositoryException
Throws:
RepositoryException

cancelMerge

public void cancelMerge(Version version)
                 throws VersionException,
                        InvalidItemStateException,
                        UnsupportedRepositoryOperationException,
                        RepositoryException
Throws:
VersionException
InvalidItemStateException
UnsupportedRepositoryOperationException
RepositoryException

checkin

public VersionImpl checkin()
                    throws VersionException,
                           UnsupportedRepositoryOperationException,
                           InvalidItemStateException,
                           LockException,
                           RepositoryException
Throws:
VersionException
UnsupportedRepositoryOperationException
InvalidItemStateException
LockException
RepositoryException

checkout

public void checkout()
              throws UnsupportedRepositoryOperationException,
                     LockException,
                     RepositoryException
Throws:
UnsupportedRepositoryOperationException
LockException
RepositoryException

doneMerge

public void doneMerge(Version version)
               throws VersionException,
                      InvalidItemStateException,
                      UnsupportedRepositoryOperationException,
                      RepositoryException
Throws:
VersionException
InvalidItemStateException
UnsupportedRepositoryOperationException
RepositoryException

getBaseVersion

public VersionImpl getBaseVersion()
                           throws UnsupportedRepositoryOperationException,
                                  RepositoryException
Throws:
UnsupportedRepositoryOperationException
RepositoryException

restore

public void restore(java.lang.String versionName,
                    boolean removeExisting)
             throws VersionException,
                    ItemExistsException,
                    UnsupportedRepositoryOperationException,
                    LockException,
                    InvalidItemStateException,
                    RepositoryException
Throws:
VersionException
ItemExistsException
UnsupportedRepositoryOperationException
LockException
InvalidItemStateException
RepositoryException

restore

public void restore(Version version,
                    boolean removeExisting)
             throws VersionException,
                    ItemExistsException,
                    UnsupportedRepositoryOperationException,
                    LockException,
                    RepositoryException
Throws:
VersionException
ItemExistsException
UnsupportedRepositoryOperationException
LockException
RepositoryException

restore

public void restore(Version version,
                    java.lang.String relPath,
                    boolean removeExisting)
             throws PathNotFoundException,
                    ItemExistsException,
                    VersionException,
                    ConstraintViolationException,
                    UnsupportedRepositoryOperationException,
                    LockException,
                    InvalidItemStateException,
                    RepositoryException
Throws:
PathNotFoundException
ItemExistsException
VersionException
ConstraintViolationException
UnsupportedRepositoryOperationException
LockException
InvalidItemStateException
RepositoryException

restoreByLabel

public void restoreByLabel(java.lang.String versionLabel,
                           boolean removeExisting)
                    throws VersionException,
                           ItemExistsException,
                           UnsupportedRepositoryOperationException,
                           LockException,
                           InvalidItemStateException,
                           RepositoryException
Throws:
VersionException
ItemExistsException
UnsupportedRepositoryOperationException
LockException
InvalidItemStateException
RepositoryException

merge

public NodeIterator merge(java.lang.String srcWorkspace,
                          boolean bestEffort)
                   throws NoSuchWorkspaceException,
                          AccessDeniedException,
                          MergeException,
                          LockException,
                          InvalidItemStateException,
                          RepositoryException
Throws:
NoSuchWorkspaceException
AccessDeniedException
MergeException
LockException
InvalidItemStateException
RepositoryException