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 4e8d18d3d0f2b0594ec202637991abde09881731 Author: luke.me <[email protected]> AuthorDate: Sun Jun 18 12:46:51 2023 +0900 The return value of the getDecodeQuery method has been changed from query to uri. --- .../camel/impl/engine/AbstractCamelContext.java | 5 ++--- .../camel/impl/engine/DefaultCamelContextTest.java | 3 +-- .../main/java/org/apache/camel/util/URISupport.java | 21 ++++++++++++++++++--- .../java/org/apache/camel/util/URISupportTest.java | 6 +++--- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java index 82cede02b93..0439da8df0c 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java @@ -710,9 +710,8 @@ public abstract class AbstractCamelContext extends BaseService answer.add(oldEndpoint); stopServices(oldEndpoint); } else { - String decodeQuery = URISupport.getDecodeQuery(uri); - if(decodeQuery != null) { - String decodeUri = StringHelper.before(uri, "?") + "?" + decodeQuery; + String decodeUri = URISupport.getDecodeQuery(uri); + if(decodeUri != null) { oldEndpoint = endpoints.remove(getEndpointKey(decodeUri)); } if(oldEndpoint != null){ diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultCamelContextTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultCamelContextTest.java index eda6076b268..336f681ccab 100644 --- a/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultCamelContextTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultCamelContextTest.java @@ -439,8 +439,7 @@ public class DefaultCamelContextTest extends TestSupport { for(Endpoint endpoint : routeEndpoints) { Endpoint oldEndpoint = endpoints.remove(ctx.getEndpointKey(endpoint.getEndpointUri())); if(oldEndpoint == null) { - String decodeQuery = URISupport.getDecodeQuery(endpoint.getEndpointUri()); - String decodeUri = StringHelper.before(endpoint.getEndpointUri(), "?") + "?" + decodeQuery; + String decodeUri = URISupport.getDecodeQuery(endpoint.getEndpointUri()); oldEndpoint = endpoints.remove(ctx.getEndpointKey(decodeUri)); } else { 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 4e7c1625e32..ed724de74e9 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 @@ -746,18 +746,33 @@ public final class URISupport { return rc; } + private static String makeUri(String uriWithoutQuery, String query){ + int len = uriWithoutQuery.length(); + if (query != null) { + len += 1 + query.length(); + StringBuilder sb = new StringBuilder(len); + sb.append(uriWithoutQuery).append('?').append(query); + return sb.toString(); + } else { + StringBuilder sb = new StringBuilder(len); + sb.append(uriWithoutQuery); + return sb.toString(); + } + } + public static String getDecodeQuery(final String uri) { try { URI u = new URI(uri); String query = URISupport.prepareQuery(u); + String uriWithoutQuery = URISupport.stripQuery(uri); if(query == null){ - return null; + return uriWithoutQuery; }else { Map<String, Object> parameters = URISupport.parseQuery(query, false, false); if (parameters.size() == 1) { // only 1 parameter need to create new query string query = URISupport.createQueryString(parameters); - return query; + return makeUri(uriWithoutQuery, query); } else { // reorder parameters a..z final Set<String> keySet = parameters.keySet(); @@ -766,7 +781,7 @@ public final class URISupport { // build uri object with sorted parameters query = URISupport.createQueryString(parametersArray, parameters, true); - return query; + return makeUri(uriWithoutQuery, query); } } }catch(URISyntaxException ex){ diff --git a/core/camel-util/src/test/java/org/apache/camel/util/URISupportTest.java b/core/camel-util/src/test/java/org/apache/camel/util/URISupportTest.java index 974fe5d5bd5..832206e15d4 100644 --- a/core/camel-util/src/test/java/org/apache/camel/util/URISupportTest.java +++ b/core/camel-util/src/test/java/org/apache/camel/util/URISupportTest.java @@ -617,7 +617,7 @@ public class URISupportTest { public void testGetDecodeQuery() throws Exception{ String out = URISupport.normalizeUri("smtp://localhost?username=davsclaus&password=secret"); String enc = UnsafeUriCharactersEncoder.encode(out); - String dec = StringHelper.before(enc,"?") + "?" + URISupport.getDecodeQuery(enc); + String dec = URISupport.getDecodeQuery(enc); assertEquals(out, dec); out = URISupport.normalizeUri("smtp://localhost?password=secret&username=davsclaus"); @@ -627,14 +627,14 @@ public class URISupportTest { enc = UnsafeUriCharactersEncoder.encode(out); assertNotEquals(out, enc); - dec = StringHelper.before(enc,"?") + "?" + URISupport.getDecodeQuery(enc); + dec = URISupport.getDecodeQuery(enc); assertEquals(out, dec); out = URISupport.normalizeUri("bean://MyBean?method=RAW(addString(%22#@a%23, test))"); enc = UnsafeUriCharactersEncoder.encode(out); assertNotEquals(out, enc); - dec = StringHelper.before(enc,"?") + "?" + URISupport.getDecodeQuery(enc); + dec = URISupport.getDecodeQuery(enc); assertEquals(out, dec); }
