Reviewers: ,

Description:
When a record has a property (for instance a Long property) set to
'null', the client side parser will throw out an exception instead of
gracefully returning null.

Please review this at http://gwt-code-reviews.appspot.com/712802/show

Affected files:
  user/src/com/google/gwt/valuestore/shared/impl/RecordJsoImpl.java


Index: user/src/com/google/gwt/valuestore/shared/impl/RecordJsoImpl.java
===================================================================
--- user/src/com/google/gwt/valuestore/shared/impl/RecordJsoImpl.java (revision 8466) +++ user/src/com/google/gwt/valuestore/shared/impl/RecordJsoImpl.java (working copy)
@@ -84,44 +84,51 @@
     // "Cannot ask for a property before setting it: "
     // + property.getName();

-    if (Byte.class.equals(property.getType())) {
-      return (V) Byte.valueOf((byte) getInt(property.getName()));
+    if (Boolean.class.equals(property.getType())) {
+      return (V) Boolean.valueOf((String) get(property.getName()));
     }
-    if (Short.class.equals(property.getType())) {
-      return (V) Short.valueOf((short) getInt(property.getName()));
-    }
-    if (Float.class.equals(property.getType())) {
-      return (V) Float.valueOf((float) getDouble(property.getName()));
-    }
-    if (BigInteger.class.equals(property.getType())) {
- return (V) new BigDecimal((String) get(property.getName())).toBigInteger();
-    }
-    if (BigDecimal.class.equals(property.getType())) {
-      return (V) new BigDecimal((String) get(property.getName()));
-    }
-    if (Integer.class.equals(property.getType())) {
-      return (V) Integer.valueOf(getInt(property.getName()));
-    }
-    if (Long.class.equals(property.getType())) {
-      return (V) Long.valueOf((String) get(property.getName()));
-    }
-    if (Double.class.equals(property.getType())) {
-      if (!isDefined(property.getName())) {
-        return (V) new Double(0.0);
+    try {
+      if (Byte.class.equals(property.getType())) {
+        return (V) Byte.valueOf((byte) getInt(property.getName()));
       }
-      return (V) Double.valueOf(getDouble(property.getName()));
-    }
-    if (Date.class.equals(property.getType())) {
-      double millis = new Date().getTime();
-      if (isDefined(property.getName())) {
-        millis = Double.parseDouble((String) get(property.getName()));
+      if (Short.class.equals(property.getType())) {
+        return (V) Short.valueOf((short) getInt(property.getName()));
       }
-      if (GWT.isScript()) {
-        return (V) dateForDouble(millis);
-      } else {
-        // In dev mode, we're using real JRE dates
-        return (V) new Date((long) millis);
+      if (Float.class.equals(property.getType())) {
+        return (V) Float.valueOf((float) getDouble(property.getName()));
       }
+      if (BigInteger.class.equals(property.getType())) {
+ return (V) new BigDecimal((String) get(property.getName())).toBigInteger();
+      }
+      if (BigDecimal.class.equals(property.getType())) {
+        return (V) new BigDecimal((String) get(property.getName()));
+      }
+      if (Integer.class.equals(property.getType())) {
+        return (V) Integer.valueOf(getInt(property.getName()));
+      }
+      if (Long.class.equals(property.getType())) {
+        return (V) Long.valueOf((String) get(property.getName()));
+      }
+      if (Double.class.equals(property.getType())) {
+        if (!isDefined(property.getName())) {
+          return (V) new Double(0.0);
+        }
+        return (V) Double.valueOf(getDouble(property.getName()));
+      }
+      if (Date.class.equals(property.getType())) {
+        double millis = new Date().getTime();
+        if (isDefined(property.getName())) {
+          millis = Double.parseDouble((String) get(property.getName()));
+        }
+        if (GWT.isScript()) {
+          return (V) dateForDouble(millis);
+        } else {
+          // In dev mode, we're using real JRE dates
+          return (V) new Date((long) millis);
+        }
+      }
+    } catch (final NumberFormatException ex) {
+      return null;
     }

     if (property instanceof EnumProperty) {


--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to