|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.jackrabbit.core.version.XAVersionManager
public class XAVersionManager
Implementation of a VersionManager
that works in an XA environment.
Works as a filter between a version manager client and the global version
manager.
Field Summary | |
---|---|
protected NodeStateEx |
historyRoot
Persistent root node of the version histories. |
protected LocalItemStateManager |
stateMgr
State manager for the version storage. |
Constructor Summary | |
---|---|
XAVersionManager(VersionManagerImpl vMgr,
NodeTypeRegistry ntReg,
SessionImpl session,
ItemStateCacheFactory cacheFactory)
Creates a new instance of this class. |
Method Summary | |
---|---|
protected void |
acquireReadLock()
aquires the read lock on this version manager. |
protected void |
acquireWriteLock()
aquires the write lock on this version manager. |
void |
addListener(ItemStateListener listener)
Add an ItemStateListener
Not needed. |
void |
afterOperation(TransactionContext tx)
Invoked after one of the InternalXAResource.prepare(org.apache.jackrabbit.core.TransactionContext) , InternalXAResource.commit(org.apache.jackrabbit.core.TransactionContext) or
InternalXAResource.rollback(org.apache.jackrabbit.core.TransactionContext) method has been called.
Delegate the call to our XA item state manager. |
void |
associate(TransactionContext tx)
Associate this resource with a transaction. |
void |
beforeOperation(TransactionContext tx)
Invoked before one of the InternalXAResource.prepare(org.apache.jackrabbit.core.TransactionContext) , InternalXAResource.commit(org.apache.jackrabbit.core.TransactionContext) or
InternalXAResource.rollback(org.apache.jackrabbit.core.TransactionContext) method is called.
Delegate the call to our XA item state manager. |
protected String |
calculateCheckinVersionName(org.apache.jackrabbit.core.version.InternalVersionHistoryImpl history,
NodeImpl node)
Calculates the name of the new version that will be created by a checkin call. |
protected InternalVersion |
checkin(org.apache.jackrabbit.core.version.InternalVersionHistoryImpl history,
NodeImpl node)
Checks in a node Before modifying version history given, make a local copy of it. |
Version |
checkin(NodeImpl node)
invokes the checkin() on the persistent version manager and remaps the newly created version objects. |
void |
close()
Close this version manager. |
void |
commit(TransactionContext tx)
Commit transaction. Delegate the call to our XA item state manager. |
EventStateCollection |
createEventStateCollection()
Creates an EventStateCollection . |
VirtualNodeState |
createNodeState(VirtualNodeState parent,
Name name,
NodeId id,
Name nodeTypeName)
Creates a new virtual node state |
VirtualPropertyState |
createPropertyState(VirtualNodeState parent,
Name name,
int type,
boolean multiValued)
Creats a new virtual property state |
VersionHistory |
createVersionHistory(Session session,
NodeState node)
Creates a new version history. |
protected InternalVersionItem |
getItem(NodeId id)
Returns the item with the given persistent id. |
protected List |
getItemReferences(InternalVersionItem item)
Returns the item references that reference the given version item. |
ItemState |
getItemState(ItemId id)
Return an item state, given its item id. Return item states for changes only. |
NodeReferences |
getNodeReferences(NodeReferencesId id)
Return a node references object, given its target id |
InternalVersion |
getVersion(NodeId id)
Returns the version with the given id |
InternalVersionHistory |
getVersionHistory(NodeId id)
Returns the version history with the given id |
VersionHistory |
getVersionHistory(Session session,
NodeState node)
Returns the version history of the specified node or
null if the given node doesn't (yet) have an associated
version history. |
VirtualItemStateProvider |
getVirtualItemStateProvider()
returns the virtual item state provider that exposes the internal versions as items. |
NodeId |
getVirtualRootId()
Returns the id of the root node of the virtual tree. |
InternalXAResource |
getXAResourceBegin()
Returns an InternalXAResource that acquires a write lock on the
version manager in InternalXAResource.prepare(TransactionContext)
if there are any version related items involved in this transaction. |
InternalXAResource |
getXAResourceEnd()
Returns an InternalXAResource that releases the write lock on the
version manager in InternalXAResource.commit(TransactionContext)
or InternalXAResource.rollback(TransactionContext) . |
protected boolean |
hasItem(NodeId id)
Return a flag indicating if the item specified exists. |
boolean |
hasItemState(ItemId id)
Return a flag indicating whether an item state for a given item id exists. |
boolean |
hasNodeReferences(NodeReferencesId id)
Return a flag indicating whether a node references object for a given target id exists. |
boolean |
hasVersion(NodeId id)
Checks if the version with the given id exists |
boolean |
hasVersionHistory(NodeId id)
Checks if the version history with the given id exists |
boolean |
isVirtualRoot(ItemId id)
Checks if the id refers to the root of a virtual tree. |
protected void |
itemDiscarded(InternalVersionItem item)
Invoked by the internal version item itself, when it's underlying persistence state was discarded. |
void |
prepare(TransactionContext tx)
Prepare transaction. Delegate the call to our XA item state manager. |
protected void |
releaseReadLock()
releases the read lock on this version manager. |
protected void |
releaseWriteLock()
releases the write lock on this version manager. |
void |
removeListener(ItemStateListener listener)
Remove an ItemStateListener
Not needed. |
protected void |
removeVersion(org.apache.jackrabbit.core.version.InternalVersionHistoryImpl history,
Name name)
Removes the specified version from the history Before modifying version history given, make a local copy of it. |
void |
removeVersion(VersionHistory history,
Name versionName)
Removes the specified version from the given version history. |
void |
rollback(TransactionContext tx)
Rollback transaction. Delegate the call to our XA item state manager. |
boolean |
setNodeReferences(NodeReferences refs)
Informs this provider that the node references to one of its states has changed. |
protected InternalVersion |
setVersionLabel(org.apache.jackrabbit.core.version.InternalVersionHistoryImpl history,
Name version,
Name label,
boolean move)
Set version label on the specified version. Before modifying version history given, make a local copy of it. |
Version |
setVersionLabel(VersionHistory history,
Name version,
Name label,
boolean move)
Sets the version label to the given version . |
protected void |
versionCreated(InternalVersion version)
Invoked when a new internal item has been created. Put the version object into our cache. |
protected void |
versionDestroyed(InternalVersion version)
Invoked when a new internal item has been destroyed. Remove the version object from our cache. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected LocalItemStateManager stateMgr
protected NodeStateEx historyRoot
Constructor Detail |
---|
public XAVersionManager(VersionManagerImpl vMgr, NodeTypeRegistry ntReg, SessionImpl session, ItemStateCacheFactory cacheFactory) throws RepositoryException
RepositoryException
Method Detail |
---|
public EventStateCollection createEventStateCollection() throws RepositoryException
EventStateCollectionFactory
EventStateCollection
.
createEventStateCollection
in interface EventStateCollectionFactory
EventStateCollection
RepositoryException
- if creation fails for some reasonpublic VirtualItemStateProvider getVirtualItemStateProvider()
getVirtualItemStateProvider
in interface VersionManager
public VersionHistory createVersionHistory(Session session, NodeState node) throws RepositoryException
createVersionHistory
in interface VersionManager
RepositoryException
VersionManager.getVersionHistory(Session, NodeState)
public Version checkin(NodeImpl node) throws RepositoryException
checkin
in interface VersionManager
RepositoryException
public void removeVersion(VersionHistory history, Name versionName) throws RepositoryException
removeVersion
in interface VersionManager
RepositoryException
public Version setVersionLabel(VersionHistory history, Name version, Name label, boolean move) throws RepositoryException
label
to the given version
.
If the label is already assigned to another version, a VersionException is
thrown unless move
is true
. If version
is null
, the label is removed from the respective version.
In either case, the version the label was previously assigned is returned,
or null
of the label was not moved.
setVersionLabel
in interface VersionManager
RepositoryException
public void close() throws Exception
close
in interface VersionManager
Exception
- if an error occurspublic boolean isVirtualRoot(ItemId id)
isVirtualRoot
in interface VirtualItemStateProvider
true
if it is the rootpublic NodeId getVirtualRootId()
getVirtualRootId
in interface VirtualItemStateProvider
public VirtualPropertyState createPropertyState(VirtualNodeState parent, Name name, int type, boolean multiValued) throws RepositoryException
createPropertyState
in interface VirtualItemStateProvider
RepositoryException
public VirtualNodeState createNodeState(VirtualNodeState parent, Name name, NodeId id, Name nodeTypeName) throws RepositoryException
createNodeState
in interface VirtualItemStateProvider
RepositoryException
public boolean setNodeReferences(NodeReferences refs)
setNodeReferences
in interface VirtualItemStateProvider
true
if the reference target is one of its items.public ItemState getItemState(ItemId id) throws NoSuchItemStateException, ItemStateException
getItemState
in interface ItemStateManager
id
- item id
NoSuchItemStateException
- if the item does not exist
ItemStateException
- if an error occurspublic boolean hasItemState(ItemId id)
hasItemState
in interface ItemStateManager
id
- item id
true
if an item state exists,
otherwise false
public NodeReferences getNodeReferences(NodeReferencesId id) throws NoSuchItemStateException, ItemStateException
getNodeReferences
in interface ItemStateManager
id
- target id
NoSuchItemStateException
- if the item does not exist
ItemStateException
- if an error occurspublic boolean hasNodeReferences(NodeReferencesId id)
hasNodeReferences
in interface ItemStateManager
id
- target id
true
if a node reference object exists for the given
id, otherwise false
.public void addListener(ItemStateListener listener)
ItemStateListener
Not needed.
addListener
in interface VirtualItemStateProvider
listener
- the new listener to be informed on modificationspublic void removeListener(ItemStateListener listener)
ItemStateListener
Not needed.
removeListener
in interface VirtualItemStateProvider
listener
- an existing listenerprotected InternalVersionItem getItem(NodeId id) throws RepositoryException
id
- the id of the item
RepositoryException
- if an error occursprotected boolean hasItem(NodeId id)
id
- the id of the item
true
if the item exists;
false
otherwiseprotected List getItemReferences(InternalVersionItem item)
item
- version item
protected InternalVersion checkin(org.apache.jackrabbit.core.version.InternalVersionHistoryImpl history, NodeImpl node) throws RepositoryException
history
- the version historynode
- node to checkin
RepositoryException
- if an error occursNode.checkin()
protected void removeVersion(org.apache.jackrabbit.core.version.InternalVersionHistoryImpl history, Name name) throws VersionException, RepositoryException
history
- the version history from where to remove the version.name
- the name of the version to remove.
VersionException
- if the version history
does
not have a version with name
.
RepositoryException
- if any other error occurs.protected InternalVersion setVersionLabel(org.apache.jackrabbit.core.version.InternalVersionHistoryImpl history, Name version, Name label, boolean move) throws RepositoryException
history
- version historyversion
- version namelabel
- version labelmove
- true
to move from existing version;
false
otherwise
RepositoryException
- if an error occursprotected void versionCreated(InternalVersion version)
version
- internal version itemprotected void versionDestroyed(InternalVersion version)
version
- internal version itempublic void associate(TransactionContext tx)
associate
in interface InternalXAResource
tx
- transaction context, if null
disassociatepublic void beforeOperation(TransactionContext tx)
InternalXAResource.prepare(org.apache.jackrabbit.core.TransactionContext)
, InternalXAResource.commit(org.apache.jackrabbit.core.TransactionContext)
or
InternalXAResource.rollback(org.apache.jackrabbit.core.TransactionContext)
method is called.
Delegate the call to our XA item state manager.
beforeOperation
in interface InternalXAResource
tx
- transaction contextpublic void prepare(TransactionContext tx) throws TransactionException
prepare
in interface InternalXAResource
tx
- transaction context
TransactionException
- if an error occurspublic void commit(TransactionContext tx) throws TransactionException
commit
in interface InternalXAResource
tx
- transaction context
TransactionException
- if an error occurspublic void rollback(TransactionContext tx)
rollback
in interface InternalXAResource
tx
- transaction context.public void afterOperation(TransactionContext tx)
InternalXAResource.prepare(org.apache.jackrabbit.core.TransactionContext)
, InternalXAResource.commit(org.apache.jackrabbit.core.TransactionContext)
or
InternalXAResource.rollback(org.apache.jackrabbit.core.TransactionContext)
method has been called.
Delegate the call to our XA item state manager.
afterOperation
in interface InternalXAResource
tx
- transaction contextpublic InternalXAResource getXAResourceBegin()
InternalXAResource
that acquires a write lock on the
version manager in InternalXAResource.prepare(TransactionContext)
if there are any version related items involved in this transaction.
public InternalXAResource getXAResourceEnd()
InternalXAResource
that releases the write lock on the
version manager in InternalXAResource.commit(TransactionContext)
or InternalXAResource.rollback(TransactionContext)
.
public InternalVersion getVersion(NodeId id) throws RepositoryException
getVersion
in interface VersionManager
RepositoryException
public InternalVersionHistory getVersionHistory(NodeId id) throws RepositoryException
getVersionHistory
in interface VersionManager
RepositoryException
public boolean hasVersionHistory(NodeId id)
hasVersionHistory
in interface VersionManager
true
if the version history exists.public boolean hasVersion(NodeId id)
hasVersion
in interface VersionManager
true
if the version exists.protected void acquireWriteLock()
protected void releaseWriteLock()
protected void acquireReadLock()
protected void releaseReadLock()
public VersionHistory getVersionHistory(Session session, NodeState node) throws RepositoryException
node
or
null
if the given node doesn't (yet) have an associated
version history.
getVersionHistory
in interface VersionManager
node
- node whose version history should be returned
node
or
null
if the given node doesn't (yet) have an
associated version history.
RepositoryException
- if an error occursVersionManager.createVersionHistory(Session, NodeState)
protected String calculateCheckinVersionName(org.apache.jackrabbit.core.version.InternalVersionHistoryImpl history, NodeImpl node) throws RepositoryException
history
- the version historynode
- the node to checkin
RepositoryException
- if an error occurs.protected void itemDiscarded(InternalVersionItem item)
item
-
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |