Class SchemaCache

Object
SchemaCache

public class SchemaCache extends Object
Cache containing XML schemas. (Should also work for other file types.)

If configured to permit downloading, schemas not present in the cache are downloaded from the network.

Only http/https URLs are supported.

Files are stored according to the Simple HTTP Resource Path (see {@link SchemaResolver#getSimpleHttpResourcePath(URI))}.

Author:
Ben Caradoc-Davies (CSIRO Earth Science and Resource Engineering)
  • Field Details

    • PROVIDED_CACHE_LOCATION_KEY

      public static final String PROVIDED_CACHE_LOCATION_KEY
      Key that should be used to setup a system property that sets the location that should be used for schema cache location.
      See Also:
  • Constructor Details

    • SchemaCache

      public SchemaCache(File directory, boolean download)
      A cache of XML schemas (or other file types) rooted in the given directory, with optional downloading.
      Parameters:
      directory - the directory in which downloaded schemas are stored
      download - is downloading of schemas permitted. If false, only schemas already present in the cache will be resolved.
    • SchemaCache

      public SchemaCache(File directory, boolean download, boolean keepQuery)
      A cache of XML schemas (or other file types) rooted in the given directory, with optional downloading.
      Parameters:
      directory - the directory in which downloaded schemas are stored
      download - is downloading of schemas permitted. If false, only schemas already present in the cache will be resolved.
      keepQuery - indicates whether or not the query components should be included in the path. If this is set to true then the query portion is converted to an MD5 message digest and that string is used to identify the file in the cache.
  • Method Details

    • getDirectory

      public File getDirectory()
      Return the root directory of the cache.
    • getTempDirectory

      public File getTempDirectory()
      Return the temp directory for not cached downloads (those occurring during another download, to avoid conflicts among threads).
    • isDownloadAllowed

      public boolean isDownloadAllowed()
      Are schemas not already present in the cache downloaded from the network?
    • resolveLocation

      public String resolveLocation(String location)
      Return the local file URL of a schema, downloading it if not found in the cache.
      Parameters:
      location - the absolute http/https URL of the schema
      Returns:
      the canonical local file URL of the schema, or null if not found
    • buildAutomaticallyConfiguredUsingFileUrl

      public static SchemaCache buildAutomaticallyConfiguredUsingFileUrl(URL url)
      If automatic configuration is enabled, recursively search parent directories of file url for a GeoServer data directory or directory containing an existing cache. If found, use it to create a cache in the "app-schema-cache" subdirectory with downloading enabled.
      Parameters:
      url - a URL for a file in a GeoServer data directory.
      Returns:
      a cache in the "app-schema-cache" subdirectory or null if not found or automatic configuration disabled.
    • disableAutomaticConfiguration

      public static void disableAutomaticConfiguration()
      Turn off support for automatic configuration of a cache in GeoServer data directory or detection of an existing cache. Intended for testing. Automatic configuration is enabled by default.
    • enableAutomaticConfiguration

      public static void enableAutomaticConfiguration()
      The opposite of disableAutomaticConfiguration(). Automatic configuration is enabled by default.
    • isAutomaticConfigurationEnabled

      public static boolean isAutomaticConfigurationEnabled()
      Is automatic configuration enabled? Automatic configuration is enabled by default.
      See Also: