diff --git a/core/src/main/java/org/gatein/management/core/api/model/DmrModel.java b/core/src/main/java/org/gatein/management/core/api/model/DmrModel.java index ab1d865a..863da992 100644 --- a/core/src/main/java/org/gatein/management/core/api/model/DmrModel.java +++ b/core/src/main/java/org/gatein/management/core/api/model/DmrModel.java @@ -46,6 +46,8 @@ class DmrModel extends DmrModelValue implements Model @Override public ModelString set(String value) { + if (value == null) return asValue(ModelString.class); + return (ModelString) asValue(this.value.set(value)); } @@ -70,12 +72,16 @@ public ModelNumber set(double value) @Override public ModelNumber set(BigInteger value) { + if (value == null) return asValue(ModelNumber.class); + return (ModelNumber) asValue(this.value.set(value)); } @Override public ModelNumber set(BigDecimal value) { + if (value == null) return asValue(ModelNumber.class); + return (ModelNumber) asValue(this.value.set(value)); } diff --git a/core/src/test/java/org/gatein/management/core/api/model/DmrModelObjectTest.java b/core/src/test/java/org/gatein/management/core/api/model/DmrModelObjectTest.java index ec072231..388a431e 100644 --- a/core/src/test/java/org/gatein/management/core/api/model/DmrModelObjectTest.java +++ b/core/src/test/java/org/gatein/management/core/api/model/DmrModelObjectTest.java @@ -66,6 +66,19 @@ public void testGet_Set() assertEquals(0, modelObject().get("foo").setEmptyList().size()); } + @Test + public void testGet_Set_Null() + { + // String + assertNull(modelObject().get("foo").set((String) null).getValue()); + + // BigInteger + assertNull(modelObject().get("foo").set((BigInteger) null).getBigInteger()); + + // BigDecimal + assertNull(modelObject().get("foo").set((BigDecimal) null).getBigDecimal()); + } + @Test public void testSet() { @@ -84,6 +97,22 @@ public void testSet() assertFalse(modelObject().set("foo", false).get("foo", ModelBoolean.class).getValue()); } + @Test + public void testSet_Null() + { + // String + assertFalse(modelObject().set("foo", (String) null).get("foo").isDefined()); + assertNull(modelObject().set("foo", (String) null).get("foo", ModelString.class).getValue()); + + // BigInteger + assertFalse(modelObject().set("foo", (BigInteger) null).get("foo").isDefined()); + assertNull(modelObject().set("foo", (BigInteger) null).get("foo", ModelNumber.class).getBigInteger()); + + // BigDecimal + assertFalse(modelObject().set("foo", (BigDecimal) null).get("foo").isDefined()); + assertNull(modelObject().set("foo", (BigDecimal) null).get("foo", ModelNumber.class).getBigDecimal()); + } + @Test public void testGet_AsValue_Set() { diff --git a/core/src/test/java/org/gatein/management/core/api/model/DmrModelTest.java b/core/src/test/java/org/gatein/management/core/api/model/DmrModelTest.java index 0dbc1828..e6eb812d 100644 --- a/core/src/test/java/org/gatein/management/core/api/model/DmrModelTest.java +++ b/core/src/test/java/org/gatein/management/core/api/model/DmrModelTest.java @@ -53,6 +53,13 @@ public void testString() assertEquals("foo", newModel().set("foo").getValue()); } + @Test + public void testNullString() + { + assertFalse(newModel().set((String) null).isDefined()); + assertNull(newModel().set((String) null).getValue()); + } + @Test public void testNumber() { @@ -84,6 +91,16 @@ public void testNumber() assertEquals(BigDecimal.valueOf(Math.PI), newModel().set(bd).getBigDecimal()); } + @Test + public void testNullNumber() + { + assertFalse(newModel().set((BigInteger) null).isDefined()); + assertNull(newModel().set((BigInteger) null).getBigInteger()); + + assertFalse(newModel().set((BigDecimal) null).isDefined()); + assertNull(newModel().set((BigDecimal) null).getBigDecimal()); + } + @Test public void testBoolean() {