Package org.apache.jackrabbit.core

Contains the core classes that provide the implementation of the JCR API.


Interface Summary
HierarchyManager The HierarchyManager interface ...
InternalXAResource Interface implemented by resources that provide XA functionality.
ItemLifeCycleListener The ItemLifeCycleListener interface allows an implementing object to be informed about changes on an Item instance.
SessionListener The SessionListener interface allows an implementing object to be informed about changes on a Session.
TransientRepository.RepositoryFactory Factory interface for creating RepositoryImpl instances.

Class Summary
AbstractNodeData Data object representing a node.
BatchedItemOperations BatchedItemOperations is an internal helper class that provides both high- and low-level operations directly on the ItemState level.
CachingHierarchyManager Implementation of a HierarchyManager that caches paths of items.
DefaultSecurityManager The security manager acts as central managing class for all security related operations on a low-level non-protected level.
HierarchyManagerImpl HierarchyManagerImpl ...
ItemData Data object referenced by different ItemImpl instances that all represent the same item, i.e.
ItemImpl ItemImpl implements the Item interface.
ItemManager There's one ItemManager instance per Session instance.
ItemValidator Utility class for validating an item against constraints specified by its definition.
JackrabbitRepositoryStub RepositoryStub implementation for Apache Jackrabbit.
LazyItemIterator LazyItemIterator is an id-based iterator that instantiates the Items only when they are requested.
NamespaceRegistryImpl A NamespaceRegistryImpl ...
NodeImpl NodeImpl implements the Node interface.
NodeTypeInstanceHandler The NodeTypeInstanceHandler is used to provide or initialize system protected properties (or child nodes).
PropertyData Data object representing a property.
PropertyImpl PropertyImpl implements the Property interface.
ProtectedItemModifier ProtectedItemModifier: An abstract helper class to allow classes residing outside of the core package to modify and remove protected items.
RepositoryCopier Tool for backing up or migrating the entire contents (workspaces, version histories, namespaces, node types, etc.) of a repository to a new repository.
RepositoryFactoryImpl RepositoryFactoryImpl implements a repository factory that creates a TransientRepository on RepositoryFactoryImpl.getRepository(Map).
RepositoryImpl A RepositoryImpl ...
RepositoryManagerImpl The repository manager implementation.
SearchManager Acts as a global entry point to execute queries and index nodes.
SessionImpl A SessionImpl ...
TestContentLoader Test Content Loader.
TransactionContext Represents the transaction on behalf of the component that wants to explicitly demarcate transaction boundaries.
TransientRepository A repository proxy that automatically initializes and shuts down the underlying repository instance when the first session is opened or the last one closed.
UserPerWorkspaceSecurityManager Derived security manager implementation that expects that users information is present in each workspace instead of having a single, dedicated "security-workspace" that provides user information.
VersionManagerImpl Implementation of the VersionManager.
WorkspaceImpl A WorkspaceImpl ...
XASessionImpl Session extension that provides XA support.
XAWorkspace Workspace extension that works in an XA environment.
ZombieHierarchyManager HierarchyManager implementation that is also able to build/resolve paths of those items that have been moved or removed (i.e.

Exception Summary
TransactionException TransactionException is thrown when some operation inside the transaction fails.

Package org.apache.jackrabbit.core Description

Contains the core classes that provide the implementation of the JCR API.

The following table lists the core JCR interfaces and the corresponding Jackrabbit implementation classes found in this package.

JCR interface Implementation class
Repository RepositoryImpl
Session SessionImpl
Workspace WorkspaceImpl
Item ItemImpl
Property PropertyImpl
Node NodeImpl

A Jackrabbit repository instance can be created using the static RepositoryImpl.create(RepositoryConfig) method. The RepositoryHelper and other classes in the org.apache.jackrabbit.core.jndi package provide a mechanism for binding a Jackrabbit repository in a JNDI directory context.

A SessionImpl instance is created upon successfully login to the Repository (see Repository#login(Credentials, String)).

A Session is always tied to the Workspace specified in the Repository#login(Credentials, String) call. A workspace represents a persistent tree of repository items (i.e. Nodes and Propertys). The items in a workspace are 'visible' to all sessions accessing it (subject to their access rights, of course). A WorkspaceImpl instance represents a specifc workspace as seen by the session that accesses it.

Every repository item is uniquely identified by its ItemId. The id of a node (NodeId) consists of the node's uuid. The id of a property (PropertyId) consists of the parent node's uuid and the name of the property.

Item managers

Every SessionImpl instance has its own ItemManager. The per-session instance of ItemManager acts as item factory (i.e. it creates NodeImpl and PropertyImpl instances) and provides item access by item id and item caching.

The data (or state) of an item is represented by the following classes in the subpackage state:

There's one SharedItemStateManager for every workspace. It provides item state caching and it guarantees that there's only one (persistent) item state instance for any distinct item id in that workspace.

Every session has its own SessionItemStateManager that consists of the session's TransientItemStateManager and the workspace's SharedItemStateManager.

Each item (i.e. NodeImpl and PropertyImpl) instance is holding an ItemState instance. When e.g. a session is modifying a property by changing the property's value, a new transient item state is created by the session's TransientItemStateManager. This transient state is actually wrapping the (old) shared state (copy on write). The PropertyImpl's state is then replaced by the new transient state.

Transient (i.e. unsaved) modifications are 'session-local', i.e. they are not visible to other sessions. When the modifications are saved they become instantly visible to all sessions accessing the same workspace.

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