org.apache.jackrabbit.core.state
Class ChangeLog

java.lang.Object
  extended by org.apache.jackrabbit.core.state.ChangeLog

public class ChangeLog
extends Object

Registers changes made to states and references and consolidates empty changes.


Constructor Summary
ChangeLog()
           
 
Method Summary
 void added(ItemState state)
          A state has been added
 Iterable<ItemState> addedStates()
          Return the added states in this change log.
 boolean deleted(ItemId id)
          Return a flag indicating whether a given item state is marked as deleted in this log.
 void deleted(ItemState state)
          A state has been deleted.
 Iterable<ItemState> deletedStates()
          Return the deleted states in this change log.
 void disconnect()
          Disconnect all states in the change log from their overlaid states.
 ItemState get(ItemId id)
          Return an item state given its id.
 NodeReferences getReferencesTo(NodeId id)
          Return a node references object given the target node id.
 boolean has(ItemId id)
          Return a flag indicating whether a given item state exists.
 boolean hasUpdates()
          Checks whether this change log contains any changes.
 boolean isModified(ItemId id)
          Returns a flag indicating whether a given item state is marked as modified in this log.
 void merge(ChangeLog other)
          Merge another change log with this change log
 void modified(ItemState state)
          A state has been modified.
 void modified(NodeReferences refs)
          A references has been modified
 Iterable<NodeReferences> modifiedRefs()
          Return the modified references in this change log.
 Iterable<ItemState> modifiedStates()
          Return the modified states in this change log.
 void persisted()
          After the states have actually been persisted, update their internal states and notify listeners.
 void push()
          Push all states contained in the various maps of items we have.
 void removeReferencesEntry(NodeId targetId)
          Removes the references entry with the given target node id.
 void reset()
          Reset this change log, removing all members inside the maps we built.
 String toString()
          Returns a string representation of this change log for diagnostic purposes.
 void undo(ItemStateManager parent)
          Undo changes made to items in the change log.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ChangeLog

public ChangeLog()
Method Detail

hasUpdates

public boolean hasUpdates()
Checks whether this change log contains any changes. This method is used to avoid extra work on updates that contain no changes.

Returns:
true if this log contains at least one change, false otherwise
Since:
Apache Jackrabbit 1.5
See Also:
JCR-1813

added

public void added(ItemState state)
A state has been added

Parameters:
state - state that has been added

modified

public void modified(ItemState state)
A state has been modified. If the state is not a new state (not in the collection of added ones), then disconnect the local state from its underlying shared state and add it to the modified states collection.

Parameters:
state - state that has been modified

deleted

public void deleted(ItemState state)
A state has been deleted. If the state is not a new state (not in the collection of added ones), then disconnect the local state from its underlying shared state, remove it from the modified states collection and add it to the deleted states collection.

Parameters:
state - state that has been deleted

modified

public void modified(NodeReferences refs)
A references has been modified

Parameters:
refs - refs that has been modified

removeReferencesEntry

public void removeReferencesEntry(NodeId targetId)
Removes the references entry with the given target node id. This method is called by VersionItemStateManager to drop references to virtual nodes.

Parameters:
targetId - target node id

get

public ItemState get(ItemId id)
              throws NoSuchItemStateException
Return an item state given its id. Returns null if the item state is neither in the added nor in the modified section. Throws a NoSuchItemStateException if the item state is in the deleted section.

Returns:
item state or null
Throws:
NoSuchItemStateException - if the item has been deleted

has

public boolean has(ItemId id)
Return a flag indicating whether a given item state exists.

Returns:
true if item state exists within this log; false otherwise

deleted

public boolean deleted(ItemId id)
Return a flag indicating whether a given item state is marked as deleted in this log.

Returns:
true if item state is marked as deleted in this log; false otherwise

isModified

public boolean isModified(ItemId id)
Returns a flag indicating whether a given item state is marked as modified in this log.

Parameters:
id - the id of the item.
Returns:
true if the item state is marked as modified in this log; false otherwise.

getReferencesTo

public NodeReferences getReferencesTo(NodeId id)
Return a node references object given the target node id. Returns null if the node reference is not in the modified section.

Returns:
node references or null

addedStates

public Iterable<ItemState> addedStates()
Return the added states in this change log.

Returns:
added states

modifiedStates

public Iterable<ItemState> modifiedStates()
Return the modified states in this change log.

Note that this change log must not be modified while iterating through the returned states.

Returns:
modified states

deletedStates

public Iterable<ItemState> deletedStates()
Return the deleted states in this change log.

Note that this change log must not be modified while iterating through the returned states.

Returns:
deleted states

modifiedRefs

public Iterable<NodeReferences> modifiedRefs()
Return the modified references in this change log.

Note that this change log must not be modified while iterating through the returned states.

Returns:
modified references

merge

public void merge(ChangeLog other)
Merge another change log with this change log

Parameters:
other - other change log

push

public void push()
Push all states contained in the various maps of items we have.


persisted

public void persisted()
After the states have actually been persisted, update their internal states and notify listeners.


reset

public void reset()
Reset this change log, removing all members inside the maps we built.


disconnect

public void disconnect()
Disconnect all states in the change log from their overlaid states.


undo

public void undo(ItemStateManager parent)
Undo changes made to items in the change log. Discards added items, refreshes modified and resurrects deleted items.

Parameters:
parent - parent manager that will hold current data

toString

public String toString()
Returns a string representation of this change log for diagnostic purposes.

Overrides:
toString in class Object
Returns:
a string representation of this change log


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