Remove remaining use of JSON.stringify() and replace with simple StringBuilder concatenation.
Patch by: bobv
Review by: cromwellian
Review at http://gwt-code-reviews.appspot.com/960801
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@8939 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/requestfactory/client/impl/ClientRequestHelper.java b/user/src/com/google/gwt/requestfactory/client/impl/ClientRequestHelper.java
deleted file mode 100644
index dcd532a..0000000
--- a/user/src/com/google/gwt/requestfactory/client/impl/ClientRequestHelper.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2010 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.requestfactory.client.impl;
-
-import com.google.gwt.core.client.JavaScriptObject;
-
-import java.util.Map;
-
-/**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
- * A convenience class to convert a Map<String, String> to a JSON string on the
- * client side.
- */
-public class ClientRequestHelper {
-
- private static class MyJSO extends JavaScriptObject {
- static native MyJSO create() /*-{
- return {};
- }-*/;
-
- @SuppressWarnings("unused")
- protected MyJSO() {
- }
-
- private native void put(String key, String value)/*-{
- // TODO(jgw): Find a better way to do this. Occasionally a js-wrapped
- // string ends up in 'value', which breaks the json2.js implementation
- // of JSON.stringify().
- this[key] = (value == null) ? null : String(value);
- }-*/;
-
- private native String toJsonString()/*-{
- var gwt = this.__gwt_ObjectId;
- delete this.__gwt_ObjectId;
- var rtn = $wnd.JSON.stringify(this);
- this.__gwt_ObjectId = gwt;
- return rtn;
- }-*/;
- }
-
- public static String getRequestString(Map<String, String> requestData) {
- MyJSO request = MyJSO.create();
- for (String key : requestData.keySet()) {
- request.put(key, requestData.get(key));
- }
- return request.toJsonString();
- }
-}
diff --git a/user/src/com/google/gwt/requestfactory/client/impl/messages/RequestContentData.java b/user/src/com/google/gwt/requestfactory/client/impl/messages/RequestContentData.java
index 5a945eb..f955bf0 100644
--- a/user/src/com/google/gwt/requestfactory/client/impl/messages/RequestContentData.java
+++ b/user/src/com/google/gwt/requestfactory/client/impl/messages/RequestContentData.java
@@ -16,7 +16,6 @@
package com.google.gwt.requestfactory.client.impl.messages;
import com.google.gwt.core.client.JsonUtils;
-import com.google.gwt.requestfactory.client.impl.ClientRequestHelper;
import com.google.gwt.requestfactory.shared.WriteOperation;
import java.util.EnumMap;
@@ -33,6 +32,10 @@
*/
public static String flattenKeysToExpressions(
Map<String, String> keysToExpressions) {
+ if (keysToExpressions.isEmpty()) {
+ return "{}";
+ }
+
StringBuilder flattenedProperties = new StringBuilder();
for (Map.Entry<String, String> entry : keysToExpressions.entrySet()) {
flattenedProperties.append(",").append(
@@ -89,7 +92,7 @@
Map<String, String> toReturn = new LinkedHashMap<String, String>();
addToReturn(toReturn, WriteOperation.PERSIST);
addToReturn(toReturn, WriteOperation.UPDATE);
- return ClientRequestHelper.getRequestString(toReturn);
+ return flattenKeysToExpressions(toReturn);
}
/**