Class JRAbstractLRUVirtualizer

java.lang.Object
net.sf.jasperreports.engine.fill.JRAbstractLRUVirtualizer
All Implemented Interfaces:
JRVirtualizer
Direct Known Subclasses:
JRFileVirtualizer, JRGzipVirtualizer, StoreFactoryVirtualizer, StoreVirtualizer

public abstract class JRAbstractLRUVirtualizer extends Object implements JRVirtualizer
Abstract base for LRU and serialization based virtualizer
Author:
John Bindel
  • Field Details

  • Constructor Details

    • JRAbstractLRUVirtualizer

      protected JRAbstractLRUVirtualizer(int maxSize)
      Parameters:
      maxSize - the maximum size (in JRVirtualizable objects) of the paged in cache.
    • JRAbstractLRUVirtualizer

      protected JRAbstractLRUVirtualizer(VirtualizationSerializer serializer, int maxSize)
  • Method Details

    • isPagedOut

      protected final boolean isPagedOut(String id)
    • isPagedOutAndTouch

      protected boolean isPagedOutAndTouch(JRVirtualizable o, String uid)
    • lastObject

      protected JRVirtualizable lastObject()
    • setLastObject

      protected final void setLastObject(JRVirtualizable o)
    • contextChanged

      public void contextChanged(JRVirtualizable<?> o, JRVirtualizationContext oldContext)
      Specified by:
      contextChanged in interface JRVirtualizer
    • setReadOnly

      public void setReadOnly(boolean ro)
      Sets the read only mode for the virtualizer.

      When in read-only mode, the virtualizer assumes that virtualizable objects are final and any change in a virtualizable object's data is discarded.

      When the virtualizer is used for multiple virtualization contexts (in shared mode), calling this method would override the read-only flags from all the contexts and all the objects will be manipulated in read-only mode. Use JRVirtualizationContext.setReadOnly(boolean) to set the read-only mode for one specific context.

      Parameters:
      ro - the read-only mode to set
    • isReadOnly

      public boolean isReadOnly()
      Determines whether the virtualizer is in read-only mode.
      Returns:
      whether the virtualizer is in read-only mode
      See Also:
    • isReadOnly

      protected final boolean isReadOnly(JRVirtualizable o)
    • registerObject

      public void registerObject(JRVirtualizable o)
      Description copied from interface: JRVirtualizer
      Lets this virtualizer know that it must track the object.

      All virtualizable object must register with their virtualizer upon construction.

      Specified by:
      registerObject in interface JRVirtualizer
    • isEvictable

      protected boolean isEvictable(JRVirtualizable value)
    • evict

      protected void evict()
    • deregisterObject

      public void deregisterObject(JRVirtualizable o)
      Description copied from interface: JRVirtualizer
      Lets this virtualizer know that it no longer must track the object.
      Specified by:
      deregisterObject in interface JRVirtualizer
    • touch

      public void touch(JRVirtualizable o)
      Description copied from interface: JRVirtualizer
      Lets the virtualizer know that this object is still being used. This should be called to help the virtualizer determine which objects to keep in its cache, and which objects to page-out when it must do some paging-out.

      The virtualizer gets to decide what type of caching strategy it will use.

      Specified by:
      touch in interface JRVirtualizer
    • requestData

      public void requestData(JRVirtualizable o)
      Description copied from interface: JRVirtualizer
      Called when the virtual object must be paged-in.

      If the object's virtual data is not paged-out, the object will only be touched.

      Specified by:
      requestData in interface JRVirtualizer
    • clearData

      public void clearData(JRVirtualizable o)
      Description copied from interface: JRVirtualizer
      Called when the virtual object paged-out data should be freed.

      If the object's virtual data is not paged-out, the object will only be touched.

      Specified by:
      clearData in interface JRVirtualizer
    • virtualizeData

      public void virtualizeData(JRVirtualizable o)
      Description copied from interface: JRVirtualizer
      Called when the virtual object should be paged-out.
      Specified by:
      virtualizeData in interface JRVirtualizer
    • finalize

      protected void finalize() throws Throwable
      Overrides:
      finalize in class Object
      Throws:
      Throwable
    • writeData

      protected final void writeData(JRVirtualizable o, OutputStream out) throws JRRuntimeException
      Writes serialized indentity and virtual data of a virtualizable object to a stream.
      Parameters:
      o - the serialized object
      out - the output stream
      Throws:
      JRRuntimeException
    • readData

      protected final void readData(JRVirtualizable o, InputStream in) throws JRRuntimeException
      Reads serialized identity and virtual data for a virtualizable object from a stream.
      Parameters:
      o - the virtualizable object
      in - the input stream
      Throws:
      JRRuntimeException
    • reset

      protected void reset()
    • disposeAll

      protected final void disposeAll()
    • pageOut

      protected abstract void pageOut(JRVirtualizable o) throws IOException
      Writes a virtualizable object's data to an external storage.
      Parameters:
      o - a virtualizable object
      Throws:
      IOException
    • pageIn

      protected abstract void pageIn(JRVirtualizable o) throws IOException
      Reads a virtualizable object's data from an external storage.
      Parameters:
      o - a virtualizable object
      Throws:
      IOException
    • dispose

      protected void dispose(JRVirtualizable o)
    • dispose

      protected abstract void dispose(String virtualId)
      Removes the external data associated with a virtualizable object.
      Parameters:
      virtualId - the ID of the virtualizable object