Author: borges
Date: 2012-01-06 07:10:51 -0500 (Fri, 06 Jan 2012)
New Revision: 11984
Modified:
trunk/hornetq-core/src/main/java/org/hornetq/utils/json/JSONObject.java
Log:
Don't rely on JSONObject.NULL's violation of Object.equals(null) contract for the
String representation.
Modified: trunk/hornetq-core/src/main/java/org/hornetq/utils/json/JSONObject.java
===================================================================
--- trunk/hornetq-core/src/main/java/org/hornetq/utils/json/JSONObject.java 2012-01-06
12:10:36 UTC (rev 11983)
+++ trunk/hornetq-core/src/main/java/org/hornetq/utils/json/JSONObject.java 2012-01-06
12:10:51 UTC (rev 11984)
@@ -36,52 +36,49 @@
import java.util.TreeSet;
/**
- * A JSONObject is an unordered collection of name/value pairs. Its
- * external form is a string wrapped in curly braces with colons between the
- * names and values, and commas between the values and names. The internal form
- * is an object having <code>get</code> and <code>opt</code>
methods for
- * accessing the values by name, and <code>put</code> methods for adding or
- * replacing values by name. The values can be any of these types:
- * <code>Boolean</code>, <code>JSONArray</code>,
<code>JSONObject</code>,
- * <code>Number</code>, <code>String</code>, or the
<code>JSONObject.NULL</code>
- * object. A JSONObject constructor can be used to convert an external form
- * JSON text into an internal form whose values can be retrieved with the
- * <code>get</code> and <code>opt</code> methods, or to convert
values into a
- * JSON text using the <code>put</code> and <code>toString</code>
methods.
- * A <code>get</code> method returns a value if one can be found, and throws
an
- * exception if one cannot be found. An <code>opt</code> method returns a
- * default value instead of throwing an exception, and so is useful for
- * obtaining optional values.
+ * A JSONObject is an unordered collection of name/value pairs.
* <p>
- * The generic <code>get()</code> and <code>opt()</code> methods
return an
- * object, which you can cast or query for type. There are also typed
- * <code>get</code> and <code>opt</code> methods that do type
checking and type
- * coercion for you.
+ * Its external form is a string wrapped in curly braces with colons between the names
and values,
+ * and commas between the values and names. The internal form is an object having
<code>get</code>
+ * and <code>opt</code> methods for accessing the values by name, and
<code>put</code> methods for
+ * adding or replacing values by name.
* <p>
- * The <code>put</code> methods adds values to an object. For example,
<pre>
- * myString = new JSONObject().put("JSON", "Hello,
World!").toString();</pre>
+ * The values can be any of these types: <code>Boolean</code>,
<code>JSONArray</code>,
+ * <code>JSONObject</code>, <code>Number</code>,
<code>String</code>, or the
+ * <code>JSONObject.NULL</code> object. A JSONObject constructor can be used
to convert an external
+ * form JSON text into an internal form whose values can be retrieved with the
<code>get</code> and
+ * <code>opt</code> methods, or to convert values into a JSON text using the
<code>put</code> and
+ * <code>toString</code> methods. A <code>get</code> method
returns a value if one can be found, and
+ * throws an exception if one cannot be found. An <code>opt</code> method
returns a default value
+ * instead of throwing an exception, and so is useful for obtaining optional values.
+ * <p>
+ * The generic <code>get()</code> and <code>opt()</code> methods
return an object, which you can
+ * cast or query for type. There are also typed <code>get</code> and
<code>opt</code> methods that
+ * do type checking and type coercion for you.
+ * <p>
+ * The <code>put</code> methods adds values to an object. For example,
+ *
+ * <pre>
+ * myString = new JSONObject().put("JSON", "Hello,
World!").toString();
+ * </pre>
+ *
* produces the string <code>{"JSON": "Hello,
World"}</code>.
* <p>
- * The texts produced by the <code>toString</code> methods strictly conform
to
- * the JSON syntax rules.
- * The constructors are more forgiving in the texts they will accept:
+ * The texts produced by the <code>toString</code> methods strictly conform
to the JSON syntax
+ * rules. The constructors are more forgiving in the texts they will accept:
* <ul>
- * <li>An extra
<code>,</code> <small>(comma)</small> may appear just
- * before the closing brace.</li>
- * <li>Strings may be quoted with
<code>'</code> <small>(single
- * quote)</small>.</li>
- * <li>Strings do not need to be quoted at all if they do not begin with a quote
- * or single quote, and if they do not contain leading or trailing spaces,
- * and if they do not contain any of these characters:
- * <code>{ } [ ] / \ : , = ; #</code> and if they do not look like
numbers
- * and if they are not the reserved words <code>true</code>,
- * <code>false</code>, or <code>null</code>.</li>
- * <li>Keys can be followed by <code>=</code> or
<code>=></code> as well as
- * by <code>:</code>.</li>
- * <li>Values can be followed by <code>;</code>
<small>(semicolon)</small> as
- * well as by <code>,</code>
<small>(comma)</small>.</li>
- * <li>Numbers may have the <code>0-</code>
<small>(octal)</small> or
- * <code>0x-</code> <small>(hex)</small> prefix.</li>
+ * <li>An extra
<code>,</code> <small>(comma)</small> may appear just
before the closing brace.
+ * </li>
+ * <li>Strings may be quoted with
<code>'</code> <small>(single
quote)</small>.</li>
+ * <li>Strings do not need to be quoted at all if they do not begin with a quote or
single quote,
+ * and if they do not contain leading or trailing spaces, and if they do not contain any
of these
+ * characters: <code>{ } [ ] / \ : , = ; #</code> and if they do not look
like numbers and if they
+ * are not the reserved words <code>true</code>,
<code>false</code>, or <code>null</code>.</li>
+ * <li>Keys can be followed by <code>=</code> or
<code>=></code> as well as by <code>:</code>.</li>
+ * <li>Values can be followed by <code>;</code>
<small>(semicolon)</small> as well as by
+ * <code>,</code> <small>(comma)</small>.</li>
+ * <li>Numbers may have the <code>0-</code>
<small>(octal)</small> or <code>0x-</code>
+ * <small>(hex)</small> prefix.</li>
* </ul>
* @author
JSON.org
* @version 2009-03-06
@@ -1568,7 +1565,7 @@
*/
static String valueToString(final Object value) throws JSONException
{
- if (value == null || value.equals(null))
+ if (value == null || JSONObject.NULL == value)
{
return "null";
}
@@ -1628,7 +1625,7 @@
*/
static String valueToString(final Object value, final int indentFactor, final int
indent) throws JSONException
{
- if (value == null || value.equals(null))
+ if (value == null || JSONObject.NULL == value)
{
return "null";
}