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 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 class
JRAbstractLRUVirtualizer.Cache
This 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 class
JRAbstractLRUVirtualizer.CacheReference
-
Field Summary
Fields Modifier and Type Field Description protected org.apache.commons.collections4.map.ReferenceMap<JRVirtualizationContext,Object>
lastObjectMap
protected WeakReference<JRVirtualizable>
lastObjectRef
protected org.apache.commons.collections4.map.ReferenceMap<Object,Boolean>
lastObjectSet
protected JRAbstractLRUVirtualizer.Cache
pagedIn
protected org.apache.commons.collections4.map.ReferenceMap<String,Object>
pagedOut
protected VirtualizationSerializer
serializer
-
Constructor Summary
Constructors Modifier Constructor Description protected
JRAbstractLRUVirtualizer(int maxSize)
protected
JRAbstractLRUVirtualizer(VirtualizationSerializer serializer, int maxSize)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
clearData(JRVirtualizable o)
Called when the virtual object paged-out data should be freed.void
contextChanged(JRVirtualizable<?> o, JRVirtualizationContext oldContext)
void
deregisterObject(JRVirtualizable o)
Lets this virtualizer know that it no longer must track the object.protected abstract void
dispose(String virtualId)
Removes the external data associated with a virtualizable object.protected void
dispose(JRVirtualizable o)
protected void
disposeAll()
protected void
evict()
protected void
finalize()
protected boolean
isEvictable(JRVirtualizable value)
protected boolean
isPagedOut(String id)
protected boolean
isPagedOutAndTouch(JRVirtualizable o, String uid)
boolean
isReadOnly()
Determines whether the virtualizer is in read-only mode.protected boolean
isReadOnly(JRVirtualizable o)
protected JRVirtualizable
lastObject()
protected abstract void
pageIn(JRVirtualizable o)
Reads a virtualizable object's data from an external storage.protected abstract void
pageOut(JRVirtualizable o)
Writes a virtualizable object's data to an external storage.protected void
readData(JRVirtualizable o, InputStream in)
Reads serialized identity and virtual data for a virtualizable object from a stream.void
registerObject(JRVirtualizable o)
Lets this virtualizer know that it must track the object.void
requestData(JRVirtualizable o)
Called when the virtual object must be paged-in.protected void
reset()
protected void
setLastObject(JRVirtualizable o)
void
setReadOnly(boolean ro)
Sets the read only mode for the virtualizer.void
touch(JRVirtualizable o)
Lets the virtualizer know that this object is still being used.void
virtualizeData(JRVirtualizable o)
Called when the virtual object should be paged-out.protected void
writeData(JRVirtualizable o, 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
-
lastObjectRef
protected volatile WeakReference<JRVirtualizable> lastObjectRef
-
lastObjectMap
protected org.apache.commons.collections4.map.ReferenceMap<JRVirtualizationContext,Object> lastObjectMap
-
-
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(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 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: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 interfaceJRVirtualizer
-
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 interfaceJRVirtualizer
-
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 interfaceJRVirtualizer
-
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 interfaceJRVirtualizer
-
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 interfaceJRVirtualizer
-
virtualizeData
public void virtualizeData(JRVirtualizable o)
Description copied from interface:JRVirtualizer
Called when the virtual object should be paged-out.- Specified by:
virtualizeData
in interfaceJRVirtualizer
-
finalize
protected void finalize() 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 objectout
- 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 objectin
- 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
-
-