#1165 - Fix for potential NullPointerException in UriTemplate.

UriTemplate.with(TemplateVariable) now properly forwards the UriBuilderFactory from the current instance.
This commit is contained in:
Oliver Drotbohm
2020-01-14 13:59:44 +01:00
parent 60cf2a828e
commit ad3e35bdf1
2 changed files with 17 additions and 4 deletions

View File

@@ -58,10 +58,11 @@ public class UriTemplate implements Iterable<TemplateVariable>, Serializable {
private static final Map<String, UriTemplate> CACHE = new ConcurrentReferenceHashMap<>();
private final TemplateVariables variables;
private String toString;
private String baseUri;
private transient UriBuilderFactory factory;
private String toString;
/**
* Creates a new {@link UriTemplate} using the given template string.
*
@@ -106,18 +107,21 @@ public class UriTemplate implements Iterable<TemplateVariable>, Serializable {
}
/**
* Creates a new {@link UriTemplate} from the given base URI and {@link TemplateVariables}.
* Creates a new {@link UriTemplate} from the given base URI, {@link TemplateVariables} and {@link UriBuilderFactory}.
*
* @param baseUri must not be {@literal null} or empty.
* @param variables must not be {@literal null}.
* @param factory must not be {@literal null}.
*/
UriTemplate(String baseUri, TemplateVariables variables) {
private UriTemplate(String baseUri, TemplateVariables variables, UriBuilderFactory factory) {
Assert.hasText(baseUri, "Base URI must not be null or empty!");
Assert.notNull(variables, "Template variables must not be null!");
Assert.notNull(factory, "UriBuilderFactory must not be null!");
this.baseUri = baseUri;
this.variables = variables;
this.factory = factory;
}
/**
@@ -179,7 +183,7 @@ public class UriTemplate implements Iterable<TemplateVariable>, Serializable {
result.add(variable);
}
return new UriTemplate(baseUri, this.variables.concat(result));
return new UriTemplate(baseUri, this.variables.concat(result), this.factory);
}
/**