Class AbstractFileResolvingResource

java.lang.Object
nl.basjes.parse.useragent.utils.springframework.core.io.AbstractResource
nl.basjes.parse.useragent.utils.springframework.core.io.AbstractFileResolvingResource
All Implemented Interfaces:
InputStreamSource, Resource
Direct Known Subclasses:
ClassPathResource, UrlResource

public abstract class AbstractFileResolvingResource extends AbstractResource
Abstract base class for resources which resolve URLs into File references, such as {link UrlResource} or {link ClassPathResource}.

Detects the "file" protocol as well as the JBoss "vfs" protocol in URLs, resolving file system references accordingly.

Since:
3.0
Author:
Juergen Hoeller
  • Constructor Details

    • AbstractFileResolvingResource

      public AbstractFileResolvingResource()
  • Method Details

    • exists

      public boolean exists()
      Description copied from class: AbstractResource
      This implementation checks whether a File can be opened, falling back to whether an InputStream can be opened.

      This will cover both directories and content resources.

      Specified by:
      exists in interface Resource
      Overrides:
      exists in class AbstractResource
    • isFile

      public boolean isFile()
      Description copied from class: AbstractResource
      This implementation always returns false.
      Specified by:
      isFile in interface Resource
      Overrides:
      isFile in class AbstractResource
    • getFile

      public File getFile() throws IOException
      This implementation returns a File reference for the underlying class path resource, provided that it refers to a file in the file system. see org.springframework.util.ResourceUtils#getFile(java.net.URL, String)
      Specified by:
      getFile in interface Resource
      Overrides:
      getFile in class AbstractResource
      Throws:
      FileNotFoundException - if the resource cannot be resolved as absolute file path, i.e. if the resource is not available in a file system
      IOException - in case of general resolution/reading failures see #getInputStream()
    • isFile

      protected boolean isFile(URI uri)
      Determine whether the given {link URI} represents a file in a file system.
      Since:
      5.0 see #getFile(URI)
    • getFile

      protected File getFile(URI uri) throws IOException
      This implementation returns a File reference for the given URI-identified resource, provided that it refers to a file in the file system. see org.springframework.util.ResourceUtils#getFile(java.net.URI, String)
      Throws:
      IOException
    • contentLength

      public long contentLength() throws IOException
      Description copied from class: AbstractResource
      This method reads the entire InputStream to determine the content length.

      For a custom subclass of InputStreamResource, we strongly recommend overriding this method with a more optimal implementation, e.g. checking File length, or possibly simply returning -1 if the stream can only be read once. see #getInputStream()

      Specified by:
      contentLength in interface Resource
      Overrides:
      contentLength in class AbstractResource
      Throws:
      IOException - if the resource cannot be resolved (in the file system or as some other known physical resource type)
    • customizeConnection

      protected void customizeConnection(URLConnection con) throws IOException
      Customize the given {link URLConnection} before fetching the resource.

      Calls {link ResourceUtils#useCachesIfNecessary(URLConnection)} and delegates to {link #customizeConnection(HttpURLConnection)} if possible. Can be overridden in subclasses.

      Parameters:
      con - the URLConnection to customize
      Throws:
      IOException - if thrown from URLConnection methods
    • customizeConnection

      protected void customizeConnection(HttpURLConnection ignoredCon) throws IOException
      Customize the given {link HttpURLConnection} before fetching the resource.

      Can be overridden in subclasses for configuring request headers and timeouts.

      Parameters:
      ignoredCon - the HttpURLConnection to customize
      Throws:
      IOException - if thrown from HttpURLConnection methods