Spring Framework

org.springframework.web.context.support
Class ServletContextResource

java.lang.Object
  extended by org.springframework.core.io.AbstractResource
      extended by org.springframework.core.io.AbstractFileResolvingResource
          extended by org.springframework.web.context.support.ServletContextResource
All Implemented Interfaces:
ContextResource, InputStreamSource, Resource

public class ServletContextResource
extends AbstractFileResolvingResource
implements ContextResource

Resource implementation for ServletContext resources, interpreting relative paths within the web application root directory.

Always supports stream access and URL access, but only allows java.io.File access when the web application archive is expanded.

Since:
28.12.2003
Author:
Juergen Hoeller
See Also:
ServletContext.getResourceAsStream(java.lang.String), ServletContext.getResource(java.lang.String), ServletContext.getRealPath(java.lang.String)

Constructor Summary
ServletContextResource(javax.servlet.ServletContext servletContext, java.lang.String path)
          Create a new ServletContextResource.
 
Method Summary
 Resource createRelative(java.lang.String relativePath)
          This implementation creates a ServletContextResource, applying the given path relative to the path of the underlying file of this resource descriptor.
 boolean equals(java.lang.Object obj)
          This implementation compares the underlying ServletContext resource locations.
 boolean exists()
          This implementation checks ServletContext.getResource.
 java.lang.String getDescription()
          This implementation returns a description that includes the ServletContext resource location.
 java.io.File getFile()
          This implementation resolves "file:" URLs or alternatively delegates to ServletContext.getRealPath, throwing a FileNotFoundException if not found or not resolvable.
 java.lang.String getFilename()
          This implementation returns the name of the file that this ServletContext resource refers to.
 java.io.InputStream getInputStream()
          This implementation delegates to ServletContext.getResourceAsStream, but throws a FileNotFoundException if no resource found.
 java.lang.String getPath()
          Return the path for this resource.
 java.lang.String getPathWithinContext()
          Return the path within the enclosing 'context'.
 javax.servlet.ServletContext getServletContext()
          Return the ServletContext for this resource.
 java.net.URL getURL()
          This implementation delegates to ServletContext.getResource, but throws a FileNotFoundException if no resource found.
 int hashCode()
          This implementation returns the hash code of the underlying ServletContext resource location.
 boolean isReadable()
          This implementation delegates to ServletContext.getResourceAsStream, which returns null in case of a non-readable resource (e.g.
 
Methods inherited from class org.springframework.core.io.AbstractFileResolvingResource
contentLength, getFile, getFileForLastModifiedCheck, lastModified
 
Methods inherited from class org.springframework.core.io.AbstractResource
getURI, isOpen, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.springframework.core.io.Resource
contentLength, getURI, isOpen, lastModified
 

Constructor Detail

ServletContextResource

public ServletContextResource(javax.servlet.ServletContext servletContext,
                              java.lang.String path)
Create a new ServletContextResource.

The Servlet spec requires that resource paths start with a slash, even if many containers accept paths without leading slash too. Consequently, the given path will be prepended with a slash if it doesn't already start with one.

Parameters:
servletContext - the ServletContext to load from
path - the path of the resource
Method Detail

getServletContext

public final javax.servlet.ServletContext getServletContext()
Return the ServletContext for this resource.


getPath

public final java.lang.String getPath()
Return the path for this resource.


exists

public boolean exists()
This implementation checks ServletContext.getResource.

Specified by:
exists in interface Resource
Overrides:
exists in class AbstractFileResolvingResource
See Also:
ServletContext.getResource(String)

isReadable

public boolean isReadable()
This implementation delegates to ServletContext.getResourceAsStream, which returns null in case of a non-readable resource (e.g. a directory).

Specified by:
isReadable in interface Resource
Overrides:
isReadable in class AbstractFileResolvingResource
See Also:
ServletContext.getResourceAsStream(String)

getInputStream

public java.io.InputStream getInputStream()
                                   throws java.io.IOException
This implementation delegates to ServletContext.getResourceAsStream, but throws a FileNotFoundException if no resource found.

Specified by:
getInputStream in interface InputStreamSource
Specified by:
getInputStream in interface Resource
Returns:
the input stream for the underlying resource (must not be null).
Throws:
java.io.IOException - if the stream could not be opened
See Also:
ServletContext.getResourceAsStream(String)

getURL

public java.net.URL getURL()
                    throws java.io.IOException
This implementation delegates to ServletContext.getResource, but throws a FileNotFoundException if no resource found.

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
See Also:
ServletContext.getResource(String)

getFile

public java.io.File getFile()
                     throws java.io.IOException
This implementation resolves "file:" URLs or alternatively delegates to ServletContext.getRealPath, throwing a FileNotFoundException if not found or not resolvable.

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:
ServletContext.getResource(String), ServletContext.getRealPath(String)

createRelative

public Resource createRelative(java.lang.String relativePath)
This implementation creates a ServletContextResource, applying the given path relative to the path of the underlying file 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
See Also:
StringUtils.applyRelativePath(String, String)

getFilename

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

Specified by:
getFilename in interface Resource
Overrides:
getFilename in class AbstractResource
See Also:
StringUtils.getFilename(String)

getDescription

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

Specified by:
getDescription in interface Resource
See Also:
Object.toString()

getPathWithinContext

public java.lang.String getPathWithinContext()
Description copied from interface: ContextResource
Return the path within the enclosing 'context'.

This is typically path relative to a context-specific root directory, e.g. a ServletContext root or a PortletContext root.

Specified by:
getPathWithinContext in interface ContextResource

equals

public boolean equals(java.lang.Object obj)
This implementation compares the underlying ServletContext resource locations.

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

hashCode

public int hashCode()
This implementation returns the hash code of the underlying ServletContext resource location.

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

Spring Framework