Class ItemState

  • Direct Known Subclasses:
    NodeState, PropertyState

    public abstract class ItemState
    extends Object
    ItemState represents the state of an Item.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected ItemState​(int initialStatus, boolean isTransient)
      Constructs a new unconnected item state
      protected ItemState​(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 long calculateMemoryFootprint()
      Returns the approximate memory consumption of this state.
      void connect​(ItemState overlayedState)
      Connect this state to some underlying overlayed state.
      abstract void copy​(ItemState state, boolean syncModCount)
      Copy state information from another state into this state
      void discard()
      Discards this instance, i.e.
      protected void disconnect()
      Disconnect this state from the underlying overlayed state.
      ItemStateListener getContainer()
      Return the parent container that will receive notifications about changes to this state.
      abstract ItemId getId()
      Returns the identifier of this item.
      short getModCount()
      Returns the modification count.
      ItemState getOverlayedState()
      Returns the persistent state backing this transient state or null if there is no persistent state (i.e..
      abstract NodeId getParentId()
      Returns the NodeId of the parent NodeState or null if either this item state represents the root node or this item state is 'free floating', i.e.
      int getStatus()
      Returns the status of this item.
      boolean hasOverlayedState()
      Determines if this item state is overlying persistent state.
      protected boolean isConnected()
      Return a flag indicating whether this state is connected to some other state.
      abstract boolean isNode()
      Determines if this item state represents a node.
      boolean isStale()
      Determines whether this item state has become stale.
      boolean isTransient()
      Returns true if this item state represents new or modified state (i.e.
      protected void notifyStateCreated()
      Notify the parent container about changes to this state.
      protected void notifyStateDestroyed()
      Notify the parent container about changes to this state.
      protected void notifyStateDiscarded()
      Notify the parent container about changes to this state.
      void notifyStateUpdated()
      Notify the parent container about changes to this state.
      protected void reconnect()
      Reconnect this state to the overlayed state that it has been disconnected from earlier.
      void setContainer​(ItemStateListener container)
      Set the parent container that will receive notifications about changes to this state.
      void setModCount​(short modCount)
      Sets the modification count.
      void setStatus​(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_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 object
        isTransient - 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 overlayed
        initialStatus - the initial status of the new ItemState instance
        isTransient - 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 information
        syncModCount - if the modCount should be synchronized.
      • reconnect

        protected void reconnect()
                          throws ItemStateException
        Reconnect 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:
        true if this state is connected, false otherwise.
      • 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()
        Returns true if this item state represents new or modified state (i.e. the result of copy-on-write) or false if it represents existing, unmodified state.
        Returns:
        true if this item state is modified or new, otherwise false
      • 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 parent NodeState or null if 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:
        true if this item state is overlying persistent state, otherwise false.
      • getOverlayedState

        public ItemState getOverlayedState()
        Returns the persistent state backing this transient state or null if there is no persistent state (i.e.. this state is purely transient).
        Returns:
        the persistent item state or null if 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. Returns null if 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.