Merge branch '5.2.x'

# Conflicts:
#	build.gradle
This commit is contained in:
Juergen Hoeller
2020-06-08 20:26:14 +02:00
4 changed files with 65 additions and 63 deletions

View File

@@ -40,62 +40,6 @@ import org.springframework.util.StringUtils;
*/
public class DefaultUriBuilderFactory implements UriBuilderFactory {
/**
* Enum to represent multiple URI encoding strategies. The following are
* available:
* <ul>
* <li>{@link #TEMPLATE_AND_VALUES}
* <li>{@link #VALUES_ONLY}
* <li>{@link #URI_COMPONENT}
* <li>{@link #NONE}
* </ul>
* @see #setEncodingMode
*/
public enum EncodingMode {
/**
* Pre-encode the URI template first, then strictly encode URI variables
* when expanded, with the following rules:
* <ul>
* <li>For the URI template replace <em>only</em> non-ASCII and illegal
* (within a given URI component type) characters with escaped octets.
* <li>For URI variables do the same and also replace characters with
* reserved meaning.
* </ul>
* <p>For most cases, this mode is most likely to give the expected
* result because in treats URI variables as opaque data to be fully
* encoded, while {@link #URI_COMPONENT} by comparison is useful only
* if intentionally expanding URI variables with reserved characters.
* @since 5.0.8
* @see UriComponentsBuilder#encode()
*/
TEMPLATE_AND_VALUES,
/**
* Does not encode the URI template and instead applies strict encoding
* to URI variables via {@link UriUtils#encodeUriVariables} prior to
* expanding them into the template.
* @see UriUtils#encodeUriVariables(Object...)
* @see UriUtils#encodeUriVariables(Map)
*/
VALUES_ONLY,
/**
* Expand URI variables first, and then encode the resulting URI
* component values, replacing <em>only</em> non-ASCII and illegal
* (within a given URI component type) characters, but not characters
* with reserved meaning.
* @see UriComponents#encode()
*/
URI_COMPONENT,
/**
* No encoding should be applied.
*/
NONE
}
@Nullable
private final UriComponentsBuilder baseUri;
@@ -222,6 +166,62 @@ public class DefaultUriBuilderFactory implements UriBuilderFactory {
}
/**
* Enum to represent multiple URI encoding strategies. The following are
* available:
* <ul>
* <li>{@link #TEMPLATE_AND_VALUES}
* <li>{@link #VALUES_ONLY}
* <li>{@link #URI_COMPONENT}
* <li>{@link #NONE}
* </ul>
* @see #setEncodingMode
*/
public enum EncodingMode {
/**
* Pre-encode the URI template first, then strictly encode URI variables
* when expanded, with the following rules:
* <ul>
* <li>For the URI template replace <em>only</em> non-ASCII and illegal
* (within a given URI component type) characters with escaped octets.
* <li>For URI variables do the same and also replace characters with
* reserved meaning.
* </ul>
* <p>For most cases, this mode is most likely to give the expected
* result because in treats URI variables as opaque data to be fully
* encoded, while {@link #URI_COMPONENT} by comparison is useful only
* if intentionally expanding URI variables with reserved characters.
* @since 5.0.8
* @see UriComponentsBuilder#encode()
*/
TEMPLATE_AND_VALUES,
/**
* Does not encode the URI template and instead applies strict encoding
* to URI variables via {@link UriUtils#encodeUriVariables} prior to
* expanding them into the template.
* @see UriUtils#encodeUriVariables(Object...)
* @see UriUtils#encodeUriVariables(Map)
*/
VALUES_ONLY,
/**
* Expand URI variables first, and then encode the resulting URI
* component values, replacing <em>only</em> non-ASCII and illegal
* (within a given URI component type) characters, but not characters
* with reserved meaning.
* @see UriComponents#encode()
*/
URI_COMPONENT,
/**
* No encoding should be applied.
*/
NONE
}
/**
* {@link DefaultUriBuilderFactory} specific implementation of UriBuilder.
*/

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2018 the original author or authors.
* Copyright 2002-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.web.util;
/**
@@ -22,13 +23,14 @@ package org.springframework.web.util;
*
* @author Rossen Stoyanchev
* @since 5.0
* @see DefaultUriBuilderFactory
*/
public interface UriBuilderFactory extends UriTemplateHandler {
/**
* Initialize a builder with the given URI template.
* @param uriTemplate the URI template to use
* @return the URI builder instance
* @return the builder instance
*/
UriBuilder uriString(String uriTemplate);