This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 718801e44e1548c3a6ba5f5bf2441aa817188a9d Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sun Mar 22 09:46:40 2020 +0100 CAMEL-14762: camel-core - Configurer to include API for method name and type --- .../org/apache/camel/support/PropertyBindingSupport.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/core/camel-support/src/main/java/org/apache/camel/support/PropertyBindingSupport.java b/core/camel-support/src/main/java/org/apache/camel/support/PropertyBindingSupport.java index 14d698c..457f53f 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/PropertyBindingSupport.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/PropertyBindingSupport.java @@ -366,14 +366,18 @@ public final class PropertyBindingSupport { } // use configurer to get all the current options and its values + Map<String, Object> getterAllOption = null; if (configurer instanceof PropertyConfigurerGetter) { getter = (PropertyConfigurerGetter) configurer; final PropertyConfigurerGetter lambdaGetter = getter; final Object lambdaTarget = target; - // TODO: optimize to only load complex values as these are the only ones we - getter.getAllOptions(target).forEach((key, type) -> { - Object value = lambdaGetter.getOptionValue(lambdaTarget, key, true); - properties.put(key, value); + getterAllOption = getter.getAllOptions(target); + getterAllOption.forEach((key, type) -> { + // we only need the complex types + if (isComplexUserType((Class) type)) { + Object value = lambdaGetter.getOptionValue(lambdaTarget, key, true); + properties.put(key, value); + } }); } else { // okay use reflection based @@ -399,9 +403,9 @@ public final class PropertyBindingSupport { } Class<?> type; - if (getter != null) { + if (getterAllOption != null) { // use getter configurer to know the property class type - type = (Class<?>) getter.getAllOptions(target).get(key); + type = (Class<?>) getterAllOption.get(key); } else { // okay fallback to use reflection based type = getGetterType(camelContext, target, key, false);