/* 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 org.activiti.rest.util;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.springframework.extensions.surf.util.ISO8601DateFormat;
/**
* Util class containing methods for handling common JSON operations.
*
* @author Frederik Heremans
*/
public abstract class JSONUtil {
/**
* Puts the given value in the {@link JSONObject}. When the value is null,
* {@link JSONObject#NULL} is put as value, resulting in an explicit NULL
* value in the rendered JSON output.
*/
public static void putRetainNull(JSONObject object, String key, Object value) throws JSONException {
putDefault(object, key, value, JSONObject.NULL);
}
/**
* Puts the given value in the {@link JSONObject}. When the value is null,
* an empty string is used as value.
*/
public static void putEmptyStringIfNull(JSONObject object, String key, Object value) throws JSONException {
putDefault(object, key, value, "");
}
public static void putDefault(JSONObject object, String key, Object value, Object defaultValue) throws JSONException {
if (value == null) {
value = defaultValue;
}
object.put(key, value);
}
public static void putPagingInfo(JSONObject object, Map<String, Object> model) throws JSONException {
putDefault(object, "total", model.get("total"), 0L);
putDefault(object, "start", model.get("start"), 0L);
putDefault(object, "size", model.get("size"), 0L);
object.put("sort", model.get("sort"));
object.put("order", model.get("order"));
}
public static JSONObject putNewObject(JSONObject base, String key) throws JSONException {
JSONObject newObject = new JSONObject();
base.put(key, newObject);
return newObject;
}
public static JSONArray putNewArray(JSONObject base, String key) throws JSONException {
JSONArray newArray = new JSONArray();
base.put(key, newArray);
return newArray;
}
public static String formatISO8601Date(Calendar calendar) {
if(calendar != null) {
return ISO8601DateFormat.format(calendar.getTime());
}
return null;
}
public static String formatISO8601Date(Date date) {
if(date != null) {
return ISO8601DateFormat.format(date);
}
return null;
}
}