Fix URLBuilder#addParametersIfAbsent (#7837)
This commit is contained in:
parent
48ba293ef3
commit
5977a2d455
|
|
@ -336,7 +336,9 @@ public final class URLBuilder extends ServiceConfigURL {
|
||||||
if (CollectionUtils.isEmptyMap(parameters)) {
|
if (CollectionUtils.isEmptyMap(parameters)) {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
this.parameters.putAll(parameters);
|
for(Map.Entry<String, String> entry : parameters.entrySet()) {
|
||||||
|
this.parameters.putIfAbsent(entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,8 @@ package org.apache.dubbo.common;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import static org.hamcrest.CoreMatchers.equalTo;
|
import static org.hamcrest.CoreMatchers.equalTo;
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
|
|
@ -97,4 +99,46 @@ public class URLBuilderTest {
|
||||||
assertThat(url2.getVersion(), equalTo("1.0.0"));
|
assertThat(url2.getVersion(), equalTo("1.0.0"));
|
||||||
assertThat(url2.getParameter("absentKey"), equalTo("absentValue"));
|
assertThat(url2.getParameter("absentKey"), equalTo("absentValue"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldAddParameters() {
|
||||||
|
URL url1 = URL.valueOf("dubbo://admin:hello1234@10.20.130.230:20880/context/path?version=1.0.0&application=morgan&key2=v2");
|
||||||
|
|
||||||
|
// string pairs test
|
||||||
|
URL url2 = URLBuilder.from(url1)
|
||||||
|
.addParameters("version", "1.0.0", "absentKey1", "absentValue1")
|
||||||
|
.build();
|
||||||
|
assertThat(url2.getParameter("version"), equalTo("1.0.0"));
|
||||||
|
assertThat(url2.getParameter("absentKey1"), equalTo("absentValue1"));
|
||||||
|
|
||||||
|
// map test
|
||||||
|
Map<String, String> parameters = new HashMap<String, String>(){
|
||||||
|
{
|
||||||
|
this.put("version", "2.0.0");
|
||||||
|
this.put("absentKey2", "absentValue2");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
url2 = URLBuilder.from(url1)
|
||||||
|
.addParameters(parameters)
|
||||||
|
.build();
|
||||||
|
assertThat(url2.getParameter("version"), equalTo("2.0.0"));
|
||||||
|
assertThat(url2.getParameter("absentKey2"), equalTo("absentValue2"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldAddParametersIfAbsent() {
|
||||||
|
URL url1 = URL.valueOf("dubbo://admin:hello1234@10.20.130.230:20880/context/path?version=1.0.0&application=morgan&key2=v2");
|
||||||
|
|
||||||
|
Map<String, String> parameters = new HashMap<String, String>(){
|
||||||
|
{
|
||||||
|
this.put("version", "2.0.0");
|
||||||
|
this.put("absentKey", "absentValue");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
URL url2 = URLBuilder.from(url1)
|
||||||
|
.addParametersIfAbsent(parameters)
|
||||||
|
.build();
|
||||||
|
assertThat(url2.getParameter("version"), equalTo("1.0.0"));
|
||||||
|
assertThat(url2.getParameter("absentKey"), equalTo("absentValue"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue