Class JRAbstractLRUVirtualizer

    • Field Detail

      • pagedOut

        protected final org.apache.commons.collections4.map.ReferenceMap<java.lang.String,​java.lang.Object> pagedOut
      • lastObjectRef

        protected volatile java.lang.ref.WeakReference<JRVirtualizable> lastObjectRef
      • lastObjectMap

        protected org.apache.commons.collections4.map.ReferenceMap<JRVirtualizationContext,​java.lang.Object> lastObjectMap
      • lastObjectSet

        protected org.apache.commons.collections4.map.ReferenceMap<java.lang.Object,​java.lang.Boolean> lastObjectSet
    • Constructor Detail

      • JRAbstractLRUVirtualizer

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

      • isPagedOut

        protected final boolean isPagedOut​(java.lang.String id)
      • isPagedOutAndTouch

        protected boolean isPagedOutAndTouch​(JRVirtualizable o,
                                             java.lang.String uid)
      • setLastObject

        protected final void setLastObject​(JRVirtualizable o)
      • 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:
        setReadOnly(boolean)
      • 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
      • evict

        protected void evict()
      • 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
      • finalize

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

        protected final void writeData​(JRVirtualizable o,
                                       java.io.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,
                                      java.io.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 java.io.IOException
        Writes a virtualizable object's data to an external storage.
        Parameters:
        o - a virtualizable object
        Throws:
        java.io.IOException
      • pageIn

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

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