public abstract class ResourceHelper extends Object
Implementations of this class contain the knowledge for finding and serving web application resources.
| Constructor and Description |
|---|
ResourceHelper() |
| Modifier and Type | Method and Description |
|---|---|
protected boolean |
clientAcceptsCompression(jakarta.faces.context.FacesContext ctx)
This method attempt to verify that the user agent can accept a gzip encoded response by interrogating the
Accept-Encoding requester header. |
protected boolean |
compressContent(ClientResourceInfo info)
Utility method to compress the content of the original resource to the temporary directory specified by
ClientResourceInfo.getCompressedPath(). |
abstract LibraryInfo |
findLibrary(String libraryName,
String localePrefix,
String contract,
jakarta.faces.context.FacesContext ctx)
Search for the specified library/localPrefix combination in an implementation dependent manner.
|
abstract ResourceInfo |
findResource(LibraryInfo library,
String resourceName,
String localePrefix,
boolean compressable,
jakarta.faces.context.FacesContext ctx)
Search for the specified resource based in the library/localePrefix/resourceName combination in an implementation
dependent manner.
|
abstract String |
getBaseContractsPath() |
protected String |
getBasePath(String contract) |
abstract String |
getBaseResourcePath() |
InputStream |
getInputStream(ResourceInfo toStream,
jakarta.faces.context.FacesContext ctx)
If the resource is compressable, return an InputStream to read the compressed content, otherwise, call
getNonCompressedInputStream(ResourceInfo, jakarta.faces.context.FacesContext) to return the content of the
original resource. |
long |
getLastModified(ResourceInfo resource,
jakarta.faces.context.FacesContext ctx)
The default implementation of this method will call through to
getURL(ResourceInfo, jakarta.faces.context.FacesContext) and leverage the URL to obtain the
date information of the resource and return the value of URLConnection.getLastModified() |
protected abstract InputStream |
getNonCompressedInputStream(ResourceInfo info,
jakarta.faces.context.FacesContext ctx)
If a
ResourceInfo is not compressable,
getInputStream(ResourceInfo, jakarta.faces.context.FacesContext) will call this method to return a stream to
the actual resource. |
abstract URL |
getURL(ResourceInfo resource,
jakarta.faces.context.FacesContext ctx) |
protected VersionInfo |
getVersion(Collection<String> resourcePaths,
boolean isResource)
Given a collection of path names:
|
protected ClientResourceInfo |
handleCompression(ClientResourceInfo resource)
Utility method to peform the necessary actions to compress content.
|
protected boolean |
resourceSupportsEL(String resourceName,
String libraryName,
jakarta.faces.context.FacesContext ctx) |
protected String |
trimLeadingSlash(String s) |
public abstract String getBaseResourcePath()
public abstract String getBaseContractsPath()
public InputStream getInputStream(ResourceInfo toStream, jakarta.faces.context.FacesContext ctx) throws IOException
If the resource is compressable, return an InputStream to read the compressed content, otherwise, call
getNonCompressedInputStream(ResourceInfo, jakarta.faces.context.FacesContext) to return the content of the
original resource.
Implementation Note: If any exception occurs trying to return a stream to the compressed content, log the exception, and instead try to return a stream to the original content.
toStream - the resource to obtain an InputStream toctx - the FacesContext for the current requestInputStream to the resource, or null if no resource is foundIOException - if an error occurs obtaining the streampublic abstract URL getURL(ResourceInfo resource, jakarta.faces.context.FacesContext ctx)
resource - the resource to obtain a URL reference toctx - the FacesContext for the current requestnull if no resource is foundpublic abstract LibraryInfo findLibrary(String libraryName, String localePrefix, String contract, jakarta.faces.context.FacesContext ctx)
libraryName - the name of the librarylocalePrefix - the logicial identifier for a locale specific library. if no localePrefix is configured, pass
nullcontract - the name of the contractctx - the FacesContext for the current request @return a LibraryInfo if a
matching library based off the inputs can be found, otherwise returns nullpublic abstract ResourceInfo findResource(LibraryInfo library, String resourceName, String localePrefix, boolean compressable, jakarta.faces.context.FacesContext ctx)
Search for the specified resource based in the library/localePrefix/resourceName combination in an implementation dependent manner.
If the resource is found, and is compressable, call
handleCompression(com.sun.faces.application.resource.ClientResourceInfo) to compress the content.
library - the library this resource should be a part of. If the the resource that is being searched for isn't
part of a library, then pass nullresourceName - the name of the resource that is being searched forlocalePrefix - the logicial identifier for a locale specific library. if no localePrefix is configured, pass
nullcompressable - true if the resource can be compressedctx - the FacesContext for the current requestResourceInfo if a matching resource based off the inputs can be found, otherwise returns
nullpublic long getLastModified(ResourceInfo resource, jakarta.faces.context.FacesContext ctx)
The default implementation of this method will call through to
getURL(ResourceInfo, jakarta.faces.context.FacesContext) and leverage the URL to obtain the
date information of the resource and return the value of URLConnection.getLastModified()
resource - the resource in questionctx - the FacesContext for the current request0 if the date cannot be determinedprotected abstract InputStream getNonCompressedInputStream(ResourceInfo info, jakarta.faces.context.FacesContext ctx) throws IOException
ResourceInfo is not compressable,
getInputStream(ResourceInfo, jakarta.faces.context.FacesContext) will call this method to return a stream to
the actual resource.info - the resource to obtain an InputStream toctx - the FacesContext for the current requestIOException - if an error occurs obtaining the streamprotected VersionInfo getVersion(Collection<String> resourcePaths, boolean isResource)
Given a collection of path names:
1.1, scripts, images, 1.2
this method will pick out the directories that represent a library or resource version and return the latest version found, if any.
resourcePaths - a collection of paths (consisting of single path elements)isResource - true if the version being looked up is for a reource, otherwise, pass
false if the version is a library versionnullprotected boolean compressContent(ClientResourceInfo info) throws IOException
ClientResourceInfo.getCompressedPath().info - the resource to be compressedtrue if compression succeeded and the compressed result is smaller than the original
content, otherwise falseIOException - if any error occur reading/writingprotected boolean clientAcceptsCompression(jakarta.faces.context.FacesContext ctx)
This method attempt to verify that the user agent can accept a gzip encoded response by interrogating the
Accept-Encoding requester header. If it is determined safe to send a gzip encoded response, send the
Content-Encoding header with a value of gzip.
See Parameters:
ctx - the FacesContext for the current requesttrue if compressed content can be sent to the client, otherwise false
protected ClientResourceInfo handleCompression(ClientResourceInfo resource)
Utility method to peform the necessary actions to compress content.
Implmentation Note: If an exception occurs while compressing the content, log the IOException and rebuilt the
ResourceInfo as non-compressable.
resource - the resource to compressionprotected boolean resourceSupportsEL(String resourceName, String libraryName, jakarta.faces.context.FacesContext ctx)
Copyright © 2010–2022 JBoss by Red Hat. All rights reserved.