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