org.apache.jackrabbit.spi2jcr
Class RepositoryServiceImpl

java.lang.Object
  extended by org.apache.jackrabbit.spi2jcr.RepositoryServiceImpl
All Implemented Interfaces:
RepositoryService

public class RepositoryServiceImpl
extends Object
implements RepositoryService

RepositoryServiceImpl implements a repository service on top of a JCR Repository.


Constructor Summary
RepositoryServiceImpl(Repository repository, BatchReadConfig batchReadConfig)
           
RepositoryServiceImpl(Repository repository, BatchReadConfig batchReadConfig, int itemInfoCacheSize)
          Creates a new repository service based on the given repository.
 
Method Summary
 void addVersionLabel(SessionInfo sessionInfo, NodeId versionHistoryId, NodeId versionId, Name label, boolean moveLabel)
          Add the given version label in the persistent layer.
 NodeId checkin(SessionInfo sessionInfo, NodeId nodeId)
          Performs a checkin for the Node identified by the given NodeId.
 void checkout(SessionInfo sessionInfo, NodeId nodeId)
          Performs a checkout for the Node identified by the given NodeId.
 void checkout(SessionInfo sessionInfo, NodeId nodeId, NodeId activityId)
          Performs a checkout for the Node identified by the given NodeId and for activity identified by the specified activityId.
 NodeId checkpoint(SessionInfo sessionInfo, NodeId nodeId)
          Performs a checkpoint for the Node identified by the given NodeId.
 NodeId checkpoint(SessionInfo sessionInfo, NodeId nodeId, NodeId activityId)
          Performs a checkpoint for the Node identified by the given NodeId.
 String[] checkQueryStatement(SessionInfo sessionInfo, String statement, String language, Map<String,String> namespaces)
          Checks if the query statement is valid according to the specified query language and returns the bind variable names found in the query statement.
 void clone(SessionInfo sessionInfo, String srcWorkspaceName, NodeId srcNodeId, NodeId destParentNodeId, Name destName, boolean removeExisting)
          Clone the subtree identified by the given srcNodeId in workspace named srcWorkspaceName to the destination in the workspace specified by the given SessionInfo.
 void copy(SessionInfo sessionInfo, String srcWorkspaceName, NodeId srcNodeId, NodeId destParentNodeId, Name destName)
          Clone the subtree identified by the given srcNodeId in workspace named srcWorkspaceName to the destination in the workspace specified by the given SessionInfo.
 NodeId createActivity(SessionInfo sessionInfo, String title)
          Create a new activity.
 Batch createBatch(SessionInfo sessionInfo, ItemId itemId)
          Indicates the start of a set of operations that cause modifications on the underlying persistence layer.
 NodeId createConfiguration(SessionInfo sessionInfo, NodeId nodeId)
          
 EventFilter createEventFilter(SessionInfo sessionInfo, int eventTypes, Path absPath, boolean isDeep, String[] uuid, Name[] nodeTypeName, boolean noLocal)
          Creates an event filter.
 Subscription createSubscription(SessionInfo sessionInfo, EventFilter[] filters)
          Creates a new Subscription for events with an initial set of EventFilters.
 void createWorkspace(SessionInfo sessionInfo, String name, String srcWorkspaceName)
          Create a new workspace with the specified name.
 void deleteWorkspace(SessionInfo sessionInfo, String name)
          Deletes the workspace with the specified name.
 void dispose(SessionInfo sessionInfo)
          Indicates to the RepositoryService, that the given SessionInfo will not be used any more.
 void dispose(Subscription subscription)
          Indicates that the passed subscription is no longer needed.
 QueryInfo executeQuery(SessionInfo sessionInfo, String statement, String language, Map<String,String> namespaces, long limit, long offset, Map<String,QValue> values)
          Execute the given query statement with the specified query language.
 Iterator<ChildInfo> getChildInfos(SessionInfo sessionInfo, NodeId parentId)
          Returns an Iterator of ChildInfos present on the Node represented by the given parentId.
 EventBundle getEvents(SessionInfo sessionInfo, EventFilter filter, long after)
          Returns events from the EventJournal after a given point in time.
 EventBundle[] getEvents(Subscription subscription, long timeout)
          Retrieves the events that occurred since the last call to this method for the passed subscription.
 IdFactory getIdFactory()
          Return the IdFactory.
 ItemInfoCache getItemInfoCache(SessionInfo sessionInfo)
          Returns a ItemInfoCache for the given SessionInfo.
 Iterator<? extends ItemInfo> getItemInfos(SessionInfo sessionInfo, NodeId nodeId)
          Method used to 'batch-read' from the persistent storage.
 LockInfo getLockInfo(SessionInfo sessionInfo, NodeId nodeId)
          Returns the lock information that applies to Node identified by the given NodeId or null.
 NameFactory getNameFactory()
          Return the NameFactory.
 String getNamespacePrefix(SessionInfo sessionInfo, String uri)
          Returns the namespace prefix for the given namespace uri.
 String getNamespaceURI(SessionInfo sessionInfo, String prefix)
          Returns the namespace URI for the given namespace prefix.
 QNodeDefinition getNodeDefinition(SessionInfo sessionInfo, NodeId nodeId)
          Returns the QNodeDefinition for the Node identified by the given id.
 NodeInfo getNodeInfo(SessionInfo sessionInfo, NodeId nodeId)
          Retrieve the NodeInfo for the node identified by the given NodeId.
 PathFactory getPathFactory()
          Return the PathFactory.
 QPropertyDefinition getPropertyDefinition(SessionInfo sessionInfo, PropertyId propertyId)
          Returns the QPropertyDefinition for the Property identified by the given id.
 PropertyInfo getPropertyInfo(SessionInfo sessionInfo, PropertyId propertyId)
          Returns the PropertyInfo for the Property identified by the given id.
 Iterator<QNodeTypeDefinition> getQNodeTypeDefinitions(SessionInfo sessionInfo)
          Retrieve the QNodeTypeDefinitions of all registered nodetypes.
 Iterator<QNodeTypeDefinition> getQNodeTypeDefinitions(SessionInfo sessionInfo, Name[] nodetypeNames)
          Retrieve QNodeTypeDefinitions for the given names.
 QValueFactory getQValueFactory()
          Return the QValueFactory defined with this SPI implementation.
 Iterator<PropertyId> getReferences(SessionInfo sessionInfo, NodeId nodeId, Name propertyName, boolean weakReferences)
          Returns the Ids of the properties that are referencing the node identified by the given nodeId.
 Map<String,String> getRegisteredNamespaces(SessionInfo sessionInfo)
          Retrieve all registered namespaces.
 Map<String,QValue[]> getRepositoryDescriptors()
          Returns all property descriptors that can be exposed with the Repository implementation built on top of this RepositoryService.
 String[] getSupportedQueryLanguages(SessionInfo sessionInfo)
          Returns a String array identifying all query languages supported by this SPI implementation.
 String[] getWorkspaceNames(SessionInfo sessionInfo)
          Return all workspace names available for the given SessionInfo.
 SessionInfo impersonate(SessionInfo sessionInfo, Credentials credentials)
          Returns a SessionInfo that will be used by other methods on the RepositoryService.
 void importXml(SessionInfo sessionInfo, NodeId parentId, InputStream xmlStream, int uuidBehaviour)
          Imports the data present in the given InputStream into the persistent layer.
 boolean isGranted(SessionInfo sessionInfo, ItemId itemId, String[] actions)
          Returns true if all actions defined in the specified array are granted to given SessionInfo.
 LockInfo lock(SessionInfo sessionInfo, NodeId nodeId, boolean deep, boolean sessionScoped)
          Create a lock on the Node identified by the given id.
 LockInfo lock(SessionInfo sessionInfo, NodeId nodeId, boolean deep, boolean sessionScoped, long timeoutHint, String ownerHint)
          Create a lock on the Node identified by the given id.
 Iterator<NodeId> merge(SessionInfo sessionInfo, NodeId nodeId, String srcWorkspaceName, boolean bestEffort)
          Merge the node identified by the given NodeId and its subtree with the corresponding node present in the workspace with the name of srcWorkspaceName.
 Iterator<NodeId> merge(SessionInfo sessionInfo, NodeId nodeId, String srcWorkspaceName, boolean bestEffort, boolean isShallow)
          Merge the node identified by the given NodeId and its subtree with the corresponding node present in the workspace with the name of srcWorkspaceName.
 Iterator<NodeId> mergeActivity(SessionInfo sessionInfo, NodeId activityId)
          Merges the activity identified by the given activityId into the workspace the specified sessionInfo has been created for.
 void move(SessionInfo sessionInfo, NodeId srcNodeId, NodeId destParentNodeId, Name destName)
          Moves the node identified by the given srcNodeId (and its entire subtree) to the new location defined by destParentNodeId and a new name (destName).
 SessionInfo obtain(Credentials credentials, String workspaceName)
          Returns a SessionInfo that will be used by other methods on the RepositoryService.
 SessionInfo obtain(SessionInfo sessionInfo, String workspaceName)
          Returns a new SessionInfo for the given workspace name that will be used by other methods on the RepositoryService.
 void refreshLock(SessionInfo sessionInfo, NodeId nodeId)
          Explicit refresh of an existing lock.
 void registerNamespace(SessionInfo sessionInfo, String prefix, String uri)
          Register a new namespace with the given prefix and uri.
 void registerNodeTypes(SessionInfo sessionInfo, QNodeTypeDefinition[] nodeTypeDefinitions, boolean allowUpdate)
          Registers the node types with the specified QNodeTypeDefinitions.
 void removeActivity(SessionInfo sessionInfo, NodeId activityId)
          Removes the activity identified by the specified activityId.
 void removeVersion(SessionInfo sessionInfo, NodeId versionHistoryId, NodeId versionId)
          Remove the version inditified by the specified versionId.
 void removeVersionLabel(SessionInfo sessionInfo, NodeId versionHistoryId, NodeId versionId, Name label)
          Remove the given version label in the persistent layer.
 void resolveMergeConflict(SessionInfo sessionInfo, NodeId nodeId, NodeId[] mergeFailedIds, NodeId[] predecessorIds)
          Resolve an existing merge conflict present with the node identified by the given NodeId.
 void restore(SessionInfo sessionInfo, NodeId[] versionIds, boolean removeExisting)
          Restore multiple versions at once.
 void restore(SessionInfo sessionInfo, NodeId nodeId, NodeId versionId, boolean removeExisting)
          Restores the node identified by nodeId to the state defined by the version with the specified versionId.
 void submit(Batch batch)
          Completes the given Batch or discard all the previous modifications.
 void unlock(SessionInfo sessionInfo, NodeId nodeId)
          Releases the lock on the Node identified by the given NodeId.
 void unregisterNamespace(SessionInfo sessionInfo, String uri)
          Unregister the namespace identified by the given uri
 void unregisterNodeTypes(SessionInfo sessionInfo, Name[] nodeTypeNames)
          Unregisters the node types with the specified names.
 void update(SessionInfo sessionInfo, NodeId nodeId, String srcWorkspaceName)
          Updates the node identified by the given NodeId replacing it (an the complete subtree) with a clone of its corresponding node present in the workspace with the given srcWorkspaceName.
 void updateEventFilters(Subscription subscription, EventFilter[] filters)
          Updates events filters on the subscription.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RepositoryServiceImpl

public RepositoryServiceImpl(Repository repository,
                             BatchReadConfig batchReadConfig)

RepositoryServiceImpl

public RepositoryServiceImpl(Repository repository,
                             BatchReadConfig batchReadConfig,
                             int itemInfoCacheSize)
Creates a new repository service based on the given repository.

Parameters:
repository - a JCR repository instance.
batchReadConfig - getNodeInfo(SessionInfo, NodeId).
Method Detail

getIdFactory

public IdFactory getIdFactory()
Return the IdFactory.

Specified by:
getIdFactory in interface RepositoryService
Returns:
The IdFactory.

getNameFactory

public NameFactory getNameFactory()
Return the NameFactory.

Specified by:
getNameFactory in interface RepositoryService
Returns:
The NameFactory.

getPathFactory

public PathFactory getPathFactory()
Return the PathFactory.

Specified by:
getPathFactory in interface RepositoryService
Returns:
The PathFactory.

getQValueFactory

public QValueFactory getQValueFactory()
Return the QValueFactory defined with this SPI implementation.

Specified by:
getQValueFactory in interface RepositoryService
Returns:
The QValueFactory.

getItemInfoCache

public ItemInfoCache getItemInfoCache(SessionInfo sessionInfo)
                               throws RepositoryException
Returns a ItemInfoCache for the given SessionInfo.

Specified by:
getItemInfoCache in interface RepositoryService
Returns:
Throws:
RepositoryException

getRepositoryDescriptors

public Map<String,QValue[]> getRepositoryDescriptors()
                                              throws RepositoryException
Returns all property descriptors that can be exposed with the Repository implementation built on top of this RepositoryService.

Specified by:
getRepositoryDescriptors in interface RepositoryService
Returns:
key-value pairs for repository descriptor keys and values.
Throws:
RepositoryException
See Also:
Repository.getDescriptorKeys(), Repository.getDescriptor(String)

obtain

public SessionInfo obtain(Credentials credentials,
                          String workspaceName)
                   throws LoginException,
                          NoSuchWorkspaceException,
                          RepositoryException
Returns a SessionInfo that will be used by other methods on the RepositoryService. An implementation may choose to authenticate the user using the supplied credentials.

Specified by:
obtain in interface RepositoryService
Parameters:
credentials - the credentials of the user.
workspaceName - the name of the workspace the SessionInfo should be built for. If the specified workspaceName is null the implementation should select a default workspace.
Returns:
a SessionInfo if authentication was successful.
Throws:
LoginException - if authentication of the user fails.
NoSuchWorkspaceException - if the specified workspaceName is not recognized.
RepositoryException - if an error occurs.

obtain

public SessionInfo obtain(SessionInfo sessionInfo,
                          String workspaceName)
                   throws LoginException,
                          NoSuchWorkspaceException,
                          RepositoryException
Returns a new SessionInfo for the given workspace name that will be used by other methods on the RepositoryService.

Specified by:
obtain in interface RepositoryService
Parameters:
sessionInfo - for another workspace
workspaceName - the name of the workspace the new SessionInfo should be built for. If the specified workspaceName is null the implementation should select a default workspace.
Returns:
a SessionInfo if authentication was successful.
Throws:
LoginException - if authentication of the user fails.
NoSuchWorkspaceException - if the specified workspaceName is not recognized.
RepositoryException - if an error occurs.

impersonate

public SessionInfo impersonate(SessionInfo sessionInfo,
                               Credentials credentials)
                        throws LoginException,
                               RepositoryException
Returns a SessionInfo that will be used by other methods on the RepositoryService.

Specified by:
impersonate in interface RepositoryService
Returns:
a SessionInfo if impersonate was successful.
Throws:
LoginException
RepositoryException
See Also:
Session.impersonate(javax.jcr.Credentials)

dispose

public void dispose(SessionInfo sessionInfo)
             throws RepositoryException
Indicates to the RepositoryService, that the given SessionInfo will not be used any more.

Specified by:
dispose in interface RepositoryService
Throws:
RepositoryException

getWorkspaceNames

public String[] getWorkspaceNames(SessionInfo sessionInfo)
                           throws RepositoryException
Return all workspace names available for the given SessionInfo.

Specified by:
getWorkspaceNames in interface RepositoryService
Returns:
An array of workspace names.
Throws:
RepositoryException
See Also:
Workspace.getAccessibleWorkspaceNames(), Workspace.getName()

isGranted

public boolean isGranted(SessionInfo sessionInfo,
                         ItemId itemId,
                         String[] actions)
                  throws RepositoryException
Returns true if all actions defined in the specified array are granted to given SessionInfo. False otherwise.

Specified by:
isGranted in interface RepositoryService
Returns:
true if the session with the given SessionInfo has the specified rights for the given item.
Throws:
RepositoryException
See Also:
Session.checkPermission(String, String)

getNodeDefinition

public QNodeDefinition getNodeDefinition(SessionInfo sessionInfo,
                                         NodeId nodeId)
                                  throws RepositoryException
Returns the QNodeDefinition for the Node identified by the given id. This method should only be used if the caller is not able to unambiguously determine the applicable definition from the parent node type definition or if no parent exists (i.e. for the root).

Specified by:
getNodeDefinition in interface RepositoryService
Returns:
The node definition applicable to the Node identified by the given id.
Throws:
RepositoryException

getPropertyDefinition

public QPropertyDefinition getPropertyDefinition(SessionInfo sessionInfo,
                                                 PropertyId propertyId)
                                          throws RepositoryException
Returns the QPropertyDefinition for the Property identified by the given id. This method should only be used if the caller is not able to unambiguously determine the applicable definition from the parent node type definition.

Specified by:
getPropertyDefinition in interface RepositoryService
Returns:
The property definition applicable for the Property identified by the given id.
Throws:
RepositoryException

getNodeInfo

public NodeInfo getNodeInfo(SessionInfo sessionInfo,
                            NodeId nodeId)
                     throws ItemNotFoundException,
                            RepositoryException
Retrieve the NodeInfo for the node identified by the given NodeId. See RepositoryService.getItemInfos(SessionInfo, NodeId) for a similar method that in addition may return ItemInfos of children Items.

Specified by:
getNodeInfo in interface RepositoryService
Returns:
The NodeInfo for the node identified by the given id.
Throws:
ItemNotFoundException
RepositoryException
See Also:
Session.getItem(String), Node.getNode(String), VersionHistory.getAllVersions(), VersionHistory.getVersion(String), VersionHistory.getVersionByLabel(String), VersionHistory.getRootVersion(), Node.getBaseVersion(), Node.getVersionHistory(), Version.getContainingHistory()

getItemInfos

public Iterator<? extends ItemInfo> getItemInfos(SessionInfo sessionInfo,
                                                 NodeId nodeId)
                                          throws ItemNotFoundException,
                                                 RepositoryException
Method used to 'batch-read' from the persistent storage. It returns the NodeInfo for the given NodeId as the first element in the Iterator. In addition the iterator may contain arbitrary ItemInfos.

Specified by:
getItemInfos in interface RepositoryService
Returns:
An Iterator of ItemInfos containing at least a single element: the NodeInfo that represents the Node identified by the given NodeId. If the Iterator contains multiple elements, the first is expected to represent the Node identified by the given NodeId.
Throws:
ItemNotFoundException
RepositoryException
See Also:
Session.getItem(String), Node.getNode(String), VersionHistory.getAllVersions(), VersionHistory.getVersion(String), VersionHistory.getVersionByLabel(String), VersionHistory.getRootVersion(), Node.getBaseVersion(), Node.getVersionHistory(), Version.getContainingHistory()

getChildInfos

public Iterator<ChildInfo> getChildInfos(SessionInfo sessionInfo,
                                         NodeId parentId)
                                  throws ItemNotFoundException,
                                         RepositoryException
Returns an Iterator of ChildInfos present on the Node represented by the given parentId.

Specified by:
getChildInfos in interface RepositoryService
Returns:
An Iterator of ChildInfos present on the Node represented by the given parentId.
Throws:
ItemNotFoundException
RepositoryException

getReferences

public Iterator<PropertyId> getReferences(SessionInfo sessionInfo,
                                          NodeId nodeId,
                                          Name propertyName,
                                          boolean weakReferences)
                                   throws ItemNotFoundException,
                                          RepositoryException
Returns the Ids of the properties that are referencing the node identified by the given nodeId. If weakReferences is true the ids of WEAKREFERENCE properties are returned, otherwise the property must be of type REFERENCE.

Specified by:
getReferences in interface RepositoryService
propertyName - name filter of referring properties to be returned; if null then all references are returned.
weakReferences - If true the properties must be of type PropertyType.WEAKREFERENCE, otherwise of type PropertyType.REFERENCE.
Returns:
An Iterator of Ids of the properties that are referencing the node identified by the given nodeId or an empty iterator if the node is not eferenceable or no references exist.
Throws:
ItemNotFoundException
RepositoryException
See Also:
PropertyInfo.getId()

getPropertyInfo

public PropertyInfo getPropertyInfo(SessionInfo sessionInfo,
                                    PropertyId propertyId)
                             throws ItemNotFoundException,
                                    RepositoryException
Returns the PropertyInfo for the Property identified by the given id.

Specified by:
getPropertyInfo in interface RepositoryService
Returns:
The PropertyInfo for the Property identified by the given id.
Throws:
ItemNotFoundException
RepositoryException
See Also:
Session.getItem(String), Node.getProperty(String)

createBatch

public Batch createBatch(SessionInfo sessionInfo,
                         ItemId itemId)
                  throws RepositoryException
Indicates the start of a set of operations that cause modifications on the underlying persistence layer. All modification called on the Batch must be executed at once or non must be executed upon calling RepositoryService.submit(Batch).

Specified by:
createBatch in interface RepositoryService
itemId - Id of the Item that is a common ancestor of all Items affected upon batch execution. This Item might itself be modified within the scope of the Batch.
Returns:
A Batch indicating the start of a set of transient modifications that will be execute at once upon RepositoryService.submit(Batch).
Throws:
RepositoryException
See Also:
Item.save(), Session.save(), Batch

submit

public void submit(Batch batch)
            throws PathNotFoundException,
                   ItemNotFoundException,
                   NoSuchNodeTypeException,
                   ValueFormatException,
                   VersionException,
                   LockException,
                   ConstraintViolationException,
                   AccessDeniedException,
                   UnsupportedRepositoryOperationException,
                   RepositoryException
Completes the given Batch or discard all the previous modifications. See RepositoryService.createBatch(SessionInfo,ItemId) for additional information regarding batch creation.

Specified by:
submit in interface RepositoryService
Throws:
PathNotFoundException
ItemNotFoundException
NoSuchNodeTypeException
ValueFormatException
VersionException
LockException
ConstraintViolationException
AccessDeniedException
UnsupportedRepositoryOperationException
RepositoryException
See Also:
Batch

importXml

public void importXml(SessionInfo sessionInfo,
                      NodeId parentId,
                      InputStream xmlStream,
                      int uuidBehaviour)
               throws ItemExistsException,
                      PathNotFoundException,
                      VersionException,
                      ConstraintViolationException,
                      LockException,
                      AccessDeniedException,
                      UnsupportedRepositoryOperationException,
                      RepositoryException
Imports the data present in the given InputStream into the persistent layer. Note, that the implemenation is responsible for validating the data presented and for the integrity of the repository upon completion.

Specified by:
importXml in interface RepositoryService
Throws:
ItemExistsException
PathNotFoundException
VersionException
ConstraintViolationException
LockException
AccessDeniedException
UnsupportedRepositoryOperationException
RepositoryException
See Also:
Workspace.importXML(String, java.io.InputStream, int)

move

public void move(SessionInfo sessionInfo,
                 NodeId srcNodeId,
                 NodeId destParentNodeId,
                 Name destName)
          throws ItemExistsException,
                 PathNotFoundException,
                 VersionException,
                 ConstraintViolationException,
                 LockException,
                 AccessDeniedException,
                 UnsupportedRepositoryOperationException,
                 RepositoryException
Moves the node identified by the given srcNodeId (and its entire subtree) to the new location defined by destParentNodeId and a new name (destName).

Specified by:
move in interface RepositoryService
Throws:
ItemExistsException
PathNotFoundException
VersionException
ConstraintViolationException
LockException
AccessDeniedException
UnsupportedRepositoryOperationException
RepositoryException
See Also:
Workspace.move(String, String)

copy

public void copy(SessionInfo sessionInfo,
                 String srcWorkspaceName,
                 NodeId srcNodeId,
                 NodeId destParentNodeId,
                 Name destName)
          throws NoSuchWorkspaceException,
                 ConstraintViolationException,
                 VersionException,
                 AccessDeniedException,
                 PathNotFoundException,
                 ItemExistsException,
                 LockException,
                 UnsupportedRepositoryOperationException,
                 RepositoryException
Clone the subtree identified by the given srcNodeId in workspace named srcWorkspaceName to the destination in the workspace specified by the given SessionInfo. The destination is composed by the given parent id and the new name as indicated by destName.

Note, that srcWorkspaceName may be the same as the one specified within the SessionInfo. In this case the copy corresponds to a copy within a single workspace.

Specified by:
copy in interface RepositoryService
Throws:
NoSuchWorkspaceException
ConstraintViolationException
VersionException
AccessDeniedException
PathNotFoundException
ItemExistsException
LockException
UnsupportedRepositoryOperationException
RepositoryException
See Also:
Workspace.copy(String, String), Workspace.copy(String, String, String)

update

public void update(SessionInfo sessionInfo,
                   NodeId nodeId,
                   String srcWorkspaceName)
            throws NoSuchWorkspaceException,
                   AccessDeniedException,
                   LockException,
                   InvalidItemStateException,
                   RepositoryException
Updates the node identified by the given NodeId replacing it (an the complete subtree) with a clone of its corresponding node present in the workspace with the given srcWorkspaceName.

Specified by:
update in interface RepositoryService
Throws:
NoSuchWorkspaceException
AccessDeniedException
LockException
InvalidItemStateException
RepositoryException
See Also:
Node.update(String)

clone

public void clone(SessionInfo sessionInfo,
                  String srcWorkspaceName,
                  NodeId srcNodeId,
                  NodeId destParentNodeId,
                  Name destName,
                  boolean removeExisting)
           throws NoSuchWorkspaceException,
                  ConstraintViolationException,
                  VersionException,
                  AccessDeniedException,
                  PathNotFoundException,
                  ItemExistsException,
                  LockException,
                  UnsupportedRepositoryOperationException,
                  RepositoryException
Clone the subtree identified by the given srcNodeId in workspace named srcWorkspaceName to the destination in the workspace specified by the given SessionInfo. The destination is composed by the given parent id and the new name as indicated by destName.

Specified by:
clone in interface RepositoryService
Throws:
NoSuchWorkspaceException
ConstraintViolationException
VersionException
AccessDeniedException
PathNotFoundException
ItemExistsException
LockException
UnsupportedRepositoryOperationException
RepositoryException
See Also:
Workspace.clone(String, String, String, boolean)

getLockInfo

public LockInfo getLockInfo(SessionInfo sessionInfo,
                            NodeId nodeId)
                     throws RepositoryException
Returns the lock information that applies to Node identified by the given NodeId or null. If the implementation does not support locking at all, this method always returns null.

Specified by:
getLockInfo in interface RepositoryService
Returns:
The lock information for the Node identified by the given nodeId or null if no lock applies to that Node.
Throws:
AccessDeniedException
RepositoryException - If some other error occurs.
See Also:
Node.getLock()

lock

public LockInfo lock(SessionInfo sessionInfo,
                     NodeId nodeId,
                     boolean deep,
                     boolean sessionScoped)
              throws UnsupportedRepositoryOperationException,
                     LockException,
                     AccessDeniedException,
                     InvalidItemStateException,
                     RepositoryException
Create a lock on the Node identified by the given id.

Specified by:
lock in interface RepositoryService
Returns:
The LockInfo associated with the new lock that has been created.
Throws:
UnsupportedRepositoryOperationException - If this SPI implementation does not support locking at all.
LockException - If the Node identified by the given id cannot be locked due to an existing lock or due to missing mixin type.
AccessDeniedException
RepositoryException - If another error occurs.
InvalidItemStateException
See Also:
Node.lock(boolean, boolean)

lock

public LockInfo lock(SessionInfo sessionInfo,
                     NodeId nodeId,
                     boolean deep,
                     boolean sessionScoped,
                     long timeoutHint,
                     String ownerHint)
              throws UnsupportedRepositoryOperationException,
                     LockException,
                     AccessDeniedException,
                     RepositoryException
Create a lock on the Node identified by the given id.

Specified by:
lock in interface RepositoryService
timeoutHint - long indicating the desired lock timeout in seconds. The implementation is free to ignore the hint.
ownerHint - String indicating the desired lockOwner info. The implementation is free to ignore the hint.
Returns:
The LockInfo associated with the new lock that has been created.
Throws:
UnsupportedRepositoryOperationException - If this SPI implementation does not support locking at all.
LockException - If the Node identified by the given id cannot be locked due to an existing lock or due to missing mixin type.
AccessDeniedException
RepositoryException - If another error occurs.
See Also:
LockManager.lock(String, boolean, boolean, long, String)

refreshLock

public void refreshLock(SessionInfo sessionInfo,
                        NodeId nodeId)
                 throws LockException,
                        RepositoryException
Explicit refresh of an existing lock. Existing locks should be refreshed implicitely with all read and write methods listed here.

Specified by:
refreshLock in interface RepositoryService
Throws:
LockException - If the Node identified by the given id is not locked (any more) or if the SessionInfo does not contain the token associated with the lock to be refreshed.
UnsupportedRepositoryOperationException - If this SPI implementation does not support locking at all.
AccessDeniedException
RepositoryException - If another error occurs.
See Also:
Lock

unlock

public void unlock(SessionInfo sessionInfo,
                   NodeId nodeId)
            throws UnsupportedRepositoryOperationException,
                   LockException,
                   AccessDeniedException,
                   InvalidItemStateException,
                   RepositoryException
Releases the lock on the Node identified by the given NodeId.

Please note, that on logout all session-scoped locks must be released by calling unlock.

Specified by:
unlock in interface RepositoryService
Throws:
UnsupportedRepositoryOperationException - If this SPI implementation does not support locking at all.
LockException - If the Node identified by the given id is not locked or if the SessionInfo does not contain the token associated with the lock to be released.
AccessDeniedException
RepositoryException - If another error occurs.
InvalidItemStateException
See Also:
Node.unlock()

checkin

public NodeId checkin(SessionInfo sessionInfo,
                      NodeId nodeId)
               throws VersionException,
                      UnsupportedRepositoryOperationException,
                      InvalidItemStateException,
                      LockException,
                      RepositoryException
Performs a checkin for the Node identified by the given NodeId.

Specified by:
checkin in interface RepositoryService
Returns:
NodeId of newly created version
Throws:
VersionException
UnsupportedRepositoryOperationException
InvalidItemStateException
LockException
RepositoryException
See Also:
Node.checkin()

checkout

public void checkout(SessionInfo sessionInfo,
                     NodeId nodeId)
              throws UnsupportedRepositoryOperationException,
                     LockException,
                     RepositoryException
Performs a checkout for the Node identified by the given NodeId. Same as RepositoryService.checkout(SessionInfo, NodeId, NodeId) where the activityId is null.

Specified by:
checkout in interface RepositoryService
Throws:
UnsupportedRepositoryOperationException
LockException
RepositoryException
See Also:
Node.checkout()

checkout

public void checkout(SessionInfo sessionInfo,
                     NodeId nodeId,
                     NodeId activityId)
              throws UnsupportedRepositoryOperationException,
                     LockException,
                     RepositoryException
Performs a checkout for the Node identified by the given NodeId and for activity identified by the specified activityId. If the activityId is null this corresponds to RepositoryService.checkout(SessionInfo, NodeId)

Specified by:
checkout in interface RepositoryService
activityId - Id of the activity node set to the editing session or null if no activity is in effect.
Throws:
UnsupportedRepositoryOperationException
LockException
RepositoryException

checkpoint

public NodeId checkpoint(SessionInfo sessionInfo,
                         NodeId nodeId)
                  throws UnsupportedRepositoryOperationException,
                         RepositoryException
Performs a checkpoint for the Node identified by the given NodeId.

Specified by:
checkpoint in interface RepositoryService
Returns:
NodeId of newly created version
Throws:
UnsupportedRepositoryOperationException
RepositoryException
See Also:
VersionManager.checkpoint(String)

checkpoint

public NodeId checkpoint(SessionInfo sessionInfo,
                         NodeId nodeId,
                         NodeId activityId)
                  throws UnsupportedRepositoryOperationException,
                         RepositoryException
Performs a checkpoint for the Node identified by the given NodeId. For the checkout part the specified activityId is taken into account as specified in RepositoryService.checkout(SessionInfo, NodeId, NodeId).

Specified by:
checkpoint in interface RepositoryService
activityId - Id of the activity node set to the editing session or null if no activity is in effect.
Throws:
UnsupportedRepositoryOperationException
LockException
RepositoryException

removeVersion

public void removeVersion(SessionInfo sessionInfo,
                          NodeId versionHistoryId,
                          NodeId versionId)
                   throws ReferentialIntegrityException,
                          AccessDeniedException,
                          UnsupportedRepositoryOperationException,
                          VersionException,
                          RepositoryException
Remove the version inditified by the specified versionId.

Specified by:
removeVersion in interface RepositoryService
versionHistoryId - NodeId identifying the version history the version identified by versionId belongs to.
Throws:
ReferentialIntegrityException
AccessDeniedException
UnsupportedRepositoryOperationException
VersionException
RepositoryException
See Also:
VersionHistory.removeVersion(String)

restore

public void restore(SessionInfo sessionInfo,
                    NodeId nodeId,
                    NodeId versionId,
                    boolean removeExisting)
             throws VersionException,
                    PathNotFoundException,
                    ItemExistsException,
                    UnsupportedRepositoryOperationException,
                    LockException,
                    InvalidItemStateException,
                    RepositoryException
Restores the node identified by nodeId to the state defined by the version with the specified versionId.

Specified by:
restore in interface RepositoryService
removeExisting - boolean flag indicating how to deal with an identifier collision that may occur if a node exists outside the subtree to be restored with the same identified as a node that would be introduces by the restore. If the removeExisting is true the restored node takes precedence and the existing node is removed. Otherwise the restore failes.
Throws:
VersionException
PathNotFoundException
ItemExistsException
UnsupportedRepositoryOperationException
LockException
InvalidItemStateException
RepositoryException
See Also:
Node.restore(String, boolean), Node.restore(javax.jcr.version.Version, boolean), Node.restore(javax.jcr.version.Version, String, boolean), Node.restoreByLabel(String, boolean)

restore

public void restore(SessionInfo sessionInfo,
                    NodeId[] versionIds,
                    boolean removeExisting)
             throws ItemExistsException,
                    UnsupportedRepositoryOperationException,
                    VersionException,
                    LockException,
                    InvalidItemStateException,
                    RepositoryException
Restore multiple versions at once. The versions to be restored are identified by the given array of NodeIds.

Specified by:
restore in interface RepositoryService
removeExisting - boolean flag indicating how to deal with an identifier collision that may occur if a node exists outside the subtrees to be restored with the same identified as any node that would be introduces by the restore. If the removeExisting is true the node to be restored takes precedence and the existing node is removed. Otherwise the restore failes.
Throws:
ItemExistsException
UnsupportedRepositoryOperationException
VersionException
LockException
InvalidItemStateException
RepositoryException
See Also:
Workspace.restore(javax.jcr.version.Version[], boolean)

merge

public Iterator<NodeId> merge(SessionInfo sessionInfo,
                              NodeId nodeId,
                              String srcWorkspaceName,
                              boolean bestEffort)
                       throws NoSuchWorkspaceException,
                              AccessDeniedException,
                              MergeException,
                              LockException,
                              InvalidItemStateException,
                              RepositoryException
Merge the node identified by the given NodeId and its subtree with the corresponding node present in the workspace with the name of srcWorkspaceName.

Specified by:
merge in interface RepositoryService
Returns:
an Iterator over the NodeIds of all nodes that received a merge result of "fail" in the course of this operation.
Throws:
NoSuchWorkspaceException
AccessDeniedException
MergeException
LockException
InvalidItemStateException
RepositoryException
See Also:
Node.merge(String, boolean)

merge

public Iterator<NodeId> merge(SessionInfo sessionInfo,
                              NodeId nodeId,
                              String srcWorkspaceName,
                              boolean bestEffort,
                              boolean isShallow)
                       throws NoSuchWorkspaceException,
                              AccessDeniedException,
                              MergeException,
                              LockException,
                              InvalidItemStateException,
                              RepositoryException
Merge the node identified by the given NodeId and its subtree with the corresponding node present in the workspace with the name of srcWorkspaceName.

Specified by:
merge in interface RepositoryService
Returns:
an Iterator over the NodeIds of all nodes that received a merge result of "fail" in the course of this operation.
Throws:
NoSuchWorkspaceException
AccessDeniedException
MergeException
LockException
InvalidItemStateException
RepositoryException
See Also:
VersionManager.merge(String, String, boolean, boolean)

resolveMergeConflict

public void resolveMergeConflict(SessionInfo sessionInfo,
                                 NodeId nodeId,
                                 NodeId[] mergeFailedIds,
                                 NodeId[] predecessorIds)
                          throws VersionException,
                                 InvalidItemStateException,
                                 UnsupportedRepositoryOperationException,
                                 RepositoryException
Resolve an existing merge conflict present with the node identified by the given NodeId.

Specified by:
resolveMergeConflict in interface RepositoryService
mergeFailedIds - The NodeIds remaining in the jcr:mergeFailed REFERENCE property. The version id(s) to be resolved were removed from the array and added to the predecessor ids in case of Node.doneMerge(Version). In case of a Node.cancelMerge(Version) the version id only gets removed from the list.
predecessorIds - The complete set of predecessor id including those that have been added in order to resolve a merge conflict.
Throws:
VersionException
InvalidItemStateException
UnsupportedRepositoryOperationException
RepositoryException
See Also:
Node.cancelMerge(javax.jcr.version.Version), Node.doneMerge(javax.jcr.version.Version)

addVersionLabel

public void addVersionLabel(SessionInfo sessionInfo,
                            NodeId versionHistoryId,
                            NodeId versionId,
                            Name label,
                            boolean moveLabel)
                     throws VersionException,
                            RepositoryException
Add the given version label in the persistent layer.

Specified by:
addVersionLabel in interface RepositoryService
versionHistoryId - NodeId identifying the version history the version identified by versionId belongs to.
versionId - NodeId identifying the version the label belongs to.
label - The label to be added.
moveLabel - If the label is already assigned to a version within the same version history this parameter has the following effect: If true the label already present gets moved to be now be a label of the version indicated by versionId. If false this method fails and the label remains with the original version.
Throws:
VersionException
RepositoryException
See Also:
VersionHistory.addVersionLabel(String, String, boolean)

removeVersionLabel

public void removeVersionLabel(SessionInfo sessionInfo,
                               NodeId versionHistoryId,
                               NodeId versionId,
                               Name label)
                        throws VersionException,
                               RepositoryException
Remove the given version label in the persistent layer.

Specified by:
removeVersionLabel in interface RepositoryService
versionHistoryId - NodeId identifying the version history the version identified by versionId belongs to.
versionId - NodeId identifying the version the label belongs to.
label - The label to be removed.
Throws:
VersionException
RepositoryException
See Also:
VersionHistory.removeVersionLabel(String)

createActivity

public NodeId createActivity(SessionInfo sessionInfo,
                             String title)
                      throws UnsupportedRepositoryOperationException,
                             RepositoryException
Create a new activity.

Specified by:
createActivity in interface RepositoryService
Returns:
the NodeId of the new activity node.
Throws:
UnsupportedRepositoryOperationException
RepositoryException
See Also:
VersionManager.createActivity(String)

removeActivity

public void removeActivity(SessionInfo sessionInfo,
                           NodeId activityId)
                    throws UnsupportedRepositoryOperationException,
                           RepositoryException
Removes the activity identified by the specified activityId.

Specified by:
removeActivity in interface RepositoryService
Throws:
UnsupportedRepositoryOperationException
RepositoryException
See Also:
VersionManager.removeActivity(Node)

mergeActivity

public Iterator<NodeId> mergeActivity(SessionInfo sessionInfo,
                                      NodeId activityId)
                               throws UnsupportedRepositoryOperationException,
                                      RepositoryException
Merges the activity identified by the given activityId into the workspace the specified sessionInfo has been created for.

Specified by:
mergeActivity in interface RepositoryService
Returns:
an Iterator over the NodeIds of all nodes that received a merge result of "fail" in the course of this operation.
Throws:
UnsupportedRepositoryOperationException
RepositoryException

createConfiguration

public NodeId createConfiguration(SessionInfo sessionInfo,
                                  NodeId nodeId)
                           throws UnsupportedRepositoryOperationException,
                                  RepositoryException

Specified by:
createConfiguration in interface RepositoryService
Returns:
Throws:
UnsupportedRepositoryOperationException
RepositoryException
See Also:
VersionManager.createConfiguration(String)

getSupportedQueryLanguages

public String[] getSupportedQueryLanguages(SessionInfo sessionInfo)
                                    throws RepositoryException
Returns a String array identifying all query languages supported by this SPI implementation.

Specified by:
getSupportedQueryLanguages in interface RepositoryService
Returns:
String array identifying all query languages supported by this SPI implementation.
Throws:
RepositoryException
See Also:
QueryManager.getSupportedQueryLanguages()

checkQueryStatement

public String[] checkQueryStatement(SessionInfo sessionInfo,
                                    String statement,
                                    String language,
                                    Map<String,String> namespaces)
                             throws InvalidQueryException,
                                    RepositoryException
Checks if the query statement is valid according to the specified query language and returns the bind variable names found in the query statement.

Specified by:
checkQueryStatement in interface RepositoryService
Parameters:
sessionInfo - the session info.
statement - the query statement to check.
language - the query language.
namespaces - the locally re-mapped namespace which may be used in the query statement.
Returns:
the bind variable names.
Throws:
InvalidQueryException - if the query statement is invalid or the language is not supported.
RepositoryException - if an error occurs while checking the statement.
See Also:
QueryManager.createQuery(String, String)

executeQuery

public QueryInfo executeQuery(SessionInfo sessionInfo,
                              String statement,
                              String language,
                              Map<String,String> namespaces,
                              long limit,
                              long offset,
                              Map<String,QValue> values)
                       throws RepositoryException
Execute the given query statement with the specified query language. The additional namespaces parameter provides a mapping of prefix to namespace uri in order to be able to properly resolve prefix:localname patterns present within the query statement.

Specified by:
executeQuery in interface RepositoryService
Parameters:
sessionInfo - the session info that wants to execute the query.
statement - the query statement to be execute.
language - the query language used to parse the query statement.
namespaces - the locally re-mapped namespace which may be used in the query statement.
limit - The maximum result size or -1 is no maximum is set.
offset - The offset in the total result set or -1 is no offset is set.
values - A Map of name/value pairs collected upon calls to Query.bindValue(String, javax.jcr.Value).
Returns:
The query info.
Throws:
RepositoryException - if an error occurs.
See Also:
Query.execute()

createEventFilter

public EventFilter createEventFilter(SessionInfo sessionInfo,
                                     int eventTypes,
                                     Path absPath,
                                     boolean isDeep,
                                     String[] uuid,
                                     Name[] nodeTypeName,
                                     boolean noLocal)
                              throws UnsupportedRepositoryOperationException,
                                     RepositoryException
Creates an event filter. If the repository supports observation, the filter created is based on the parameters available in ObservationManager.addEventListener(javax.jcr.observation.EventListener, int, java.lang.String, boolean, java.lang.String[], java.lang.String[], boolean).

Note, that an SPI implementation may support observation even if the corresponding repository descriptor does not return 'true'.

Specified by:
createEventFilter in interface RepositoryService
Parameters:
sessionInfo - the session info which requests an event filter.
eventTypes - A combination of one or more event type constants encoded as a bitmask.
absPath - An absolute path.
isDeep - A boolean.
uuid - Array of jcr:uuid properties.
nodeTypeName - Array of node type names.
noLocal - A boolean.
Returns:
the event filter instance with the given parameters.
Throws:
UnsupportedRepositoryOperationException - if this SPI implementation does not allow to create event filters.
RepositoryException - if an error occurs while creating the EventFilter.
See Also:
ObservationManager.addEventListener(javax.jcr.observation.EventListener, int, String, boolean, String[], String[], boolean)

createSubscription

public Subscription createSubscription(SessionInfo sessionInfo,
                                       EventFilter[] filters)
                                throws UnsupportedRepositoryOperationException,
                                       RepositoryException
Creates a new Subscription for events with an initial set of EventFilters. The returned subscription must provide events from the time when the subscription was created. If an empty array of filters is passed no events will be available through the created subscription unless the filters are later updated by calling RepositoryService.updateEventFilters(Subscription, EventFilter[]).

Specified by:
createSubscription in interface RepositoryService
Parameters:
sessionInfo - the session info.
filters - the initial event filters for the subscription.
Returns:
Throws:
UnsupportedRepositoryOperationException - if this SPI implementation does not support observation.
RepositoryException - if an error occurs while creating the Subscription.

getEvents

public EventBundle[] getEvents(Subscription subscription,
                               long timeout)
                        throws RepositoryException,
                               UnsupportedRepositoryOperationException,
                               InterruptedException
Retrieves the events that occurred since the last call to this method for the passed subscription.

Note, that an SPI implementation may support observation even if the corresponding repository descriptor does return 'false'.

An implementation should un-block a calling thread and let it return if the associated subscription is disposed by another thread.

Specified by:
getEvents in interface RepositoryService
Parameters:
subscription - a subscription.
timeout - a timeout in milliseconds to wait at most for an event bundle. If timeout is up and no event occurred meanwhile an empty array is returned.
Returns:
an array of EventBundles representing the events that occurred.
Throws:
RepositoryException - if an error occurs while retrieving the event bundles.
InterruptedException - if the calling thread is interrupted while waiting for events within the specified timeout.
UnsupportedRepositoryOperationException

getEvents

public EventBundle getEvents(SessionInfo sessionInfo,
                             EventFilter filter,
                             long after)
                      throws RepositoryException,
                             UnsupportedRepositoryOperationException
Returns events from the EventJournal after a given point in time. The returned event bundle may only contain events up to a given time. In order to retrieve more events a client must call this method again with the timestamp from the last event bundle. An empty bundle indicates that there are no more events.

Specified by:
getEvents in interface RepositoryService
Parameters:
sessionInfo - the session info.
filter - the event filter to apply. Please note: the noLocal flag is ignored.
after - retrieve events that occurred after the given timestamp.
Returns:
the event bundle.
Throws:
RepositoryException - if an error occurs.
UnsupportedRepositoryOperationException - if the underlying implementation does not support event journaling.

updateEventFilters

public void updateEventFilters(Subscription subscription,
                               EventFilter[] filters)
                        throws RepositoryException
Updates events filters on the subscription. When this method returns all events that go through the passed subscription and have been generated after this method call must be filtered using the passed filters.

An implementation is required to accept at least event filter instances created by RepositoryService.createEventFilter(org.apache.jackrabbit.spi.SessionInfo, int, org.apache.jackrabbit.spi.Path, boolean, java.lang.String[], org.apache.jackrabbit.spi.Name[], boolean). Optionally an implementation may also support event filters instanciated by the client itself. An implementation may require special deployment in that case, e.g. to make the event filter implementation class available to the repository server.

Note on thread-safety: it is permissible to call this methods while another thread is blocked in calling RepositoryService.getEvents(Subscription, long) using the same subscription instance as a parameter.

Specified by:
updateEventFilters in interface RepositoryService
Parameters:
subscription - the subscription where the event filters are applied.
filters - the filters that are applied to the events as they occurred on the repository. An event is included in an event bundle if it is accepted by at least one of the supplied filters. If an empty array is passed none of the potential events are include in an event bundle. This allows a client to skip or ignore events for a certain period of time.
Throws:
RepositoryException - if an error occurs while updating the event filters.

dispose

public void dispose(Subscription subscription)
             throws RepositoryException
Indicates that the passed subscription is no longer needed.

Note on thread-safety: it is permissible to call this methods while another thread is blocked in calling RepositoryService.getEvents(Subscription, long) using the same subscription instance as a parameter.

Specified by:
dispose in interface RepositoryService
Throws:
RepositoryException - if an error occurs while the subscription is disposed.

getRegisteredNamespaces

public Map<String,String> getRegisteredNamespaces(SessionInfo sessionInfo)
                                           throws RepositoryException
Retrieve all registered namespaces. The namespace to prefix mapping is done using the prefix as key and the namespace as value in the Map.

Specified by:
getRegisteredNamespaces in interface RepositoryService
Returns:
Throws:
RepositoryException
See Also:
Workspace.getNamespaceRegistry(), NamespaceRegistry.getPrefixes(), NamespaceRegistry.getURIs()

getNamespaceURI

public String getNamespaceURI(SessionInfo sessionInfo,
                              String prefix)
                       throws NamespaceException,
                              RepositoryException
Returns the namespace URI for the given namespace prefix.

Specified by:
getNamespaceURI in interface RepositoryService
Parameters:
sessionInfo - the session info.
prefix - a namespace prefix to resolve.
Returns:
the namespace URI for the given namespace prefix.
Throws:
NamespaceException - if prefix is not mapped to a namespace URI.
RepositoryException - if another error occurs.
See Also:
NamespaceRegistry.getURI(String)

getNamespacePrefix

public String getNamespacePrefix(SessionInfo sessionInfo,
                                 String uri)
                          throws NamespaceException,
                                 RepositoryException
Returns the namespace prefix for the given namespace uri.

Specified by:
getNamespacePrefix in interface RepositoryService
Parameters:
sessionInfo - the session info.
uri - the namespace URI.
Returns:
the namespace prefix.
Throws:
NamespaceException - if the URI unknown.
RepositoryException - if another error occurs.
See Also:
NamespaceRegistry.getPrefix(String)

registerNamespace

public void registerNamespace(SessionInfo sessionInfo,
                              String prefix,
                              String uri)
                       throws NamespaceException,
                              UnsupportedRepositoryOperationException,
                              AccessDeniedException,
                              RepositoryException
Register a new namespace with the given prefix and uri.

Specified by:
registerNamespace in interface RepositoryService
prefix - Prefix of the namespace to be registered.
uri - Namespace URI to be registered.
Throws:
NamespaceException
UnsupportedRepositoryOperationException
AccessDeniedException
RepositoryException
See Also:
NamespaceRegistry.registerNamespace(String, String)

unregisterNamespace

public void unregisterNamespace(SessionInfo sessionInfo,
                                String uri)
                         throws NamespaceException,
                                UnsupportedRepositoryOperationException,
                                AccessDeniedException,
                                RepositoryException
Unregister the namespace identified by the given uri

Specified by:
unregisterNamespace in interface RepositoryService
uri - Namespace URI to be unregistered.
Throws:
NamespaceException
UnsupportedRepositoryOperationException
AccessDeniedException
RepositoryException
See Also:
NamespaceRegistry.unregisterNamespace(String)

getQNodeTypeDefinitions

public Iterator<QNodeTypeDefinition> getQNodeTypeDefinitions(SessionInfo sessionInfo)
                                                      throws RepositoryException
Retrieve the QNodeTypeDefinitions of all registered nodetypes.

Specified by:
getQNodeTypeDefinitions in interface RepositoryService
Returns:
Iterator of QNodeTypeDefinitions.
Throws:
RepositoryException
See Also:
Workspace.getNodeTypeManager(), NodeTypeManager.getAllNodeTypes(), NodeTypeManager.getMixinNodeTypes(), NodeTypeManager.getPrimaryNodeTypes(), NodeTypeManager.getNodeType(String)

getQNodeTypeDefinitions

public Iterator<QNodeTypeDefinition> getQNodeTypeDefinitions(SessionInfo sessionInfo,
                                                             Name[] nodetypeNames)
                                                      throws RepositoryException
Retrieve QNodeTypeDefinitions for the given names. The implementation is free to return additional definitions which will (probably) be needed by the caller due to node type inheritance. The caller must be able to deal with any kind of additional QNodeTypeDefinitions present in the Iterator irrespective whether they have been loaded before or not.

Specified by:
getQNodeTypeDefinitions in interface RepositoryService
nodetypeNames - names of node types to retrieve
Returns:
QNodeTypeDefinition
Throws:
NoSuchNodeTypeException - if for any of the given names no QNodeTypeDefinition exists.
RepositoryException
See Also:
Workspace.getNodeTypeManager(), NodeTypeManager.getAllNodeTypes(), NodeTypeManager.getMixinNodeTypes(), NodeTypeManager.getPrimaryNodeTypes(), NodeTypeManager.getNodeType(String)

registerNodeTypes

public void registerNodeTypes(SessionInfo sessionInfo,
                              QNodeTypeDefinition[] nodeTypeDefinitions,
                              boolean allowUpdate)
                       throws InvalidNodeTypeDefinitionException,
                              NodeTypeExistsException,
                              UnsupportedRepositoryOperationException,
                              RepositoryException
Registers the node types with the specified QNodeTypeDefinitions. If allowUpdate is true this method may also be used to reregister existing node types with a modified definition, otherwise this method will fail with NodeTypeExistsException if any of the specified definition has the name of an already registered node type.

Specified by:
registerNodeTypes in interface RepositoryService
Throws:
InvalidNodeTypeDefinitionException - If any of the specified definitions is invalid.
NodeTypeExistsException - If any of the specified definitions has the name of an already registered node type and allowUpdate is false.
UnsupportedRepositoryOperationException - If registering node types is not supported.
RepositoryException - If another error occurs.
See Also:
NodeTypeManager.registerNodeTypes(javax.jcr.nodetype.NodeTypeDefinition[], boolean)

unregisterNodeTypes

public void unregisterNodeTypes(SessionInfo sessionInfo,
                                Name[] nodeTypeNames)
                         throws UnsupportedRepositoryOperationException,
                                NoSuchNodeTypeException,
                                RepositoryException
Unregisters the node types with the specified names.

Specified by:
unregisterNodeTypes in interface RepositoryService
Throws:
UnsupportedRepositoryOperationException - If unregistering node types is not supported.
NoSuchNodeTypeException - If any of the specified names has no corresponding registered node type.
RepositoryException - If another error occurs.
See Also:
NodeTypeManager.unregisterNodeTypes(String[])

createWorkspace

public void createWorkspace(SessionInfo sessionInfo,
                            String name,
                            String srcWorkspaceName)
                     throws AccessDeniedException,
                            UnsupportedRepositoryOperationException,
                            NoSuchWorkspaceException,
                            RepositoryException
Create a new workspace with the specified name. If srcWorkspaceName isn't null the content of that workspace is 'cloned' to the new workspace as inital content, otherwise an empty workspace will be created.

Specified by:
createWorkspace in interface RepositoryService
name - The name of the new workspace.
srcWorkspaceName - The name of the workspace from which the initial content of the new workspace will be 'cloned'.
Throws:
AccessDeniedException
UnsupportedRepositoryOperationException
NoSuchWorkspaceException
RepositoryException
See Also:
Workspace.createWorkspace(String), Workspace.createWorkspace(String, String)

deleteWorkspace

public void deleteWorkspace(SessionInfo sessionInfo,
                            String name)
                     throws AccessDeniedException,
                            UnsupportedRepositoryOperationException,
                            NoSuchWorkspaceException,
                            RepositoryException
Deletes the workspace with the specified name.

Specified by:
deleteWorkspace in interface RepositoryService
name - The name of the workspace to be deleted.
Throws:
AccessDeniedException
UnsupportedRepositoryOperationException
NoSuchWorkspaceException
RepositoryException
See Also:
Workspace.deleteWorkspace(String)


Copyright © 2004-2010 The Apache Software Foundation. All Rights Reserved.