X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=datarouter-prov%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fdmaap%2Fdatarouter%2Fprovisioning%2Futils%2FLOGJSONObject.java;h=bc1f44939bd67925fd00da04f56e6f116cbb41e7;hb=6c78b3e6a0a67c73f931337356a172cc69cee0e8;hp=f7e087489b2811dcffddf0b5f3042474b8c59a2a;hpb=29c4f8051e4fc856cd84b97e31f445f65f7e497d;p=dmaap%2Fdatarouter.git diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/LOGJSONObject.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/LOGJSONObject.java index f7e08748..bc1f4493 100644 --- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/LOGJSONObject.java +++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/LOGJSONObject.java @@ -28,11 +28,14 @@ import com.att.eelf.configuration.EELFManager; import java.io.IOException; import java.io.StringWriter; import java.io.Writer; -import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; -import java.util.*; - +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONString; @@ -93,10 +96,13 @@ import org.json.JSONTokener; * @version 2012-12-01 */ public class LOGJSONObject { + /** * The maximum number of keys in the key pool. */ - private static final int keyPoolSize = 100; + private static final int KEY_POOL_SIZE = 100; + private static final String USING_DEFAULT_VALUE = "Using defaultValue: "; + private static final String JSON_OBJECT_CONST = "JSONObject["; /** * Key pooling is like string interning, but without permanently tying up @@ -104,7 +110,7 @@ public class LOGJSONObject { * JSONObjects will be avoided by using a key pool to manage unique key * string objects. This is used by JSONObject.put(string, object). */ - private static Map keyPool = new LinkedHashMap(keyPoolSize); + private static Map keyPool = new LinkedHashMap<>(KEY_POOL_SIZE); private static final EELFLogger intlogger = EELFManager.getInstance().getLogger("InternalLog"); @@ -186,21 +192,18 @@ public class LOGJSONObject { } } - /** * The map where the JSONObject's properties are kept. */ private final Map map; - /** * It is sometimes more convenient and less ambiguous to have a * NULL object than to use Java's null value. * JSONObject.NULL.equals(null) returns true. * JSONObject.NULL.toString() returns "null". */ - public static final Object NULL = new Null(); - + private static final Object NULL = new Null(); /** * Construct an empty JSONObject. @@ -209,7 +212,6 @@ public class LOGJSONObject { this.map = new LinkedHashMap<>(); } - /** * Construct a JSONObject from a subset of another JSONObject. * An array of strings is used to identify the keys that should be copied. @@ -229,7 +231,6 @@ public class LOGJSONObject { } } - /** * Construct a JSONObject from a JSONTokener. * @@ -287,7 +288,6 @@ public class LOGJSONObject { } } - /** * Construct a JSONObject from a Map. * @@ -296,7 +296,7 @@ public class LOGJSONObject { * @throws JSONException */ public LOGJSONObject(Map map) { - this.map = new LinkedHashMap(); + this.map = new LinkedHashMap<>(); if (map != null) { Iterator> i = map.entrySet().iterator(); while (i.hasNext()) { @@ -309,7 +309,6 @@ public class LOGJSONObject { } } - /** * Construct a JSONObject from an Object using bean getters. * It reflects on all of the public methods of the object. @@ -334,88 +333,6 @@ public class LOGJSONObject { this.populateMap(bean); } - - /** - * Construct a JSONObject from an Object, using reflection to find the - * public members. The resulting JSONObject's keys will be the strings - * from the names array, and the values will be the field values associated - * with those keys in the object. If a key is not found or not visible, - * then it will not be copied into the new JSONObject. - * - * @param object An object that has fields that should be used to make a - * JSONObject. - * @param names An array of strings, the names of the fields to be obtained - * from the object. - */ - public LOGJSONObject(Object object, String names[]) { - this(); - Class c = object.getClass(); - for (int i = 0; i < names.length; i += 1) { - String name = names[i]; - try { - this.putOpt(name, c.getField(name).get(object)); - } catch (Exception ignore) { - } - } - } - - - /** - * Construct a JSONObject from a source JSON text string. - * This is the most commonly used JSONObject constructor. - * - * @param source A string beginning - * with { (left brace) and ending - * with } (right brace). - * @throws JSONException If there is a syntax error in the source - * string or a duplicated key. - */ - public LOGJSONObject(String source) throws JSONException { - this(new JSONTokener(source)); - } - - - /** - * Construct a JSONObject from a ResourceBundle. - * - * @param baseName The ResourceBundle base name. - * @param locale The Locale to load the ResourceBundle for. - * @throws JSONException If any JSONExceptions are detected. - */ - public LOGJSONObject(String baseName, Locale locale) throws JSONException { - this(); - ResourceBundle bundle = ResourceBundle.getBundle(baseName, locale, - Thread.currentThread().getContextClassLoader()); - -// Iterate through the keys in the bundle. - - Enumeration keys = bundle.getKeys(); - while (keys.hasMoreElements()) { - Object key = keys.nextElement(); - if (key instanceof String) { - -// Go through the path, ensuring that there is a nested JSONObject for each -// segment except the last. Add the value using the last segment's name into -// the deepest nested JSONObject. - - String[] path = ((String) key).split("\\."); - int last = path.length - 1; - LOGJSONObject target = this; - for (int i = 0; i < last; i += 1) { - String segment = path[i]; - LOGJSONObject nextTarget = target.optJSONObject(segment); - if (nextTarget == null) { - nextTarget = new LOGJSONObject(); - target.put(segment, nextTarget); - } - target = nextTarget; - } - target.put(path[last], bundle.getString((String) key)); - } - } - } - - /** * Accumulate values under a key. It is similar to the put method except * that if there is already an object stored under the key then a @@ -434,15 +351,15 @@ public class LOGJSONObject { * or if the key is null. */ public LOGJSONObject accumulate( - String key, - Object value - ) throws JSONException { + String key, + Object value + ) { testValidity(value); Object object = this.opt(key); if (object == null) { this.put(key, value instanceof JSONArray - ? new JSONArray().put(value) - : value); + ? new JSONArray().put(value) + : value); } else if (object instanceof JSONArray) { ((JSONArray) object).put(value); } else { @@ -451,7 +368,6 @@ public class LOGJSONObject { return this; } - /** * Append values to the array under a key. If the key does not exist in the * JSONObject, then the key is put in the JSONObject with its value being a @@ -464,7 +380,7 @@ public class LOGJSONObject { * @throws JSONException If the key is null or if the current value * associated with the key is not a JSONArray. */ - public LOGJSONObject append(String key, Object value) throws JSONException { + public LOGJSONObject append(String key, Object value) { testValidity(value); Object object = this.opt(key); if (object == null) { @@ -472,13 +388,12 @@ public class LOGJSONObject { } else if (object instanceof JSONArray) { this.put(key, ((JSONArray) object).put(value)); } else { - throw new JSONException("JSONObject[" + key + - "] is not a JSONArray."); + throw new JSONException(JSON_OBJECT_CONST + key + + "] is not a JSONArray."); } return this; } - /** * Produce a string from a double. The string "null" will be returned if * the number is not finite. @@ -494,8 +409,8 @@ public class LOGJSONObject { // Shave off trailing zeros and decimal point, if possible. String string = Double.toString(d); - if (string.indexOf('.') > 0 && string.indexOf('e') < 0 && - string.indexOf('E') < 0) { + if (string.indexOf('.') > 0 && string.indexOf('e') < 0 + && string.indexOf('E') < 0) { while (string.endsWith("0")) { string = string.substring(0, string.length() - 1); } @@ -506,7 +421,6 @@ public class LOGJSONObject { return string; } - /** * Get the value object associated with a key. * @@ -514,19 +428,18 @@ public class LOGJSONObject { * @return The object associated with the key. * @throws JSONException if the key is not found. */ - public Object get(String key) throws JSONException { + public Object get(String key) { if (key == null) { throw new JSONException("Null key."); } Object object = this.opt(key); if (object == null) { - throw new JSONException("JSONObject[" + quote(key) + - "] not found."); + throw new JSONException(JSON_OBJECT_CONST + quote(key) + + "] not found."); } return object; } - /** * Get the boolean value associated with a key. * @@ -534,22 +447,21 @@ public class LOGJSONObject { * @return The truth. * @throws JSONException if the value is not a Boolean or the String "true" or "false". */ - public boolean getBoolean(String key) throws JSONException { + public boolean getBoolean(String key) { Object object = this.get(key); if (object.equals(Boolean.FALSE) || - (object instanceof String && - ((String) object).equalsIgnoreCase("false"))) { + (object instanceof String && + "false".equalsIgnoreCase((String) object))) { return false; } else if (object.equals(Boolean.TRUE) || - (object instanceof String && - ((String) object).equalsIgnoreCase("true"))) { + (object instanceof String && + "true".equalsIgnoreCase((String) object))) { return true; } - throw new JSONException("JSONObject[" + quote(key) + - "] is not a Boolean."); + throw new JSONException(JSON_OBJECT_CONST + quote(key) + + "] is not a Boolean."); } - /** * Get the double value associated with a key. * @@ -562,15 +474,14 @@ public class LOGJSONObject { Object object = this.get(key); try { return object instanceof Number - ? ((Number) object).doubleValue() - : Double.parseDouble((String) object); + ? ((Number) object).doubleValue() + : Double.parseDouble((String) object); } catch (Exception e) { - intlogger.error("JSONObject[" + quote(key) + "] is not a number.", e); - throw new JSONException("JSONObject[" + quote(key) + "] is not a number."); + intlogger.error(JSON_OBJECT_CONST + quote(key) + "] is not a number.", e); + throw new JSONException(JSON_OBJECT_CONST + quote(key) + "] is not a number."); } } - /** * Get the int value associated with a key. * @@ -583,15 +494,14 @@ public class LOGJSONObject { Object object = this.get(key); try { return object instanceof Number - ? ((Number) object).intValue() - : Integer.parseInt((String) object); + ? ((Number) object).intValue() + : Integer.parseInt((String) object); } catch (Exception e) { - intlogger.error("JSONObject[" + quote(key) + "] is not an int.", e); - throw new JSONException("JSONObject[" + quote(key) + "] is not an int."); + intlogger.error(JSON_OBJECT_CONST + quote(key) + "] is not an int.", e); + throw new JSONException(JSON_OBJECT_CONST + quote(key) + "] is not an int."); } } - /** * Get the JSONArray value associated with a key. * @@ -600,16 +510,15 @@ public class LOGJSONObject { * @throws JSONException if the key is not found or * if the value is not a JSONArray. */ - public JSONArray getJSONArray(String key) throws JSONException { + public JSONArray getJSONArray(String key) { Object object = this.get(key); if (object instanceof JSONArray) { return (JSONArray) object; } - throw new JSONException("JSONObject[" + quote(key) + - "] is not a JSONArray."); + throw new JSONException(JSON_OBJECT_CONST + quote(key) + + "] is not a JSONArray."); } - /** * Get the JSONObject value associated with a key. * @@ -618,16 +527,15 @@ public class LOGJSONObject { * @throws JSONException if the key is not found or * if the value is not a JSONObject. */ - public LOGJSONObject getJSONObject(String key) throws JSONException { + public LOGJSONObject getJSONObject(String key) { Object object = this.get(key); if (object instanceof LOGJSONObject) { return (LOGJSONObject) object; } - throw new JSONException("JSONObject[" + quote(key) + - "] is not a JSONObject."); + throw new JSONException(JSON_OBJECT_CONST + quote(key) + + "] is not a JSONObject."); } - /** * Get the long value associated with a key. * @@ -636,19 +544,18 @@ public class LOGJSONObject { * @throws JSONException if the key is not found or if the value cannot * be converted to a long. */ - public long getLong(String key) throws JSONException { + public long getLong(String key) { Object object = this.get(key); try { return object instanceof Number - ? ((Number) object).longValue() - : Long.parseLong((String) object); + ? ((Number) object).longValue() + : Long.parseLong((String) object); } catch (Exception e) { - intlogger.error("JSONObject[" + quote(key) + "] is not a long.", e); - throw new JSONException("JSONObject[" + quote(key) + "] is not a long."); + intlogger.error(JSON_OBJECT_CONST + quote(key) + "] is not a long.", e); + throw new JSONException(JSON_OBJECT_CONST + quote(key) + "] is not a long."); } } - /** * Get an array of field names from a JSONObject. * @@ -657,7 +564,7 @@ public class LOGJSONObject { public static String[] getNames(LOGJSONObject jo) { int length = jo.length(); if (length == 0) { - return null; + return new String[]{}; } Iterator iterator = jo.keys(); String[] names = new String[length]; @@ -669,30 +576,6 @@ public class LOGJSONObject { return names; } - - /** - * Get an array of field names from an Object. - * - * @return An array of field names, or null if there are no names. - */ - public static String[] getNames(Object object) { - if (object == null) { - return null; - } - Class klass = object.getClass(); - Field[] fields = klass.getFields(); - int length = fields.length; - if (length == 0) { - return null; - } - String[] names = new String[length]; - for (int i = 0; i < length; i += 1) { - names[i] = fields[i].getName(); - } - return names; - } - - /** * Get the string associated with a key. * @@ -705,11 +588,10 @@ public class LOGJSONObject { if (object instanceof String) { return (String) object; } - throw new JSONException("JSONObject[" + quote(key) + - "] not a string."); + throw new JSONException(JSON_OBJECT_CONST + quote(key) + + "] not a string."); } - /** * Determine if the JSONObject contains a specific key. * @@ -720,7 +602,6 @@ public class LOGJSONObject { return this.map.containsKey(key); } - /** * Increment a property of a JSONObject. If there is no such property, * create one with a value of 1. If there is such a property, and if @@ -749,20 +630,6 @@ public class LOGJSONObject { return this; } - - /** - * Determine if the value associated with the key is null or if there is - * no value. - * - * @param key A key string. - * @return true if there is no value associated with the key or if - * the value is the JSONObject.NULL object. - */ - public boolean isNull(String key) { - return LOGJSONObject.NULL.equals(this.opt(key)); - } - - /** * Get an enumeration of the keys of the JSONObject. * @@ -772,7 +639,6 @@ public class LOGJSONObject { return this.keySet().iterator(); } - /** * Get a set of keys of the JSONObject. * @@ -782,7 +648,6 @@ public class LOGJSONObject { return this.map.keySet(); } - /** * Get the number of keys stored in the JSONObject. * @@ -792,7 +657,6 @@ public class LOGJSONObject { return this.map.size(); } - /** * Produce a JSONArray containing the names of the elements of this * JSONObject. @@ -817,7 +681,7 @@ public class LOGJSONObject { * @throws JSONException If n is a non-finite number. */ public static String numberToString(Number number) - throws JSONException { + { if (number == null) { throw new JSONException("Null pointer"); } @@ -827,7 +691,7 @@ public class LOGJSONObject { String string = number.toString(); if (string.indexOf('.') > 0 && string.indexOf('e') < 0 && - string.indexOf('E') < 0) { + string.indexOf('E') < 0) { while (string.endsWith("0")) { string = string.substring(0, string.length() - 1); } @@ -838,7 +702,6 @@ public class LOGJSONObject { return string; } - /** * Get an optional value associated with a key. * @@ -849,20 +712,6 @@ public class LOGJSONObject { return key == null ? null : this.map.get(key); } - - /** - * Get an optional boolean associated with a key. - * It returns false if there is no such key, or if the value is not - * Boolean.TRUE or the String "true". - * - * @param key A key string. - * @return The truth. - */ - public boolean optBoolean(String key) { - return this.optBoolean(key, false); - } - - /** * Get an optional boolean associated with a key. * It returns the defaultValue if there is no such key, or if it is not @@ -876,26 +725,11 @@ public class LOGJSONObject { try { return this.getBoolean(key); } catch (Exception e) { - intlogger.trace("Using defaultValue: " + defaultValue, e); + intlogger.trace(USING_DEFAULT_VALUE + defaultValue, e); return defaultValue; } } - - /** - * Get an optional double associated with a key, - * or NaN if there is no such key or if its value is not a number. - * If the value is a string, an attempt will be made to evaluate it as - * a number. - * - * @param key A string which is the key. - * @return An object which is the value. - */ - public double optDouble(String key) { - return this.optDouble(key, Double.NaN); - } - - /** * Get an optional double associated with a key, or the * defaultValue if there is no such key or if its value is not a number. @@ -910,26 +744,11 @@ public class LOGJSONObject { try { return this.getDouble(key); } catch (Exception e) { - intlogger.trace("Using defaultValue: " + defaultValue, e); + intlogger.trace(USING_DEFAULT_VALUE + defaultValue, e); return defaultValue; } } - - /** - * Get an optional int value associated with a key, - * or zero if there is no such key or if the value is not a number. - * If the value is a string, an attempt will be made to evaluate it as - * a number. - * - * @param key A key string. - * @return An object which is the value. - */ - public int optInt(String key) { - return this.optInt(key, 0); - } - - /** * Get an optional int value associated with a key, * or the default if there is no such key or if the value is not a number. @@ -944,54 +763,12 @@ public class LOGJSONObject { try { return this.getInt(key); } catch (Exception e) { - intlogger.trace("Using defaultValue: " + defaultValue, e); + intlogger.trace(USING_DEFAULT_VALUE + defaultValue, e); return defaultValue; } } - /** - * Get an optional JSONArray associated with a key. - * It returns null if there is no such key, or if its value is not a - * JSONArray. - * - * @param key A key string. - * @return A JSONArray which is the value. - */ - public JSONArray optJSONArray(String key) { - Object o = this.opt(key); - return o instanceof JSONArray ? (JSONArray) o : null; - } - - - /** - * Get an optional JSONObject associated with a key. - * It returns null if there is no such key, or if its value is not a - * JSONObject. - * - * @param key A key string. - * @return A JSONObject which is the value. - */ - public LOGJSONObject optJSONObject(String key) { - Object object = this.opt(key); - return object instanceof LOGJSONObject ? (LOGJSONObject) object : null; - } - - - /** - * Get an optional long value associated with a key, - * or zero if there is no such key or if the value is not a number. - * If the value is a string, an attempt will be made to evaluate it as - * a number. - * - * @param key A key string. - * @return An object which is the value. - */ - public long optLong(String key) { - return this.optLong(key, 0); - } - - /** * Get an optional long value associated with a key, * or the default if there is no such key or if the value is not a number. @@ -1010,20 +787,6 @@ public class LOGJSONObject { } } - - /** - * Get an optional string associated with a key. - * It returns an empty string if there is no such key. If the value is not - * a string and is not null, then it is converted to a string. - * - * @param key A key string. - * @return A string which is the value. - */ - public String optString(String key) { - return this.optString(key, ""); - } - - /** * Get an optional string associated with a key. * It returns the defaultValue if there is no such key. @@ -1037,17 +800,16 @@ public class LOGJSONObject { return NULL.equals(object) ? defaultValue : object.toString(); } - private void populateMap(Object bean) { - Class klass = bean.getClass(); + Class klass = bean.getClass(); // If klass is a System class then set includeSuperClass to false. boolean includeSuperClass = klass.getClassLoader() != null; Method[] methods = includeSuperClass - ? klass.getMethods() - : klass.getDeclaredMethods(); + ? klass.getMethods() + : klass.getDeclaredMethods(); for (int i = 0; i < methods.length; i += 1) { try { Method method = methods[i]; @@ -1056,7 +818,7 @@ public class LOGJSONObject { String key = ""; if (name.startsWith("get")) { if ("getClass".equals(name) || - "getDeclaringClass".equals(name)) { + "getDeclaringClass".equals(name)) { key = ""; } else { key = name.substring(3); @@ -1065,13 +827,13 @@ public class LOGJSONObject { key = name.substring(2); } if (key.length() > 0 && - Character.isUpperCase(key.charAt(0)) && - method.getParameterTypes().length == 0) { + Character.isUpperCase(key.charAt(0)) && + method.getParameterTypes().length == 0) { if (key.length() == 1) { key = key.toLowerCase(); } else if (!Character.isUpperCase(key.charAt(1))) { key = key.substring(0, 1).toLowerCase() + - key.substring(1); + key.substring(1); } Object result = method.invoke(bean, (Object[]) null); @@ -1086,36 +848,6 @@ public class LOGJSONObject { } } - - /** - * Put a key/boolean pair in the JSONObject. - * - * @param key A key string. - * @param value A boolean which is the value. - * @return this. - * @throws JSONException If the key is null. - */ - public LOGJSONObject put(String key, boolean value) throws JSONException { - this.put(key, value ? Boolean.TRUE : Boolean.FALSE); - return this; - } - - - /** - * Put a key/value pair in the JSONObject, where the value will be a - * JSONArray which is produced from a Collection. - * - * @param key A key string. - * @param value A Collection value. - * @return this. - * @throws JSONException - */ - public LOGJSONObject put(String key, Collection value) throws JSONException { - this.put(key, new JSONArray(value)); - return this; - } - - /** * Put a key/double pair in the JSONObject. * @@ -1124,12 +856,11 @@ public class LOGJSONObject { * @return this. * @throws JSONException If the key is null or if the number is invalid. */ - public LOGJSONObject put(String key, double value) throws JSONException { + public LOGJSONObject put(String key, double value) { this.put(key, new Double(value)); return this; } - /** * Put a key/int pair in the JSONObject. * @@ -1138,12 +869,11 @@ public class LOGJSONObject { * @return this. * @throws JSONException If the key is null. */ - public LOGJSONObject put(String key, int value) throws JSONException { + public LOGJSONObject put(String key, int value) { this.put(key, new Integer(value)); return this; } - /** * Put a key/long pair in the JSONObject. * @@ -1152,27 +882,11 @@ public class LOGJSONObject { * @return this. * @throws JSONException If the key is null. */ - public LOGJSONObject put(String key, long value) throws JSONException { + public LOGJSONObject put(String key, long value) { this.put(key, new Long(value)); return this; } - - /** - * Put a key/value pair in the JSONObject, where the value will be a - * JSONObject which is produced from a Map. - * - * @param key A key string. - * @param value A Map value. - * @return this. - * @throws JSONException - */ - public LOGJSONObject put(String key, Map value) throws JSONException { - this.put(key, new LOGJSONObject(value)); - return this; - } - - /** * Put a key/value pair in the JSONObject. If the value is null, * then the key will be removed from the JSONObject if it is present. @@ -1185,7 +899,7 @@ public class LOGJSONObject { * @throws JSONException If the value is non-finite number * or if the key is null. */ - public LOGJSONObject put(String key, Object value) throws JSONException { + public LOGJSONObject put(String key, Object value) { String pooled; if (key == null) { throw new JSONException("Null key."); @@ -1194,8 +908,8 @@ public class LOGJSONObject { testValidity(value); pooled = (String) keyPool.get(key); if (pooled == null) { - if (keyPool.size() >= keyPoolSize) { - keyPool = new LinkedHashMap(keyPoolSize); + if (keyPool.size() >= KEY_POOL_SIZE) { + keyPool = new LinkedHashMap<>(KEY_POOL_SIZE); } keyPool.put(key, key); } else { @@ -1208,7 +922,6 @@ public class LOGJSONObject { return this; } - /** * Put a key/value pair in the JSONObject, but only if the key and the * value are both non-null, and only if there is not already a member @@ -1219,7 +932,7 @@ public class LOGJSONObject { * @return his. * @throws JSONException if the key is a duplicate */ - public LOGJSONObject putOnce(String key, Object value) throws JSONException { + public LOGJSONObject putOnce(String key, Object value) { if (key != null && value != null) { if (this.opt(key) != null) { throw new JSONException("Duplicate key \"" + key + "\""); @@ -1229,26 +942,6 @@ public class LOGJSONObject { return this; } - - /** - * Put a key/value pair in the JSONObject, but only if the - * key and the value are both non-null. - * - * @param key A key string. - * @param value An object which is the value. It should be of one of these - * types: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, - * or the JSONObject.NULL object. - * @return this. - * @throws JSONException If the value is a non-finite number. - */ - public LOGJSONObject putOpt(String key, Object value) throws JSONException { - if (key != null && value != null) { - this.put(key, value); - } - return this; - } - - /** * Produce a string in double quotes with backslash sequences in all the * right places. A backslash will be inserted within = '\u0080' && c < '\u00a0') - || (c >= '\u2000' && c < '\u2100')) { + || (c >= '\u2000' && c < '\u2100')) { w.write("\\u"); hhhh = Integer.toHexString(c); w.write("0000", 0, 4 - hhhh.length()); @@ -1349,16 +1042,16 @@ public class LOGJSONObject { */ public static Object stringToValue(String string) { Double d; - if (string.equals("")) { + if ("".equals(string)) { return string; } - if (string.equalsIgnoreCase("true")) { + if ("true".equalsIgnoreCase(string)) { return Boolean.TRUE; } - if (string.equalsIgnoreCase("false")) { + if ("false".equalsIgnoreCase(string)) { return Boolean.FALSE; } - if (string.equalsIgnoreCase("null")) { + if ("null".equalsIgnoreCase(string)) { return LOGJSONObject.NULL; } @@ -1373,16 +1066,16 @@ public class LOGJSONObject { char b = string.charAt(0); if ((b >= '0' && b <= '9') || b == '.' || b == '-' || b == '+') { try { - if (string.indexOf('.') > -1 || - string.indexOf('e') > -1 || string.indexOf('E') > -1) { + if (string.indexOf('.') > -1 || string.indexOf('e') > -1 + || string.indexOf('E') > -1) { d = Double.valueOf(string); if (!d.isInfinite() && !d.isNaN()) { return d; } } else { Long myLong = new Long(string); - if (myLong.longValue() == myLong.intValue()) { - return new Integer(myLong.intValue()); + if (myLong == myLong.intValue()) { + return myLong.intValue(); } else { return myLong; } @@ -1394,7 +1087,6 @@ public class LOGJSONObject { return string; } - /** * Throw an exception if the object is a NaN or infinite number. * @@ -1406,18 +1098,15 @@ public class LOGJSONObject { if (o instanceof Double) { if (((Double) o).isInfinite() || ((Double) o).isNaN()) { throw new JSONException( - "JSON does not allow non-finite numbers."); - } - } else if (o instanceof Float) { - if (((Float) o).isInfinite() || ((Float) o).isNaN()) { - throw new JSONException( - "JSON does not allow non-finite numbers."); + "JSON does not allow non-finite numbers."); } + } else if (o instanceof Float && (((Float) o).isInfinite() || ((Float) o).isNaN())) { + throw new JSONException( + "JSON does not allow non-finite numbers."); } } } - /** * Produce a JSONArray containing the values of the members of this * JSONObject. @@ -1427,7 +1116,7 @@ public class LOGJSONObject { * @return A JSONArray of values. * @throws JSONException If any of the values are non-finite numbers. */ - public JSONArray toJSONArray(JSONArray names) throws JSONException { + public JSONArray toJSONArray(JSONArray names) { if (names == null || names.length() == 0) { return null; } @@ -1459,7 +1148,6 @@ public class LOGJSONObject { } } - /** * Make a prettyprinted JSON text of this JSONObject. *

@@ -1473,7 +1161,7 @@ public class LOGJSONObject { * with } (right brace). * @throws JSONException If the object contains an invalid number. */ - public String toString(int indentFactor) throws JSONException { + public String toString(int indentFactor) { StringWriter w = new StringWriter(); synchronized (w.getBuffer()) { return this.write(w, indentFactor, 0).toString(); @@ -1503,27 +1191,27 @@ public class LOGJSONObject { * @throws JSONException If the value is or contains an invalid number. */ @SuppressWarnings("unchecked") - public static String valueToString(Object value) throws JSONException { + public static String valueToString(Object value) { if (value == null) { return "null"; } if (value instanceof JSONString) { - Object object; + String object; try { object = ((JSONString) value).toJSONString(); } catch (Exception e) { throw new JSONException(e); } - if (object instanceof String) { - return (String) object; + if (object != null) { + return object; } throw new JSONException("Bad value from toJSONString: " + object); } if (value instanceof Number) { return numberToString((Number) value); } - if (value instanceof Boolean || value instanceof LOGJSONObject || - value instanceof JSONArray) { + if (value instanceof Boolean || value instanceof LOGJSONObject + || value instanceof JSONArray) { return value.toString(); } if (value instanceof Map) { @@ -1557,12 +1245,12 @@ public class LOGJSONObject { return NULL; } if (object instanceof LOGJSONObject || object instanceof JSONArray || - NULL.equals(object) || object instanceof JSONString || - object instanceof Byte || object instanceof Character || - object instanceof Short || object instanceof Integer || - object instanceof Long || object instanceof Boolean || - object instanceof Float || object instanceof Double || - object instanceof String) { + NULL.equals(object) || object instanceof JSONString || + object instanceof Byte || object instanceof Character || + object instanceof Short || object instanceof Integer || + object instanceof Long || object instanceof Boolean || + object instanceof Float || object instanceof Double || + object instanceof String) { return object; } @@ -1577,13 +1265,13 @@ public class LOGJSONObject { } Package objectPackage = object.getClass().getPackage(); String objectPackageName = objectPackage != null - ? objectPackage.getName() - : ""; + ? objectPackage.getName() + : ""; if ( - objectPackageName.startsWith("java.") || - objectPackageName.startsWith("javax.") || - object.getClass().getClassLoader() == null - ) { + objectPackageName.startsWith("java.") || + objectPackageName.startsWith("javax.") || + object.getClass().getClassLoader() == null + ) { return object.toString(); } return new LOGJSONObject(object); @@ -1593,24 +1281,8 @@ public class LOGJSONObject { } } - - /** - * Write the contents of the JSONObject as JSON text to a writer. - * For compactness, no whitespace is added. - *

- * Warning: This method assumes that the data structure is acyclical. - * - * @return The writer. - * @throws JSONException - */ - public Writer write(Writer writer) throws JSONException { - return this.write(writer, 0, 0); - } - - @SuppressWarnings("unchecked") - static final Writer writeValue(Writer writer, Object value, - int indentFactor, int indent) throws JSONException, IOException { + static Writer writeValue(Writer writer, Object value, int indentFactor, int indent) throws IOException { if (value == null) { writer.write("null"); } else if (value instanceof LOGJSONObject) { @@ -1620,8 +1292,7 @@ public class LOGJSONObject { } else if (value instanceof Map) { new LOGJSONObject((Map) value).write(writer, indentFactor, indent); } else if (value instanceof Collection) { - new JSONArray((Collection) value).write(writer, indentFactor, - indent); + new JSONArray((Collection) value).write(writer, indentFactor, indent); } else if (value.getClass().isArray()) { new JSONArray(value).write(writer, indentFactor, indent); } else if (value instanceof Number) { @@ -1642,7 +1313,7 @@ public class LOGJSONObject { return writer; } - static final void indent(Writer writer, int indent) throws IOException { + private static void indent(Writer writer, int indent) throws IOException { for (int i = 0; i < indent; i += 1) { writer.write(' '); } @@ -1658,7 +1329,7 @@ public class LOGJSONObject { * @throws JSONException */ Writer write(Writer writer, int indentFactor, int indent) - throws JSONException { + { try { boolean commanate = false; final int length = this.length(); @@ -1690,7 +1361,7 @@ public class LOGJSONObject { writer.write(' '); } writeValue(writer, this.map.get(key), indentFactor, - newindent); + newindent); commanate = true; } if (indentFactor > 0) {