You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by pl...@apache.org on 2015/04/15 22:22:37 UTC
incubator-tamaya git commit: Removed the possibility to explicit
provide a PropertyConverter to get a configuration value.
Repository: incubator-tamaya
Updated Branches:
refs/heads/master d0deb9c06 -> a7d555c19
Removed the possibility to explicit provide a PropertyConverter to get a configuration value.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/commit/a7d555c1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/tree/a7d555c1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/diff/a7d555c1
Branch: refs/heads/master
Commit: a7d555c198119eff9879c27b32aa6afd7f975d32
Parents: d0deb9c
Author: Oliver B. Fischer <pl...@apache.org>
Authored: Wed Apr 15 22:21:35 2015 +0200
Committer: Oliver B. Fischer <pl...@apache.org>
Committed: Wed Apr 15 22:21:35 2015 +0200
----------------------------------------------------------------------
docs/API.adoc | 20 ++------
.../java/org/apache/tamaya/Configuration.java | 13 -----
.../org/apache/tamaya/TestConfiguration.java | 5 --
.../core/internal/DefaultConfiguration.java | 5 --
.../java/org/apache/tamaya/Configuration.java | 54 --------------------
.../org/apache/tamaya/ConfigurationTest.java | 37 ++++++--------
.../inject/internal/DefaultDynamicValue.java | 12 +++--
7 files changed, 28 insertions(+), 118 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a7d555c1/docs/API.adoc
----------------------------------------------------------------------
diff --git a/docs/API.adoc b/docs/API.adoc
index 286a198..acec6ed 100644
--- a/docs/API.adoc
+++ b/docs/API.adoc
@@ -196,7 +196,6 @@ public interface Configuration{
String get(String key);
<T> T get(String key, Class<T> type);
<T> T get(String key, TypeLiteral<T> type);
- <T> T get(String key, PropertyConverter<T> type);
Map<String,String> getProperties();
// extension points
@@ -207,10 +206,7 @@ public interface Configuration{
Hereby
-* +<T> T get(String, Class<T>)+ provides type safe accessors for all basic wrapper types of the JDK. Basically all this
- methods delegate to the +get(String, PropertyConverter)+ method, additionally passing the required +PropertyConverter+.
-* +get(String, PropertyConverter)+ allow accessing any type, hereby also passing a +PropertyConverter+ explicitly
- that converts the configured literal value to the type required.
+* +<T> T get(String, Class<T>)+ provides type safe accessors for all basic wrapper types of the JDK.
* +with, query+ provide the extension points for adding additional functionality.
* +getProperties()+ provides access to all key/values, whereas entries from non scannable property sources may not
be included.
@@ -264,7 +260,6 @@ public interface Configuration{
String get(String key);
<T> T get(String key, Class<T> type);
<T> T get(String key, TypeLiteral<T> type);
- <T> T get(String key, PropertyConverter<T> type);
Map<String,String> getProperties();
Configuration with(ConfigOperator operator);
<T> T query(ConfigQuery<T> query);
@@ -273,7 +268,6 @@ public interface Configuration{
default Optional<String> getOptional(String key){...}
default <T> Optional<T> getOptional(String key, Class<T> type){...}
default <T> Optional<T> getOptional(String key, TypeLiteral<T> type){...}
- default <T> Optional<T> getOptional(String key, PropertyConverter<T> converter){...}
default Boolean getBoolean(String key){...}
default OptionalInt getInteger(String key){...}
@@ -286,10 +280,9 @@ Hereby
* +get(String)+ and +getOptional(String)+ provide easy access to any kind of configuration properties in their
String format.
-* +get(String, TypeLiteral)+, +getOptional(String, TypeLiteral)+, +get(String, Class), getOptional(String, Class)+ and
- +getOptional(String, PropertyConverter)+ provide type safe access to configuration properties. If a
- +PropertyConverter+ is passed, it will replace any predefined standard
- converters defined for the type. By default several +PropertyConverter+ instances can be registered for a given
+* +get(String, TypeLiteral)+, +getOptional(String, TypeLiteral)+, +get(String, Class)+ and
+ +getOptional(String, Class)+ provide type safe access to configuration properties.
+ +PropertyConverter+ instances can be registered for a given
target type. The are managed in an ordered list, whereas the ordering is defined by +@Priority+ annotations
on the converters.
* +getProperties()+ gives access to all known (=scannable) properties.
@@ -326,11 +319,6 @@ public interface PropertyConverter<T>{
a configuration String value is passed to all registered converters for a type in order of their annotated +@Priority+
value. The first non-null result of a converter is then returned as the current configuration value.
-Also worth mentioning is the fact, that the +PropertyConverter+ to be used can also be explicitly defined, when
-a configuration value is accessed, by using the methods
-+<T> Optional<T> Configuration#getOptional(String, PropertyConverter<T> converter)+ (Java 8 only) and
-+<T> T Configuration#get(String, PropertyConverter<T> converter)+.
-
Access to converters is provided by the current +ConfigurationContext+, which is accessible from
the +ConfigurationProvider+ singleton.
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a7d555c1/java7/api/src/main/java/org/apache/tamaya/Configuration.java
----------------------------------------------------------------------
diff --git a/java7/api/src/main/java/org/apache/tamaya/Configuration.java b/java7/api/src/main/java/org/apache/tamaya/Configuration.java
index 3d06f6e..6d30d0b 100644
--- a/java7/api/src/main/java/org/apache/tamaya/Configuration.java
+++ b/java7/api/src/main/java/org/apache/tamaya/Configuration.java
@@ -75,19 +75,6 @@ public interface Configuration {
<T> T get(String key, TypeLiteral<T> type);
/**
- * Get the property keys as type T. This will implicitly require a corresponding {@link
- * PropertyConverter} to be available that is capable current providing type T
- * fromMap the given String keys.
- *
- * @param key the property's absolute, or relative path, e.g. @code
- * a/b/c/d.myProperty}.
- * @param converter The target converter to be used, not null.
- * @return the property value, never null..
- * @throws ConfigException if the keys could not be converted to the required target type.
- */
- <T> T get(String key, PropertyConverter<T> converter);
-
- /**
* Access all current known Configuration properties as a full {@code Map<String,String>}.
* Be aware that entries from non scannable parts of the registered {@link org.apache.tamaya.spi.PropertySource}
* instances may not be contained in the result, but nevertheless be accessible calling one of the
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a7d555c1/java7/api/src/test/java/org/apache/tamaya/TestConfiguration.java
----------------------------------------------------------------------
diff --git a/java7/api/src/test/java/org/apache/tamaya/TestConfiguration.java b/java7/api/src/test/java/org/apache/tamaya/TestConfiguration.java
index 0f19665..31de765 100644
--- a/java7/api/src/test/java/org/apache/tamaya/TestConfiguration.java
+++ b/java7/api/src/test/java/org/apache/tamaya/TestConfiguration.java
@@ -85,11 +85,6 @@ public class TestConfiguration implements Configuration{
}
@Override
- public <T> T get(String key, PropertyConverter<T> converter) {
- throw new RuntimeException("Method not implemented yet.");
- }
-
- @Override
public Configuration with(ConfigOperator operator) {
return null;
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a7d555c1/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java
----------------------------------------------------------------------
diff --git a/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java b/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java
index c30c049..754afb2 100644
--- a/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java
+++ b/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java
@@ -256,11 +256,6 @@ public class DefaultConfiguration implements Configuration {
return null;
}
- @Override
- public <T> T get(String key, PropertyConverter<T> converter) {
- return null;
- }
-
public Configuration with(ConfigOperator operator) {
return operator.operate(this);
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a7d555c1/java8/api/src/main/java/org/apache/tamaya/Configuration.java
----------------------------------------------------------------------
diff --git a/java8/api/src/main/java/org/apache/tamaya/Configuration.java b/java8/api/src/main/java/org/apache/tamaya/Configuration.java
index 468e9e1..6de3cb6 100644
--- a/java8/api/src/main/java/org/apache/tamaya/Configuration.java
+++ b/java8/api/src/main/java/org/apache/tamaya/Configuration.java
@@ -20,7 +20,6 @@ package org.apache.tamaya;
import java.util.List;
import java.util.Map;
-import java.util.Objects;
import java.util.Optional;
import java.util.OptionalDouble;
import java.util.OptionalInt;
@@ -152,32 +151,6 @@ public interface Configuration {
}
/**
- * Get the property keys as type {@code Class<T>}.
- * <p>
- * If {@code Class<T>} is not one current
- * {@code Boolean, Short, Integer, Long, Float, Double, BigInteger,
- * BigDecimal, String} , an according converter must be
- * available to perform the conversion fromMap {@link String} to
- * {@code Class<T>}.
- *
- * @param key the property's absolute, or relative path, e.g. @code
- * a/b/c/d.myProperty}.
- * @param converter the PropertyConverter to perform the conversion fromMap
- * {@link String} to {@code Class<T>}, not {@code null}.
- * @param <T> the target type.
- * @return the property's keys.
- * @throws ConfigException if the keys could not be converted to the required target
- * type, or no such property exists.
- */
- default <T> T get(String key, PropertyConverter<T> converter) {
- String value = get(key);
- if (value != null) {
- return Objects.requireNonNull(converter).convert(value);
- }
- return null;
- }
-
- /**
* Access all current known Configuration properties as a full {@code Map<String,String>}.
* Be aware that entries from non scannable parts of the registered {@link org.apache.tamaya.spi.PropertySource}
* instances may not be contained in the result, but nevertheless be accessible calling one of the
@@ -189,33 +162,6 @@ public interface Configuration {
@SuppressWarnings("JavaDoc")
Map<String, String> getProperties();
- /**
- * Get the property keys as type {@code Class<T>}.
- * <p>
- * If {@code Class<T>} is not one current
- * {@code Boolean, Short, Integer, Long, Float, Double, BigInteger,
- * BigDecimal, String} , an according converter must be
- * available to perform the conversion fromMap {@link String} to
- * {@code Class<T>}.
- *
- * @param key the property's absolute, or relative path, e.g. @code
- * a/b/c/d.myProperty}.
- * @param converter the PropertyConverter to perform the conversion fromMap
- * {@link String} to {@code Class<T>}, not {@code null}.
- * @param <T> the target type.
- * @return the property's keys.
- * @throws ConfigException if the keys could not be converted to the required target
- * type, or no such property exists.
- * @since Java8
- */
- default <T> Optional<T> getOptional(String key, PropertyConverter<T> converter) {
- Optional<String> value = getOptional(key);
- if (value.isPresent()) {
- return Optional.ofNullable(converter.convert(value.get()));
- }
- return Optional.empty();
- }
-
/**
* Get the property keys as {@link Boolean}.
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a7d555c1/java8/api/src/test/java/org/apache/tamaya/ConfigurationTest.java
----------------------------------------------------------------------
diff --git a/java8/api/src/test/java/org/apache/tamaya/ConfigurationTest.java b/java8/api/src/test/java/org/apache/tamaya/ConfigurationTest.java
index bb0508d..8490455 100644
--- a/java8/api/src/test/java/org/apache/tamaya/ConfigurationTest.java
+++ b/java8/api/src/test/java/org/apache/tamaya/ConfigurationTest.java
@@ -18,6 +18,8 @@
*/
package org.apache.tamaya;
+import org.junit.Test;
+
import static org.junit.Assert.*;
/**
@@ -26,18 +28,18 @@ import static org.junit.Assert.*;
*/
public class ConfigurationTest {
- @org.junit.Test
+ @Test
public void testget() throws Exception {
- assertEquals(Boolean.TRUE, ConfigurationProvider.getConfiguration().getOptional("booleanTrue", (s) -> Boolean.valueOf(s)).get());
- assertEquals(Boolean.FALSE, ConfigurationProvider.getConfiguration().getOptional("booleanFalse", (s) -> Boolean.valueOf(s)).get());
- assertEquals((int) Byte.MAX_VALUE, (int) ConfigurationProvider.getConfiguration().getOptional("byte", (s) -> Byte.valueOf(s)).get());
- assertEquals((int) Integer.MAX_VALUE, (int) ConfigurationProvider.getConfiguration().getOptional("int", (s) -> Integer.valueOf(s)).get());
- assertEquals((long) Long.MAX_VALUE, (long) ConfigurationProvider.getConfiguration().getOptional("long", (s) -> Long.valueOf(s)).get());
- assertEquals((double) Float.MAX_VALUE, (double) ConfigurationProvider.getConfiguration().getOptional("float", (s) -> Float.valueOf(s)).get(), 0.0d);
- assertEquals((double) Double.MAX_VALUE, (double) ConfigurationProvider.getConfiguration().getOptional("double", (s) -> Double.valueOf(s)).get(), 0.0d);
+ assertEquals(Boolean.TRUE, ConfigurationProvider.getConfiguration().getOptional("booleanTrue", Boolean.class).get());
+ assertEquals(Boolean.FALSE, ConfigurationProvider.getConfiguration().getOptional("booleanFalse", Boolean.class).get());
+ assertEquals((int) Byte.MAX_VALUE, (int) ConfigurationProvider.getConfiguration().getOptional("byte", Byte.class).get());
+ assertEquals((int) Integer.MAX_VALUE, (int) ConfigurationProvider.getConfiguration().getOptional("int", Integer.class).get());
+ assertEquals((long) Long.MAX_VALUE, (long) ConfigurationProvider.getConfiguration().getOptional("long", Long.class).get());
+ assertEquals((double) Float.MAX_VALUE, (double) ConfigurationProvider.getConfiguration().getOptional("float", Float.class).get(), 0.0d);
+ assertEquals((double) Double.MAX_VALUE, (double) ConfigurationProvider.getConfiguration().getOptional("double", Double.class).get(), 0.0d);
}
- @org.junit.Test
+ @Test
public void testGetBoolean() throws Exception {
assertTrue(ConfigurationProvider.getConfiguration().getBoolean("booleanTrue").isPresent());
assertTrue(ConfigurationProvider.getConfiguration().getBoolean("booleanFalse").isPresent());
@@ -46,35 +48,28 @@ public class ConfigurationTest {
assertFalse(ConfigurationProvider.getConfiguration().getBoolean("fooBar").isPresent());
}
- @org.junit.Test
+ @Test
public void testGetInteger() throws Exception {
assertEquals(Integer.MAX_VALUE, ConfigurationProvider.getConfiguration().getInteger("int").getAsInt());
}
- @org.junit.Test
+ @Test
public void testGetLong() throws Exception {
assertEquals(Long.MAX_VALUE, ConfigurationProvider.getConfiguration().getLong("long").getAsLong());
}
- @org.junit.Test
+ @Test
public void testGetDouble() throws Exception {
assertEquals(Double.MAX_VALUE, ConfigurationProvider.getConfiguration().getDouble("double").getAsDouble(), 0.0d);
}
- @org.junit.Test
+ @Test
public void testWith() throws Exception {
assertEquals(ConfigurationProvider.getConfiguration(), ConfigurationProvider.getConfiguration().with(c -> c));
}
- @org.junit.Test
+ @Test
public void testQuery() throws Exception {
assertEquals("myFooResult", ConfigurationProvider.getConfiguration().query(c -> "myFooResult"));
}
-
- @org.junit.Test
- public void testGetAdapted() throws Exception {
- assertEquals("yes", ConfigurationProvider.getConfiguration().getOptional("booleanTrue", (v) -> Boolean.parseBoolean(v) ? "yes" : "no").get());
- assertEquals("no", ConfigurationProvider.getConfiguration().getOptional("booleanFalse", (v) -> Boolean.parseBoolean(v) ? "yes" : "no").get());
- }
-
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a7d555c1/modules/injection/src/main/java/org/apache/tamaya/inject/internal/DefaultDynamicValue.java
----------------------------------------------------------------------
diff --git a/modules/injection/src/main/java/org/apache/tamaya/inject/internal/DefaultDynamicValue.java b/modules/injection/src/main/java/org/apache/tamaya/inject/internal/DefaultDynamicValue.java
index dd5684b..0af7aa8 100644
--- a/modules/injection/src/main/java/org/apache/tamaya/inject/internal/DefaultDynamicValue.java
+++ b/modules/injection/src/main/java/org/apache/tamaya/inject/internal/DefaultDynamicValue.java
@@ -314,18 +314,22 @@ public final class DefaultDynamicValue<T> implements DynamicValue<T>, Serializab
* @return the current actual value, or null.
*/
public T evaluateValue() {
+ T value = null;
+
for (String key : keys) {
- T value;
if (propertyConverter == null) {
value = configuration.get(key, targetType);
} else {
- value = configuration.get(key, propertyConverter);
+ String source = configuration.get(key);
+ value = propertyConverter.convert(source);
}
+
if (value != null) {
- return value;
+ break;
}
}
- return null;
+
+ return value;
}
/**