You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2023/05/25 04:28:19 UTC
[camel] 02/03: (chores) camel-util: rework the createQueryString to use an array of Strings
This is an automated email from the ASF dual-hosted git repository.
orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 44d0d0421bf0a9d42f0619424a283c97d832e474
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Wed May 24 18:00:48 2023 +0200
(chores) camel-util: rework the createQueryString to use an array of Strings
---
.../java/org/apache/camel/util/URISupport.java | 33 ++++++++++++++--------
1 file changed, 22 insertions(+), 11 deletions(-)
diff --git a/core/camel-util/src/main/java/org/apache/camel/util/URISupport.java b/core/camel-util/src/main/java/org/apache/camel/util/URISupport.java
index 06dd4d72f9b..6ba36cac9c4 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/URISupport.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/URISupport.java
@@ -22,13 +22,14 @@ import java.net.URISyntaxException;
import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.regex.Pattern;
import static org.apache.camel.util.CamelURIParser.URI_ALREADY_NORMALIZED;
@@ -436,7 +437,8 @@ public final class URISupport {
* options.
*/
public static String createQueryString(Map<String, Object> options) {
- return createQueryString(options.keySet(), options, true);
+ final Set<String> keySet = options.keySet();
+ return createQueryString(keySet.toArray(new String[keySet.size()]), options, true);
}
/**
@@ -451,7 +453,7 @@ public final class URISupport {
return createQueryString(options.keySet(), options, encode);
}
- public static String createQueryString(Collection<String> sortedKeys, Map<String, Object> options, boolean encode) {
+ private static String createQueryString(String[] sortedKeys, Map<String, Object> options, boolean encode) {
if (options.isEmpty()) {
return EMPTY_QUERY_STRING;
}
@@ -489,6 +491,11 @@ public final class URISupport {
return rc.toString();
}
+ @Deprecated
+ public static String createQueryString(Collection<String> sortedKeys, Map<String, Object> options, boolean encode) {
+ return createQueryString(sortedKeys.toArray(new String[sortedKeys.size()]), options, encode);
+ }
+
private static void appendQueryStringParameter(String key, String value, StringBuilder rc, boolean encode) {
if (encode) {
String encoded = URLEncoder.encode(key, CHARSET);
@@ -646,11 +653,12 @@ public final class URISupport {
return buildUri(scheme, path, query);
} else {
// reorder parameters a..z
- List<String> keys = new ArrayList<>(parameters.keySet());
- keys.sort(null);
+ final Set<String> keySet = parameters.keySet();
+ final String[] parametersArray = keySet.toArray(new String[keySet.size()]);
+ Arrays.sort(parametersArray);
// build uri object with sorted parameters
- query = URISupport.createQueryString(keys, parameters, true);
+ query = URISupport.createQueryString(parametersArray, parameters, true);
return buildUri(scheme, path, query);
}
}
@@ -680,14 +688,17 @@ public final class URISupport {
// only parse if there are parameters
parameters = URISupport.parseQuery(query, false, false);
}
+
if (parameters == null || parameters.size() == 1) {
return buildUri(scheme, path, query);
} else {
+ final Set<String> entries = parameters.keySet();
+
// reorder parameters a..z
// optimize and only build new query if the keys was resorted
boolean sort = false;
String prev = null;
- for (String key : parameters.keySet()) {
+ for (String key : entries) {
if (prev == null) {
prev = key;
} else {
@@ -700,10 +711,10 @@ public final class URISupport {
}
}
if (sort) {
- List<String> keys = new ArrayList<>(parameters.keySet());
- keys.sort(null);
- // rebuild query with sorted parameters
- query = URISupport.createQueryString(keys, parameters, true);
+ final String[] array = entries.toArray(new String[entries.size()]);
+ Arrays.sort(array);
+
+ query = URISupport.createQueryString(array, parameters, true);
}
return buildUri(scheme, path, query);