You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2020/09/10 09:56:13 UTC
[dubbo] branch master updated: fix #4587: enhance url equals (#6706)
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new a466f4f fix #4587: enhance url equals (#6706)
a466f4f is described below
commit a466f4f4a4b58d1089533bdbbde372d852afb5f0
Author: Ian Luo <ia...@gmail.com>
AuthorDate: Thu Sep 10 17:55:53 2020 +0800
fix #4587: enhance url equals (#6706)
---
.../src/main/java/org/apache/dubbo/common/URL.java | 14 +++++++++++++-
.../test/java/org/apache/dubbo/common/URLTest.java | 22 ++++++++++++++++++++++
2 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/URL.java b/dubbo-common/src/main/java/org/apache/dubbo/common/URL.java
index 02cd142..873f461 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/URL.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/URL.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.common;
import org.apache.dubbo.common.config.Configuration;
import org.apache.dubbo.common.config.InmemoryConfiguration;
+import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.common.constants.RemotingConstants;
import org.apache.dubbo.common.utils.ArrayUtils;
import org.apache.dubbo.common.utils.CollectionUtils;
@@ -1682,9 +1683,20 @@ class URL implements Serializable {
if (other.parameters != null) {
return false;
}
- } else if (!parameters.equals(other.parameters)) {
+ } else if (!parameters.keySet().equals(other.parameters.keySet())) {
return false;
+ } else {
+ for (String key : parameters.keySet()) {
+ if (key.equals(CommonConstants.TIMESTAMP_KEY)) {
+ continue;
+ }
+ if (!parameters.get(key).equals(other.parameters.get(key))) {
+ return false;
+ }
+ }
+ return true;
}
+
if (!StringUtils.isEquals(password, other.password)) {
return false;
}
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/URLTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/URLTest.java
index 5ba606d..c508749 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/URLTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/URLTest.java
@@ -31,6 +31,7 @@ import static org.hamcrest.CoreMatchers.anyOf;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertSame;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -897,4 +898,25 @@ public class URLTest {
assertEquals(Integer.valueOf(1), url.getParameter("i", Integer.class));
assertEquals(Boolean.FALSE, url.getParameter("b", Boolean.class));
}
+
+ @Test
+ public void testEquals() {
+ URL url1 = URL.valueOf("consumer://30.225.20.150/org.apache.dubbo.rpc.service.GenericService?application=" +
+ "dubbo-demo-api-consumer&category=consumers&check=false&dubbo=2.0.2&generic=true&interface=" +
+ "org.apache.dubbo.demo.DemoService&pid=7375&side=consumer&sticky=false×tamp=1599556506417");
+ URL url2 = URL.valueOf("consumer://30.225.20.150/org.apache.dubbo.rpc.service.GenericService?application=" +
+ "dubbo-demo-api-consumer&category=consumers&check=false&dubbo=2.0.2&generic=true&interface=" +
+ "org.apache.dubbo.demo.DemoService&pid=7375&side=consumer&sticky=false×tamp=2299556506417");
+ assertEquals(url1, url2);
+
+ URL url3 = URL.valueOf("consumer://30.225.20.150/org.apache.dubbo.rpc.service.GenericService?application=" +
+ "dubbo-demo-api-consumer&category=consumers&check=false&dubbo=2.0.2&interface=" +
+ "org.apache.dubbo.demo.DemoService&pid=7375&side=consumer&sticky=false×tamp=2299556506417");
+ assertNotEquals(url2, url3);
+
+ URL url4 = URL.valueOf("consumer://30.225.20.150/org.apache.dubbo.rpc.service.GenericService?application=" +
+ "dubbo-demo-api-consumer&category=consumers&check=true&dubbo=2.0.2&interface=" +
+ "org.apache.dubbo.demo.DemoService&pid=7375&side=consumer&sticky=false×tamp=2299556506417");
+ assertNotEquals(url3, url4);
+ }
}