java.lang.Object
nl.basjes.parse.useragent.utils.springframework.core.io.AbstractResource
nl.basjes.parse.useragent.utils.springframework.core.io.VfsResource
All Implemented Interfaces:
InputStreamSource, Resource

public class VfsResource extends AbstractResource
JBoss VFS based {link Resource} implementation.

As of Spring 4.0, this class supports VFS 3.x on JBoss AS 6+ (package org.jboss.vfs) and is in particular compatible with JBoss AS 7 and WildFly 8+.

Since:
3.0 see org.jboss.vfs.VirtualFile
Author:
Ales Justin, Juergen Hoeller, Costin Leau, Sam Brannen
  • Constructor Summary

    Constructors
    Constructor
    Description
    VfsResource(Object resource)
    Create a new VfsResource wrapping the given resource handle.
  • Method Summary

    Modifier and Type
    Method
    Description
    long
    This method reads the entire InputStream to determine the content length.
    createRelative(String relativePath)
    This implementation throws a FileNotFoundException, assuming that relative resources cannot be created for this resource.
    boolean
    equals(Object other)
    This implementation compares description strings.
    boolean
    This implementation checks whether a File can be opened, falling back to whether an InputStream can be opened.
    Return a description for this resource, to be used for error output when working with the resource.
    This implementation throws a FileNotFoundException, assuming that the resource cannot be resolved to an absolute file path.
    This implementation always returns null, assuming that this resource type does not have a filename.
    Return an {link InputStream} for the content of an underlying resource.
    This implementation builds a URI based on the URL returned by {link #getURL()}.
    This implementation throws a FileNotFoundException, assuming that the resource cannot be resolved to a URL.
    int
    This implementation returns the description's hash code.

    Methods inherited from class nl.basjes.parse.useragent.utils.springframework.core.io.AbstractResource

    isFile, isOpen, toString

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • VfsResource

      public VfsResource(Object resource)
      Create a new VfsResource wrapping the given resource handle.
      Parameters:
      resource - a org.jboss.vfs.VirtualFile instance (untyped in order to avoid a static dependency on the VFS API)
  • Method Details

    • getInputStream

      public InputStream getInputStream() throws IOException
      Description copied from interface: InputStreamSource
      Return an {link InputStream} for the content of an underlying resource.

      It is expected that each call creates a fresh stream.

      This requirement is particularly important when you consider an API such as JavaMail, which needs to be able to read the stream multiple times when creating mail attachments. For such a use case, it is required that each getInputStream() call returns a fresh stream.

      Returns:
      the input stream for the underlying resource (must not be null)
      Throws:
      FileNotFoundException - if the underlying resource does not exist
      IOException - if the content stream could not be opened see Resource#isReadable()
    • 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
    • getURL

      public URL getURL() throws IOException
      Description copied from class: AbstractResource
      This implementation throws a FileNotFoundException, assuming that the resource cannot be resolved to a URL.
      Specified by:
      getURL in interface Resource
      Overrides:
      getURL in class AbstractResource
      Throws:
      IOException - if the resource cannot be resolved as URL, i.e. if the resource is not available as a descriptor
    • getURI

      public URI getURI() throws IOException
      Description copied from class: AbstractResource
      This implementation builds a URI based on the URL returned by {link #getURL()}.
      Specified by:
      getURI in interface Resource
      Overrides:
      getURI in class AbstractResource
      Throws:
      IOException - if the resource cannot be resolved as URI, i.e. if the resource is not available as a descriptor
    • getFile

      public File getFile() throws IOException
      Description copied from class: AbstractResource
      This implementation throws a FileNotFoundException, assuming that the resource cannot be resolved to an absolute file path.
      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()
    • 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)
    • createRelative

      public Resource createRelative(String relativePath) throws IOException
      Description copied from class: AbstractResource
      This implementation throws a FileNotFoundException, assuming that relative resources cannot be created for this resource.
      Specified by:
      createRelative in interface Resource
      Overrides:
      createRelative in class AbstractResource
      Parameters:
      relativePath - the relative path (relative to this resource)
      Returns:
      the resource handle for the relative resource
      Throws:
      IOException - if the relative resource cannot be determined
    • getFilename

      public String getFilename()
      Description copied from class: AbstractResource
      This implementation always returns null, assuming that this resource type does not have a filename.
      Specified by:
      getFilename in interface Resource
      Overrides:
      getFilename in class AbstractResource
    • getDescription

      public String getDescription()
      Description copied from interface: Resource
      Return a description for this resource, to be used for error output when working with the resource.

      Implementations are also encouraged to return this value from their toString method. see Object#toString()

    • equals

      public boolean equals(@Nullable Object other)
      Description copied from class: AbstractResource
      This implementation compares description strings. see #getDescription()
      Overrides:
      equals in class AbstractResource
    • hashCode

      public int hashCode()
      Description copied from class: AbstractResource
      This implementation returns the description's hash code. see #getDescription()
      Overrides:
      hashCode in class AbstractResource