registerType(HashMap.class, JsonConstants.VTYPE_MAP);
registerType(List.class, JsonConstants.VTYPE_LIST);
registerType(Set.class, JsonConstants.VTYPE_SET);
+ registerType(Void.class, JsonConstants.VTYPE_NULL);
}
private static void registerType(Class<?> type, String transportType) {
if (encodedJsonValue == JSONObject.NULL) {
return null;
+ } else if (targetType == Void.class) {
+ throw new JSONException(
+ "Something other than null was encoded for a null type");
}
// UidlValue
* the License.
*/
import java.lang.reflect.Type;
+import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
+import junit.framework.AssertionFailedError;
import junit.framework.TestCase;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
import com.vaadin.server.JsonCodec.BeanProperty;
+import com.vaadin.shared.communication.UidlValue;
import com.vaadin.shared.ui.splitpanel.AbstractSplitPanelState;
/**
ensureDecodedCorrectly(stateToStringMap, encodedMap, mapType);
}
+ public void testNullLegacyValue() throws JSONException {
+ JSONArray inputArray = new JSONArray(
+ Arrays.asList("n", JSONObject.NULL));
+ UidlValue decodedObject = (UidlValue) JsonCodec.decodeInternalType(
+ UidlValue.class, true, inputArray, null);
+ assertNull(decodedObject.getValue());
+ }
+
+ public void testNullTypeOtherValue() {
+ try {
+ JSONArray inputArray = new JSONArray(Arrays.asList("n", "a"));
+ UidlValue decodedObject = (UidlValue) JsonCodec.decodeInternalType(
+ UidlValue.class, true, inputArray, null);
+
+ throw new AssertionFailedError("No JSONException thrown");
+ } catch (JSONException e) {
+ // Should throw exception
+ }
+ }
+
private void ensureDecodedCorrectly(Object original, Object encoded,
Type type) throws Exception {
Object serverSideDecoded = JsonCodec.decodeInternalOrCustomType(type,