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 e2564f391d9bf40f028e176871827eccc2567925 Author: lburgazzoli <lburgazz...@gmail.com> AuthorDate: Mon Aug 12 07:15:58 2019 +0200 CAMEL-13857: camel-microprofile-config: should implement LoadablePropertiesSource --- components/camel-microprofile-config/pom.xml | 5 ++++ .../config/CamelMicroProfilePropertiesSource.java | 31 +++++++++++++++++----- .../CamelMicroProfilePropertiesSourceTest.java | 12 +++++++++ 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/components/camel-microprofile-config/pom.xml b/components/camel-microprofile-config/pom.xml index f939abc..50eaa70 100644 --- a/components/camel-microprofile-config/pom.xml +++ b/components/camel-microprofile-config/pom.xml @@ -73,6 +73,11 @@ <scope>test</scope> </dependency> <dependency> + <groupId>org.assertj</groupId> + <artifactId>assertj-core</artifactId> + <scope>test</scope> + </dependency> + <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <scope>test</scope> diff --git a/components/camel-microprofile-config/src/main/java/org/apache/camel/component/microprofile/config/CamelMicroProfilePropertiesSource.java b/components/camel-microprofile-config/src/main/java/org/apache/camel/component/microprofile/config/CamelMicroProfilePropertiesSource.java index 9c6b21c..a4e0524 100644 --- a/components/camel-microprofile-config/src/main/java/org/apache/camel/component/microprofile/config/CamelMicroProfilePropertiesSource.java +++ b/components/camel-microprofile-config/src/main/java/org/apache/camel/component/microprofile/config/CamelMicroProfilePropertiesSource.java @@ -16,9 +16,9 @@ */ package org.apache.camel.component.microprofile.config; -import java.util.Optional; +import java.util.Properties; -import org.apache.camel.spi.PropertiesSource; +import org.apache.camel.spi.LoadablePropertiesSource; import org.apache.camel.support.service.ServiceSupport; import org.eclipse.microprofile.config.Config; import org.eclipse.microprofile.config.ConfigProvider; @@ -27,7 +27,7 @@ import org.eclipse.microprofile.config.ConfigProvider; * The microprofile-config component is used for bridging the Eclipse MicroProfile Config with Camels * properties component. This allows to use configuration management from Eclipse MicroProfile with Camel. */ -public class CamelMicroProfilePropertiesSource extends ServiceSupport implements PropertiesSource { +public class CamelMicroProfilePropertiesSource extends ServiceSupport implements LoadablePropertiesSource { private Config config; @@ -41,16 +41,35 @@ public class CamelMicroProfilePropertiesSource extends ServiceSupport implements if (config == null) { config = ConfigProvider.getConfig(); } - Optional<String> value = config.getOptionalValue(name, String.class); - return value.orElse(null); + return config.getOptionalValue(name, String.class).orElse(null); } @Override - protected void doStart() throws Exception { + public Properties loadProperties() { + if (config == null) { + config = ConfigProvider.getConfig(); + } + + Properties answer = new Properties(); + + for (String key: config.getPropertyNames()) { + answer.put(key, config.getValue(key, String.class)); + } + + return answer; + } + + @Override + protected void doInit() throws Exception { config = ConfigProvider.getConfig(); } @Override + protected void doStart() throws Exception { + // noop + } + + @Override protected void doStop() throws Exception { // noop } diff --git a/components/camel-microprofile-config/src/test/java/org/apache/camel/component/microprofile/config/CamelMicroProfilePropertiesSourceTest.java b/components/camel-microprofile-config/src/test/java/org/apache/camel/component/microprofile/config/CamelMicroProfilePropertiesSourceTest.java index 16370bc..3ac6ff2 100644 --- a/components/camel-microprofile-config/src/test/java/org/apache/camel/component/microprofile/config/CamelMicroProfilePropertiesSourceTest.java +++ b/components/camel-microprofile-config/src/test/java/org/apache/camel/component/microprofile/config/CamelMicroProfilePropertiesSourceTest.java @@ -23,9 +23,11 @@ import io.smallrye.config.SmallRyeConfigBuilder; import org.apache.camel.CamelContext; import org.apache.camel.RoutesBuilder; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.spi.PropertiesComponent; import org.apache.camel.spi.PropertiesSource; import org.apache.camel.spi.Registry; import org.apache.camel.test.junit4.CamelTestSupport; +import org.assertj.core.api.Assertions; import org.eclipse.microprofile.config.Config; import org.eclipse.microprofile.config.spi.ConfigProviderResolver; import org.junit.Test; @@ -68,6 +70,16 @@ public class CamelMicroProfilePropertiesSourceTest extends CamelTestSupport { } @Test + public void testLoadAll() throws Exception { + PropertiesComponent pc = context.getComponent("properties", PropertiesComponent.class); + Properties properties = pc.loadProperties(); + + Assertions.assertThat(properties.get("start")).isEqualTo("direct:start"); + Assertions.assertThat(properties.get("hi")).isEqualTo("World"); + Assertions.assertThat(properties.get("my-mock")).isEqualTo("result"); + } + + @Test public void testMicroProfileConfig() throws Exception { getMockEndpoint("mock:result").expectedBodiesReceived("Hello World from Camel");