Class CopyOnWriteTextStore

  • All Implemented Interfaces:
    ITextStore

    public class CopyOnWriteTextStore
    extends java.lang.Object
    implements ITextStore
    Copy-on-write ITextStore wrapper.

    This implementation uses an unmodifiable text store for the initial content. Upon first modification attempt, the unmodifiable store is replaced with a modifiable instance which must be supplied in the constructor.

    This class is not intended to be subclassed.

    Since:
    3.2 @noextend This class is not intended to be subclassed by clients.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected ITextStore fTextStore
      The underlying "real" text store
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      char get​(int offset)
      Returns the character at the specified offset.
      java.lang.String get​(int offset, int length)
      Returns the text of the specified character range.
      int getLength()
      Returns number of characters stored in this text store.
      void replace​(int offset, int length, java.lang.String text)
      Replaces the specified character range with the given text.
      void set​(java.lang.String text)
      Replace the content of the text store with the given text.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • fTextStore

        protected ITextStore fTextStore
        The underlying "real" text store
    • Constructor Detail

      • CopyOnWriteTextStore

        public CopyOnWriteTextStore​(ITextStore modifiableTextStore)
        Creates an empty text store. The given text store will be used upon first modification attempt.
        Parameters:
        modifiableTextStore - a modifiable ITextStore instance, may not be null
    • Method Detail

      • get

        public char get​(int offset)
        Description copied from interface: ITextStore
        Returns the character at the specified offset.
        Specified by:
        get in interface ITextStore
        Parameters:
        offset - the offset in this text store
        Returns:
        the character at this offset
      • get

        public java.lang.String get​(int offset,
                                    int length)
        Description copied from interface: ITextStore
        Returns the text of the specified character range.
        Specified by:
        get in interface ITextStore
        Parameters:
        offset - the offset of the range
        length - the length of the range
        Returns:
        the text of the range
      • getLength

        public int getLength()
        Description copied from interface: ITextStore
        Returns number of characters stored in this text store.
        Specified by:
        getLength in interface ITextStore
        Returns:
        the number of characters stored in this text store
      • replace

        public void replace​(int offset,
                            int length,
                            java.lang.String text)
        Description copied from interface: ITextStore
        Replaces the specified character range with the given text. replace(getLength(), 0, "some text") is a valid call and appends text to the end of the text store.
        Specified by:
        replace in interface ITextStore
        Parameters:
        offset - the offset of the range to be replaced
        length - the number of characters to be replaced
        text - the substitution text
      • set

        public void set​(java.lang.String text)
        Description copied from interface: ITextStore
        Replace the content of the text store with the given text. Convenience method for replace(0, getLength(), text.
        Specified by:
        set in interface ITextStore
        Parameters:
        text - the new content of the text store