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;
}