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 2024/04/12 08:33:15 UTC
(camel) 02/07: (chores) camel-core-support: extract independent code snippets from large code blocks
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 5949e91a22f654267817654064cd598a5163c4f1
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Thu Apr 11 13:34:22 2024 +0200
(chores) camel-core-support: extract independent code snippets from large code blocks
---
.../org/apache/camel/support/EndpointHelper.java | 49 ++++++++++++----------
.../camel/support/component/ApiMethodParser.java | 41 ++++++++++--------
2 files changed, 50 insertions(+), 40 deletions(-)
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/EndpointHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/EndpointHelper.java
index f13cb037f01..eb1c640e785 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/EndpointHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/EndpointHelper.java
@@ -118,36 +118,41 @@ public final class EndpointHelper {
// the query parameters needs to be rebuild by removing the unresolved key=value pairs
if (query != null && query.contains(prefix)) {
Map<String, Object> params = URISupport.parseQuery(query);
- Map<String, Object> keep = new LinkedHashMap<>();
- for (Map.Entry<String, Object> entry : params.entrySet()) {
- String key = entry.getKey();
- if (key.startsWith(prefix)) {
+ final Map<String, Object> keep = extractParamsToKeep(params, prefix);
+ // rebuild query
+ query = URISupport.createQueryString(keep);
+ }
+
+ // assemble uri as answer
+ uri = query != null && !query.isEmpty() ? base + "?" + query : base;
+ return uri;
+ }
+
+ private static Map<String, Object> extractParamsToKeep(Map<String, Object> params, String prefix) {
+ Map<String, Object> keep = new LinkedHashMap<>();
+ for (Map.Entry<String, Object> entry : params.entrySet()) {
+ String key = entry.getKey();
+ if (key.startsWith(prefix)) {
+ continue;
+ }
+ Object value = entry.getValue();
+ if (value instanceof String) {
+ String s = value.toString();
+ if (s.startsWith(prefix)) {
continue;
}
- Object value = entry.getValue();
- if (value instanceof String) {
- String s = value.toString();
+ // okay the value may use a resource loader with a scheme prefix
+ int dot = s.indexOf(':');
+ if (dot > 0 && dot < s.length() - 1) {
+ s = s.substring(dot + 1);
if (s.startsWith(prefix)) {
continue;
}
- // okay the value may use a resource loader with a scheme prefix
- int dot = s.indexOf(':');
- if (dot > 0 && dot < s.length() - 1) {
- s = s.substring(dot + 1);
- if (s.startsWith(prefix)) {
- continue;
- }
- }
}
- keep.put(key, value);
}
- // rebuild query
- query = URISupport.createQueryString(keep);
+ keep.put(key, value);
}
-
- // assemble uri as answer
- uri = query != null && !query.isEmpty() ? base + "?" + query : base;
- return uri;
+ return keep;
}
/**
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/component/ApiMethodParser.java b/core/camel-support/src/main/java/org/apache/camel/support/component/ApiMethodParser.java
index dff9938052e..650095e7782 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/component/ApiMethodParser.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/component/ApiMethodParser.java
@@ -207,24 +207,7 @@ public abstract class ApiMethodParser<T> {
result = processResults(result);
// check that argument names have the same type across methods
- Map<String, Class<?>> allArguments = new HashMap<>();
- for (ApiMethodModel model : result) {
- for (ApiMethodArg argument : model.getArguments()) {
- String name = argument.getName();
- Class<?> argClass = allArguments.get(name);
- Class<?> type = argument.getType();
- if (argClass == null) {
- allArguments.put(name, type);
- } else {
- if (argClass != type) {
- throw new IllegalArgumentException(
- "Argument [" + name
- + "] is used in multiple methods with different types "
- + argClass.getCanonicalName() + ", " + type.getCanonicalName());
- }
- }
- }
- }
+ final Map<String, Class<?>> allArguments = extractArguments(result);
allArguments.clear();
result.sort(new Comparator<>() {
@@ -276,6 +259,28 @@ public abstract class ApiMethodParser<T> {
return result;
}
+ private static Map<String, Class<?>> extractArguments(List<ApiMethodModel> result) {
+ Map<String, Class<?>> allArguments = new HashMap<>();
+ for (ApiMethodModel model : result) {
+ for (ApiMethodArg argument : model.getArguments()) {
+ String name = argument.getName();
+ Class<?> argClass = allArguments.get(name);
+ Class<?> type = argument.getType();
+ if (argClass == null) {
+ allArguments.put(name, type);
+ } else {
+ if (argClass != type) {
+ throw new IllegalArgumentException(
+ "Argument [" + name
+ + "] is used in multiple methods with different types "
+ + argClass.getCanonicalName() + ", " + type.getCanonicalName());
+ }
+ }
+ }
+ }
+ return allArguments;
+ }
+
protected List<ApiMethodModel> processResults(List<ApiMethodModel> result) {
return result;
}