You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/06/21 02:32:43 UTC

[dubbo] branch master updated: improve the code of URLStrParser.java (#8085)

This is an automated email from the ASF dual-hosted git repository.

albumenj 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 c8cefee  improve the code of URLStrParser.java (#8085)
c8cefee is described below

commit c8cefee04f82199646fe79b8b401d489d27d0e3b
Author: zhox <41...@users.noreply.github.com>
AuthorDate: Mon Jun 21 10:32:34 2021 +0800

    improve the code of URLStrParser.java (#8085)
---
 .../src/main/java/org/apache/dubbo/common/URL.java |  2 +-
 .../java/org/apache/dubbo/common/URLStrParser.java | 36 ++++++++--------------
 2 files changed, 13 insertions(+), 25 deletions(-)

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 7b92f59..a2b4762 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
@@ -248,7 +248,7 @@ class URL implements Serializable {
         Map<String, String> parameters = null;
         int i = url.indexOf('?'); // separator between body and parameters
         if (i >= 0) {
-            String[] parts = url.substring(i + 1).split("&");
+            String[] parts = url.substring(i + 1).split("[&;]");
             parameters = new HashMap<>();
             for (String part : parts) {
                 part = part.trim();
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/URLStrParser.java b/dubbo-common/src/main/java/org/apache/dubbo/common/URLStrParser.java
index 06db68e..1a17d9f 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/URLStrParser.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/URLStrParser.java
@@ -224,32 +224,20 @@ public final class URLStrParser {
             valueStart = valueEnd + 1;
         }
 
+        String name;
+        String value;
         if (isEncoded) {
-            String name = decodeComponent(str, nameStart, valueStart - 3, false, tempBuf);
-            String value = decodeComponent(str, valueStart, valueEnd, false, tempBuf);
-            if (valueStart == valueEnd) {
-                value = name;
-            } else {
-                value = decodeComponent(str, valueStart, valueEnd, false, tempBuf);
-            }
-            params.put(name, value);
-            // compatible with lower versions registering "default." keys
-            if (name.startsWith(DEFAULT_KEY_PREFIX)) {
-                params.putIfAbsent(name.substring(DEFAULT_KEY_PREFIX.length()), value);
-            }
+            name = decodeComponent(str, nameStart, valueStart - 3, false, tempBuf);
+            value = valueStart == valueEnd ? name : decodeComponent(str, valueStart, valueEnd, false, tempBuf);
         } else {
-            String name = str.substring(nameStart, valueStart - 1);
-            String value = str.substring(valueStart, valueEnd);
-            if (valueStart == valueEnd) {
-                value = name;
-            } else {
-                value = str.substring(valueStart, valueEnd);
-            }
-            params.put(name, value);
-            // compatible with lower versions registering "default." keys
-            if (name.startsWith(DEFAULT_KEY_PREFIX)) {
-                params.putIfAbsent(name.substring(DEFAULT_KEY_PREFIX.length()), value);
-            }
+            name = str.substring(nameStart, valueStart - 1);
+            value = valueStart == valueEnd ? name : str.substring(valueStart, valueEnd);
+        }
+
+        params.put(name, value);
+        // compatible with lower versions registering "default." keys
+        if (name.startsWith(DEFAULT_KEY_PREFIX)) {
+            params.putIfAbsent(name.substring(DEFAULT_KEY_PREFIX.length()), value);
         }
         return true;
     }