Treat undefined Record properties on JSOs as nulls
Review at http://gwt-code-reviews.appspot.com/744801
Review by: amitmanjhi@google.com
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@8501 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/valuestore/shared/impl/RecordJsoImpl.java b/user/src/com/google/gwt/valuestore/shared/impl/RecordJsoImpl.java
index 3558572..a2ba8dc 100644
--- a/user/src/com/google/gwt/valuestore/shared/impl/RecordJsoImpl.java
+++ b/user/src/com/google/gwt/valuestore/shared/impl/RecordJsoImpl.java
@@ -83,12 +83,12 @@
// assert isDefined(property.getName()) :
// "Cannot ask for a property before setting it: "
// + property.getName();
- if (isNull(property.getName())) {
+ if (isNullOrUndefined(property.getName())) {
return null;
}
try {
if (Boolean.class.equals(property.getType())) {
- return (V) Boolean.valueOf((String) get(property.getName()));
+ return (V) Boolean.valueOf(getBoolean(property.getName()));
}
if (Byte.class.equals(property.getType())) {
return (V) Byte.valueOf((byte) getInt(property.getName()));
@@ -189,8 +189,8 @@
/**
* @param name
*/
- public final native boolean isNull(String name)/*-{
- return this[name] === null;
+ public final native boolean isNullOrUndefined(String name)/*-{
+ return this[name] == null;
}-*/;
public final boolean merge(RecordJsoImpl from) {
@@ -299,6 +299,10 @@
return @java.util.Date::createFrom(D)(millis);
}-*/;
+ private native boolean getBoolean(String name) /*-{
+ return this[name];
+ }-*/;
+
private native double getDouble(String name) /*-{
return this[name];
}-*/;
diff --git a/user/test/com/google/gwt/valuestore/shared/impl/RecordJsoImplTest.java b/user/test/com/google/gwt/valuestore/shared/impl/RecordJsoImplTest.java
index 7786277..17e8ac7 100644
--- a/user/test/com/google/gwt/valuestore/shared/impl/RecordJsoImplTest.java
+++ b/user/test/com/google/gwt/valuestore/shared/impl/RecordJsoImplTest.java
@@ -122,6 +122,8 @@
}
assertEquals((Long) 42L, jso.getId());
assertEquals(new Integer(1), jso.getVersion());
+ assertEquals(null, jso.get(SimpleFooRecord.longField));
+ assertEquals(null, jso.get(SimpleFooRecord.enumField));
testSchema(jso, schemaPresent);
}