You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by an...@apache.org on 2015/10/19 02:33:49 UTC

[5/7] incubator-tamaya git commit: TAMAYA-116: Fixed DynamicTest class and test suite.

TAMAYA-116: Fixed DynamicTest class and test suite.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/commit/8a3381ff
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/tree/8a3381ff
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/diff/8a3381ff

Branch: refs/heads/master
Commit: 8a3381ffdf0699620bd8e3adfcc44b0791d0b042
Parents: a124a04
Author: anatole <an...@apache.org>
Authored: Mon Oct 19 02:16:14 2015 +0200
Committer: anatole <an...@apache.org>
Committed: Mon Oct 19 02:16:14 2015 +0200

----------------------------------------------------------------------
 .../inject/internal/DefaultDynamicValue.java    | 73 +++++++++-----------
 .../internal/DefaultDynamicValueTest.java       | 49 +++++--------
 2 files changed, 49 insertions(+), 73 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/8a3381ff/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 ece8127..ca1e67d 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
@@ -103,7 +103,7 @@ final class DefaultDynamicValue<T> extends BaseDynamicValue<T> {
     /**
      * The new value, or null.
      */
-    private transient T newValue;
+    private transient Object[] newValue;
     /**
      * List of listeners that listen for changes.
      */
@@ -128,10 +128,8 @@ final class DefaultDynamicValue<T> extends BaseDynamicValue<T> {
         this.targetType = targetType;
         this.loadPolicy = Objects.requireNonNull(loadPolicy);
         this.updatePolicy = Objects.requireNonNull(updatePolicy);
-        switch(loadPolicy){
-            case INITIAL:
-                this.value = evaluateValue();
-                break;
+        if(loadPolicy == LoadPolicy.INITIAL){
+            this.value = evaluateValue();
         }
     }
 
@@ -230,7 +228,7 @@ final class DefaultDynamicValue<T> extends BaseDynamicValue<T> {
      */
     public void commit() {
         T oldValue = value;
-        value = newValue;
+        value = newValue==null?null:(T)newValue[0];
         newValue = null;
         informListeners(oldValue, value);
     }
@@ -305,34 +303,28 @@ final class DefaultDynamicValue<T> extends BaseDynamicValue<T> {
      * @see DefaultDynamicValue#isPresent()
      */
     public T get() {
-        switch(loadPolicy){
-            case LAZY:
-                if(this.value==null) {
-                    this.value = evaluateValue();
-                }
-                break;
-            case ALWAYS:
-                this.newValue = evaluateValue();
-                break;
-        }
-        switch (updatePolicy){
-            case IMMEDEATE:
-                if(!Objects.equals(this.value, this.newValue)){
-                    commit();
-                }
-                break;
-            case LOG_ONLY:
-                if(!Objects.equals(this.value, this.newValue)){
-                    informListeners(this.value, this.newValue);
-                    this.newValue = null;
+        T newLocalValue = null;
+        if(loadPolicy!=LoadPolicy.INITIAL) {
+            newLocalValue = evaluateValue();
+            if (this.value == null) {
+                this.value = newLocalValue;
+            }
+            if(!Objects.equals(this.value, newLocalValue)){
+                switch (updatePolicy){
+                    case IMMEDEATE:
+                        commit();
+                        break;
+                    case EXPLCIT:
+                        this.newValue = new Object[]{newLocalValue};
+                        break;
+                    case LOG_ONLY:
+                        informListeners(this.value, newLocalValue);
+                    case NEVER:
+                    default:
+                        this.newValue = null;
+                        break;
                 }
-                break;
-            case EXPLCIT:
-                break;
-            case NEVER:
-            default:
-                this.newValue = null;
-                break;
+            }
         }
         return value;
     }
@@ -345,16 +337,15 @@ final class DefaultDynamicValue<T> extends BaseDynamicValue<T> {
      * {@link UpdatePolicy} in place.
      */
     public boolean updateValue() {
+        if(this.value==null && this.newValue==null){
+            this.value = evaluateValue();
+            return false;
+        }
         T newValue = evaluateValue();
         if (Objects.equals(newValue, this.value)) {
             return false;
         }
         switch (this.updatePolicy) {
-            case IMMEDEATE:
-                informListeners(value, newValue);
-                this.newValue = newValue;
-                commit();
-                break;
             case LOG_ONLY:
                 Logger.getLogger(getClass().getName()).info("Discard change on " + this + ", newValue=" + newValue);
                 informListeners(value, newValue);
@@ -364,8 +355,10 @@ final class DefaultDynamicValue<T> extends BaseDynamicValue<T> {
                 this.newValue = null;
                 break;
             case EXPLCIT:
+            case IMMEDEATE:
             default:
-                this.newValue = newValue;
+                this.newValue = new Object[]{newValue};
+                commit();
                 break;
         }
         return true;
@@ -401,7 +394,7 @@ final class DefaultDynamicValue<T> extends BaseDynamicValue<T> {
      * @return the uncommitted new value, or null.
      */
     public T getNewValue() {
-        T nv = newValue;
+        T nv = newValue==null?null:(T)newValue[0];
         if (nv != null) {
             return nv;
         }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/8a3381ff/modules/injection/src/test/java/org/apache/tamaya/inject/internal/DefaultDynamicValueTest.java
----------------------------------------------------------------------
diff --git a/modules/injection/src/test/java/org/apache/tamaya/inject/internal/DefaultDynamicValueTest.java b/modules/injection/src/test/java/org/apache/tamaya/inject/internal/DefaultDynamicValueTest.java
index 2eff9a5..40c02dd 100644
--- a/modules/injection/src/test/java/org/apache/tamaya/inject/internal/DefaultDynamicValueTest.java
+++ b/modules/injection/src/test/java/org/apache/tamaya/inject/internal/DefaultDynamicValueTest.java
@@ -125,6 +125,7 @@ public class DefaultDynamicValueTest {
         assertNotNull(val);
         assertEquals("aValue",val.evaluateValue());
         // change config
+        val.get();
         this.properties.put("a", "aValue2");
         assertTrue(val.updateValue());
         assertEquals("aValue2", val.commitAndGet());
@@ -132,40 +133,19 @@ public class DefaultDynamicValueTest {
 
     @Test
     public void testCommit() throws Exception {
-        properties.put("a","aValue");
+        properties.put("a", "aValue");
         DynamicValue val = DefaultDynamicValue.of(getClass().getDeclaredField("myValue"),
                 config);
         val.setUpdatePolicy(UpdatePolicy.EXPLCIT);
         assertNotNull(val);
-        assertEquals("aValue",val.evaluateValue());
+        assertEquals("aValue", val.evaluateValue());
         // change config
+        val.get();
         this.properties.put("a", "aValue2");
-        assertTrue(val.updateValue());
         assertEquals("aValue2", val.evaluateValue());
         assertTrue(val.updateValue());
         val.commit();
-        assertEquals("aValue2", val.evaluateValue());
-    }
-
-    @Test
-    public void testDiscard() throws Exception {
-        properties.put("a","aValue");
-        DynamicValue val = DefaultDynamicValue.of(getClass().getDeclaredField("myValue"),
-                config);
-        val.setUpdatePolicy(UpdatePolicy.EXPLCIT);
-        assertNotNull(val);
-        assertEquals("aValue",val.evaluateValue());
-        // change config
-        this.properties.put("a", "aValue2");
-        assertTrue(val.updateValue());
-        assertEquals("aValue2", val.evaluateValue());
-        assertEquals("aValue2", val.getNewValue());
-        assertEquals("aValue", val.get());
-        val.discard();
-        assertEquals("aValue2", val.evaluateValue());
-        assertEquals("aValue", val.get());
-        assertNull(val.getNewValue());
-
+        assertEquals("aValue2", val.get());
     }
 
     @Test
@@ -183,11 +163,12 @@ public class DefaultDynamicValueTest {
         properties.put("a","aValue");
         DynamicValue val = DefaultDynamicValue.of(getClass().getDeclaredField("myValue"),
                 config);
-        val.setUpdatePolicy(UpdatePolicy.IMMEDIATE);
+        val.setUpdatePolicy(UpdatePolicy.IMMEDEATE);
         val.addListener(consumer);
         // change config
+        val.get();
         this.properties.put("a", "aValue2");
-        val.updateValue();
+        val.get();
         assertNotNull(event);
         event = null;
         val.removeListener(consumer);
@@ -201,7 +182,7 @@ public class DefaultDynamicValueTest {
         properties.put("a", "aValue");
         DynamicValue val = DefaultDynamicValue.of(getClass().getDeclaredField("myValue"),
                 config);
-        val.setUpdatePolicy(UpdatePolicy.IMMEDIATE);
+        val.setUpdatePolicy(UpdatePolicy.IMMEDEATE);
         properties.put("a", "aValue2");
         val.updateValue();
         assertEquals("aValue2", val.get());
@@ -217,7 +198,7 @@ public class DefaultDynamicValueTest {
         assertEquals("aValue", val.get());
         val.updateValue();
         assertEquals("aValue", val.get());
-        val.setUpdatePolicy(UpdatePolicy.IMMEDIATE);
+        val.setUpdatePolicy(UpdatePolicy.IMMEDEATE);
         val.updateValue();
         assertEquals("aValue",val.get());
     }
@@ -240,9 +221,10 @@ public class DefaultDynamicValueTest {
         DynamicValue val = DefaultDynamicValue.of(getClass().getDeclaredField("myValue"),
                 config);
         val.setUpdatePolicy(UpdatePolicy.EXPLCIT);
+        val.get();
         assertNull(val.getNewValue());
         properties.put("a", "aValue2");
-        val.updateValue();
+        val.get();
         assertNotNull(val.getNewValue());
         assertEquals("aValue2", val.getNewValue());
         val.commit();
@@ -259,7 +241,7 @@ public class DefaultDynamicValueTest {
         properties.put("a","aValue");
         DynamicValue val = DefaultDynamicValue.of(getClass().getDeclaredField("myValue"),
                 config);
-        val.setUpdatePolicy(UpdatePolicy.IMMEDIATE);
+        val.setUpdatePolicy(UpdatePolicy.IMMEDEATE);
         assertTrue(val.isPresent());
         properties.remove("a");
         val.updateValue();
@@ -270,7 +252,7 @@ public class DefaultDynamicValueTest {
     public void testOrElse() throws Exception {
         DynamicValue val = DefaultDynamicValue.of(getClass().getDeclaredField("myValue"),
                 config);
-        val.setUpdatePolicy(UpdatePolicy.IMMEDIATE);
+        val.setUpdatePolicy(UpdatePolicy.IMMEDEATE);
         assertEquals("bla", val.orElse("bla"));
         properties.put("a","aValue");
         val.updateValue();
@@ -281,7 +263,7 @@ public class DefaultDynamicValueTest {
     public void testOrElseGet() throws Exception {
         DynamicValue val = DefaultDynamicValue.of(getClass().getDeclaredField("myValue"),
                 config);
-        val.setUpdatePolicy(UpdatePolicy.IMMEDIATE);
+        val.setUpdatePolicy(UpdatePolicy.IMMEDEATE);
         assertEquals("bla", val.orElseGet(new ConfiguredItemSupplier() {
             @Override
             public Object get() {
@@ -303,6 +285,7 @@ public class DefaultDynamicValueTest {
         DynamicValue val = DefaultDynamicValue.of(getClass().getDeclaredField("myValue"),
                 config);
         val.setUpdatePolicy(UpdatePolicy.EXPLCIT);
+        val.get();
         properties.put("a", "aValue");
         assertEquals("aValue", val.orElseThrow(new ConfiguredItemSupplier() {
             @Override