Package org.zkoss.util.resource

## Interface Loader<K,​V>

- All Known Implementing Classes:
    `AbstractLoader`, `ContentLoader`, `ExtendletLoader`, `ResourceLoader`

      public interface Loader<K,​V>

  A loader that could load a resource to another format. It is mainly designed to work with `ResourceCache`.
  Author:
    tomyeh

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface | Description
    --- | --- | ---
    `static class` | `Loader.Resource<V>` | Represents the more information about an object loaded by `load(K)`.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `long` | `getLastModified​(K src)` | Returns the last modified time, or -1 if reload is required or not exists.
    `V` | `load​(K src)` | Loads the resource.
    `boolean` | `shallCheck​(K src, long expiredMillis)` | Returns whether to call `getLastModified(K)`.

- - ### Method Detail

    - #### shallCheck

          boolean shallCheck​(K src,
                             long expiredMillis)

      Returns whether to call `getLastModified(K)`. If false, it assumes the current cached content is up-to-date.
      Parameters:
        `expiredMillis` - how many milli-seconds are expired after the last check. In most cases, just return true if expiredMillis > 0

    - #### getLastModified

          long getLastModified​(K src)

      Returns the last modified time, or -1 if reload is required or not exists.

    - #### load

          V load​(K src)
          throws java.lang.Exception

      Loads the resource.

      The returned resource could be anything. It will be returned by `ResourceCache.get(java.lang.Object)`. However, if you want to have more control (e.g., whether to cache), you can return an instance of `Loader.Resource`. Then, the return value of `ResourceCache.get(java.lang.Object)` will be `Loader.Resource.resource`.

      Returns:
        null if not found
      Throws:
        `java.lang.Exception` - you might throw any exception which will be passed back to the caller of `ResourceCache.get(java.lang.Object)`