org.springframework.core.io
Class UrlResource

java.lang.Object
  extended by org.springframework.core.io.AbstractResource
      extended by org.springframework.core.io.AbstractFileResolvingResource
          extended by org.springframework.core.io.UrlResource
All Implemented Interfaces:
InputStreamSource, Resource

public class UrlResource
extends AbstractFileResolvingResource

Resource implementation for java.net.URL locators. Obviously supports resolution as URL, and also as File in case of the "file:" protocol.

Since:
28.12.2003
Author:
Juergen Hoeller
See Also:
URL

Field Summary
private  java.net.URL cleanedUrl
          Cleaned URL (with normalized path), used for comparisons.
private  java.net.URI uri
          Original URI, if available; used for URI and File access.
private  java.net.URL url
          Original URL, used for actual access.
 
Constructor Summary
UrlResource(java.lang.String path)
          Create a new UrlResource.
UrlResource(java.net.URI uri)
          Create a new UrlResource.
UrlResource(java.net.URL url)
          Create a new UrlResource.
 
Method Summary
 Resource createRelative(java.lang.String relativePath)
          This implementation creates a UrlResource, applying the given path relative to the path of the underlying URL of this resource descriptor.
 boolean equals(java.lang.Object obj)
          This implementation compares the underlying URL references.
private  java.net.URL getCleanedUrl(java.net.URL originalUrl, java.lang.String originalPath)
          Determine a cleaned URL for the given original URL.
 java.lang.String getDescription()
          This implementation returns a description that includes the URL.
 java.io.File getFile()
          This implementation returns a File reference for the underlying URL/URI, provided that it refers to a file in the file system.
 java.lang.String getFilename()
          This implementation returns the name of the file that this URL refers to.
 java.io.InputStream getInputStream()
          This implementation opens an InputStream for the given URL.
 java.net.URI getURI()
          This implementation returns the underlying URI directly, if possible.
 java.net.URL getURL()
          This implementation returns the underlying URL reference.
 int hashCode()
          This implementation returns the hash code of the underlying URL reference.
 
Methods inherited from class org.springframework.core.io.AbstractFileResolvingResource
contentLength, exists, getFile, getFileForLastModifiedCheck, isReadable, lastModified
 
Methods inherited from class org.springframework.core.io.AbstractResource
isOpen, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

url

private final java.net.URL url
Original URL, used for actual access.


cleanedUrl

private final java.net.URL cleanedUrl
Cleaned URL (with normalized path), used for comparisons.


uri

private final java.net.URI uri
Original URI, if available; used for URI and File access.

Constructor Detail

UrlResource

public UrlResource(java.net.URL url)
Create a new UrlResource.

Parameters:
url - a URL

UrlResource

public UrlResource(java.net.URI uri)
            throws java.net.MalformedURLException
Create a new UrlResource.

Parameters:
uri - a URI
Throws:
java.net.MalformedURLException - if the given URL path is not valid

UrlResource

public UrlResource(java.lang.String path)
            throws java.net.MalformedURLException
Create a new UrlResource.

Parameters:
path - a URL path
Throws:
java.net.MalformedURLException - if the given URL path is not valid
Method Detail

getCleanedUrl

private java.net.URL getCleanedUrl(java.net.URL originalUrl,
                                   java.lang.String originalPath)
Determine a cleaned URL for the given original URL.

Parameters:
originalUrl - the original URL
originalPath - the original URL path
Returns:
the cleaned URL
See Also:
StringUtils.cleanPath(java.lang.String)

getInputStream

public java.io.InputStream getInputStream()
                                   throws java.io.IOException
This implementation opens an InputStream for the given URL. It sets the "UseCaches" flag to false, mainly to avoid jar file locking on Windows.

Throws:
java.io.IOException - if the stream could not be opened
See Also:
URL.openConnection(), URLConnection.setUseCaches(boolean), URLConnection.getInputStream()

getURL

public java.net.URL getURL()
                    throws java.io.IOException
This implementation returns the underlying URL reference.

Specified by:
getURL in interface Resource
Overrides:
getURL in class AbstractResource
Throws:
java.io.IOException - if the resource cannot be resolved as URL, i.e. if the resource is not available as descriptor

getURI

public java.net.URI getURI()
                    throws java.io.IOException
This implementation returns the underlying URI directly, if possible.

Specified by:
getURI in interface Resource
Overrides:
getURI in class AbstractResource
Throws:
java.io.IOException - if the resource cannot be resolved as URI, i.e. if the resource is not available as descriptor

getFile

public java.io.File getFile()
                     throws java.io.IOException
This implementation returns a File reference for the underlying URL/URI, provided that it refers to a file in the file system.

Specified by:
getFile in interface Resource
Overrides:
getFile in class AbstractFileResolvingResource
Throws:
java.io.IOException - if the resource cannot be resolved as absolute file path, i.e. if the resource is not available in a file system
See Also:
ResourceUtils.getFile(java.net.URL, String)

createRelative

public Resource createRelative(java.lang.String relativePath)
                        throws java.net.MalformedURLException
This implementation creates a UrlResource, applying the given path relative to the path of the underlying URL of this resource descriptor.

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:
java.net.MalformedURLException
See Also:
URL.URL(java.net.URL, String)

getFilename

public java.lang.String getFilename()
This implementation returns the name of the file that this URL refers to.

Specified by:
getFilename in interface Resource
Overrides:
getFilename in class AbstractResource
See Also:
URL.getFile(), File.getName()

getDescription

public java.lang.String getDescription()
This implementation returns a description that includes the URL.

See Also:
Object.toString()

equals

public boolean equals(java.lang.Object obj)
This implementation compares the underlying URL references.

Overrides:
equals in class AbstractResource
See Also:
Resource.getDescription()

hashCode

public int hashCode()
This implementation returns the hash code of the underlying URL reference.

Overrides:
hashCode in class AbstractResource
See Also:
Resource.getDescription()