public interface ResourceServiceBroker
This interface abstracts a "Broker" pattern for various Resource
s from different backends.
So, application codes can simply invoke operations of this "Broker" interface to retrieve or manipulate any
Resource
s from different backends without having to worry about the details about the underlying backends.
Another important aspect is that this "Broker" interface takes care of caching of Resource
representations
and cache invalidations. So, application codes do not have to worry about caching and cache invalidations in
application layer any more, but they can transparently invoke the operations of this interface. Then this "Broker"
implementation should take care of all the details including caching, cache invalidations, etc.
Also, this "Broker" service is normally registered through HippoServiceRegistry
.
So, applications can access this singleton "Broker" service like the following example:
ResourceServiceBroker broker = HippoServiceRegistry.getService(ResourceServiceBroker.class);
Modifier and Type | Method and Description |
---|---|
Resource |
findResources(String resourceSpace,
String baseAbsPath)
Resolves a proper
ResourceResolver by the specified resourceSpace and search Resource
representations from baseAbsPath and returns a parent Resource representation which contains
a collection of child Resource representations. |
Resource |
findResources(String resourceSpace,
String baseAbsPath,
ExchangeHint exchangeHint)
Resolves a proper
ResourceResolver by the specified resourceSpace and search Resource
representations from baseAbsPath and returns a parent Resource representation which contains
a collection of child Resource representations. |
Resource |
findResources(String resourceSpace,
String baseAbsPath,
Map<String,Object> pathVariables)
Resolves a proper
ResourceResolver by the specified resourceSpace and search Resource
representations from baseAbsPath and returns a parent Resource representation which contains
a collection of child Resource representations. |
Resource |
findResources(String resourceSpace,
String baseAbsPath,
Map<String,Object> pathVariables,
ExchangeHint exchangeHint)
Resolves a proper
ResourceResolver by the specified resourceSpace and search Resource
representations from baseAbsPath and returns a parent Resource representation which contains
a collection of child Resource representations. |
ResourceBeanMapper |
getResourceBeanMapper(String resourceSpace)
Returns a proper
ResourceBeanMapper for the given resourceSpace . |
ResourceDataCache |
getResourceDataCache(String resourceSpace)
Returns a proper resource cache store representation (
ResourceDataCache ) for the specified
resourceSpace , or null if caching is disabled. |
Resource |
resolve(String resourceSpace,
String absPath)
Resolves a proper
ResourceResolver by the specified resourceSpace and resolves single Resource
representation by absPath . |
Resource |
resolve(String resourceSpace,
String absPath,
ExchangeHint exchangeHint)
Resolves a proper
ResourceResolver by the specified resourceSpace and resolves single Resource
representation by absPath . |
Resource |
resolve(String resourceSpace,
String absPath,
Map<String,Object> pathVariables)
Resolves a proper
ResourceResolver by the specified resourceSpace and resolves single Resource
representation by absPath . |
Resource |
resolve(String resourceSpace,
String absPath,
Map<String,Object> pathVariables,
ExchangeHint exchangeHint)
Resolves a proper
ResourceResolver by the specified resourceSpace and resolves single Resource
representation by absPath . |
Binary |
resolveBinary(String resourceSpace,
String absPath)
Resolves a proper
ResourceResolver by the specified resourceSpace and resolves single Binary
representation by absPath . |
Binary |
resolveBinary(String resourceSpace,
String absPath,
ExchangeHint exchangeHint)
Resolves a proper
ResourceResolver by the specified resourceSpace and resolves single Binary
representation by absPath . |
Binary |
resolveBinary(String resourceSpace,
String absPath,
Map<String,Object> pathVariables)
Resolves a proper
ResourceResolver by the specified resourceSpace and resolves single Binary
representation by absPath . |
Binary |
resolveBinary(String resourceSpace,
String absPath,
Map<String,Object> pathVariables,
ExchangeHint exchangeHint)
Resolves a proper
ResourceResolver by the specified resourceSpace and resolves single Binary
representation by absPath . |
Resource |
resolveBinaryAsResource(String resourceSpace,
String absPath)
Resolves a proper
ResourceResolver by the specified resourceSpace , resolves single Binary
representation by absPath , and converts the Binary representation into a Resource . |
Resource |
resolveBinaryAsResource(String resourceSpace,
String absPath,
ExchangeHint exchangeHint)
Resolves a proper
ResourceResolver by the specified resourceSpace , resolves single Binary
representation by absPath , and converts the Binary representation into a Resource . |
Resource |
resolveBinaryAsResource(String resourceSpace,
String absPath,
Map<String,Object> pathVariables)
Resolves a proper
ResourceResolver by the specified resourceSpace , resolves single Binary
representation by absPath , and converts the Binary representation into a Resource . |
Resource |
resolveBinaryAsResource(String resourceSpace,
String absPath,
Map<String,Object> pathVariables,
ExchangeHint exchangeHint)
Resolves a proper
ResourceResolver by the specified resourceSpace , resolves single Binary
representation by absPath , and converts the Binary representation into a Resource . |
URI |
resolveFullURI(String resourceSpace,
String absPath)
Resolves a full URI determined and resolved for the specific
resourceSpace and the absPath . |
URI |
resolveFullURI(String resourceSpace,
String absPath,
Map<String,Object> pathVariables)
Resolves a full URI determined and resolved for the specific
resourceSpace and the absPath . |
ResourceLink |
resolveLink(String resourceSpace,
Resource resource)
Resolves a proper
ResourceResolver by the specified resourceSpace and resolves a ResourceLink
for the given resource . |
ResourceLink |
resolveLink(String resourceSpace,
Resource resource,
Map<String,Object> linkVariables)
Resolves a proper
ResourceResolver by the specified resourceSpace and resolves a ResourceLink
for the given resource with passing linkVariables that can be used by implementation to
expand its internal link generation template. |
Resource resolve(String resourceSpace, String absPath) throws ResourceException
ResourceResolver
by the specified resourceSpace
and resolves single Resource
representation by absPath
.
absPath
is a domain-specific path template that should be meaningful to the backend.
For example, if the backend is a REST API, then absPath
can be a URI path or part of URL. Or, as
an example, the absPath
can be an index name of a search index, table name of databases or node
path in JCR, totally depending on ResourceResolver
implementations.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
absPath
- absolute path of a Resource
Resource
representation by absPath
ResourceException
- if resource resolution operation failsResource resolve(String resourceSpace, String absPath, ExchangeHint exchangeHint) throws ResourceException
ResourceResolver
by the specified resourceSpace
and resolves single Resource
representation by absPath
.
absPath
is a domain-specific path template that should be meaningful to the backend.
For example, if the backend is a REST API, then absPath
can be a URI path or part of URL. Or, as
an example, the absPath
can be an index name of a search index, table name of databases or node
path in JCR, totally depending on ResourceResolver
implementations.
If a non-null exchangeHint
is given, then it can be understood by the specific ResourceResolver
implementation for its specific backend.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
absPath
- absolute path of a Resource
exchangeHint
- a message exchange hint for the backendResource
representation by absPath
ResourceException
- if resource resolution operation failsResource resolve(String resourceSpace, String absPath, Map<String,Object> pathVariables) throws ResourceException
ResourceResolver
by the specified resourceSpace
and resolves single Resource
representation by absPath
.
absPath
is a domain-specific path template that should be meaningful to the backend.
For example, if the backend is a REST API, then absPath
can be a URI path or part of URL. Or, as
an example, the absPath
can be an index name of a search index, table name of databases or node
path in JCR, totally depending on ResourceResolver
implementations.
The absPath
template is expanded using the given path variables (pathVariables
), if any.
For example, if pathVariables
looks like {"var1":"hello","var2":"world"}
and absPath
is ".../some/path/{var1}/{var2}/overview"
, then it is expanded to
".../some/path/hello/world/overview"
by the pathVariables
when making a real request
to the backend.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
absPath
- absolute path of a Resource
pathVariables
- the variables to expand the template given by absPath
Resource
representation by absPath
ResourceException
- if resource resolution operation failsResource resolve(String resourceSpace, String absPath, Map<String,Object> pathVariables, ExchangeHint exchangeHint) throws ResourceException
ResourceResolver
by the specified resourceSpace
and resolves single Resource
representation by absPath
.
absPath
is a domain-specific path template that should be meaningful to the backend.
For example, if the backend is a REST API, then absPath
can be a URI path or part of URL. Or, as
an example, the absPath
can be an index name of a search index, table name of databases or node
path in JCR, totally depending on ResourceResolver
implementations.
The absPath
template is expanded using the given path variables (pathVariables
), if any.
For example, if pathVariables
looks like {"var1":"hello","var2":"world"}
and absPath
is ".../some/path/{var1}/{var2}/overview"
, then it is expanded to
".../some/path/hello/world/overview"
by the pathVariables
when making a real request
to the backend.
If a non-null exchangeHint
is given, then it can be understood by the specific ResourceResolver
implementation for its specific backend.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
absPath
- absolute path of a Resource
pathVariables
- the variables to expand the template given by absPath
exchangeHint
- a message exchange hint for the backendResource
representation by absPath
ResourceException
- if resource resolution operation failsBinary resolveBinary(String resourceSpace, String absPath) throws ResourceException
ResourceResolver
by the specified resourceSpace
and resolves single Binary
representation by absPath
.
absPath
is a domain-specific path template that should be meaningful to the backend.
For example, if the backend is a REST API, then absPath
can be a URI path or part of URL. Or, as
an example, the absPath
can be an index name of a search index, table name of databases or node
path in JCR, totally depending on ResourceResolver
implementations.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
absPath
- absolute path of a Binary
Binary
representation by absPath
ResourceException
- if resource resolution operation failsBinary resolveBinary(String resourceSpace, String absPath, ExchangeHint exchangeHint) throws ResourceException
ResourceResolver
by the specified resourceSpace
and resolves single Binary
representation by absPath
.
absPath
is a domain-specific path template that should be meaningful to the backend.
For example, if the backend is a REST API, then absPath
can be a URI path or part of URL. Or, as
an example, the absPath
can be an index name of a search index, table name of databases or node
path in JCR, totally depending on ResourceResolver
implementations.
If a non-null exchangeHint
is given, then it can be understood by the specific ResourceResolver
implementation for its specific backend.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
absPath
- absolute path of a Binary
exchangeHint
- a message exchange hint for the backendBinary
representation by absPath
ResourceException
- if resource resolution operation failsBinary resolveBinary(String resourceSpace, String absPath, Map<String,Object> pathVariables) throws ResourceException
ResourceResolver
by the specified resourceSpace
and resolves single Binary
representation by absPath
.
absPath
is a domain-specific path template that should be meaningful to the backend.
For example, if the backend is a REST API, then absPath
can be a URI path or part of URL. Or, as
an example, the absPath
can be an index name of a search index, table name of databases or node
path in JCR, totally depending on ResourceResolver
implementations.
The absPath
template is expanded using the given path variables (pathVariables
), if any.
For example, if pathVariables
looks like {"var1":"hello","var2":"world"}
and absPath
is ".../some/path/{var1}/{var2}/overview"
, then it is expanded to
".../some/path/hello/world/overview"
by the pathVariables
when making a real request
to the backend.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
absPath
- absolute path of a Binary
pathVariables
- the variables to expand the template given by absPath
Binary
representation by absPath
ResourceException
- if resource resolution operation failsBinary resolveBinary(String resourceSpace, String absPath, Map<String,Object> pathVariables, ExchangeHint exchangeHint) throws ResourceException
ResourceResolver
by the specified resourceSpace
and resolves single Binary
representation by absPath
.
absPath
is a domain-specific path template that should be meaningful to the backend.
For example, if the backend is a REST API, then absPath
can be a URI path or part of URL. Or, as
an example, the absPath
can be an index name of a search index, table name of databases or node
path in JCR, totally depending on ResourceResolver
implementations.
The absPath
template is expanded using the given path variables (pathVariables
), if any.
For example, if pathVariables
looks like {"var1":"hello","var2":"world"}
and absPath
is ".../some/path/{var1}/{var2}/overview"
, then it is expanded to
".../some/path/hello/world/overview"
by the pathVariables
when making a real request
to the backend.
If a non-null exchangeHint
is given, then it can be understood by the specific ResourceResolver
implementation for its specific backend.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
absPath
- absolute path of a Binary
pathVariables
- the variables to expand the template given by absPath
exchangeHint
- a message exchange hint for the backendBinary
representation by absPath
ResourceException
- if resource resolution operation failsResource resolveBinaryAsResource(String resourceSpace, String absPath) throws ResourceException
ResourceResolver
by the specified resourceSpace
, resolves single Binary
representation by absPath
, and converts the Binary
representation into a Resource
.
absPath
is a domain-specific path template that should be meaningful to the backend.
For example, if the backend is a REST API, then absPath
can be a URI path or part of URL. Or, as
an example, the absPath
can be an index name of a search index, table name of databases or node
path in JCR, totally depending on ResourceResolver
implementations.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
absPath
- absolute path of a Binary
Resource
object converted from the single Binary
representation by absPath
ResourceException
- if resource resolution operation failsResource resolveBinaryAsResource(String resourceSpace, String absPath, ExchangeHint exchangeHint) throws ResourceException
ResourceResolver
by the specified resourceSpace
, resolves single Binary
representation by absPath
, and converts the Binary
representation into a Resource
.
absPath
is a domain-specific path template that should be meaningful to the backend.
For example, if the backend is a REST API, then absPath
can be a URI path or part of URL. Or, as
an example, the absPath
can be an index name of a search index, table name of databases or node
path in JCR, totally depending on ResourceResolver
implementations.
If a non-null exchangeHint
is given, then it can be understood by the specific ResourceResolver
implementation for its specific backend.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
absPath
- absolute path of a Binary
exchangeHint
- a message exchange hint for the backendResource
object converted from the single Binary
representation by absPath
ResourceException
- if resource resolution operation failsResource resolveBinaryAsResource(String resourceSpace, String absPath, Map<String,Object> pathVariables) throws ResourceException
ResourceResolver
by the specified resourceSpace
, resolves single Binary
representation by absPath
, and converts the Binary
representation into a Resource
.
absPath
is a domain-specific path template that should be meaningful to the backend.
For example, if the backend is a REST API, then absPath
can be a URI path or part of URL. Or, as
an example, the absPath
can be an index name of a search index, table name of databases or node
path in JCR, totally depending on ResourceResolver
implementations.
The absPath
template is expanded using the given path variables (pathVariables
), if any.
For example, if pathVariables
looks like {"var1":"hello","var2":"world"}
and absPath
is ".../some/path/{var1}/{var2}/overview"
, then it is expanded to
".../some/path/hello/world/overview"
by the pathVariables
when making a real request
to the backend.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
absPath
- absolute path of a Binary
pathVariables
- the variables to expand the template given by absPath
Resource
object converted from the single Binary
representation by absPath
ResourceException
- if resource resolution operation failsResource resolveBinaryAsResource(String resourceSpace, String absPath, Map<String,Object> pathVariables, ExchangeHint exchangeHint) throws ResourceException
ResourceResolver
by the specified resourceSpace
, resolves single Binary
representation by absPath
, and converts the Binary
representation into a Resource
.
absPath
is a domain-specific path template that should be meaningful to the backend.
For example, if the backend is a REST API, then absPath
can be a URI path or part of URL. Or, as
an example, the absPath
can be an index name of a search index, table name of databases or node
path in JCR, totally depending on ResourceResolver
implementations.
The absPath
template is expanded using the given path variables (pathVariables
), if any.
For example, if pathVariables
looks like {"var1":"hello","var2":"world"}
and absPath
is ".../some/path/{var1}/{var2}/overview"
, then it is expanded to
".../some/path/hello/world/overview"
by the pathVariables
when making a real request
to the backend.
If a non-null exchangeHint
is given, then it can be understood by the specific ResourceResolver
implementation for its specific backend.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
absPath
- absolute path of a Binary
pathVariables
- the variables to expand the template given by absPath
exchangeHint
- a message exchange hint for the backendResource
object converted from the single Binary
representation by absPath
ResourceException
- if resource resolution operation failsResource findResources(String resourceSpace, String baseAbsPath) throws ResourceException
ResourceResolver
by the specified resourceSpace
and search Resource
representations from baseAbsPath
and returns a parent Resource
representation which contains
a collection of child Resource
representations.
baseAbsPath
is a domain-specific path template that should be meaningful to the backend.
For example, if the backend is a REST API, then baseAbsPath
can be a URI path or part of URL. Or, as
an example, the baseAbsPath
can be an index name of a search index, table name of databases or node
path in JCR, totally depending on ResourceResolver
implementations.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
baseAbsPath
- base absolute path of a Resource
Resource
representation which contains a collection of child Resource
representationsResourceException
- if resource resolution operation failsResource findResources(String resourceSpace, String baseAbsPath, ExchangeHint exchangeHint) throws ResourceException
ResourceResolver
by the specified resourceSpace
and search Resource
representations from baseAbsPath
and returns a parent Resource
representation which contains
a collection of child Resource
representations.
baseAbsPath
is a domain-specific path template that should be meaningful to the backend.
For example, if the backend is a REST API, then baseAbsPath
can be a URI path or part of URL. Or, as
an example, the baseAbsPath
can be an index name of a search index, table name of databases or node
path in JCR, totally depending on ResourceResolver
implementations.
If a non-null exchangeHint
is given, then it can be understood by the specific ResourceResolver
implementation for its specific backend.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
baseAbsPath
- base absolute path of a Resource
exchangeHint
- a message exchange hint for the backendResource
representation which contains a collection of child Resource
representationsResourceException
- if resource resolution operation failsResource findResources(String resourceSpace, String baseAbsPath, Map<String,Object> pathVariables) throws ResourceException
ResourceResolver
by the specified resourceSpace
and search Resource
representations from baseAbsPath
and returns a parent Resource
representation which contains
a collection of child Resource
representations.
baseAbsPath
is a domain-specific path template that should be meaningful to the backend.
For example, if the backend is a REST API, then baseAbsPath
can be a URI path or part of URL. Or, as
an example, the baseAbsPath
can be an index name of a search index, table name of databases or node
path in JCR, totally depending on ResourceResolver
implementations.
The baseAbsPath
template is expanded using the given path variables (pathVariables
), if any.
For example, if pathVariables
looks like {"var1":"hello","var2":"world"}
and baseAbsPath
is ".../some/path/{var1}/{var2}/overview"
, then it is expanded to
".../some/path/hello/world/overview"
by the pathVariables
when making a real request
to the backend.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
baseAbsPath
- base absolute path of a Resource
pathVariables
- the variables to expand the template given by absPath
Resource
representation which contains a collection of child Resource
representationsResourceException
- if resource resolution operation failsResource findResources(String resourceSpace, String baseAbsPath, Map<String,Object> pathVariables, ExchangeHint exchangeHint) throws ResourceException
ResourceResolver
by the specified resourceSpace
and search Resource
representations from baseAbsPath
and returns a parent Resource
representation which contains
a collection of child Resource
representations.
baseAbsPath
is a domain-specific path template that should be meaningful to the backend.
For example, if the backend is a REST API, then baseAbsPath
can be a URI path or part of URL. Or, as
an example, the baseAbsPath
can be an index name of a search index, table name of databases or node
path in JCR, totally depending on ResourceResolver
implementations.
The baseAbsPath
template is expanded using the given path variables (pathVariables
), if any.
For example, if pathVariables
looks like {"var1":"hello","var2":"world"}
and baseAbsPath
is ".../some/path/{var1}/{var2}/overview"
, then it is expanded to
".../some/path/hello/world/overview"
by the pathVariables
when making a real request
to the backend.
If a non-null exchangeHint
is given, then it can be understood by the specific ResourceResolver
implementation for its specific backend.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
baseAbsPath
- base absolute path of a Resource
pathVariables
- the variables to expand the template given by absPath
exchangeHint
- a message exchange hint for the backendResource
representation which contains a collection of child Resource
representationsResourceException
- if resource resolution operation failsResourceLink resolveLink(String resourceSpace, Resource resource) throws ResourceException
ResourceResolver
by the specified resourceSpace
and resolves a ResourceLink
for the given resource
.resourceSpace
- Resource space name to resolve a proper ResourceResolver
resource
- resource representationResourceLink
for the given resource
ResourceException
- if resource resolution operation failsResourceLink resolveLink(String resourceSpace, Resource resource, Map<String,Object> linkVariables) throws ResourceException
ResourceResolver
by the specified resourceSpace
and resolves a ResourceLink
for the given resource
with passing linkVariables
that can be used by implementation to
expand its internal link generation template.
How the linkVariables
is used in link generation template expansion is totally up to an implementation.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
resource
- resource representationlinkVariables
- the variables to expand the internal link generation templateResourceLink
for the given resource
ResourceException
- if resource resolution operation failsResourceDataCache getResourceDataCache(String resourceSpace) throws ResourceException
ResourceDataCache
) for the specified
resourceSpace
, or null if caching is disabled.
An implementation may return a default resource cache store representation (ResourceDataCache
)
as a fallback if the resolved ResourceResolver
doesn't have its own ResourceDataCache
instance
(in other words, if the resolved ResourceCacheResolvable.getResourceDataCache()
return null).
If an underlying resource resolver is explicitly disabled on caching (in other words, if the resolved
ResourceCacheResolvable.isCacheEnabled()
returns false), it should return null.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
ResourceDataCache
) for the specified
resourceSpace
, or a fallback ResourceDataCache
if the resolved ResourceResolver
doesn't have its own ResourceDataCache
instanceResourceException
- if resource space is not foundResourceBeanMapper getResourceBeanMapper(String resourceSpace) throws ResourceException
ResourceBeanMapper
for the given resourceSpace
.resourceSpace
- Resource space name to resolve a proper ResourceResolver
ResourceBeanMapper
for the given resourceSpace
ResourceException
- if resource space is not foundUnsupportedOperationException
- if a ResourceBeanMapper
is not supported for the resourceSpace
URI resolveFullURI(String resourceSpace, String absPath) throws ResourceException
resourceSpace
and the absPath
.
Or returns null if the backend cannot support a full URI access.
absPath
is a domain-specific path template that should be meaningful to the backend.
For example, if the backend is a REST API, then absPath
can be a URI path or part of URL. Or, as
an example, the absPath
can be an index name of a search index, table name of databases or node
path in JCR, totally depending on ResourceResolver
implementations.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
absPath
- absolute path of a Resource
absPath
ResourceException
- if resource resolution operation failsURI resolveFullURI(String resourceSpace, String absPath, Map<String,Object> pathVariables) throws ResourceException
resourceSpace
and the absPath
.
Or returns null if the backend cannot support a full URI access.
absPath
is a domain-specific path template that should be meaningful to the backend.
For example, if the backend is a REST API, then absPath
can be a URI path or part of URL. Or, as
an example, the absPath
can be an index name of a search index, table name of databases or node
path in JCR, totally depending on ResourceResolver
implementations.
The absPath
template is expanded using the given path variables (pathVariables
), if any.
For example, if pathVariables
looks like {"var1":"hello","var2":"world"}
and absPath
is ".../some/path/{var1}/{var2}/overview"
, then it is expanded to
".../some/path/hello/world/overview"
by the pathVariables
.
resourceSpace
- Resource space name to resolve a proper ResourceResolver
absPath
- absolute path of a Resource
pathVariables
- the variables to expand the template given by absPath
absPath
ResourceException
- if resource resolution operation failsCopyright © 2017–2020 Hippo B.V. (http://www.onehippo.com). All rights reserved.