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 2019/05/14 14:58:07 UTC
[incubator-tamaya-sandbox] 03/07: Adapted to latest API changes.
This is an automated email from the ASF dual-hosted git repository.
anatole pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-tamaya-sandbox.git
commit 5c0cd943626f772ad8a1ba22c96fa38d62b59f6a
Author: Anatole Tresch <at...@gmail.com>
AuthorDate: Sun Mar 3 23:07:32 2019 +0100
Adapted to latest API changes.
---
configjsr/pom.xml | 2 +-
.../apache/tamaya/jsr382/JavaConfigAdapter.java | 5 +-
.../apache/tamaya/jsr382/TamayaConfigAccessor.java | 193 ++++++++++++++-------
.../tamaya/jsr382/JavaConfigAdapterTest.java | 2 +-
.../org/apache/tamaya/jsr382/SmokeExamples.java | 19 +-
5 files changed, 143 insertions(+), 78 deletions(-)
diff --git a/configjsr/pom.xml b/configjsr/pom.xml
index 83b55b3..541e8f7 100644
--- a/configjsr/pom.xml
+++ b/configjsr/pom.xml
@@ -87,7 +87,7 @@ under the License.
<dependency>
<groupId>com.github.eclipse</groupId>
<artifactId>ConfigJSR</artifactId>
- <version>bdab2f22923ba83e93a841f61e177c95796cfb68</version>
+ <version>f739e6d322dbf4eab62d5ffb121c5b0a9e63c2d4</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
diff --git a/configjsr/src/main/java/org/apache/tamaya/jsr382/JavaConfigAdapter.java b/configjsr/src/main/java/org/apache/tamaya/jsr382/JavaConfigAdapter.java
index cf337a9..411fca0 100644
--- a/configjsr/src/main/java/org/apache/tamaya/jsr382/JavaConfigAdapter.java
+++ b/configjsr/src/main/java/org/apache/tamaya/jsr382/JavaConfigAdapter.java
@@ -20,6 +20,7 @@ package org.apache.tamaya.jsr382;
import org.apache.tamaya.ConfigException;
import org.apache.tamaya.Configuration;
+import org.apache.tamaya.TypeLiteral;
import javax.config.Config;
import javax.config.ConfigAccessor;
@@ -79,8 +80,8 @@ public class JavaConfigAdapter implements Config, Serializable {
}
@Override
- public ConfigAccessor<String> access(String name) {
- return new TamayaConfigAccessor(this, name);
+ public <T> ConfigAccessor.Builder<T> access(String name, Class<T> type) {
+ return new TamayaConfigAccessor.TamayaConfigAccessorBuilder<>(this, name, TypeLiteral.of(type));
}
@Override
diff --git a/configjsr/src/main/java/org/apache/tamaya/jsr382/TamayaConfigAccessor.java b/configjsr/src/main/java/org/apache/tamaya/jsr382/TamayaConfigAccessor.java
index d80e7ae..616c04e 100644
--- a/configjsr/src/main/java/org/apache/tamaya/jsr382/TamayaConfigAccessor.java
+++ b/configjsr/src/main/java/org/apache/tamaya/jsr382/TamayaConfigAccessor.java
@@ -23,6 +23,7 @@ import org.apache.tamaya.TypeLiteral;
import javax.config.ConfigAccessor;
import javax.config.ConfigSnapshot;
import javax.config.spi.Converter;
+import java.time.Duration;
import java.util.*;
import java.util.concurrent.TimeUnit;
@@ -46,28 +47,20 @@ class TamayaConfigAccessor<T> implements ConfigAccessor<T> {
private long timeout = 0;
private T cachedValue;
-
/**
* Constructor.
*
- * @param javaConfigAdapter
- * @param name
+ * @param builder the builder, not null.
*/
- TamayaConfigAccessor(JavaConfigAdapter javaConfigAdapter, String name) {
- this.javaConfigAdapter = Objects.requireNonNull(javaConfigAdapter);
- this.name = Objects.requireNonNull(name);
- this.targetType = TypeLiteral.of(String.class);
- }
-
- private TamayaConfigAccessor(TamayaConfigAccessor<?> accessor, TypeLiteral<T> target) {
- this.name = accessor.name;
- this.targetType = target;
- this.stringDefaultValue = accessor.stringDefaultValue;
- this.javaConfigAdapter = javaConfigAdapter;
- this.evaluateVariables = accessor.evaluateVariables;
- this.lookupSuffixes.addAll(accessor.lookupSuffixes);
+ TamayaConfigAccessor(TamayaConfigAccessorBuilder<T> builder) {
+ this.name = builder.name;
+ this.targetType = builder.targetType;
+ this.stringDefaultValue = builder.stringDefaultValue;
+ this.javaConfigAdapter = builder.configAdapter;
+ this.evaluateVariables = builder.evaluateVariables;
+ this.lookupSuffixes.addAll(builder.lookupSuffixes);
// What to do if the fallback accessors do not match, e.g. with collection types...
- this.fallbackAccessors.addAll(accessor.fallbackAccessors);
+ this.fallbackAccessors.addAll(builder.fallbackAccessors);
}
/**
@@ -103,66 +96,134 @@ class TamayaConfigAccessor<T> implements ConfigAccessor<T> {
return result;
}
- @Override
- public <N> ConfigAccessor<N> as(Class<N> aClass) {
- return new TamayaConfigAccessor<N>(this, TypeLiteral.of(aClass));
- }
+ static final class TamayaConfigAccessorBuilder<T> implements ConfigAccessor.Builder<T>{
- @Override
- public ConfigAccessor<List<T>> asList() {
- TypeLiteral<List<T>> target = new TypeLiteral<List<T>>();
- return new TamayaConfigAccessor<List<T>>(this, target);
- }
+ private String name;
+ private JavaConfigAdapter configAdapter;
+ private Converter<T> customConverter;
+ private TypeLiteral<T> targetType;
+ private T typedDefaultValue;
+ private String stringDefaultValue;
+ private List<ConfigAccessor<String>> fallbackAccessors = new ArrayList<>();
+ private List<String> lookupSuffixes = new ArrayList<>();
+ private boolean evaluateVariables = true;
+ private long timeout = 0;
+ private T cachedValue;
+ private Duration cacheDuration;
- @Override
- public ConfigAccessor<Set<T>> asSet() {
- TypeLiteral<Set<T>> target = new TypeLiteral<Set<T>>();
- return new TamayaConfigAccessor<Set<T>>(this, target);
- }
+ /**
+ * Constructor.
+ *
+ * @param configAdapter the config, not null.
+ */
+ TamayaConfigAccessorBuilder(JavaConfigAdapter configAdapter, String name, TypeLiteral<T> type) {
+ this.configAdapter = configAdapter;
+ this.name = name;
+ this.targetType = targetType;
+ }
- @Override
- public ConfigAccessor<T> useConverter(Converter<T> converter) {
- this.customConverter = converter;
- return this;
- }
+ @Override
+ public Builder<T> useConverter(Converter<T> converter) {
+ this.customConverter = Objects.requireNonNull(converter);
+ return this;
+ }
- @Override
- public ConfigAccessor<T> withDefault(T defaultValue) {
- this.typedDefaultValue = defaultValue;
- return this;
- }
+ @Override
+ public Builder<T> withDefault(T value) {
+ this.typedDefaultValue = Objects.requireNonNull(value);
+ return this;
+ }
- @Override
- public ConfigAccessor<T> withStringDefault(String defaultValue) {
- this.stringDefaultValue = defaultValue;
- return this;
- }
+ @Override
+ public Builder<T> withStringDefault(String value) {
+ this.stringDefaultValue = value;
+ return this;
+ }
- @Override
- public ConfigAccessor<T> cacheFor(long duration, TimeUnit timeUnit) {
- this.cachedValue = getValue();
- this.timeout = System.currentTimeMillis() + TimeUnit.MILLISECONDS.convert(duration, timeUnit);
- return this;
- }
+ @Override
+ public Builder<T> cacheFor(Duration duration) {
+ this.cacheDuration = Objects.requireNonNull(duration);
+ return this;
+ }
- @Override
- public ConfigAccessor<T> evaluateVariables(boolean evaluateVariables) {
- this.evaluateVariables = evaluateVariables;
- return this;
- }
+ @Override
+ public Builder<T> evaluateVariables(boolean evaluateVariables) {
+ this.evaluateVariables = evaluateVariables;
+ return this;
+ }
- @Override
- public ConfigAccessor<T> addLookupSuffix(String lookupSuffix) {
- this.lookupSuffixes.add(lookupSuffix);
- return this;
- }
+ @Override
+ public Builder<T> addLookupSuffix(String suffixValue) {
+ this.lookupSuffixes.add(Objects.requireNonNull(suffixValue));
+ return this;
+ }
- @Override
- public ConfigAccessor<T> addLookupSuffix(ConfigAccessor<String> configAccessor) {
- this.fallbackAccessors.add(configAccessor);
- return this;
+ @Override
+ public ConfigAccessor<T> build() {
+ return new TamayaConfigAccessor<T>(this);
+ }
}
+// @Override
+// public <N> ConfigAccessor<N> as(Class<N> aClass) {
+// return new TamayaConfigAccessor<N>(this, TypeLiteral.of(aClass));
+// }
+//
+// @Override
+// public ConfigAccessor<List<T>> asList() {
+// TypeLiteral<List<T>> target = new TypeLiteral<List<T>>();
+// return new TamayaConfigAccessor<List<T>>(this, target);
+// }
+//
+// @Override
+// public ConfigAccessor<Set<T>> asSet() {
+// TypeLiteral<Set<T>> target = new TypeLiteral<Set<T>>();
+// return new TamayaConfigAccessor<Set<T>>(this, target);
+// }
+//
+// @Override
+// public ConfigAccessor<T> useConverter(Converter<T> converter) {
+// this.customConverter = converter;
+// return this;
+// }
+//
+// @Override
+// public ConfigAccessor<T> withDefault(T defaultValue) {
+// this.typedDefaultValue = defaultValue;
+// return this;
+// }
+//
+// @Override
+// public ConfigAccessor<T> withStringDefault(String defaultValue) {
+// this.stringDefaultValue = defaultValue;
+// return this;
+// }
+//
+// @Override
+// public ConfigAccessor<T> cacheFor(long duration, TimeUnit timeUnit) {
+// this.cachedValue = getValue();
+// this.timeout = System.currentTimeMillis() + TimeUnit.MILLISECONDS.convert(duration, timeUnit);
+// return this;
+// }
+//
+// @Override
+// public ConfigAccessor<T> evaluateVariables(boolean evaluateVariables) {
+// this.evaluateVariables = evaluateVariables;
+// return this;
+// }
+//
+// @Override
+// public ConfigAccessor<T> addLookupSuffix(String lookupSuffix) {
+// this.lookupSuffixes.add(lookupSuffix);
+// return this;
+// }
+//
+// @Override
+// public ConfigAccessor<T> addLookupSuffix(ConfigAccessor<String> configAccessor) {
+// this.fallbackAccessors.add(configAccessor);
+// return this;
+// }
+
@Override
public T getValue() {
if (this.timeout > System.currentTimeMillis()) {
diff --git a/configjsr/src/test/java/org/apache/tamaya/jsr382/JavaConfigAdapterTest.java b/configjsr/src/test/java/org/apache/tamaya/jsr382/JavaConfigAdapterTest.java
index 062bafa..15551cb 100644
--- a/configjsr/src/test/java/org/apache/tamaya/jsr382/JavaConfigAdapterTest.java
+++ b/configjsr/src/test/java/org/apache/tamaya/jsr382/JavaConfigAdapterTest.java
@@ -192,7 +192,7 @@ public class JavaConfigAdapterTest {
}
@Override
- public ConfigAccessor<String> access(String propertyName) {
+ public <T> ConfigAccessor.Builder<T> access(String propertyName, Class<T> type) {
throw new RuntimeException("Not implemented yet!");
}
diff --git a/configjsr/src/test/java/org/apache/tamaya/jsr382/SmokeExamples.java b/configjsr/src/test/java/org/apache/tamaya/jsr382/SmokeExamples.java
index 86a0539..2c81f5a 100644
--- a/configjsr/src/test/java/org/apache/tamaya/jsr382/SmokeExamples.java
+++ b/configjsr/src/test/java/org/apache/tamaya/jsr382/SmokeExamples.java
@@ -116,10 +116,10 @@ public class SmokeExamples {
Config config = ConfigProvider.getConfig();
- ConfigAccessor<String> accessor = config.access("foo.bar.property");
+ ConfigAccessor.Builder<String> accessor = config.access("foo.bar.property", String.class);
accessor = accessor.addLookupSuffix("DEV").addLookupSuffix("server01");
accessor = accessor.withDefault("anyDefault");
- String textValue = accessor.getValue();
+ String textValue = accessor.build().getValue();
}
public void apacheTamaya_multiKeyLookup(){
@@ -139,11 +139,13 @@ public class SmokeExamples {
Config config = ConfigProvider.getConfig();
- ConfigAccessor<String> accessor = config.access("foo.bar.property");
- accessor = accessor.addLookupSuffix("DEV");
- accessor = accessor.withDefault("anyDefault");
- ConfigAccessor<Integer> accessor2 = config.access("foo.bar.property2").as(Integer.class);
- accessor = accessor.withDefault("1234");
+ ConfigAccessor.Builder<String> builder = config.access("foo.bar.property", String.class);
+ builder = builder.addLookupSuffix("DEV");
+ builder = builder.withDefault("anyDefault");
+ ConfigAccessor.Builder<Integer> builder2 = config.access("foo.bar.property2", Integer.class);
+ builder2 = builder2.withStringDefault("1234");
+ ConfigAccessor<String> accessor = builder.build();
+ ConfigAccessor<Integer> accessor2 = builder2.build();
ConfigSnapshot snapshot = config.snapshotFor(accessor, accessor2);
String property1 = accessor.getValue(snapshot);
@@ -212,7 +214,8 @@ public class SmokeExamples {
String myKey = "Test ${java.version},${java.foo},${PATH}";
Config config = ConfigProvider.getConfig();
- String resolvedValue = config.access("myKey").evaluateVariables(true).getValue();
+ String resolvedValue = config.access("myKey", String.class).evaluateVariables(true).
+ build().getValue();
}
public void resolution_tamaya(){