Package org.zkoss.web.util.resource

## Class ResourceLoader<V>

- java.lang.Object
- - org.zkoss.web.util.resource.ResourceLoader<V>

- All Implemented Interfaces:
    `Loader<org.zkoss.web.util.resource.ResourceInfo,​V>`

      public abstract class ResourceLoader<V>
      extends java.lang.Object
      implements Loader<org.zkoss.web.util.resource.ResourceInfo,​V>

  A semi-implemented loader to used with `ResourceCaches.get(org.zkoss.web.util.resource.ResourceCache<V>, javax.servlet.ServletContext, java.lang.String, java.lang.Object)` to retrieve servlet resources.
  Author:
    tomyeh

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.zkoss.util.resource.Loader

      `Loader.Resource<V>`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `ResourceLoader()` |

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `long` | `getLastModified​(org.zkoss.web.util.resource.ResourceInfo src)` | Returns the last modified time, or -1 if reload is required or not exists.
    `V` | `load​(org.zkoss.web.util.resource.ResourceInfo src)` | Loads the resource.
    `protected abstract V` | `parse​(java.lang.String path, java.io.File file, java.lang.Object extra)` | Parses the specified file and returns the result which will be stored into the cache (`ResourceCaches.get(org.zkoss.web.util.resource.ResourceCache<V>, javax.servlet.ServletContext, java.lang.String, java.lang.Object)`).
    `protected abstract V` | `parse​(java.lang.String path, java.net.URL url, java.lang.Object extra)` | Parses the specified URL and returns the result which will be stored into the cache (`ResourceCaches.get(org.zkoss.web.util.resource.ResourceCache<V>, javax.servlet.ServletContext, java.lang.String, java.lang.Object)`).
    `boolean` | `shallCheck​(org.zkoss.web.util.resource.ResourceInfo src, long expiredMillis)` | Returns whether to call `Loader.getLastModified(K)`.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ResourceLoader

          protected ResourceLoader()

  - ### Method Detail

    - #### parse

          protected abstract V parse​(java.lang.String path,
                                     java.io.File file,
                                     java.lang.Object extra)
                              throws java.lang.Exception

      Parses the specified file and returns the result which will be stored into the cache (`ResourceCaches.get(org.zkoss.web.util.resource.ResourceCache<V>, javax.servlet.ServletContext, java.lang.String, java.lang.Object)`).

      Deriving must override this method.

      Parameters:
        `extra` - the extra parameter passed from `ResourceCaches.get(org.zkoss.web.util.resource.ResourceCache<V>, javax.servlet.ServletContext, java.lang.String, java.lang.Object)`.
      Throws:
        `java.lang.Exception`

    - #### parse

          protected abstract V parse​(java.lang.String path,
                                     java.net.URL url,
                                     java.lang.Object extra)
                              throws java.lang.Exception

      Parses the specified URL and returns the result which will be stored into the cache (`ResourceCaches.get(org.zkoss.web.util.resource.ResourceCache<V>, javax.servlet.ServletContext, java.lang.String, java.lang.Object)`).

      Deriving must override this method.

      Parameters:
        `extra` - the extra parameter passed from `ResourceCaches.get(org.zkoss.web.util.resource.ResourceCache<V>, javax.servlet.ServletContext, java.lang.String, java.lang.Object)`.
      Throws:
        `java.lang.Exception`

    - #### shallCheck

          public boolean shallCheck​(org.zkoss.web.util.resource.ResourceInfo src,
                                    long expiredMillis)

      Description copied from interface: `Loader`
      Returns whether to call `Loader.getLastModified(K)`. If false, it assumes the current cached content is up-to-date.
      Specified by:
        `shallCheck` in interface `Loader<org.zkoss.web.util.resource.ResourceInfo,​V>`
        `expiredMillis` - how many milli-seconds are expired after the last check. In most cases, just return true if expiredMillis > 0

    - #### getLastModified

          public long getLastModified​(org.zkoss.web.util.resource.ResourceInfo src)

      Description copied from interface: `Loader`
      Returns the last modified time, or -1 if reload is required or not exists.
      Specified by:
        `getLastModified` in interface `Loader<org.zkoss.web.util.resource.ResourceInfo,​V>`

    - #### load

          public V load​(org.zkoss.web.util.resource.ResourceInfo src)
                 throws java.lang.Exception

      Description copied from interface: `Loader`
      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`.

      Specified by:
        `load` in interface `Loader<org.zkoss.web.util.resource.ResourceInfo,​V>`
      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)`