Package org.apache.jackrabbit.core.state
Class ItemState
- java.lang.Object
-
- org.apache.jackrabbit.core.state.ItemState
-
- Direct Known Subclasses:
NodeState,PropertyState
public abstract class ItemState extends Object
ItemStaterepresents the state of anItem.
-
-
Field Summary
Fields Modifier and Type Field Description protected ItemStateoverlayedStatethe backing persistent item state (may be null)protected intstatusthe internal status of this item statestatic intSTATUS_EXISTING'existing', i.e.static intSTATUS_EXISTING_MODIFIED'existing', i.e.static intSTATUS_EXISTING_REMOVED'existing', i.e.static intSTATUS_NEW'new' statestatic intSTATUS_STALE_DESTROYED'existing', i.e.static intSTATUS_UNDEFINEDthe status is undefined
-
Constructor Summary
Constructors Modifier Constructor Description protectedItemState(int initialStatus, boolean isTransient)Constructs a new unconnected item stateprotectedItemState(ItemState overlayedState, int initialStatus, boolean isTransient)Constructs a new item state that is initially connected to an overlayed state.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract longcalculateMemoryFootprint()Returns the approximate memory consumption of this state.voidconnect(ItemState overlayedState)Connect this state to some underlying overlayed state.abstract voidcopy(ItemState state, boolean syncModCount)Copy state information from another state into this statevoiddiscard()Discards this instance, i.e.protected voiddisconnect()Disconnect this state from the underlying overlayed state.ItemStateListenergetContainer()Return the parent container that will receive notifications about changes to this state.abstract ItemIdgetId()Returns the identifier of this item.shortgetModCount()Returns the modification count.ItemStategetOverlayedState()Returns the persistent state backing this transient state ornullif there is no persistent state (i.e..abstract NodeIdgetParentId()Returns the NodeId of the parentNodeStateornullif either this item state represents the root node or this item state is 'free floating', i.e.intgetStatus()Returns the status of this item.booleanhasOverlayedState()Determines if this item state is overlying persistent state.protected booleanisConnected()Return a flag indicating whether this state is connected to some other state.abstract booleanisNode()Determines if this item state represents a node.booleanisStale()Determines whether this item state has become stale.booleanisTransient()Returnstrueif this item state represents new or modified state (i.e.protected voidnotifyStateCreated()Notify the parent container about changes to this state.protected voidnotifyStateDestroyed()Notify the parent container about changes to this state.protected voidnotifyStateDiscarded()Notify the parent container about changes to this state.voidnotifyStateUpdated()Notify the parent container about changes to this state.protected voidreconnect()Reconnect this state to the overlayed state that it has been disconnected from earlier.voidsetContainer(ItemStateListener container)Set the parent container that will receive notifications about changes to this state.voidsetModCount(short modCount)Sets the modification count.voidsetStatus(int newStatus)Sets the new status of this item.
-
-
-
Field Detail
-
STATUS_UNDEFINED
public static final int STATUS_UNDEFINED
the status is undefined- See Also:
- Constant Field Values
-
STATUS_EXISTING
public static final int STATUS_EXISTING
'existing', i.e. persistent state- See Also:
- Constant Field Values
-
STATUS_EXISTING_MODIFIED
public static final int STATUS_EXISTING_MODIFIED
'existing', i.e. persistent state that has been transiently modified (copy-on-write)- See Also:
- Constant Field Values
-
STATUS_EXISTING_REMOVED
public static final int STATUS_EXISTING_REMOVED
'existing', i.e. persistent state that has been transiently removed (copy-on-write)- See Also:
- Constant Field Values
-
STATUS_NEW
public static final int STATUS_NEW
'new' state- See Also:
- Constant Field Values
-
STATUS_STALE_DESTROYED
public static final int STATUS_STALE_DESTROYED
'existing', i.e. persistent state that has been destroyed by somebody else- See Also:
- Constant Field Values
-
status
protected int status
the internal status of this item state
-
overlayedState
protected ItemState overlayedState
the backing persistent item state (may be null)
-
-
Constructor Detail
-
ItemState
protected ItemState(int initialStatus, boolean isTransient)Constructs a new unconnected item state- Parameters:
initialStatus- the initial status of the item state objectisTransient- flag indicating whether this state is transient or not
-
ItemState
protected ItemState(ItemState overlayedState, int initialStatus, boolean isTransient)
Constructs a new item state that is initially connected to an overlayed state.- Parameters:
overlayedState- the backing item state being overlayedinitialStatus- the initial status of the newItemStateinstanceisTransient- flag indicating whether this state is transient or not
-
-
Method Detail
-
copy
public abstract void copy(ItemState state, boolean syncModCount)
Copy state information from another state into this state- Parameters:
state- source state informationsyncModCount- if the modCount should be synchronized.
-
connect
public void connect(ItemState overlayedState) throws ItemStateException
Connect this state to some underlying overlayed state.- Throws:
ItemStateException
-
reconnect
protected void reconnect() throws ItemStateExceptionReconnect this state to the overlayed state that it has been disconnected from earlier.- Throws:
ItemStateException
-
disconnect
protected void disconnect()
Disconnect this state from the underlying overlayed state.
-
isConnected
protected boolean isConnected()
Return a flag indicating whether this state is connected to some other state.- Returns:
trueif this state is connected,falseotherwise.
-
notifyStateDiscarded
protected void notifyStateDiscarded()
Notify the parent container about changes to this state.
-
notifyStateCreated
protected void notifyStateCreated()
Notify the parent container about changes to this state.
-
notifyStateUpdated
public void notifyStateUpdated()
Notify the parent container about changes to this state.
-
notifyStateDestroyed
protected void notifyStateDestroyed()
Notify the parent container about changes to this state.
-
isNode
public abstract boolean isNode()
Determines if this item state represents a node.- Returns:
- true if this item state represents a node, otherwise false.
-
getId
public abstract ItemId getId()
Returns the identifier of this item.- Returns:
- the id of this item.
-
isTransient
public boolean isTransient()
Returnstrueif this item state represents new or modified state (i.e. the result of copy-on-write) orfalseif it represents existing, unmodified state.- Returns:
trueif this item state is modified or new, otherwisefalse
-
isStale
public boolean isStale()
Determines whether this item state has become stale.- Returns:
- true if this item state has become stale, false otherwise.
-
getParentId
public abstract NodeId getParentId()
Returns the NodeId of the parentNodeStateornullif either this item state represents the root node or this item state is 'free floating', i.e. not attached to the repository's hierarchy.- Returns:
- the parent
NodeState's Id
-
getStatus
public int getStatus()
Returns the status of this item.- Returns:
- the status of this item.
-
setStatus
public void setStatus(int newStatus)
Sets the new status of this item.- Parameters:
newStatus- the new status
-
getModCount
public short getModCount()
Returns the modification count.- Returns:
- the modification count.
-
setModCount
public void setModCount(short modCount)
Sets the modification count.- Parameters:
modCount- the modification count of this item
-
discard
public void discard()
Discards this instance, i.e. renders it 'invalid'.
-
hasOverlayedState
public boolean hasOverlayedState()
Determines if this item state is overlying persistent state.- Returns:
trueif this item state is overlying persistent state, otherwisefalse.
-
getOverlayedState
public ItemState getOverlayedState()
Returns the persistent state backing this transient state ornullif there is no persistent state (i.e.. this state is purely transient).- Returns:
- the persistent item state or
nullif there is no persistent state.
-
setContainer
public void setContainer(ItemStateListener container)
Set the parent container that will receive notifications about changes to this state.- Parameters:
container- container to be informed on modifications
-
getContainer
public ItemStateListener getContainer()
Return the parent container that will receive notifications about changes to this state. Returnsnullif none has been yet assigned.- Returns:
- container or
null
-
calculateMemoryFootprint
public abstract long calculateMemoryFootprint()
Returns the approximate memory consumption of this state.- Returns:
- the approximate memory consumption of this state.
-
-