Package net.sf.jasperreports.engine.fill
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 java.lang.Object implements JRVirtualizer
Abstract base for LRU and serialization based virtualizer- Author:
- John Bindel
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classJRAbstractLRUVirtualizer.CacheThis class keeps track of how many objects are currently in memory, and when there are too many, it pushes the last touched one to disk.protected static classJRAbstractLRUVirtualizer.CacheReference
-
Field Summary
Fields Modifier and Type Field Description protected org.apache.commons.collections4.map.ReferenceMap<JRVirtualizationContext,java.lang.Object>lastObjectMapprotected java.lang.ref.WeakReference<JRVirtualizable>lastObjectRefprotected org.apache.commons.collections4.map.ReferenceMap<java.lang.Object,java.lang.Boolean>lastObjectSetprotected JRAbstractLRUVirtualizer.CachepagedInprotected org.apache.commons.collections4.map.ReferenceMap<java.lang.String,java.lang.Object>pagedOutprotected VirtualizationSerializerserializer
-
Constructor Summary
Constructors Modifier Constructor Description protectedJRAbstractLRUVirtualizer(int maxSize)protectedJRAbstractLRUVirtualizer(VirtualizationSerializer serializer, int maxSize)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidclearData(JRVirtualizable o)Called when the virtual object paged-out data should be freed.voidcontextChanged(JRVirtualizable<?> o, JRVirtualizationContext oldContext)voidderegisterObject(JRVirtualizable o)Lets this virtualizer know that it no longer must track the object.protected abstract voiddispose(java.lang.String virtualId)Removes the external data associated with a virtualizable object.protected voiddispose(JRVirtualizable o)protected voiddisposeAll()protected voidevict()protected voidfinalize()protected booleanisEvictable(JRVirtualizable value)protected booleanisPagedOut(java.lang.String id)protected booleanisPagedOutAndTouch(JRVirtualizable o, java.lang.String uid)booleanisReadOnly()Determines whether the virtualizer is in read-only mode.protected booleanisReadOnly(JRVirtualizable o)protected JRVirtualizablelastObject()protected abstract voidpageIn(JRVirtualizable o)Reads a virtualizable object's data from an external storage.protected abstract voidpageOut(JRVirtualizable o)Writes a virtualizable object's data to an external storage.protected voidreadData(JRVirtualizable o, java.io.InputStream in)Reads serialized identity and virtual data for a virtualizable object from a stream.voidregisterObject(JRVirtualizable o)Lets this virtualizer know that it must track the object.voidrequestData(JRVirtualizable o)Called when the virtual object must be paged-in.protected voidreset()protected voidsetLastObject(JRVirtualizable o)voidsetReadOnly(boolean ro)Sets the read only mode for the virtualizer.voidtouch(JRVirtualizable o)Lets the virtualizer know that this object is still being used.voidvirtualizeData(JRVirtualizable o)Called when the virtual object should be paged-out.protected voidwriteData(JRVirtualizable o, java.io.OutputStream out)Writes serialized indentity and virtual data of a virtualizable object to a stream.-
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface net.sf.jasperreports.engine.JRVirtualizer
cleanup
-
-
-
-
Field Detail
-
serializer
protected final VirtualizationSerializer serializer
-
pagedIn
protected final JRAbstractLRUVirtualizer.Cache pagedIn
-
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.
-
JRAbstractLRUVirtualizer
protected JRAbstractLRUVirtualizer(VirtualizationSerializer serializer, int maxSize)
-
-
Method Detail
-
isPagedOut
protected final boolean isPagedOut(java.lang.String id)
-
isPagedOutAndTouch
protected boolean isPagedOutAndTouch(JRVirtualizable o, java.lang.String uid)
-
lastObject
protected JRVirtualizable lastObject()
-
setLastObject
protected final void setLastObject(JRVirtualizable o)
-
contextChanged
public void contextChanged(JRVirtualizable<?> o, JRVirtualizationContext oldContext)
- Specified by:
contextChangedin interfaceJRVirtualizer
-
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. UseJRVirtualizationContext.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)
-
isReadOnly
protected final boolean isReadOnly(JRVirtualizable o)
-
registerObject
public void registerObject(JRVirtualizable o)
Description copied from interface:JRVirtualizerLets this virtualizer know that it must track the object.All virtualizable object must register with their virtualizer upon construction.
- Specified by:
registerObjectin interfaceJRVirtualizer
-
isEvictable
protected boolean isEvictable(JRVirtualizable value)
-
evict
protected void evict()
-
deregisterObject
public void deregisterObject(JRVirtualizable o)
Description copied from interface:JRVirtualizerLets this virtualizer know that it no longer must track the object.- Specified by:
deregisterObjectin interfaceJRVirtualizer
-
touch
public void touch(JRVirtualizable o)
Description copied from interface:JRVirtualizerLets 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:
touchin interfaceJRVirtualizer
-
requestData
public void requestData(JRVirtualizable o)
Description copied from interface:JRVirtualizerCalled 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:
requestDatain interfaceJRVirtualizer
-
clearData
public void clearData(JRVirtualizable o)
Description copied from interface:JRVirtualizerCalled 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:
clearDatain interfaceJRVirtualizer
-
virtualizeData
public void virtualizeData(JRVirtualizable o)
Description copied from interface:JRVirtualizerCalled when the virtual object should be paged-out.- Specified by:
virtualizeDatain interfaceJRVirtualizer
-
finalize
protected void finalize() throws java.lang.Throwable- Overrides:
finalizein classjava.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 objectout- 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 objectin- 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 void dispose(JRVirtualizable o)
-
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
-
-