You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by st...@apache.org on 2018/04/05 12:16:07 UTC

[4/5] deltaspike git commit: DELTASPIKE-1335 improve docs and tst handling

DELTASPIKE-1335 improve docs and tst handling

hacked together with Alexander Falb (elexx)


Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/a6296773
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/a6296773
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/a6296773

Branch: refs/heads/master
Commit: a6296773d14db2339289179cf80ddb0339519229
Parents: 4ee2fc9
Author: Mark Struberg <st...@apache.org>
Authored: Wed Apr 4 17:55:57 2018 +0200
Committer: Mark Struberg <st...@apache.org>
Committed: Wed Apr 4 17:55:57 2018 +0200

----------------------------------------------------------------------
 .../deltaspike/core/api/config/ConfigTransaction.java     |  8 +++++++-
 .../apache/deltaspike/core/impl/config/ConfigImpl.java    | 10 ++++++----
 .../core/impl/config/ConfigTransactionImpl.java           |  4 +---
 3 files changed, 14 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltaspike/blob/a6296773/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/ConfigTransaction.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/ConfigTransaction.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/ConfigTransaction.java
index 22afbac..3bb5674 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/ConfigTransaction.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/ConfigTransaction.java
@@ -19,9 +19,15 @@
 package org.apache.deltaspike.core.api.config;
 
 /**
- * A value holder for
+ * A value holder for TypedResolver values which all got resolved in a guaranteed atomic way.
+ *
+ * @see Config#startTransaction(ConfigResolver.TypedResolver[])
  */
 public interface ConfigTransaction
 {
+    /**
+     * Access the value as it was at the time when {@link Config#startTransaction(ConfigResolver.TypedResolver[])}
+     * got called.
+     */
     <T> T getValue(ConfigResolver.TypedResolver<T> typedResolver);
 }

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/a6296773/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigImpl.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigImpl.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigImpl.java
index b6502bf..9784c23 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigImpl.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigImpl.java
@@ -138,15 +138,15 @@ public class ConfigImpl implements Config
         for (int tries = 1; tries < 5; tries++)
         {
             Map<ConfigResolver.TypedResolver<?>, Object> configValues = new HashMap<>();
-            long startReadCfgTst = lastChanged;
+            long startReadLastChanged = lastChanged;
             for (ConfigResolver.TypedResolver<?> typedResolver : typedResolvers)
             {
                 configValues.put(typedResolver, typedResolver.getValue());
             }
 
-            if (startReadCfgTst == lastChanged)
+            if (startReadLastChanged == lastChanged)
             {
-                return new ConfigTransactionImpl(this, configValues);
+                return new ConfigTransactionImpl(configValues);
             }
         }
 
@@ -229,7 +229,9 @@ public class ConfigImpl implements Config
 
     public void onAttributeChange(Set<String> attributesChanged)
     {
-        lastChanged = System.nanoTime();
+        // this is to force an incremented lastChanged even on time glitches and fast updates
+        long newLastChanged = System.nanoTime();
+        lastChanged = lastChanged >= newLastChanged ? lastChanged++ : newLastChanged;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/a6296773/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigTransactionImpl.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigTransactionImpl.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigTransactionImpl.java
index 6a51343..2671cd1 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigTransactionImpl.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigTransactionImpl.java
@@ -25,12 +25,10 @@ import java.util.Map;
 
 public class ConfigTransactionImpl implements ConfigTransaction
 {
-    private final ConfigImpl config;
     private final Map<ConfigResolver.TypedResolver<?>, Object> configValues;
 
-    public ConfigTransactionImpl(ConfigImpl config, Map<ConfigResolver.TypedResolver<?>, Object> configValues)
+    public ConfigTransactionImpl(Map<ConfigResolver.TypedResolver<?>, Object> configValues)
     {
-        this.config = config;
         this.configValues = configValues;
     }