You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by st...@apache.org on 2017/11/22 10:10:47 UTC
svn commit: r1816024 - in /geronimo/components/config/branches/ConfigJSR: ./
impl/src/main/java/org/apache/geronimo/config/ConfigImpl.java
impl/src/main/java/org/apache/geronimo/config/converters/ImplicitConverter.java
Author: struberg
Date: Wed Nov 22 10:10:47 2017
New Revision: 1816024
URL: http://svn.apache.org/viewvc?rev=1816024&view=rev
Log:
provide implicit converter logic
Added:
geronimo/components/config/branches/ConfigJSR/impl/src/main/java/org/apache/geronimo/config/converters/ImplicitConverter.java
- copied, changed from r1815628, geronimo/components/config/trunk/impl/src/main/java/org/apache/geronimo/config/converters/ImplicitConverter.java
Modified:
geronimo/components/config/branches/ConfigJSR/ (props changed)
geronimo/components/config/branches/ConfigJSR/impl/src/main/java/org/apache/geronimo/config/ConfigImpl.java
Propchange: geronimo/components/config/branches/ConfigJSR/
------------------------------------------------------------------------------
svn:mergeinfo = /geronimo/components/config/trunk:1815628
Modified: geronimo/components/config/branches/ConfigJSR/impl/src/main/java/org/apache/geronimo/config/ConfigImpl.java
URL: http://svn.apache.org/viewvc/geronimo/components/config/branches/ConfigJSR/impl/src/main/java/org/apache/geronimo/config/ConfigImpl.java?rev=1816024&r1=1816023&r2=1816024&view=diff
==============================================================================
--- geronimo/components/config/branches/ConfigJSR/impl/src/main/java/org/apache/geronimo/config/ConfigImpl.java (original)
+++ geronimo/components/config/branches/ConfigJSR/impl/src/main/java/org/apache/geronimo/config/ConfigImpl.java Wed Nov 22 10:10:47 2017
@@ -33,6 +33,7 @@ import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Optional;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
@@ -41,6 +42,7 @@ import org.apache.geronimo.config.conver
import org.apache.geronimo.config.converters.DoubleConverter;
import org.apache.geronimo.config.converters.DurationConverter;
import org.apache.geronimo.config.converters.FloatConverter;
+import org.apache.geronimo.config.converters.ImplicitConverter;
import org.apache.geronimo.config.converters.InstantConverter;
import org.apache.geronimo.config.converters.IntegerConverter;
import org.apache.geronimo.config.converters.LocalDateConverter;
@@ -70,6 +72,7 @@ public class ConfigImpl implements Confi
protected List<ConfigSource> configSources = new ArrayList<>();
protected Map<Type, Converter> converters = new HashMap<>();
+ protected Map<Type, Converter> implicitConverters = new ConcurrentHashMap<>();
public ConfigImpl() {
@@ -150,10 +153,30 @@ public class ConfigImpl implements Confi
private <T> Converter getConverter(Class<T> asType) {
Converter converter = converters.get(asType);
if (converter == null) {
+ converter = getImplicitConverter(asType);
+ }
+ if (converter == null) {
throw new IllegalArgumentException("No Converter registered for class " + asType);
}
return converter;
}
+
+ private <T> Converter getImplicitConverter(Class<T> asType) {
+ Converter converter = implicitConverters.get(asType);
+ if (converter == null) {
+ synchronized (implicitConverters) {
+ converter = implicitConverters.get(asType);
+ if (converter == null) {
+ // try to check whether the class is an 'implicit converter'
+ converter = ImplicitConverter.getImplicitConverter(asType);
+ if (converter != null) {
+ implicitConverters.putIfAbsent(asType, converter);
+ }
+ }
+ }
+ }
+ return converter;
+ }
public ConfigValueImpl<String> access(String key) {
return new ConfigValueImpl<>(this, key);
Copied: geronimo/components/config/branches/ConfigJSR/impl/src/main/java/org/apache/geronimo/config/converters/ImplicitConverter.java (from r1815628, geronimo/components/config/trunk/impl/src/main/java/org/apache/geronimo/config/converters/ImplicitConverter.java)
URL: http://svn.apache.org/viewvc/geronimo/components/config/branches/ConfigJSR/impl/src/main/java/org/apache/geronimo/config/converters/ImplicitConverter.java?p2=geronimo/components/config/branches/ConfigJSR/impl/src/main/java/org/apache/geronimo/config/converters/ImplicitConverter.java&p1=geronimo/components/config/trunk/impl/src/main/java/org/apache/geronimo/config/converters/ImplicitConverter.java&r1=1815628&r2=1816024&rev=1816024&view=diff
==============================================================================
--- geronimo/components/config/trunk/impl/src/main/java/org/apache/geronimo/config/converters/ImplicitConverter.java (original)
+++ geronimo/components/config/branches/ConfigJSR/impl/src/main/java/org/apache/geronimo/config/converters/ImplicitConverter.java Wed Nov 22 10:10:47 2017
@@ -21,7 +21,8 @@ import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
-import org.eclipse.microprofile.config.spi.Converter;
+import javax.config.spi.Converter;
+
/**
* A Converter factory + impl for 'common sense converters'