From 08d36cf2e49bd1cbd4558e05ec5f646d272926fd Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Wed, 21 Aug 2013 17:05:13 -0400 Subject: [PATCH] Allow custom expand algorithm in UriComponents Issue: SPR-10647 --- .../org/springframework/web/util/UriComponents.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/spring-web/src/main/java/org/springframework/web/util/UriComponents.java b/spring-web/src/main/java/org/springframework/web/util/UriComponents.java index 704ce965b92..58cf5a7601a 100644 --- a/spring-web/src/main/java/org/springframework/web/util/UriComponents.java +++ b/spring-web/src/main/java/org/springframework/web/util/UriComponents.java @@ -161,6 +161,17 @@ public abstract class UriComponents implements Serializable { return expandInternal(new VarArgsTemplateVariables(uriVariableValues)); } + /** + * Replaces all URI template variables with the values obtained through the + * given {@link UriTemplateVariables} instance. + * @param uriTemplateVars resolves URI template variable values + * @return the expanded uri components + */ + public final UriComponents expand(UriTemplateVariables uriTemplateVars) { + Assert.notNull(uriTemplateVars, "'uriTemplateVars' must not be null"); + return expandInternal(uriTemplateVars); + } + /** * Replaces all URI template variables with the values from the given {@link * UriTemplateVariables} @@ -228,7 +239,7 @@ public abstract class UriComponents implements Serializable { * Defines the contract for URI Template variables * @see HierarchicalUriComponents#expand */ - interface UriTemplateVariables { + public interface UriTemplateVariables { Object getValue(String name); }