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 782c7e527cbb339c1c7caaa29cc535cfade4f25a Author: Otavio Rodolfo Piske <angusyo...@gmail.com> AuthorDate: Mon Apr 15 13:46:55 2024 +0200 (chores) camel-core: cleaned up duplicated code dealing with variable repositories --- .../org/apache/camel/support/ExchangeHelper.java | 107 ++++++++++----------- 1 file changed, 50 insertions(+), 57 deletions(-) diff --git a/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java index a73db916db9..88674c95fa6 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java @@ -1088,29 +1088,34 @@ public final class ExchangeHelper { */ public static void setVariable(Exchange exchange, String name, Object value) { VariableRepository repo = null; + final String id = getRepositoryId(name); + if (id != null) { + repo = getVariableRepository(exchange, id); + name = resolveRepositoryName(exchange, name, id); + } + final VariableAware va = getVariableAware(exchange, repo); + va.setVariable(name, value); + } + + private static String getRepositoryId(String name) { String id = StringHelper.before(name, ":"); // header and exchange is reserved - if ("header".equals(id) || "exchange".equals(id)) { + if (isReserved(id)) { id = null; } - if (id != null) { - VariableRepositoryFactory factory - = exchange.getContext().getCamelContextExtension().getContextPlugin(VariableRepositoryFactory.class); - repo = factory.getVariableRepository(id); - if (repo == null) { - throw new IllegalArgumentException("VariableRepository with id: " + id + " does not exist"); - } - name = StringHelper.after(name, ":"); - // special for route, where we need to enrich the name with current route id if none given - if ("route".equals(id) && !name.contains(":")) { - String prefix = getAtRouteId(exchange); - if (prefix != null) { - name = prefix + ":" + name; - } + return id; + } + + private static String resolveRepositoryName(Exchange exchange, String name, String id) { + name = StringHelper.after(name, ":"); + // special for route, where we need to enrich the name with current route id if none given + if ("route".equals(id) && !name.contains(":")) { + String prefix = getAtRouteId(exchange); + if (prefix != null) { + name = prefix + ":" + name; } } - VariableAware va = repo != null ? repo : exchange; - va.setVariable(name, value); + return name; } /** @@ -1123,28 +1128,12 @@ public final class ExchangeHelper { */ public static void setVariableFromMessageBodyAndHeaders(Exchange exchange, String name, Message message) { VariableRepository repo = null; - String id = StringHelper.before(name, ":"); - // header and exchange is reserved - if ("header".equals(id) || "exchange".equals(id)) { - id = null; - } + final String id = getRepositoryId(name); if (id != null) { - VariableRepositoryFactory factory - = exchange.getContext().getCamelContextExtension().getContextPlugin(VariableRepositoryFactory.class); - repo = factory.getVariableRepository(id); - if (repo == null) { - throw new IllegalArgumentException("VariableRepository with id: " + id + " does not exist"); - } - name = StringHelper.after(name, ":"); - // special for route, where we need to enrich the name with current route id if none given - if ("route".equals(id) && !name.contains(":")) { - String prefix = getAtRouteId(exchange); - if (prefix != null) { - name = prefix + ":" + name; - } - } + repo = getVariableRepository(exchange, id); + name = resolveRepositoryName(exchange, name, id); } - VariableAware va = repo != null ? repo : exchange; + final VariableAware va = getVariableAware(exchange, repo); // set body and headers as variables Object body = message.getBody(); @@ -1189,31 +1178,35 @@ public final class ExchangeHelper { */ public static Object getVariable(Exchange exchange, String name) { VariableRepository repo = null; - String id = StringHelper.before(name, ":"); - // header and exchange is reserved - if ("header".equals(id) || "exchange".equals(id)) { - id = null; - } + final String id = getRepositoryId(name); if (id != null) { - VariableRepositoryFactory factory - = exchange.getContext().getCamelContextExtension().getContextPlugin(VariableRepositoryFactory.class); - repo = factory.getVariableRepository(id); - if (repo == null) { - throw new IllegalArgumentException("VariableRepository with id: " + id + " does not exist"); - } - name = StringHelper.after(name, ":"); - // special for route, where we need to enrich the name with current route id if none given - if ("route".equals(id) && !name.contains(":")) { - String prefix = getAtRouteId(exchange); - if (prefix != null) { - name = prefix + ":" + name; - } - } + repo = getVariableRepository(exchange, id); + + name = resolveRepositoryName(exchange, name, id); } - VariableAware va = repo != null ? repo : exchange; + final VariableAware va = getVariableAware(exchange, repo); return va.getVariable(name); } + private static VariableRepository getVariableRepository(Exchange exchange, String id) { + VariableRepositoryFactory factory + = exchange.getContext().getCamelContextExtension().getContextPlugin(VariableRepositoryFactory.class); + VariableRepository repo = factory.getVariableRepository(id); + if (repo == null) { + throw new IllegalArgumentException("VariableRepository with id: " + id + " does not exist"); + } + return repo; + } + + private static boolean isReserved(String id) { + return "header".equals(id) || "exchange".equals(id); + } + + private static VariableAware getVariableAware(Exchange exchange, VariableRepository repo) { + VariableAware va = repo != null ? repo : exchange; + return va; + } + /** * Gets the variable, converted to the given type *