org.apache.jackrabbit.spi.commons
Class AbstractReadableRepositoryService

java.lang.Object
  extended by org.apache.jackrabbit.spi.commons.AbstractRepositoryService
      extended by org.apache.jackrabbit.spi.commons.AbstractReadableRepositoryService
All Implemented Interfaces:
RepositoryService

public abstract class AbstractReadableRepositoryService
extends AbstractRepositoryService

AbstractReadableRepositoryService provides an abstract base class where all methods that attempt to write throw an UnsupportedRepositoryOperationException. This class useful for repository service implementation that only provide read access to the underlying content.


Field Summary
protected  String defaulWsp
          The name of the default workspace
protected static Set<String> WRITE_ACTIONS
           
protected  List<String> wspNames
          The list of workspaces that this repository service exposes.
 
Fields inherited from class org.apache.jackrabbit.spi.commons.AbstractRepositoryService
descriptors, namespaces, nodeTypeDefs, rootNodeDefinition
 
Constructor Summary
AbstractReadableRepositoryService(Map<String,QValue[]> descriptors, Map<String,String> namespaces, Reader cnd, List<String> wspNames, String defaultWsp)
          Creates a new AbstractReadableRepositoryService.
 
Method Summary
protected  void checkWorkspace(String workspaceName)
          Checks whether the workspaceName is valid.
protected  SessionInfo createSessionInfo(Credentials credentials, String workspaceName)
          Creates a session info instance for the given credentials and workspaceName.
 ItemInfoCache getItemInfoCache(SessionInfo sessionInfo)
          Returns a ItemInfoCache for the given SessionInfo.
 NodeInfo getNodeInfo(SessionInfo sessionInfo, NodeId nodeId)
          This default implementation returns the first item returned by the call to RepositoryService.getItemInfos(SessionInfo, NodeId).
 String[] getWorkspaceNames(SessionInfo sessionInfo)
          This default implementation first calls AbstractRepositoryService.checkSessionInfo(SessionInfo) with the sessionInfo, then returns the workspaces that were passed to the constructor of this repository service.
 boolean isGranted(SessionInfo sessionInfo, ItemId itemId, String[] actions)
          This default implementation first calls AbstractRepositoryService.checkSessionInfo(SessionInfo) with the sessionInfo, then returns false if the any of the actions are in WRITE_ACTIONS; otherwise returns true.
 
Methods inherited from class org.apache.jackrabbit.spi.commons.AbstractRepositoryService
addVersionLabel, checkCredentials, checkin, checkout, checkout, checkpoint, checkpoint, checkQueryStatement, checkSessionInfo, clone, copy, createActivity, createBatch, createConfiguration, createEventFilter, createRootNodeDefinition, createSessionInfo, createSubscription, createWorkspace, deleteWorkspace, dispose, dispose, executeQuery, getEvents, getEvents, getIdFactory, getLockInfo, getNameFactory, getNamespacePrefix, getNamespaceURI, getNodeDefinition, getPathFactory, getPropertyDefinition, getQNodeTypeDefinitions, getQNodeTypeDefinitions, getQValueFactory, getRegisteredNamespaces, getRepositoryDescriptors, getSupportedQueryLanguages, impersonate, importXml, lock, lock, merge, merge, mergeActivity, move, obtain, obtain, refreshLock, registerNamespace, registerNodeTypes, removeActivity, removeVersion, removeVersionLabel, resolveMergeConflict, restore, restore, submit, unlock, unregisterNamespace, unregisterNodeTypes, update, updateEventFilters
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.jackrabbit.spi.RepositoryService
getChildInfos, getItemInfos, getPropertyInfo, getReferences
 

Field Detail

WRITE_ACTIONS

protected static final Set<String> WRITE_ACTIONS

wspNames

protected final List<String> wspNames
The list of workspaces that this repository service exposes.


defaulWsp

protected final String defaulWsp
The name of the default workspace

Constructor Detail

AbstractReadableRepositoryService

public AbstractReadableRepositoryService(Map<String,QValue[]> descriptors,
                                         Map<String,String> namespaces,
                                         Reader cnd,
                                         List<String> wspNames,
                                         String defaultWsp)
                                  throws RepositoryException,
                                         ParseException,
                                         IllegalArgumentException
Creates a new AbstractReadableRepositoryService.

Parameters:
descriptors - the repository descriptors. Maps descriptor keys to descriptor values.
namespaces - the namespaces. Maps namespace prefixes to namespace URIs.
cnd - a reader on the compact node type definition.
wspNames - a list of workspace names.
defaultWsp - name of the default workspace
Throws:
RepositoryException - if the namespace mappings are invalid.
ParseException - if an error occurs while parsing the CND.
IllegalArgumentException - if defaultWsp is null
Method Detail

checkWorkspace

protected void checkWorkspace(String workspaceName)
                       throws NoSuchWorkspaceException
Checks whether the workspaceName is valid.

Overrides:
checkWorkspace in class AbstractRepositoryService
Parameters:
workspaceName - name of the workspace to check
Throws:
NoSuchWorkspaceException - if workspaceName is neither in the list of workspace nor null (i.e. default workspace).

createSessionInfo

protected SessionInfo createSessionInfo(Credentials credentials,
                                        String workspaceName)
                                 throws RepositoryException
Description copied from class: AbstractRepositoryService
Creates a session info instance for the given credentials and workspaceName. This default implementation creates a SessionInfoImpl instance and sets the userId and workspaceName. The user userId is null or the userId from credentials if it is of type SimpleCredentials.

Overrides:
createSessionInfo in class AbstractRepositoryService
Parameters:
credentials - the credentials.
workspaceName - the name of the workspace to access or null for the default workspace.
Returns:
a session info instance for the given credentials and workspaceName.
Throws:
RepositoryException

getItemInfoCache

public ItemInfoCache getItemInfoCache(SessionInfo sessionInfo)
Description copied from interface: RepositoryService
Returns a ItemInfoCache for the given SessionInfo.

Parameters:
sessionInfo -
Returns:
a new instance of ItemInfoCacheImpl

getNodeInfo

public NodeInfo getNodeInfo(SessionInfo sessionInfo,
                            NodeId nodeId)
                     throws ItemNotFoundException,
                            RepositoryException
This default implementation returns the first item returned by the call to RepositoryService.getItemInfos(SessionInfo, NodeId). The underlying assumption here is that the implementation and the persistence layer are optimized for batch reading. That is, a call to getItemInfos is no more expensive than retrieving the single NodeInfo only. If this assumption does not hold, subclasses should override this method.

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()

getWorkspaceNames

public String[] getWorkspaceNames(SessionInfo sessionInfo)
                           throws RepositoryException
This default implementation first calls AbstractRepositoryService.checkSessionInfo(SessionInfo) with the sessionInfo, then returns the workspaces that were passed to the constructor of this repository service.

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
This default implementation first calls AbstractRepositoryService.checkSessionInfo(SessionInfo) with the sessionInfo, then returns false if the any of the actions are in WRITE_ACTIONS; otherwise returns true.

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)


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