@Version("3.0.0")
Package org.apache.jackrabbit.spi
Defines the interfaces of the JCR SPI (Service Provider Interface).
The SPI cuts the JCR stack into two parts:
- Above the SPI an implementation that wishes to expose the JCR API again needs to implement the transient item space, the session local namespace mapping and various conversions from the value representation in the SPI to the resolved values in the JCR API.
- An implementation of the SPI interfaces has to deal with the persistent view of a JCR repository. This includes almost all aspects of the JSR 170 specification, except the previously stated transient space and the session local namespace resolution to prefixes.
Observation
Because one of the goals of this SPI is to make it easier to implement a remoting layer using various existing protocols, the observation mechanism has been design with this goal in mind. Instead of a listener registration with a callback for each event bundle, the SPI uses a polling mechanism with a timeout:RepositoryService.getEvents()
. With every call to this method the
repository is advised to return the events that occurred since the last
call. As a reference to the last retrieved
EventBundle
the
SessionInfo
contains a bundle identifier
which is automatically updated on each call to
RepositoryService.getEvents()
. While this design allows for
a polling implementation on top of the SPI it is also well suited for a
listener based observation implementation on top of the SPI. With only
little thread synchronization overhead events can be acquired using a
timeout
of Long.MAX_VALUE
.
If an SPI implementation does not support observation, the method
RepositoryService.getEvents()
will always throw an
UnsupportedRepositoryOperationException
.
-
Interface Summary Interface Description Batch TheBatch
defines an ordered list of of operations that must be executed at once on the persistent layer.ChildInfo ChildInfo
...Event Event
is similar to the regular JCR Event and adds additional information about the affected item.EventBundle AnEventBundle
is similar to theEventIterator
interface.EventFilter AnEventFilter
is applied to the events as generated on the repository server.IdFactory IdFactory
defines methods to construct newItemId
s.ItemId AnItemId
identifies an item using a combination of unique ID and path.ItemInfo ItemInfoCache ItemInfoCache
instances are responsible for cachingItemInfo
s along with an opaque generation counter.LockInfo LockInfo
is used to transport lock information across the SPI boundary.Name AName
is a combination of a namespace URI and a local part.NameFactory NameFactory
...NodeId NodeId
identifies a node on the SPI layer.NodeInfo TheNodeInfo
provides the basic information required to build nodes making up the repository hierarchy.Path ThePath
interface defines the SPI level representation of a JCR path.Path.Element Object representation of a single JCR path element.PathFactory PathFactory
...PrivilegeDefinition PrivilegeDefinition
...PropertyId PropertyId
identifies a property on the SPI layer.PropertyInfo ThePropertyInfo
provides the basic information to build aProperty
.QItemDefinition QItemDefinition
is the SPI representation of anitem definition
.QNodeDefinition QNodeDefinition
is the SPI representation of anode definition
.QNodeTypeDefinition QNodeTypeDefinition
is the SPI representation of anode type
.QPropertyDefinition QPropertyDefinition
is the SPI representation of aproperty definition
.QueryInfo QueryInfo
is the the return value ofRepositoryService.executeQuery(SessionInfo, String, String, Map, long, long, Map)
which is used to run a query on theRepositoryService
.QueryResultRow QueryResultRow
represents the SPI equivalent of a query result row.QValue QValue
is the SPI representation of ajcr value
.QValueConstraint QValueConstraint
is used to check the syntax of a value constraint and to test if a specific value satisfies it.QValueFactory QValueFactory
defines methods to createQValue
instances.RepositoryService TheRepositoryService
interface defines methods used to retrieve information from the persistent layer of the repository as well as the methods that modify its persistent state.RepositoryServiceFactory Factory for creatingRepositoryService
instances.SessionInfo SessionInfo
is created uponRepositoryService.obtain(javax.jcr.Credentials, String)
orRepositoryService.obtain(SessionInfo, String)
and will be used for any call on the RepositoryService that requires user and workspace identification.Subscription Subscription
defines a marker interface for an event subscription.Tree Interface for building a hierarchy of JCR items on the SPI layer.XASessionInfo XASessionInfo
extends theSessionInfo
and provides access to the XAResource of the session info. -
Class Summary Class Description ItemInfoCache.Entry<T extends ItemInfo> This class represents a cache entry.