org.apache.sling.api.resource
Interface ResourceResolver

All Superinterfaces:
Adaptable
All Known Implementing Classes:
MockResourceResolver

public interface ResourceResolver
extends Adaptable

The ResourceResolver defines the service API which may be used to resolve Resource objects. The resource resolver is available to the request processing servlet through the SlingHttpServletRequest.getResourceResolver() method.

The ResourceResolver is also an Adaptable to get adapters to other types. A JCR based resource resolver might support adapting to the JCR Session used by the resolver to access the JCR Repository.

This interface defines two kinds of methods to access resources: The resolve methods and the getResource methods. The difference lies in the algorithm applied to find the requested resource and in the behaviour in case a resource cannot be found:

Method Kind Access Algorithm Missing Resource
resolve Path is always assumed to be absolute. Uses elaborate resource resolution algorithm. This kind of method is intended to resolve request URLs to resources. Returns NonExistingResource
getResource Directly access resources with absolute path. For relative paths, the search path is applied. This method is intended to be used by request processing scripts to access further resources as required. Returns null


Method Summary
 java.util.Iterator<Resource> findResources(java.lang.String query, java.lang.String language)
          Searches for resources using the given query formulated in the given language.
 Resource getResource(Resource base, java.lang.String path)
          Returns a Resource object for data located at the given path.
 Resource getResource(java.lang.String path)
          Returns a Resource object for data located at the given path.
 java.lang.String[] getSearchPath()
          Returns the search path used by the getResource(String) method to search for resources by relative path.
 java.util.Iterator<Resource> listChildren(Resource parent)
          Returns an Iterator of Resource objects loaded from the children of the given Resource.
 java.lang.String map(javax.servlet.http.HttpServletRequest request, java.lang.String resourcePath)
          Returns an URL mapped from the (resource) path applying the reverse mapping used by the resolve(HttpServletRequest, String) such that when the path is given to the resolve(HttpServletRequest, String) method the same resource is returned.
 java.lang.String map(java.lang.String resourcePath)
          Returns a path mapped from the (resource) path applying the reverse mapping used by the resolve(String) such that when the path is given to the resolve(String) method the same resource is returned.
 java.util.Iterator<java.util.Map<java.lang.String,java.lang.Object>> queryResources(java.lang.String query, java.lang.String language)
          Queries the storage using the given query formulated in the given language.
 Resource resolve(javax.servlet.http.HttpServletRequest request)
          Deprecated. as of 2.0.4, use resolve(HttpServletRequest, String) instead.
 Resource resolve(javax.servlet.http.HttpServletRequest request, java.lang.String absPath)
          Resolves the resource from the given absPath optionally taking HttpServletRequest into account, such as the value of the Host request header.
 Resource resolve(java.lang.String absPath)
          Resolves the resource from the given absolute path.
 
Methods inherited from interface org.apache.sling.api.adapter.Adaptable
adaptTo
 

Method Detail

resolve

Resource resolve(javax.servlet.http.HttpServletRequest request,
                 java.lang.String absPath)
Resolves the resource from the given absPath optionally taking HttpServletRequest into account, such as the value of the Host request header. Returns a NonExistingResource if the path cannot be resolved to an existing and accessible resource.

The difference between this method and the resolve(String) method is, that this method may take request properties like the scheme, the host header or request parameters into account to resolve the resource.

Parameters:
request - The http servlet request object providing more hints at how to resolve the absPath. This parameter may be null in which case the implementation should use reasonable defaults.
absPath - The absolute path to be resolved to a resource. If this parameter is null, it is assumed to address the root of the resource tree. If the path is relative it is assumed relative to the root, that is a slash is prepended to the path before resolving it.
Returns:
The Resource addressed by the absPath or a NonExistingResource if no such resource can be resolved.
Throws:
SlingException - Or a subclass thereof may be thrown if an error occurrs trying to resolve the resource.
Since:
2.0.4

resolve

Resource resolve(java.lang.String absPath)
Resolves the resource from the given absolute path. Returns a NonExistingResource if the path cannot be resolved to an existing and accessible resource.

This method is intended to apply the same algorithm to the absolute path as is used by the resolve(HttpServletRequest) method except for cases where the latter uses request property such as request headers or request parameters to resolve a resource.

It is ok for the implementation of this method to just call the resolve(HttpServletRequest, String) method with null as the request argument.

Parameters:
absPath - The absolute path to be resolved to a resource. If this parameter is null, it is assumed to address the root of the resource tree. If the path is relative it is assumed relative to the root, that is a slash is prepended to the path before resolving it.
Returns:
The Resource addressed by the absPath or a NonExistingResource if no such resource can be resolved.
Throws:
SlingException - Or a subclass thereof may be thrown if an error occurrs trying to resolve the resource.

resolve

@Deprecated
Resource resolve(javax.servlet.http.HttpServletRequest request)
Deprecated. as of 2.0.4, use resolve(HttpServletRequest, String) instead.

Resolves the resource from the given HttpServletRequest. Returns a NonExistingResource if the path cannot be resolved to an existing and accessible resource.

This method is deprecated as of API version 2.0.4 and should not be used anymore. Implementations are expected to implement this method calling the resolve(HttpServletRequest, String) where the absPath argument is the result of calling the getPathInfo() on the request object.

Parameters:
request - The http servlet request object used to resolve the resource for. This must not be null.
Returns:
The Resource addressed by HttpServletRequest.getPathInfo() or a NonExistingResource if no such resource can be resolved.
Throws:
java.lang.NullPointerException - If request is null .
SlingException - Or a subclass thereof may be thrown if an error occurrs trying to resolve the resource.

map

java.lang.String map(java.lang.String resourcePath)
Returns a path mapped from the (resource) path applying the reverse mapping used by the resolve(String) such that when the path is given to the resolve(String) method the same resource is returned.

Note, that technically the resourcePath need not refer to an existing resource. This method just applies the mappings and returns the resulting string. If the resourcePath does not address an existing resource roundtripping may of course not work and calling resolve(String) with the path returned may return null.

This method is intended as the reverse operation of the resolve(String) method.

Parameters:
resourcePath - The path for which to return a mapped path.
Returns:
The mapped path.

map

java.lang.String map(javax.servlet.http.HttpServletRequest request,
                     java.lang.String resourcePath)
Returns an URL mapped from the (resource) path applying the reverse mapping used by the resolve(HttpServletRequest, String) such that when the path is given to the resolve(HttpServletRequest, String) method the same resource is returned.

Note, that technically the resourcePath need not refer to an existing resource. This method just applies the mappings and returns the resulting string. If the resourcePath does not address an existing resource roundtripping may of course not work and calling resolve(HttpServletRequest, String) with the path returned may return null.

This method is intended as the reverse operation of the resolve(HttpServletRequest, String) method. As such the URL returned is expected to be an absolute URL including scheme, host, any servlet context path and the actual path used to resolve the resource.

Parameters:
request - The http servlet request object which may be used to apply more mapping functionality.
resourcePath - The path for which to return a mapped path.
Returns:
The mapped URL.
Since:
2.0.4

getResource

Resource getResource(java.lang.String path)
Returns a Resource object for data located at the given path.

This specification does not define the location for resources or the semantics for resource paths. For an implementation reading content from a Java Content Repository, the path could be a javax.jcr.Item path from which the resource object is loaded. In contrast to the resolve(String) method, this method does not apply any logic to the path, so the path is used as-is to fetch the content.

Parameters:
path - The absolute path to the resource object to be loaded. The path may contain relative path specifiers like . (current location) and .. (parent location), which are resolved by this method. If the path is relative, that is the first character is not a slash, implementations are expected to apply a search path algorithm to resolve the relative path to a resource.
Returns:
The Resource object loaded from the path or null if the path does not resolve to a resource.
Throws:
SlingException - If an error occurrs trying to load the resource object from the path.

getResource

Resource getResource(Resource base,
                     java.lang.String path)
Returns a Resource object for data located at the given path.

This specification does not define the location for resources or the semantics for resource paths. For an implementation reading content from a Java Content Repository, the path could be a javax.jcr.Item path from which the resource object is loaded.

Parameters:
base - The base Resource against which a relative path argument given by path is resolved. This parameter may be null if the path is known to be absolute.
path - The path to the resource object to be loaded. If the path is relative, i.e. does not start with a slash (/), the resource relative to the given base resource is returned. The path may contain relative path specifiers like . (current location) and .. (parent location), which are resolved by this method.
Returns:
The Resource object loaded from the path or null if the path does not resolve to a resource.
Throws:
SlingException - If an error occurrs trying to load the resource object from the path or if base is null and path is relative.

getSearchPath

java.lang.String[] getSearchPath()
Returns the search path used by the getResource(String) method to search for resources by relative path. If no search path is set an empty array is returned.

The returns array of Strings is a copy of the internal value, so modifications to this array have no influence on the operation of the ResourceResolver.

Each entry in the array is an absolute path terminated with a slash character. Thus to create an absolute path from a search path entry and a relative path, the search path entry and relative path may just be concatenated.


listChildren

java.util.Iterator<Resource> listChildren(Resource parent)
Returns an Iterator of Resource objects loaded from the children of the given Resource.

This specification does not define what the term "child" means. This is left to the implementation to define. For example an implementation reading content from a Java Content Repository, the children could be the Resource objects loaded from child items of the Item of the given Resource.

Parameters:
parent - The Resource whose children are requested.
Returns:
An Iterator of Resource objects.
Throws:
java.lang.NullPointerException - If parent is null.
SlingException - If any error occurs acquiring the child resource iterator.

findResources

java.util.Iterator<Resource> findResources(java.lang.String query,
                                           java.lang.String language)
Searches for resources using the given query formulated in the given language.

The semantic meaning of the query and language depend on the actual implementation and storage used for the resources. For JCR repository being used as storage, the query and lanuage parameters are used to create a JCR Query through the QueryManager. The result returned is then based on the NodeIterator provided by the query result.

Parameters:
query - The query string to use to find the resources.
language - The language in which the query is formulated.
Returns:
An Iterator of Resource objects matching the query.
Throws:
QuerySyntaxException - If the query is not syntactically correct according to the query language indicator of if the query language is not supported.
SlingException - If an error occurrs querying for the resources.

queryResources

java.util.Iterator<java.util.Map<java.lang.String,java.lang.Object>> queryResources(java.lang.String query,
                                                                                    java.lang.String language)
Queries the storage using the given query formulated in the given language.

The semantic meaning of the query and language depend on the actual implementation and storage used for the resources. For JCR repository being used as storage, the query and lanuage parameters are used to create a JCR Query through the QueryManager. The result returned is then based on the RowIterator provided by the query result. The map returned for each row is indexed by the column name and the column value is the JCR Value object converted into the respective Java object, such as Boolean for a value of property type Boolean.

Parameters:
query - The query string to use to find the resources.
language - The language in which the query is formulated.
Returns:
An Iterator of Map instances providing access to the query result.
Throws:
QuerySyntaxException - If the query is not syntactically correct according to the query language indicator of if the query language is not supported.
SlingException - If an error occurrs querying for the resources.


Copyright © 2007-2009. All Rights Reserved.