org.springframework.web.reactive.resource

## Class ResourceTransformerSupport

- java.lang.Object
- - org.springframework.web.reactive.resource.ResourceTransformerSupport

All Implemented Interfaces:
  ResourceTransformer

Direct Known Subclasses:
  AppCacheManifestTransformer, CssLinkResourceTransformer

    public abstract class ResourceTransformerSupport
    extends Object
    implements ResourceTransformer

A base class for a `ResourceTransformer` with an optional helper method for resolving public links within a transformed resource.

Since:
  5.0
Author:
  Rossen Stoyanchev, Brian Clozel

### Constructor Summary

Constructors
Constructor and Description
`ResourceTransformerSupport()`

### Method Summary

All Methods Instance Methods Concrete Methods
`ResourceUrlProvider` `getResourceUrlProvider()` Return the configured `ResourceUrlProvider`.
`protected reactor.core.publisher.Mono<String>` `resolveUrlPath(String resourcePath, org.springframework.web.server.ServerWebExchange exchange, org.springframework.core.io.Resource resource, ResourceTransformerChain transformerChain)` A transformer can use this method when a resource being transformed contains links to other resources.
`void` `setResourceUrlProvider(ResourceUrlProvider resourceUrlProvider)` Configure a `ResourceUrlProvider` to use when resolving the public URL of links in a transformed resource (e.g.
`protected String` `toAbsolutePath(String path, org.springframework.web.server.ServerWebExchange exchange)` Transform the given relative request path to an absolute path, taking the path of the given request as a point of reference.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.springframework.web.reactive.resource.ResourceTransformer

`transform`

### Constructor Detail

#### ResourceTransformerSupport

    public ResourceTransformerSupport()

### Method Detail

#### setResourceUrlProvider

    public void setResourceUrlProvider(@Nullable
                                       ResourceUrlProvider resourceUrlProvider)

Configure a `ResourceUrlProvider` to use when resolving the public URL of links in a transformed resource (e.g. import links in a CSS file). This is required only for links expressed as full paths and not for relative links.

Parameters:
  `resourceUrlProvider` - the URL provider to use

#### getResourceUrlProvider

    @Nullable
    public ResourceUrlProvider getResourceUrlProvider()

Return the configured `ResourceUrlProvider`.

#### resolveUrlPath

    protected reactor.core.publisher.Mono<String> resolveUrlPath(String resourcePath,
                                                                 org.springframework.web.server.ServerWebExchange exchange,
                                                                 org.springframework.core.io.Resource resource,
                                                                 ResourceTransformerChain transformerChain)

A transformer can use this method when a resource being transformed contains links to other resources. Such links need to be replaced with the public facing link as determined by the resource resolver chain (e.g. the public URL may have a version inserted).

Parameters:
  `resourcePath` - the path to a resource that needs to be re-written
  `exchange` - the current exchange
  `resource` - the resource being transformed
  `transformerChain` - the transformer chain
Returns:
  the resolved URL or an empty `Mono`

#### toAbsolutePath

    protected String toAbsolutePath(String path,
                                    org.springframework.web.server.ServerWebExchange exchange)

Transform the given relative request path to an absolute path, taking the path of the given request as a point of reference. The resulting path is also cleaned from sequences like "path/..".

Parameters:
  `path` - the relative path to transform
  `exchange` - the current exchange
Returns:
  the absolute request path for the given resource path