Class ResourceCache<K,​V>

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, java.util.Map<java.lang.Object,​java.lang.Object>, Cache<java.lang.Object,​java.lang.Object>
    Direct Known Subclasses:
    ResourceCache

    public class ResourceCache<K,​V>
    extends CacheMap<java.lang.Object,​java.lang.Object>
    Used to cache resources. To use this class, you have to implement Loader and then ResourceCache will use it to check whether a resource is gone, modified and load the resource.

    Unlike CacheMap, it is thread-safe.

    The default check period depends on the library property called org.zkoss.util.resource.checkPeriod (unit: second). If not specified, 5 seconds are assumed

    Author:
    tomyeh
    See Also:
    Serialized Form
    • Field Detail

      • _loader

        protected final Loader<K,​V> _loader
        The loader.
    • Constructor Detail

      • ResourceCache

        public ResourceCache​(Loader<K,​V> loader)
        Constructor.
        Parameters:
        loader - the loader to load resource
      • ResourceCache

        public ResourceCache​(Loader<K,​V> loader,
                             int initsz)
        Constructor.
        Parameters:
        loader - the loader to load resource
        initsz - the initial size of the map
    • Method Detail

      • getLoader

        public Loader<K,​V> getLoader()
        Returns the loader.
      • getCheckPeriod

        public int getCheckPeriod()
        Returns how often to check (unit=milliseconds).

        Default: 5000

      • setCheckPeriod

        public ResourceCache setCheckPeriod​(int checkPeriod)
        Sets how often to check (unit=milliseconds).
        Returns:
        this object
      • get

        public V get​(java.lang.Object src)
        Returns the resource, or null if not found.
        Specified by:
        get in interface Cache<K,​V>
        Specified by:
        get in interface java.util.Map<K,​V>
        Overrides:
        get in class CacheMap<java.lang.Object,​java.lang.Object>
      • put

        public java.lang.Object put​(java.lang.Object src,
                                    java.lang.Object val)
        Don't use it.
        Specified by:
        put in interface Cache<K,​V>
        Specified by:
        put in interface java.util.Map<K,​V>
        Overrides:
        put in class CacheMap<java.lang.Object,​java.lang.Object>
        Returns:
        the previous value of the same, or null if no such value
        Throws:
        java.lang.UnsupportedOperationException - if called
      • remove

        public java.lang.Object remove​(java.lang.Object src)
        It is OK to remove the resource if you don't want to cache it. It is thread safe.
        Specified by:
        remove in interface Cache<K,​V>
        Specified by:
        remove in interface java.util.Map<K,​V>
        Overrides:
        remove in class CacheMap<java.lang.Object,​java.lang.Object>
        Returns:
        the object if found.
      • clear

        public void clear()
        It is OK to clear up all cached resources if you don't want to cache it. It is thread safe.
        Specified by:
        clear in interface Cache<K,​V>
        Specified by:
        clear in interface java.util.Map<K,​V>
        Overrides:
        clear in class CacheMap<java.lang.Object,​java.lang.Object>