IcedTea-Web NetX

## net.sourceforge.jnlp.cache
Class CacheUtil

    java.lang.Object
      net.sourceforge.jnlp.cache.CacheUtil

    public class CacheUtil

extends java.lang.Object

Provides static methods to interact with the cache, download indicator, and other utility methods.

Constructor Summary
`CacheUtil()`

Method Summary
`static void` `cleanCache()` This will remove all old cache items.
`static boolean` `clearCache()` Clears the cache by deleting all the Netx cache files Note: Because of how our caching system works, deleting jars of another javaws process is using them can be quite disasterous.
`static java.net.URL` `getCachedResource(java.net.URL location, Version version, UpdatePolicy policy)` Caches a resource and returns a URL for it in the cache; blocks until resource is cached.
`static java.io.File` `getCacheFile(java.net.URL source, Version version)` Returns the file for the locally cached contents of the source.
`static java.lang.String` `getCacheParentDirectory(java.lang.String filePath)` Returns the parent directory of the cached resource.
`static java.io.OutputStream` `getOutputStream(java.net.URL source, Version version)` Returns a buffered output stream open for writing to the cache file.
`static java.security.Permission` `getReadPermission(java.net.URL location, Version version)` Returns the Permission object necessary to access the resource, or null if no permission is needed.
`static boolean` `isCacheable(java.net.URL source, Version version)` Returns whether the resource can be cached as a local file; if not, then URLConnection.openStream can be used to obtain the contents.
`static boolean` `isCached(java.net.URL source, Version version)` Returns true if the cache has a local copy of the contents of the URL matching the specified version string.
`static boolean` `isCurrent(java.net.URL source, Version version, java.net.URLConnection connection)` Returns whether there is a version of the URL contents in the cache and it is up to date.
`static void` `lockFile(PropertiesFile properties)` Lock the property file and add it to our pool of locks.
`static java.io.File` `makeNewCacheFile(java.net.URL source, Version version)` This will create a new entry for the cache item.
`static void` `streamCopy(java.io.InputStream is, java.io.OutputStream os)` Copies from an input stream to an output stream.
`static void` `unlockFile(PropertiesFile properties)` Unlock the property file and remove it from our pool.
`static boolean` `urlEquals(java.net.URL u1, java.net.URL u2)` Compares a URL using string compare of its protocol, host, port, path, query, and anchor.
`static java.io.File` `urlToPath(java.net.URL location, java.lang.String subdir)` Converts a URL into a local path string within the given directory.
`static void` `waitForResources(ApplicationInstance app, ResourceTracker tracker, java.net.URL[] resources, java.lang.String title)` Waits until the resources are downloaded, while showing a progress indicator.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### CacheUtil

    public CacheUtil()

Method Detail

### urlEquals

    public static boolean urlEquals(java.net.URL u1,
                                    java.net.URL u2)

  Compares a URL using string compare of its protocol, host, port, path, query, and anchor. This method avoids the host name lookup that URL.equals does for http: protocol URLs. It may not return the same value as the URL.equals method (different hostnames that resolve to the same IP address, ie sourceforge.net and www.sourceforge.net).

### getCachedResource

    public static java.net.URL getCachedResource(java.net.URL location,
                                                 Version version,
                                                 UpdatePolicy policy)

  Caches a resource and returns a URL for it in the cache; blocks until resource is cached. If the resource location is not cacheable (points to a local file, etc) then the original URL is returned.

  Parameters:
    `location` - location of the resource
    `version` - the version, or null
  Returns:
    either the location in the cache or the original location

### getReadPermission

    public static java.security.Permission getReadPermission(java.net.URL location,
                                                             Version version)

  Returns the Permission object necessary to access the resource, or null if no permission is needed.

### clearCache

    public static boolean clearCache()

  Clears the cache by deleting all the Netx cache files Note: Because of how our caching system works, deleting jars of another javaws process is using them can be quite disasterous. Hence why Launcher creates lock files and we check for those by calling `okToClearCache()`

### isCurrent

    public static boolean isCurrent(java.net.URL source,
                                    Version version,
                                    java.net.URLConnection connection)

  Returns whether there is a version of the URL contents in the cache and it is up to date. This method may not return immediately.

  Parameters:
    `source` - the source URL
    `version` - the versions to check for
    `connection` - a connection to the URL, or null
  Returns:
    whether the cache contains the version
  Throws:
    `java.lang.IllegalArgumentException` - if the source is not cacheable

### isCached

    public static boolean isCached(java.net.URL source,
                                   Version version)

  Returns true if the cache has a local copy of the contents of the URL matching the specified version string.

  Parameters:
    `source` - the source URL
    `version` - the versions to check for
  Returns:
    true if the source is in the cache
  Throws:
    `java.lang.IllegalArgumentException` - if the source is not cacheable

### isCacheable

    public static boolean isCacheable(java.net.URL source,
                                      Version version)

  Returns whether the resource can be cached as a local file; if not, then URLConnection.openStream can be used to obtain the contents.

### getCacheFile

    public static java.io.File getCacheFile(java.net.URL source,
                                            Version version)

  Returns the file for the locally cached contents of the source. This method returns the file location only and does not download the resource. The latest version of the resource that matches the specified version will be returned.

  Parameters:
    `source` - the source URL
    `version` - the version id of the local file
  Returns:
    the file location in the cache, or null if no versions cached
  Throws:
    `java.lang.IllegalArgumentException` - if the source is not cacheable

### getCacheParentDirectory

    public static java.lang.String getCacheParentDirectory(java.lang.String filePath)

  Returns the parent directory of the cached resource.

  Parameters:
    `path` - The path of the cached resource directory.

### makeNewCacheFile

    public static java.io.File makeNewCacheFile(java.net.URL source,
                                                Version version)

  This will create a new entry for the cache item. It is however not initialized but any future calls to getCacheFile with the source and version given to here, will cause it to return this item.

  Parameters:
    `source` - the source URL
    `version` - the version id of the local file
  Returns:
    the file location in the cache.

### getOutputStream

    public static java.io.OutputStream getOutputStream(java.net.URL source,
                                                       Version version)
                                                throws java.io.IOException

  Returns a buffered output stream open for writing to the cache file.

  Parameters:
    `source` - the remote location
    `version` - the file version to write to
  Throws:
    `java.io.IOException`

### streamCopy

    public static void streamCopy(java.io.InputStream is,
                                  java.io.OutputStream os)
                           throws java.io.IOException

  Copies from an input stream to an output stream. On completion, both streams will be closed. Streams are buffered automatically.

  Throws:
    `java.io.IOException`

### urlToPath

    public static java.io.File urlToPath(java.net.URL location,
                                         java.lang.String subdir)

  Converts a URL into a local path string within the given directory. For example a url with subdirectory /tmp/ will result in a File that is located somewhere within /tmp/

  Parameters:
    `location` - the url
    `subdir` - the subdirectory
  Returns:
    the file

### waitForResources

    public static void waitForResources(ApplicationInstance app,
                                        ResourceTracker tracker,
                                        java.net.URL[] resources,
                                        java.lang.String title)

  Waits until the resources are downloaded, while showing a progress indicator.

  Parameters:
    `tracker` - the resource tracker
    `resources` - the resources to wait for
    `title` - name of the download

### cleanCache

    public static void cleanCache()

  This will remove all old cache items.

### lockFile

    public static void lockFile(PropertiesFile properties)

  Lock the property file and add it to our pool of locks.

  Parameters:
    `properties` - Property file to lock.

### unlockFile

    public static void unlockFile(PropertiesFile properties)

  Unlock the property file and remove it from our pool. Nothing happens if it wasn't locked.

  Parameters:
    `properties` - Property file to unlock.

IcedTea-Web NetX

Submit a bug or feature