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 2018/02/25 08:57:50 UTC
svn commit: r1825295 - in /geronimo/components/config/trunk:
impl/debug-suite.xml
impl/src/main/java/org/apache/geronimo/config/ConfigImpl.java pom.xml
Author: struberg
Date: Sun Feb 25 08:57:50 2018
New Revision: 1825295
URL: http://svn.apache.org/viewvc?rev=1825295&view=rev
Log:
start with implementing the next revision (1.3) of mp-config
this is work in progress to play with the APIs
Modified:
geronimo/components/config/trunk/impl/debug-suite.xml
geronimo/components/config/trunk/impl/src/main/java/org/apache/geronimo/config/ConfigImpl.java
geronimo/components/config/trunk/pom.xml
Modified: geronimo/components/config/trunk/impl/debug-suite.xml
URL: http://svn.apache.org/viewvc/geronimo/components/config/trunk/impl/debug-suite.xml?rev=1825295&r1=1825294&r2=1825295&view=diff
==============================================================================
--- geronimo/components/config/trunk/impl/debug-suite.xml (original)
+++ geronimo/components/config/trunk/impl/debug-suite.xml Sun Feb 25 08:57:50 2018
@@ -24,7 +24,7 @@
<classes>
<!-- Issues in the spec -->
<!-- CDI-437 -->
- <class name="org.eclipse.microprofile.config.tck.AutoDiscoveredConfigSourceTest">
+ <class name="org.eclipse.microprofile.config.tck.DynamicConfigSourceTest">
<methods>
<include name=".*"/>
</methods>
Modified: geronimo/components/config/trunk/impl/src/main/java/org/apache/geronimo/config/ConfigImpl.java
URL: http://svn.apache.org/viewvc/geronimo/components/config/trunk/impl/src/main/java/org/apache/geronimo/config/ConfigImpl.java?rev=1825295&r1=1825294&r2=1825295&view=diff
==============================================================================
--- geronimo/components/config/trunk/impl/src/main/java/org/apache/geronimo/config/ConfigImpl.java (original)
+++ geronimo/components/config/trunk/impl/src/main/java/org/apache/geronimo/config/ConfigImpl.java Sun Feb 25 08:57:50 2018
@@ -23,15 +23,22 @@ import org.eclipse.microprofile.config.s
import javax.enterprise.inject.Typed;
import javax.enterprise.inject.Vetoed;
+
+import java.lang.ref.WeakReference;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Optional;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+import java.util.function.Consumer;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern;
@@ -53,6 +60,9 @@ public class ConfigImpl implements Confi
private static final String ARRAY_SEPARATOR_REGEX = "(?<!\\\\)" + Pattern.quote(",");
private final ImplicitArrayConverter implicitArrayConverter = new ImplicitArrayConverter(this);
+ private List<WeakReference<Consumer<Set<String>>>> configChangedListeners = new ArrayList<>();
+ private ReadWriteLock configListenerLock = new ReentrantReadWriteLock();
+
@Override
public <T> Optional<T> getOptionalValue(String propertyName, Class<T> asType) {
String value = getValue(propertyName);
@@ -168,4 +178,29 @@ public class ConfigImpl implements Confi
public void addConverter(Type type, MicroProfileTypedConverter<?> converter) {
converters.put(type, converter);
}
+
+ @Override
+ public void registerConfigChangedListener(Consumer<Set<String>> configChangedListener) {
+ configListenerLock.writeLock().lock();
+ try {
+ Iterator<WeakReference<Consumer<Set<String>>>> it = configChangedListeners.iterator();
+ while (it.hasNext()) {
+ WeakReference<Consumer<Set<String>>> changeListenerRef = it.next();
+ Consumer<Set<String>> changeListener = changeListenerRef.get();
+ if (changeListener == null) {
+ it.remove();
+ }
+ else {
+ if (changeListener == configChangedListener) {
+ // changeListener already got registered
+ return;
+ }
+ }
+ }
+ configChangedListeners.add(new WeakReference<>(configChangedListener));
+ }
+ finally {
+ configListenerLock.writeLock().unlock();;
+ }
+ }
}
\ No newline at end of file
Modified: geronimo/components/config/trunk/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/components/config/trunk/pom.xml?rev=1825295&r1=1825294&r2=1825295&view=diff
==============================================================================
--- geronimo/components/config/trunk/pom.xml (original)
+++ geronimo/components/config/trunk/pom.xml Sun Feb 25 08:57:50 2018
@@ -50,13 +50,13 @@
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
- <microprofile-config.version>1.2.1</microprofile-config.version>
+ <microprofile-config.version>1.3-SNAPSHOT</microprofile-config.version>
<arquillian.version>1.1.14.Final</arquillian.version>
<arquillian-weld-embedded.version>2.0.0.Final</arquillian-weld-embedded.version>
<!-- OWB -->
<owb.version>1.7.4</owb.version>
- <owb2.version>2.0.2</owb2.version>
+ <owb2.version>2.0.4</owb2.version>
<!-- Weld -->
<cdi2-api.version>2.0</cdi2-api.version>