Package org.springframework.web.util

# Class DefaultUriBuilderFactory

java.lang.Object
org.springframework.web.util.DefaultUriBuilderFactory

All Implemented Interfaces:
  `UriBuilderFactory`, `UriTemplateHandler`

public class DefaultUriBuilderFactory extends Object implements UriBuilderFactory
`UriBuilderFactory` that relies on `UriComponentsBuilder` for the actual building of the URI.

Provides options to create `UriBuilder` instances with a common base URI, alternative encoding mode strategies, among others.

Since:
  5.0
Author:
  Rossen Stoyanchev
See Also:
  - `UriComponentsBuilder`

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static enum`
`DefaultUriBuilderFactory.EncodingMode`
Enum to represent multiple URI encoding strategies.

## Constructor Summary

Constructors
Constructor
Description
`DefaultUriBuilderFactory()`
Default constructor without a base URI.
`DefaultUriBuilderFactory(String baseUriTemplate)`
Constructor with a base URI.
`DefaultUriBuilderFactory(UriComponentsBuilder baseUri)`
Variant of `DefaultUriBuilderFactory(String)` with a `UriComponentsBuilder`.

## Method Summary

Modifier and Type
Method
Description
`UriBuilder`
`builder()`
Create a URI builder with default settings.
`URI`
`expand(String uriTemplate, Object... uriVars)`
Expand the given URI template with an array of URI variables.
`URI`
`expand(String uriTemplate, Map<String,?> uriVars)`
Expand the given URI template with a map of URI variables.
`Map<String,?>`
`getDefaultUriVariables()`
Return the configured default URI variable values.
`DefaultUriBuilderFactory.EncodingMode`
`getEncodingMode()`
Return the configured encoding mode.
`UriComponentsBuilder.ParserType`
`getParserType()`
Return the configured parser type.
`final boolean`
`hasBaseUri()`
Determine whether this factory has been configured with a base URI.
`void`
`setDefaultUriVariables(Map<String,?> defaultUriVariables)`
Provide default URI variable values to use when expanding URI templates with a Map of variables.
`void`
`setEncodingMode(DefaultUriBuilderFactory.EncodingMode encodingMode)`
Set the `encoding mode` to use.
`void`
`setParsePath(boolean parsePath)`
Whether to parse the input path into path segments if the encoding mode is set to `EncodingMode.URI_COMPONENT`, which ensures that URI variables in the path are encoded according to path segment rules and for example a '/' is encoded.
`void`
`setParserType(UriComponentsBuilder.ParserType parserType)`
Set the `UriComponentsBuilder.ParserType` to use.
`boolean`
`shouldParsePath()`
Whether to parse the path into path segments if the encoding mode is set to `EncodingMode.URI_COMPONENT`.
`UriBuilder`
`uriString(String uriTemplate)`
Initialize a builder with the given URI template.

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

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

## Constructor Details

### DefaultUriBuilderFactory

public DefaultUriBuilderFactory()
Default constructor without a base URI.

The target address must be specified on each UriBuilder.

### DefaultUriBuilderFactory

public DefaultUriBuilderFactory(String baseUriTemplate)
Constructor with a base URI.

The given URI template is parsed via `UriComponentsBuilder.fromUriString(java.lang.String)` and then applied as a base URI to every UriBuilder via `UriComponentsBuilder.uriComponents(org.springframework.web.util.UriComponents)` unless the UriBuilder itself was created with a URI template that already has a target address.

Parameters:
  `baseUriTemplate` - the URI template to use a base URL

### DefaultUriBuilderFactory

public DefaultUriBuilderFactory(UriComponentsBuilder baseUri)
Variant of `DefaultUriBuilderFactory(String)` with a `UriComponentsBuilder`.

## Method Details

### hasBaseUri

public final boolean hasBaseUri()
Determine whether this factory has been configured with a base URI.

Since:
  6.1.4
See Also:
  - `DefaultUriBuilderFactory()`

### setParserType

public void setParserType(UriComponentsBuilder.ParserType parserType)
Set the `UriComponentsBuilder.ParserType` to use.

By default, `UriComponentsBuilder` uses the `parser type`.

Parameters:
  `parserType` - the parser type
Since:
  6.2
See Also:
  - `UriComponentsBuilder.ParserType`
  - `UriComponentsBuilder.fromUriString(String, UriComponentsBuilder.ParserType)`

### getParserType

@Nullable public UriComponentsBuilder.ParserType getParserType()
Return the configured parser type.

Since:
  6.2

### setEncodingMode

public void setEncodingMode(DefaultUriBuilderFactory.EncodingMode encodingMode)
Set the `encoding mode` to use.

By default this is set to `EncodingMode.TEMPLATE_AND_VALUES`.

Note: Prior to 5.1 the default was `EncodingMode.URI_COMPONENT` therefore the `WebClient` `RestTemplate` have switched their default behavior.

Parameters:
  `encodingMode` - the encoding mode to use

### getEncodingMode

public DefaultUriBuilderFactory.EncodingMode getEncodingMode()
Return the configured encoding mode.

### setDefaultUriVariables

public void setDefaultUriVariables(@Nullable Map<String,?> defaultUriVariables)
Provide default URI variable values to use when expanding URI templates with a Map of variables.

Parameters:
  `defaultUriVariables` - default URI variable values

### getDefaultUriVariables

public Map<String,?> getDefaultUriVariables()
Return the configured default URI variable values.

### setParsePath

public void setParsePath(boolean parsePath)
Whether to parse the input path into path segments if the encoding mode is set to `EncodingMode.URI_COMPONENT`, which ensures that URI variables in the path are encoded according to path segment rules and for example a '/' is encoded.

By default this is set to `true`.

Parameters:
  `parsePath` - whether to parse the path into path segments

### shouldParsePath

public boolean shouldParsePath()
Whether to parse the path into path segments if the encoding mode is set to `EncodingMode.URI_COMPONENT`.

### expand

public URI expand(String uriTemplate, Map<String,?> uriVars)
Description copied from interface: `UriTemplateHandler`
Expand the given URI template with a map of URI variables.

Specified by:
  `expand` in interface `UriTemplateHandler`
Parameters:
  `uriTemplate` - the URI template
  `uriVars` - variable values
Returns:
  the created URI instance

### expand

public URI expand(String uriTemplate, Object... uriVars)
Description copied from interface: `UriTemplateHandler`
Expand the given URI template with an array of URI variables.

Specified by:
  `expand` in interface `UriTemplateHandler`
Parameters:
  `uriTemplate` - the URI template
  `uriVars` - variable values
Returns:
  the created URI instance

### uriString

public UriBuilder uriString(String uriTemplate)
Description copied from interface: `UriBuilderFactory`
Initialize a builder with the given URI template.

Specified by:
  `uriString` in interface `UriBuilderFactory`
Parameters:
  `uriTemplate` - the URI template to use
Returns:
  the builder instance

### builder

public UriBuilder builder()
Description copied from interface: `UriBuilderFactory`
Create a URI builder with default settings.

Specified by:
  `builder` in interface `UriBuilderFactory`
Returns:
  the builder instance