You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2018/04/11 08:14:30 UTC

[camel] 18/41: CAMEL-12380: remove spring-boot 1.5.x property resolvers

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 31f7c5995b5da06f015415380de50813c5c3ddeb
Author: nferraro <ni...@gmail.com>
AuthorDate: Thu Mar 22 11:17:20 2018 +0100

    CAMEL-12380: remove spring-boot 1.5.x property resolvers
---
 .../boot/security/CamelSSLAutoConfiguration.java   |  12 +-
 .../boot/util/HierarchicalPropertiesEvaluator.java |  11 +-
 .../spring/boot/util/PropertySourceUtils.java      |  93 --------
 .../camel/spring/boot/util/RelaxedNames.java       | 260 ---------------------
 .../spring/boot/util/RelaxedPropertyResolver.java  | 162 -------------
 .../HazelcastComponentAutoConfiguration.java       |   8 +-
 .../packaging/SpringBootAutoConfigurationMojo.java |   7 +-
 7 files changed, 20 insertions(+), 533 deletions(-)

diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/security/CamelSSLAutoConfiguration.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/security/CamelSSLAutoConfiguration.java
index d8d54ad..33bd857 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/security/CamelSSLAutoConfiguration.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/security/CamelSSLAutoConfiguration.java
@@ -16,10 +16,7 @@
  */
 package org.apache.camel.spring.boot.security;
 
-import java.util.Map;
-
 import org.apache.camel.spring.boot.CamelAutoConfiguration;
-import org.apache.camel.spring.boot.util.RelaxedPropertyResolver;
 import org.apache.camel.util.jsse.GlobalSSLContextParametersSupplier;
 import org.apache.camel.util.jsse.SSLContextParameters;
 import org.springframework.boot.autoconfigure.AutoConfigureBefore;
@@ -27,12 +24,17 @@ import org.springframework.boot.autoconfigure.condition.ConditionMessage;
 import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
 import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.boot.context.properties.bind.Bindable;
+import org.springframework.boot.context.properties.bind.Binder;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ConditionContext;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.core.type.AnnotatedTypeMetadata;
 
+import java.util.Collections;
+import java.util.Map;
+
 @Configuration
 @AutoConfigureBefore(CamelAutoConfiguration.class)
 @EnableConfigurationProperties(CamelSSLConfigurationProperties.class)
@@ -48,8 +50,8 @@ public class CamelSSLAutoConfiguration {
     public static class Condition extends SpringBootCondition {
         @Override
         public ConditionOutcome getMatchOutcome(ConditionContext context, AnnotatedTypeMetadata annotatedTypeMetadata) {
-            RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(context.getEnvironment(), "camel.ssl.config");
-            Map<String, Object> sslProperties = resolver.getSubProperties(".");
+            Binder binder = Binder.get(context.getEnvironment());
+            Map<String, Object> sslProperties = binder.bind("camel.ssl.config", Bindable.mapOf(String.class, Object.class)).orElse(Collections.emptyMap());
             ConditionMessage.Builder message = ConditionMessage.forCondition("camel.ssl.config");
             if (sslProperties.size() > 0) {
                 return ConditionOutcome.match(message.because("enabled"));
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluator.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluator.java
index a898d55..3d5ef7e 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluator.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluator.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.spring.boot.util;
 
+import org.springframework.boot.context.properties.bind.Bindable;
+import org.springframework.boot.context.properties.bind.Binder;
 import org.springframework.core.env.Environment;
 
 public final class HierarchicalPropertiesEvaluator {
@@ -46,11 +48,8 @@ public final class HierarchicalPropertiesEvaluator {
     }
 
     private static boolean isEnabled(Environment environment, String prefix, boolean defaultValue) {
-        RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
-            environment,
-            prefix.endsWith(".") ? prefix : prefix + "."
-        );
-
-        return resolver.getProperty("enabled", Boolean.class, defaultValue);
+        String property = prefix.endsWith(".") ? prefix + "enabled" : prefix + ".enabled";
+        Binder binder = Binder.get(environment);
+        return binder.bind(property, Bindable.of(Boolean.class)).orElse(defaultValue);
     }
 }
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/PropertySourceUtils.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/PropertySourceUtils.java
deleted file mode 100644
index 073c7f9..0000000
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/PropertySourceUtils.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.spring.boot.util;
-
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-import org.springframework.core.env.EnumerablePropertySource;
-import org.springframework.core.env.PropertySource;
-import org.springframework.core.env.PropertySources;
-
-/**
- * Convenience class for manipulating PropertySources.
- *
- * @author Dave Syer
- * @see PropertySource
- * @see PropertySources
- *
- * Source code copied from spring-boot 1.5.6.RELEASE
- */
-public abstract class PropertySourceUtils {
-
-    /**
-     * Return a Map of all values from the specified {@link PropertySources} that start
-     * with a particular key.
-     * @param propertySources the property sources to scan
-     * @param keyPrefix the key prefixes to test
-     * @return a map of all sub properties starting with the specified key prefixes.
-     * @see PropertySourceUtils#getSubProperties(PropertySources, String, String)
-     */
-    public static Map<String, Object> getSubProperties(PropertySources propertySources,
-                                                       String keyPrefix) {
-        return PropertySourceUtils.getSubProperties(propertySources, null, keyPrefix);
-    }
-
-    /**
-     * Return a Map of all values from the specified {@link PropertySources} that start
-     * with a particular key.
-     * @param propertySources the property sources to scan
-     * @param rootPrefix a root prefix to be prepended to the keyPrefix (can be
-     * {@code null})
-     * @param keyPrefix the key prefixes to test
-     * @return a map of all sub properties starting with the specified key prefixes.
-     * @see #getSubProperties(PropertySources, String, String)
-     */
-    public static Map<String, Object> getSubProperties(PropertySources propertySources,
-                                                       String rootPrefix, String keyPrefix) {
-        RelaxedNames keyPrefixes = new RelaxedNames(keyPrefix);
-        Map<String, Object> subProperties = new LinkedHashMap<String, Object>();
-        for (PropertySource<?> source : propertySources) {
-            if (source instanceof EnumerablePropertySource) {
-                for (String name : ((EnumerablePropertySource<?>) source)
-                    .getPropertyNames()) {
-                    String key = PropertySourceUtils.getSubKey(name, rootPrefix,
-                        keyPrefixes);
-                    if (key != null && !subProperties.containsKey(key)) {
-                        subProperties.put(key, source.getProperty(name));
-                    }
-                }
-            }
-        }
-        return Collections.unmodifiableMap(subProperties);
-    }
-
-    private static String getSubKey(String name, String rootPrefixes,
-                                    RelaxedNames keyPrefix) {
-        rootPrefixes = rootPrefixes == null ? "" : rootPrefixes;
-        for (String rootPrefix : new RelaxedNames(rootPrefixes)) {
-            for (String candidateKeyPrefix : keyPrefix) {
-                if (name.startsWith(rootPrefix + candidateKeyPrefix)) {
-                    return name.substring((rootPrefix + candidateKeyPrefix).length());
-                }
-            }
-        }
-        return null;
-    }
-
-}
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/RelaxedNames.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/RelaxedNames.java
deleted file mode 100644
index 54fbfcd..0000000
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/RelaxedNames.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.spring.boot.util;
-
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.springframework.util.StringUtils;
-
-/**
- * Generates relaxed name variations from a given source.
- *
- * @author Phillip Webb
- * @author Dave Syer
- * @see RelaxedPropertyResolver
- *
- * Source code copied from spring-boot 1.5.6.RELEASE
- */
-public final class RelaxedNames implements Iterable<String> {
-
-    private static final Pattern CAMEL_CASE_PATTERN = Pattern.compile("([^A-Z-])([A-Z])");
-
-    private static final Pattern SEPARATED_TO_CAMEL_CASE_PATTERN = Pattern
-        .compile("[_\\-.]");
-
-    private final String name;
-
-    private final Set<String> values = new LinkedHashSet<String>();
-
-    /**
-     * Create a new {@link RelaxedNames} instance.
-     * @param name the source name. For the maximum number of variations specify the name
-     * using dashed notation (e.g. {@literal my-property-name}
-     */
-    public RelaxedNames(String name) {
-        this.name = name == null ? "" : name;
-        initialize(RelaxedNames.this.name, this.values);
-    }
-
-    @Override
-    public Iterator<String> iterator() {
-        return this.values.iterator();
-    }
-
-    private void initialize(String name, Set<String> values) {
-        if (values.contains(name)) {
-            return;
-        }
-        for (Variation variation : Variation.values()) {
-            for (Manipulation manipulation : Manipulation.values()) {
-                String result = name;
-                result = manipulation.apply(result);
-                result = variation.apply(result);
-                values.add(result);
-                initialize(result, values);
-            }
-        }
-    }
-
-    /**
-     * Name variations.
-     */
-    enum Variation {
-
-        NONE {
-
-            @Override
-            public String apply(String value) {
-                return value;
-            }
-
-        },
-
-        LOWERCASE {
-
-            @Override
-            public String apply(String value) {
-                return value.isEmpty() ? value : value.toLowerCase();
-            }
-
-        },
-
-        UPPERCASE {
-
-            @Override
-            public String apply(String value) {
-                return value.isEmpty() ? value : value.toUpperCase();
-            }
-
-        };
-
-        public abstract String apply(String value);
-
-    }
-
-    /**
-     * Name manipulations.
-     */
-    enum Manipulation {
-
-        NONE {
-
-            @Override
-            public String apply(String value) {
-                return value;
-            }
-
-        },
-
-        HYPHEN_TO_UNDERSCORE {
-
-            @Override
-            public String apply(String value) {
-                return value.indexOf('-') != -1 ? value.replace('-', '_') : value;
-            }
-
-        },
-
-        UNDERSCORE_TO_PERIOD {
-
-            @Override
-            public String apply(String value) {
-                return value.indexOf('_') != -1 ? value.replace('_', '.') : value;
-            }
-
-        },
-
-        PERIOD_TO_UNDERSCORE {
-
-            @Override
-            public String apply(String value) {
-                return value.indexOf('.') != -1 ? value.replace('.', '_') : value;
-            }
-
-        },
-
-        CAMELCASE_TO_UNDERSCORE {
-
-            @Override
-            public String apply(String value) {
-                if (value.isEmpty()) {
-                    return value;
-                }
-                Matcher matcher = CAMEL_CASE_PATTERN.matcher(value);
-                if (!matcher.find()) {
-                    return value;
-                }
-                matcher = matcher.reset();
-                StringBuffer result = new StringBuffer();
-                while (matcher.find()) {
-                    matcher.appendReplacement(result, matcher.group(1) + '_'
-                        + StringUtils.uncapitalize(matcher.group(2)));
-                }
-                matcher.appendTail(result);
-                return result.toString();
-            }
-
-        },
-
-        CAMELCASE_TO_HYPHEN {
-
-            @Override
-            public String apply(String value) {
-                if (value.isEmpty()) {
-                    return value;
-                }
-                Matcher matcher = CAMEL_CASE_PATTERN.matcher(value);
-                if (!matcher.find()) {
-                    return value;
-                }
-                matcher = matcher.reset();
-                StringBuffer result = new StringBuffer();
-                while (matcher.find()) {
-                    matcher.appendReplacement(result, matcher.group(1) + '-'
-                        + StringUtils.uncapitalize(matcher.group(2)));
-                }
-                matcher.appendTail(result);
-                return result.toString();
-            }
-
-        },
-
-        SEPARATED_TO_CAMELCASE {
-
-            @Override
-            public String apply(String value) {
-                return separatedToCamelCase(value, false);
-            }
-
-        },
-
-        CASE_INSENSITIVE_SEPARATED_TO_CAMELCASE {
-
-            @Override
-            public String apply(String value) {
-                return separatedToCamelCase(value, true);
-            }
-
-        };
-
-        private static final char[] SUFFIXES = new char[]{'_', '-', '.'};
-
-        public abstract String apply(String value);
-
-        private static String separatedToCamelCase(String value,
-                                                   boolean caseInsensitive) {
-            if (value.isEmpty()) {
-                return value;
-            }
-            StringBuilder builder = new StringBuilder();
-            for (String field : SEPARATED_TO_CAMEL_CASE_PATTERN.split(value)) {
-                field = caseInsensitive ? field.toLowerCase() : field;
-                builder.append(
-                    builder.length() == 0 ? field : StringUtils.capitalize(field));
-            }
-            char lastChar = value.charAt(value.length() - 1);
-            for (char suffix : SUFFIXES) {
-                if (lastChar == suffix) {
-                    builder.append(suffix);
-                    break;
-                }
-            }
-            return builder.toString();
-        }
-
-    }
-
-    /**
-     * Return a {@link RelaxedNames} for the given source camelCase source name.
-     * @param name the source name in camelCase
-     * @return the relaxed names
-     */
-    public static RelaxedNames forCamelCase(String name) {
-        StringBuilder result = new StringBuilder();
-        for (char c : name.toCharArray()) {
-            result.append(Character.isUpperCase(c) && result.length() > 0
-                && result.charAt(result.length() - 1) != '-'
-                ? "-" + Character.toLowerCase(c) : c);
-        }
-        return new RelaxedNames(result.toString());
-    }
-
-}
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/RelaxedPropertyResolver.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/RelaxedPropertyResolver.java
deleted file mode 100644
index bc26618..0000000
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/RelaxedPropertyResolver.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.spring.boot.util;
-
-import java.util.Map;
-
-import org.springframework.core.env.ConfigurableEnvironment;
-import org.springframework.core.env.Environment;
-import org.springframework.core.env.PropertyResolver;
-import org.springframework.core.env.PropertySourcesPropertyResolver;
-import org.springframework.util.Assert;
-
-/**
- * {@link PropertyResolver} that attempts to resolve values using {@link RelaxedNames}.
- *
- * @author Phillip Webb
- * @see RelaxedNames
- *
- * Source code copied from spring-boot 1.5.6.RELEASE
- */
-public class RelaxedPropertyResolver implements PropertyResolver {
-
-    private final PropertyResolver resolver;
-
-    private final String prefix;
-
-    public RelaxedPropertyResolver(PropertyResolver resolver) {
-        this(resolver, null);
-    }
-
-    public RelaxedPropertyResolver(PropertyResolver resolver, String prefix) {
-        Assert.notNull(resolver, "PropertyResolver must not be null");
-        this.resolver = resolver;
-        this.prefix = prefix == null ? "" : prefix;
-    }
-
-    @Override
-    public String getRequiredProperty(String key) throws IllegalStateException {
-        return getRequiredProperty(key, String.class);
-    }
-
-    @Override
-    public <T> T getRequiredProperty(String key, Class<T> targetType)
-        throws IllegalStateException {
-        T value = getProperty(key, targetType);
-        Assert.state(value != null, String.format("required key [%s] not found", key));
-        return value;
-    }
-
-    @Override
-    public String getProperty(String key) {
-        return getProperty(key, String.class, null);
-    }
-
-    @Override
-    public String getProperty(String key, String defaultValue) {
-        return getProperty(key, String.class, defaultValue);
-    }
-
-    @Override
-    public <T> T getProperty(String key, Class<T> targetType) {
-        return getProperty(key, targetType, null);
-    }
-
-    @Override
-    public <T> T getProperty(String key, Class<T> targetType, T defaultValue) {
-        RelaxedNames prefixes = new RelaxedNames(this.prefix);
-        RelaxedNames keys = new RelaxedNames(key);
-        for (String prefix : prefixes) {
-            for (String relaxedKey : keys) {
-                if (this.resolver.containsProperty(prefix + relaxedKey)) {
-                    return this.resolver.getProperty(prefix + relaxedKey, targetType);
-                }
-            }
-        }
-        return defaultValue;
-    }
-
-    // not implemented in spring boot 2 and not in use by us
-    public <T> Class<T> getPropertyAsClass(String key, Class<T> targetType) {
-        return null;
-    }
-
-    @Override
-    public boolean containsProperty(String key) {
-        RelaxedNames prefixes = new RelaxedNames(this.prefix);
-        RelaxedNames keys = new RelaxedNames(key);
-        for (String prefix : prefixes) {
-            for (String relaxedKey : keys) {
-                if (this.resolver.containsProperty(prefix + relaxedKey)) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public String resolvePlaceholders(String text) {
-        throw new UnsupportedOperationException(
-            "Unable to resolve placeholders with relaxed properties");
-    }
-
-    @Override
-    public String resolveRequiredPlaceholders(String text)
-        throws IllegalArgumentException {
-        throw new UnsupportedOperationException(
-            "Unable to resolve placeholders with relaxed properties");
-    }
-
-    /**
-     * Return a Map of all values from all underlying properties that start with the
-     * specified key. NOTE: this method can only be used if the underlying resolver is a
-     * {@link ConfigurableEnvironment}.
-     * @param keyPrefix the key prefix used to filter results
-     * @return a map of all sub properties starting with the specified key prefix.
-     * @see PropertySourceUtils#getSubProperties
-     */
-    public Map<String, Object> getSubProperties(String keyPrefix) {
-        Assert.isInstanceOf(ConfigurableEnvironment.class, this.resolver,
-            "SubProperties not available.");
-        ConfigurableEnvironment env = (ConfigurableEnvironment) this.resolver;
-        return PropertySourceUtils.getSubProperties(env.getPropertySources(), this.prefix,
-            keyPrefix);
-    }
-
-    /**
-     * Return a property resolver for the environment, preferring one that ignores
-     * unresolvable nested placeholders.
-     * @param environment the source environment
-     * @param prefix the prefix
-     * @return a property resolver for the environment
-     * @since 1.4.3
-     */
-    public static RelaxedPropertyResolver ignoringUnresolvableNestedPlaceholders(
-        Environment environment, String prefix) {
-        Assert.notNull(environment, "Environment must not be null");
-        PropertyResolver resolver = environment;
-        if (environment instanceof ConfigurableEnvironment) {
-            resolver = new PropertySourcesPropertyResolver(
-                ((ConfigurableEnvironment) environment).getPropertySources());
-            ((PropertySourcesPropertyResolver) resolver)
-                .setIgnoreUnresolvableNestedPlaceholders(true);
-        }
-        return new RelaxedPropertyResolver(resolver, prefix);
-    }
-
-}
diff --git a/platforms/spring-boot/components-starter/camel-hazelcast-starter/src/main/java/org/apache/camel/component/hazelcast/springboot/HazelcastComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-hazelcast-starter/src/main/java/org/apache/camel/component/hazelcast/springboot/HazelcastComponentAutoConfiguration.java
index d6de019..ed00daf 100644
--- a/platforms/spring-boot/components-starter/camel-hazelcast-starter/src/main/java/org/apache/camel/component/hazelcast/springboot/HazelcastComponentAutoConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-hazelcast-starter/src/main/java/org/apache/camel/component/hazelcast/springboot/HazelcastComponentAutoConfiguration.java
@@ -21,7 +21,6 @@ import java.util.Map;
 import javax.annotation.Generated;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.hazelcast.HazelcastComponent;
-import org.apache.camel.spring.boot.util.RelaxedPropertyResolver;
 import org.apache.camel.util.IntrospectionSupport;
 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.boot.autoconfigure.condition.ConditionMessage;
@@ -31,6 +30,8 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.boot.context.properties.bind.Bindable;
+import org.springframework.boot.context.properties.bind.Binder;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ConditionContext;
 import org.springframework.context.annotation.Conditional;
@@ -106,9 +107,8 @@ public class HazelcastComponentAutoConfiguration {
         private boolean isEnabled(
                 org.springframework.context.annotation.ConditionContext context,
                 java.lang.String prefix, boolean defaultValue) {
-            RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
-                    context.getEnvironment(), prefix);
-            return resolver.getProperty("enabled", Boolean.class, defaultValue);
+            String property = prefix.endsWith(".") ? prefix + "enabled" : prefix + ".enabled";
+            return Binder.get(context.getEnvironment()).bind(property, Bindable.of(Boolean.class)).orElse(defaultValue);
         }
     }
 }
\ No newline at end of file
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpringBootAutoConfigurationMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpringBootAutoConfigurationMojo.java
index 4ca37ef..ecb86ac 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpringBootAutoConfigurationMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpringBootAutoConfigurationMojo.java
@@ -2241,7 +2241,8 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo {
         parentClass.addImport(ConditionMessage.class);
         parentClass.addImport(ConditionContext.class);
         parentClass.addImport(ConditionOutcome.class);
-        parentClass.addImport("org.apache.camel.spring.boot.util.RelaxedPropertyResolver");
+        parentClass.addImport("org.springframework.boot.context.properties.bind.Bindable");
+        parentClass.addImport("org.springframework.boot.context.properties.bind.Binder");
         parentClass.addImport(AnnotatedTypeMetadata.class);
         parentClass.addImport(SpringBootCondition.class);
 
@@ -2263,8 +2264,8 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo {
         isEnabled.addParameter(boolean.class, "defaultValue");
         isEnabled.setReturnType(boolean.class);
         isEnabled.setBody(new StringBuilder()
-            .append("RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(context.getEnvironment(), prefix);\n")
-            .append("return resolver.getProperty(\"enabled\", Boolean.class, defaultValue);")
+            .append("String property = prefix.endsWith(\".\") ? prefix + \"enabled\" : prefix + \".enabled\";\n")
+            .append("return Binder.get(context.getEnvironment()).bind(property, Bindable.of(Boolean.class)).orElse(defaultValue);")
             .toString()
         );
 

-- 
To stop receiving notification emails like this one, please contact
davsclaus@apache.org.