Repository: incubator-tamaya-extensions Updated Branches: refs/heads/configjsr 2abb7a772 -> 092869379
TAMAYA-336 Fixed config templates. Signed-off-by: Anatole Tresch <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/commit/09286937 Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/tree/09286937 Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/diff/09286937 Branch: refs/heads/configjsr Commit: 092869379985c12315519d4e99e4ed2b198d8349 Parents: 2abb7a7 Author: Anatole Tresch <[email protected]> Authored: Tue Jul 10 16:37:28 2018 +0200 Committer: Anatole Tresch <[email protected]> Committed: Tue Jul 10 16:37:28 2018 +0200 ---------------------------------------------------------------------- .../ConfigTemplateInvocationHandler.java | 10 +++++-- .../internal/DefaultConfigurationInjector.java | 2 +- .../tamaya/inject/TamayaInjectionTest.java | 31 ++++++++++++++++++++ 3 files changed, 40 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/09286937/modules/injection/standalone/src/main/java/org/apache/tamaya/inject/internal/ConfigTemplateInvocationHandler.java ---------------------------------------------------------------------- diff --git a/modules/injection/standalone/src/main/java/org/apache/tamaya/inject/internal/ConfigTemplateInvocationHandler.java b/modules/injection/standalone/src/main/java/org/apache/tamaya/inject/internal/ConfigTemplateInvocationHandler.java index bee17a0..49d877f 100644 --- a/modules/injection/standalone/src/main/java/org/apache/tamaya/inject/internal/ConfigTemplateInvocationHandler.java +++ b/modules/injection/standalone/src/main/java/org/apache/tamaya/inject/internal/ConfigTemplateInvocationHandler.java @@ -21,6 +21,7 @@ package org.apache.tamaya.inject.internal; import org.apache.tamaya.inject.api.DynamicValue; import org.apache.tamaya.inject.spi.ConfiguredType; +import javax.config.Config; import javax.config.ConfigProvider; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; @@ -35,23 +36,28 @@ public final class ConfigTemplateInvocationHandler implements InvocationHandler * The configured type. */ private final ConfiguredType type; + /** + * The target config, not null. + */ + private final Config config; /** * Creates a new handler instance. * * @param type the target type, not null. + * @param config the target config, not null. */ - public ConfigTemplateInvocationHandler(Class<?> type) { + public ConfigTemplateInvocationHandler(Class<?> type, Config config) { this.type = new ConfiguredTypeImpl(Objects.requireNonNull(type)); if (!type.isInterface()) { throw new IllegalArgumentException("Can only proxy interfaces as configuration templates."); } + this.config = Objects.requireNonNull(config); InjectionHelper.sendConfigurationEvent(this.type); } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { - javax.config.Config config = ConfigProvider.getConfig(); if ("toString".equals(method.getName())) { return "Configured Proxy -> " + this.type.getType().getName(); } else if ("hashCode".equals(method.getName())) { http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/09286937/modules/injection/standalone/src/main/java/org/apache/tamaya/inject/internal/DefaultConfigurationInjector.java ---------------------------------------------------------------------- diff --git a/modules/injection/standalone/src/main/java/org/apache/tamaya/inject/internal/DefaultConfigurationInjector.java b/modules/injection/standalone/src/main/java/org/apache/tamaya/inject/internal/DefaultConfigurationInjector.java index b3fa28a..8bcd5b9 100644 --- a/modules/injection/standalone/src/main/java/org/apache/tamaya/inject/internal/DefaultConfigurationInjector.java +++ b/modules/injection/standalone/src/main/java/org/apache/tamaya/inject/internal/DefaultConfigurationInjector.java @@ -174,7 +174,7 @@ public class DefaultConfigurationInjector implements ConfigurationInjector { cl = this.getClass().getClassLoader(); } return templateType.cast(Proxy.newProxyInstance(cl, new Class[]{Supplier.class, Objects.requireNonNull(templateType)}, - new ConfigTemplateInvocationHandler(templateType))); + new ConfigTemplateInvocationHandler(templateType, config))); } @Override http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/09286937/modules/injection/standalone/src/test/java/org/apache/tamaya/inject/TamayaInjectionTest.java ---------------------------------------------------------------------- diff --git a/modules/injection/standalone/src/test/java/org/apache/tamaya/inject/TamayaInjectionTest.java b/modules/injection/standalone/src/test/java/org/apache/tamaya/inject/TamayaInjectionTest.java index b95d491..cd75186 100644 --- a/modules/injection/standalone/src/test/java/org/apache/tamaya/inject/TamayaInjectionTest.java +++ b/modules/injection/standalone/src/test/java/org/apache/tamaya/inject/TamayaInjectionTest.java @@ -22,8 +22,16 @@ import annottext.AnnotatedConfigBean; import annottext.AnnotatedConfigTemplate; import annottext.InheritedAnnotatedConfigBean; import annottext.NonAnnotatedConfigBean; +import org.apache.tamaya.base.configsource.MapConfigSource; +import org.apache.tamaya.resolver.internal.ConfigResolver; import org.junit.Test; +import javax.config.Config; +import javax.config.ConfigProvider; +import javax.config.spi.ConfigProviderResolver; +import java.util.HashMap; +import java.util.Map; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; @@ -108,4 +116,27 @@ public class TamayaInjectionTest { // assertEquals(testInstance.simplestValue(), "HALLO!"); } + @Test + public void testConfigTemplate_WithCustomConfig(){ + Map<String,String> properties = new HashMap<>(); + properties.put("env.stage", "custom-stage"); + properties.put("simple_value", "custom-value"); + properties.put("host.name", "custom-hostname"); + properties.put("anotherValue", "custom-HALLO!"); + properties.put("foo.bar.myprop", "custom-parameter"); + MapConfigSource ps = new MapConfigSource("test", properties); + Config customConfig = ConfigProviderResolver.instance().getBuilder() + .withSources(ps).build(); + assertNotNull(ConfigurationInjection.getConfigurationInjector()); + AnnotatedConfigTemplate testInstance = ConfigurationInjection.getConfigurationInjector() + .createTemplate(AnnotatedConfigTemplate.class, customConfig); + assertEquals(testInstance.hostName(), "custom-hostname"); + assertEquals(testInstance.myParameter(), "custom-parameter"); + assertEquals(testInstance.simpleValue(), "custom-value"); + assertNotNull(testInstance.getDynamicValue()); + assertTrue(testInstance.getDynamicValue().isPresent()); + assertEquals(testInstance.getDynamicValue().get(), "custom-hostname"); + assertEquals(testInstance.hostName(), testInstance.getDynamicValue().get()); + } + }
