You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by an...@apache.org on 2018/07/10 14:37:35 UTC

incubator-tamaya-extensions git commit: TAMAYA-336 Fixed config templates.

Repository: incubator-tamaya-extensions
Updated Branches:
  refs/heads/configjsr 2abb7a772 -> 092869379


TAMAYA-336 Fixed config templates.

Signed-off-by: Anatole Tresch <an...@apache.org>


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 <an...@apache.org>
Authored: Tue Jul 10 16:37:28 2018 +0200
Committer: Anatole Tresch <an...@apache.org>
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());
+    }
+
 }