activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From andytay...@apache.org
Subject [25/51] [abbrv] [partial] activemq-6 git commit: ACTIVEMQ6-4 - Rename packages to ActiveMQ
Date Tue, 11 Nov 2014 18:41:55 GMT
http://git-wip-us.apache.org/repos/asf/activemq-6/blob/23e8edd9/activemq6-core-client/src/main/java/org/apache/activemq6/utils/json/JSONArray.java
----------------------------------------------------------------------
diff --git a/activemq6-core-client/src/main/java/org/apache/activemq6/utils/json/JSONArray.java
b/activemq6-core-client/src/main/java/org/apache/activemq6/utils/json/JSONArray.java
new file mode 100644
index 0000000..982570f
--- /dev/null
+++ b/activemq6-core-client/src/main/java/org/apache/activemq6/utils/json/JSONArray.java
@@ -0,0 +1,1034 @@
+/*
+ * Copyright 2005-2014 Red Hat, Inc.
+ * Red Hat licenses this file to you 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.
+ */
+/*
+Copyright (c) 2002 JSON.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+The Software shall be used for Good, not Evil.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+package org.apache.activemq6.utils.json;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * A JSONArray is an ordered sequence of values. Its external text form is a
+ * string wrapped in square brackets with commas separating the values. The
+ * internal form is an object having <code>get</code> and <code>opt</code>
+ * methods for accessing the values by index, and <code>put</code> methods for
+ * adding or replacing values. The values can be any of these types:
+ * <code>Boolean</code>, <code>JSONArray</code>, <code>JSONObject</code>,
+ * <code>Number</code>, {@code string}, or the
+ * <code>JSONObject.NULL object</code>.
+ * <p>
+ * The constructor can convert a JSON text into a Java object. The
+ * <code>toString</code> method converts to JSON text.
+ * <p>
+ * 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 texts produced by the <code>toString</code> methods strictly conform to
+ * JSON syntax rules. The constructors are more forgiving in the texts they will
+ * accept:
+ * <ul>
+ * <li>An extra <code>,</code>&nbsp;<small>(comma)</small>
may appear just
+ *     before the closing bracket.</li>
+ * <li>The {@code null} value will be inserted when there
+ *     is <code>,</code>&nbsp;<small>(comma)</small> elision.</li>
+ * <li>Strings may be quoted with <code>'</code>&nbsp;<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}.</li>
+ * <li>Values can be separated 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-04-13
+ */
+public class JSONArray
+{
+
+   /**
+    * The arrayList where the JSONArray's properties are kept.
+    */
+   private final ArrayList<Object> myArrayList;
+
+   /**
+    * Construct an empty JSONArray.
+    */
+   public JSONArray()
+   {
+      myArrayList = new ArrayList<Object>();
+   }
+
+   /**
+    * Construct a JSONArray from a JSONTokener.
+    * @param x A JSONTokener
+    * @throws JSONException If there is a syntax error.
+    */
+   public JSONArray(final JSONTokener x) throws JSONException
+   {
+      this();
+      char c = x.nextClean();
+      char q;
+      if (c == '[')
+      {
+         q = ']';
+      }
+      else if (c == '(')
+      {
+         q = ')';
+      }
+      else
+      {
+         throw x.syntaxError("A JSONArray text must start with '['");
+      }
+      if (x.nextClean() == ']')
+      {
+         return;
+      }
+      x.back();
+      for (;;)
+      {
+         if (x.nextClean() == ',')
+         {
+            x.back();
+            myArrayList.add(null);
+         }
+         else
+         {
+            x.back();
+            myArrayList.add(x.nextValue());
+         }
+         c = x.nextClean();
+         switch (c)
+         {
+            case ';':
+            case ',':
+               if (x.nextClean() == ']')
+               {
+                  return;
+               }
+               x.back();
+               break;
+            case ']':
+            case ')':
+               if (q != c)
+               {
+                  throw x.syntaxError("Expected a '" + Character.valueOf(q) + "'");
+               }
+               return;
+            default:
+               throw x.syntaxError("Expected a ',' or ']'");
+         }
+      }
+   }
+
+   /**
+    * Construct a JSONArray from a source JSON text.
+    * @param source     A string that begins with
+    * <code>[</code>&nbsp;<small>(left bracket)</small>
+    *  and ends with <code>]</code>&nbsp;<small>(right bracket)</small>.
+    *  @throws JSONException If there is a syntax error.
+    */
+   public JSONArray(final String source) throws JSONException
+   {
+      this(new JSONTokener(source));
+   }
+
+   /**
+    * Construct a JSONArray from a Collection.
+    * @param collection     A Collection.
+    */
+   public JSONArray(final Collection collection)
+   {
+      myArrayList = collection == null ? new ArrayList<Object>() : new ArrayList<Object>(collection);
+   }
+
+   /**
+    * Construct a JSONArray from a collection of beans.
+    * The collection should have Java Beans.
+    */
+   public JSONArray(final Collection collection, final boolean includeSuperClass)
+   {
+      myArrayList = collection == null ? new ArrayList<Object>() : new ArrayList<Object>(collection.size());
+      if (collection != null)
+      {
+         Iterator<Object> iter = collection.iterator();
+         while (iter.hasNext())
+         {
+            Object o = iter.next();
+            if (o instanceof Map<?, ?>)
+            {
+               myArrayList.add(new JSONObject((Map<?, ?>)o, includeSuperClass));
+            }
+            else if (!JSONObject.isStandardProperty(o.getClass()))
+            {
+               myArrayList.add(new JSONObject(o, includeSuperClass));
+            }
+            else
+            {
+               myArrayList.add(o);
+            }
+         }
+      }
+   }
+
+   /**
+    * Construct a JSONArray from an array
+    * @throws JSONException If not an array.
+    */
+   public JSONArray(final Object array) throws JSONException
+   {
+      this();
+      if (array.getClass().isArray())
+      {
+         int length = Array.getLength(array);
+         for (int i = 0; i < length; i += 1)
+         {
+            this.put(Array.get(array, i));
+         }
+      }
+      else
+      {
+         throw new JSONException("JSONArray initial value should be a string or collection
or array.");
+      }
+   }
+
+   /**
+    * Construct a JSONArray from an array with a bean.
+    * The array should have Java Beans.
+    *
+    * @throws JSONException If not an array.
+    */
+   public JSONArray(final Object array, final boolean includeSuperClass) throws JSONException
+   {
+      this();
+      if (array.getClass().isArray())
+      {
+         int length = Array.getLength(array);
+         for (int i = 0; i < length; i += 1)
+         {
+            Object o = Array.get(array, i);
+            if (JSONObject.isStandardProperty(o.getClass()))
+            {
+               myArrayList.add(o);
+            }
+            else
+            {
+               myArrayList.add(new JSONObject(o, includeSuperClass));
+            }
+         }
+      }
+      else
+      {
+         throw new JSONException("JSONArray initial value should be a string or collection
or array.");
+      }
+   }
+
+   /**
+    * Get the object value associated with an index.
+    * @param index
+    *  The index must be between 0 and length() - 1.
+    * @return An object value.
+    * @throws JSONException If there is no value for the index.
+    */
+   public Object get(final int index) throws JSONException
+   {
+      Object o = opt(index);
+      if (o == null)
+      {
+         throw new JSONException("JSONArray[" + index + "] not found.");
+      }
+      return o;
+   }
+
+   /**
+    * Get the boolean value associated with an index.
+    * The string values "true" and "false" are converted to boolean.
+    *
+    * @param index The index must be between 0 and length() - 1.
+    * @return      The truth.
+    * @throws JSONException If there is no value for the index or if the
+    *  value is not convertable to boolean.
+    */
+   public boolean getBoolean(final int index) throws JSONException
+   {
+      Object o = get(index);
+      if (o.equals(Boolean.FALSE) || o instanceof String && ((String)o).equalsIgnoreCase("false"))
+      {
+         return false;
+      }
+      else if (o.equals(Boolean.TRUE) || o instanceof String && ((String)o).equalsIgnoreCase("true"))
+      {
+         return true;
+      }
+      throw new JSONException("JSONArray[" + index + "] is not a Boolean.");
+   }
+
+   /**
+    * Get the double value associated with an index.
+    *
+    * @param index The index must be between 0 and length() - 1.
+    * @return      The value.
+    * @throws   JSONException If the key is not found or if the value cannot
+    *  be converted to a number.
+    */
+   public double getDouble(final int index) throws JSONException
+   {
+      Object o = get(index);
+      try
+      {
+         return o instanceof Number ? ((Number)o).doubleValue() : Double.valueOf((String)o).doubleValue();
+      }
+      catch (Exception e)
+      {
+         throw new JSONException("JSONArray[" + index + "] is not a number.");
+      }
+   }
+
+   /**
+    * Get the int value associated with an index.
+    *
+    * @param index The index must be between 0 and length() - 1.
+    * @return      The value.
+    * @throws   JSONException If the key is not found or if the value cannot
+    *  be converted to a number.
+    *  if the value cannot be converted to a number.
+    */
+   public int getInt(final int index) throws JSONException
+   {
+      Object o = get(index);
+      return o instanceof Number ? ((Number)o).intValue() : (int)getDouble(index);
+   }
+
+   /**
+    * Get the JSONArray associated with an index.
+    * @param index The index must be between 0 and length() - 1.
+    * @return      A JSONArray value.
+    * @throws JSONException If there is no value for the index. or if the
+    * value is not a JSONArray
+    */
+   public JSONArray getJSONArray(final int index) throws JSONException
+   {
+      Object o = get(index);
+      if (o instanceof JSONArray)
+      {
+         return (JSONArray)o;
+      }
+      throw new JSONException("JSONArray[" + index + "] is not a JSONArray.");
+   }
+
+   /**
+    * Get the JSONObject associated with an index.
+    * @param index subscript
+    * @return      A JSONObject value.
+    * @throws JSONException If there is no value for the index or if the
+    * value is not a JSONObject
+    */
+   public JSONObject getJSONObject(final int index) throws JSONException
+   {
+      Object o = get(index);
+      if (o instanceof JSONObject)
+      {
+         return (JSONObject)o;
+      }
+      throw new JSONException("JSONArray[" + index + "] is not a JSONObject.");
+   }
+
+   /**
+    * Get the long value associated with an index.
+    *
+    * @param index The index must be between 0 and length() - 1.
+    * @return      The value.
+    * @throws   JSONException If the key is not found or if the value cannot
+    *  be converted to a number.
+    */
+   public long getLong(final int index) throws JSONException
+   {
+      Object o = get(index);
+      return o instanceof Number ? ((Number)o).longValue() : (long)getDouble(index);
+   }
+
+   /**
+    * Get the string associated with an index.
+    * @param index The index must be between 0 and length() - 1.
+    * @return      A string value.
+    * @throws JSONException If there is no value for the index.
+    */
+   public String getString(final int index) throws JSONException
+   {
+      return get(index).toString();
+   }
+
+   /**
+    * Determine if the value is null.
+    * @param index The index must be between 0 and length() - 1.
+    * @return true if the value at the index is null, or if there is no value.
+    */
+   public boolean isNull(final int index)
+   {
+      return JSONObject.NULL.equals(opt(index));
+   }
+
+   /**
+    * Make a string from the contents of this JSONArray. The
+    * <code>separator</code> string is inserted between each element.
+    * Warning: This method assumes that the data structure is acyclical.
+    * @param separator A string that will be inserted between the elements.
+    * @return a string.
+    * @throws JSONException If the array contains an invalid number.
+    */
+   public String join(final String separator) throws JSONException
+   {
+      int len = length();
+      StringBuffer sb = new StringBuffer();
+
+      for (int i = 0; i < len; i += 1)
+      {
+         if (i > 0)
+         {
+            sb.append(separator);
+         }
+         sb.append(JSONObject.valueToString(myArrayList.get(i)));
+      }
+      return sb.toString();
+   }
+
+   /**
+    * Get the number of elements in the JSONArray, included nulls.
+    *
+    * @return The length (or size).
+    */
+   public int length()
+   {
+      return myArrayList.size();
+   }
+
+   /**
+    * Get the optional object value associated with an index.
+    * @param index The index must be between 0 and length() - 1.
+    * @return      An object value, or null if there is no
+    *              object at that index.
+    */
+   public Object opt(final int index)
+   {
+      return index < 0 || index >= length() ? null : myArrayList.get(index);
+   }
+
+   /**
+    * Get the optional boolean value associated with an index.
+    * It returns false if there is no value at that index,
+    * or if the value is not Boolean.TRUE or the String "true".
+    *
+    * @param index The index must be between 0 and length() - 1.
+    * @return      The truth.
+    */
+   public boolean optBoolean(final int index)
+   {
+      return optBoolean(index, false);
+   }
+
+   /**
+    * Get the optional boolean value associated with an index.
+    * It returns the defaultValue if there is no value at that index or if
+    * it is not a Boolean or the String "true" or "false" (case insensitive).
+    *
+    * @param index The index must be between 0 and length() - 1.
+    * @param defaultValue     A boolean default.
+    * @return      The truth.
+    */
+   public boolean optBoolean(final int index, final boolean defaultValue)
+   {
+      try
+      {
+         return getBoolean(index);
+      }
+      catch (Exception e)
+      {
+         return defaultValue;
+      }
+   }
+
+   /**
+    * Get the optional double value associated with an index.
+    * NaN is returned if there is no value for the index,
+    * or if the value is not a number and cannot be converted to a number.
+    *
+    * @param index The index must be between 0 and length() - 1.
+    * @return      The value.
+    */
+   public double optDouble(final int index)
+   {
+      return optDouble(index, Double.NaN);
+   }
+
+   /**
+    * Get the optional double value associated with an index.
+    * The defaultValue is returned if there is no value for the index,
+    * or if the value is not a number and cannot be converted to a number.
+    *
+    * @param index subscript
+    * @param defaultValue     The default value.
+    * @return      The value.
+    */
+   public double optDouble(final int index, final double defaultValue)
+   {
+      try
+      {
+         return getDouble(index);
+      }
+      catch (Exception e)
+      {
+         return defaultValue;
+      }
+   }
+
+   /**
+    * Get the optional int value associated with an index.
+    * Zero is returned if there is no value for the index,
+    * or if the value is not a number and cannot be converted to a number.
+    *
+    * @param index The index must be between 0 and length() - 1.
+    * @return      The value.
+    */
+   public int optInt(final int index)
+   {
+      return optInt(index, 0);
+   }
+
+   /**
+    * Get the optional int value associated with an index.
+    * The defaultValue is returned if there is no value for the index,
+    * or if the value is not a number and cannot be converted to a number.
+    * @param index The index must be between 0 and length() - 1.
+    * @param defaultValue     The default value.
+    * @return      The value.
+    */
+   public int optInt(final int index, final int defaultValue)
+   {
+      try
+      {
+         return getInt(index);
+      }
+      catch (Exception e)
+      {
+         return defaultValue;
+      }
+   }
+
+   /**
+    * Get the optional JSONArray associated with an index.
+    * @param index subscript
+    * @return      A JSONArray value, or null if the index has no value,
+    * or if the value is not a JSONArray.
+    */
+   public JSONArray optJSONArray(final int index)
+   {
+      Object o = opt(index);
+      return o instanceof JSONArray ? (JSONArray)o : null;
+   }
+
+   /**
+    * Get the optional JSONObject associated with an index.
+    * Null is returned if the key is not found, or null if the index has
+    * no value, or if the value is not a JSONObject.
+    *
+    * @param index The index must be between 0 and length() - 1.
+    * @return      A JSONObject value.
+    */
+   public JSONObject optJSONObject(final int index)
+   {
+      Object o = opt(index);
+      return o instanceof JSONObject ? (JSONObject)o : null;
+   }
+
+   /**
+    * Get the optional long value associated with an index.
+    * Zero is returned if there is no value for the index,
+    * or if the value is not a number and cannot be converted to a number.
+    *
+    * @param index The index must be between 0 and length() - 1.
+    * @return      The value.
+    */
+   public long optLong(final int index)
+   {
+      return optLong(index, 0);
+   }
+
+   /**
+    * Get the optional long value associated with an index.
+    * The defaultValue is returned if there is no value for the index,
+    * or if the value is not a number and cannot be converted to a number.
+    * @param index The index must be between 0 and length() - 1.
+    * @param defaultValue     The default value.
+    * @return      The value.
+    */
+   public long optLong(final int index, final long defaultValue)
+   {
+      try
+      {
+         return getLong(index);
+      }
+      catch (Exception e)
+      {
+         return defaultValue;
+      }
+   }
+
+   /**
+    * Get the optional string value associated with an index. It returns an
+    * empty string if there is no value at that index. If the value
+    * is not a string and is not null, then it is converted to a string.
+    *
+    * @param index The index must be between 0 and length() - 1.
+    * @return      A String value.
+    */
+   public String optString(final int index)
+   {
+      return optString(index, "");
+   }
+
+   /**
+    * Get the optional string associated with an index.
+    * The defaultValue is returned if the key is not found.
+    *
+    * @param index The index must be between 0 and length() - 1.
+    * @param defaultValue     The default value.
+    * @return      A String value.
+    */
+   public String optString(final int index, final String defaultValue)
+   {
+      Object o = opt(index);
+      return o != null ? o.toString() : defaultValue;
+   }
+
+   /**
+    * Append a boolean value. This increases the array's length by one.
+    *
+    * @param value A boolean value.
+    * @return this.
+    */
+   public JSONArray put(final boolean value)
+   {
+      put(value ? Boolean.TRUE : Boolean.FALSE);
+      return this;
+   }
+
+   /**
+    * Put a value in the JSONArray, where the value will be a
+    * JSONArray which is produced from a Collection.
+    * @param value A Collection value.
+    * @return      this.
+    */
+   public JSONArray put(final Collection value)
+   {
+      put(new JSONArray(value));
+      return this;
+   }
+
+   /**
+    * Append a double value. This increases the array's length by one.
+    *
+    * @param value A double value.
+    * @throws JSONException if the value is not finite.
+    * @return this.
+    */
+   public JSONArray put(final double value) throws JSONException
+   {
+      Double d = new Double(value);
+      JSONObject.testValidity(d);
+      put(d);
+      return this;
+   }
+
+   /**
+    * Append an int value. This increases the array's length by one.
+    *
+    * @param value An int value.
+    * @return this.
+    */
+   public JSONArray put(final int value)
+   {
+      put(Integer.valueOf(value));
+      return this;
+   }
+
+   /**
+    * Append an long value. This increases the array's length by one.
+    *
+    * @param value A long value.
+    * @return this.
+    */
+   public JSONArray put(final long value)
+   {
+      put(Long.valueOf(value));
+      return this;
+   }
+
+   /**
+    * Put a value in the JSONArray, where the value will be a
+    * JSONObject which is produced from a Map.
+    * @param value A Map value.
+    * @return      this.
+    */
+   public JSONArray put(final Map value)
+   {
+      put(new JSONObject(value));
+      return this;
+   }
+
+   /**
+    * Append an object value. This increases the array's length by one.
+    * @param value An object value.  The value should be a
+    *  Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the
+    *  JSONObject.NULL object.
+    * @return this.
+    */
+   public JSONArray put(final Object value)
+   {
+      myArrayList.add(value);
+      return this;
+   }
+
+   /**
+    * Put or replace a boolean value in the JSONArray. If the index is greater
+    * than the length of the JSONArray, then null elements will be added as
+    * necessary to pad it out.
+    * @param index The subscript.
+    * @param value A boolean value.
+    * @return this.
+    * @throws JSONException If the index is negative.
+    */
+   public JSONArray put(final int index, final boolean value) throws JSONException
+   {
+      put(index, value ? Boolean.TRUE : Boolean.FALSE);
+      return this;
+   }
+
+   /**
+    * Put a value in the JSONArray, where the value will be a
+    * JSONArray which is produced from a Collection.
+    * @param index The subscript.
+    * @param value A Collection value.
+    * @return      this.
+    * @throws JSONException If the index is negative or if the value is
+    * not finite.
+    */
+   public JSONArray put(final int index, final Collection value) throws JSONException
+   {
+      put(index, new JSONArray(value));
+      return this;
+   }
+
+   /**
+    * Put or replace a double value. If the index is greater than the length of
+    *  the JSONArray, then null elements will be added as necessary to pad
+    *  it out.
+    * @param index The subscript.
+    * @param value A double value.
+    * @return this.
+    * @throws JSONException If the index is negative or if the value is
+    * not finite.
+    */
+   public JSONArray put(final int index, final double value) throws JSONException
+   {
+      put(index, new Double(value));
+      return this;
+   }
+
+   /**
+    * Put or replace an int value. If the index is greater than the length of
+    *  the JSONArray, then null elements will be added as necessary to pad
+    *  it out.
+    * @param index The subscript.
+    * @param value An int value.
+    * @return this.
+    * @throws JSONException If the index is negative.
+    */
+   public JSONArray put(final int index, final int value) throws JSONException
+   {
+      put(index, Integer.valueOf(value));
+      return this;
+   }
+
+   /**
+    * Put or replace a long value. If the index is greater than the length of
+    *  the JSONArray, then null elements will be added as necessary to pad
+    *  it out.
+    * @param index The subscript.
+    * @param value A long value.
+    * @return this.
+    * @throws JSONException If the index is negative.
+    */
+   public JSONArray put(final int index, final long value) throws JSONException
+   {
+      put(index, Long.valueOf(value));
+      return this;
+   }
+
+   /**
+    * Put a value in the JSONArray, where the value will be a
+    * JSONObject which is produced from a Map.
+    * @param index The subscript.
+    * @param value The Map value.
+    * @return      this.
+    * @throws JSONException If the index is negative or if the the value is
+    *  an invalid number.
+    */
+   public JSONArray put(final int index, final Map value) throws JSONException
+   {
+      put(index, new JSONObject(value));
+      return this;
+   }
+
+   /**
+    * Put or replace an object value in the JSONArray. If the index is greater
+    *  than the length of the JSONArray, then null elements will be added as
+    *  necessary to pad it out.
+    * @param index The subscript.
+    * @param value The value to put into the array. The value should be a
+    *  Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the
+    *  JSONObject.NULL object.
+    * @return this.
+    * @throws JSONException If the index is negative or if the the value is
+    *  an invalid number.
+    */
+   public JSONArray put(final int index, final Object value) throws JSONException
+   {
+      JSONObject.testValidity(value);
+      if (index < 0)
+      {
+         throw new JSONException("JSONArray[" + index + "] not found.");
+      }
+      if (index < length())
+      {
+         myArrayList.set(index, value);
+      }
+      else
+      {
+         while (index != length())
+         {
+            put(JSONObject.NULL);
+         }
+         put(value);
+      }
+      return this;
+   }
+
+   /**
+    * Remove a index and close the hole.
+    * @param index The index of the element to be removed.
+    * @return The value that was associated with the index,
+    * or null if there was no value.
+    */
+   public Object remove(final int index)
+   {
+      Object o = opt(index);
+      myArrayList.remove(index);
+      return o;
+   }
+
+   /**
+    * Produce a JSONObject by combining a JSONArray of names with the values
+    * of this JSONArray.
+    * @param names A JSONArray containing a list of key strings. These will be
+    * paired with the values.
+    * @return A JSONObject, or null if there are no names or if this JSONArray
+    * has no values.
+    * @throws JSONException If any of the names are null.
+    */
+   public JSONObject toJSONObject(final JSONArray names) throws JSONException
+   {
+      if (names == null || names.length() == 0 || length() == 0)
+      {
+         return null;
+      }
+      JSONObject jo = new JSONObject();
+      for (int i = 0; i < names.length(); i += 1)
+      {
+         jo.put(names.getString(i), opt(i));
+      }
+      return jo;
+   }
+
+   /**
+    * Make a JSON text of this JSONArray. For compactness, no
+    * unnecessary whitespace is added. If it is not possible to produce a
+    * syntactically correct JSON text then null will be returned instead. This
+    * could occur if the array contains an invalid number.
+    * <p>
+    * Warning: This method assumes that the data structure is acyclical.
+    *
+    * @return a printable, displayable, transmittable
+    *  representation of the array.
+    */
+   @Override
+   public String toString()
+   {
+      try
+      {
+         return '[' + join(",") + ']';
+      }
+      catch (Exception e)
+      {
+         return "";
+      }
+   }
+
+   /**
+    * Make a pretty-printed JSON text of this JSONArray. Warning: This method assumes that
the data
+    * structure is acyclical.
+    * @param indentFactor The number of spaces to add to each level of indentation.
+    * @return a printable, displayable, transmittable representation of the object, beginning
with
+    *         <code>[</code>&nbsp;<small>(left bracket)</small>
and ending with <code>]</code>
+    *         &nbsp;<small>(right bracket)</small>.
+    * @throws JSONException
+    */
+   public String toString(final int indentFactor) throws JSONException
+   {
+      return toString(indentFactor, 0);
+   }
+
+   /**
+    * Make a pretty-printed JSON text of this JSONArray. Warning: This method assumes that
the data
+    * structure is acyclical.
+    * @param indentFactor The number of spaces to add to each level of indentation.
+    * @param indent The indention of the top level.
+    * @return a printable, displayable, transmittable representation of the array.
+    * @throws JSONException
+    */
+   String toString(final int indentFactor, final int indent) throws JSONException
+   {
+      int len = length();
+      if (len == 0)
+      {
+         return "[]";
+      }
+      int i;
+      StringBuffer sb = new StringBuffer("[");
+      if (len == 1)
+      {
+         sb.append(JSONObject.valueToString(myArrayList.get(0), indentFactor, indent));
+      }
+      else
+      {
+         int newindent = indent + indentFactor;
+         sb.append('\n');
+         for (i = 0; i < len; i += 1)
+         {
+            if (i > 0)
+            {
+               sb.append(",\n");
+            }
+            for (int j = 0; j < newindent; j += 1)
+            {
+               sb.append(' ');
+            }
+            sb.append(JSONObject.valueToString(myArrayList.get(i), indentFactor, newindent));
+         }
+         sb.append('\n');
+         for (i = 0; i < indent; i += 1)
+         {
+            sb.append(' ');
+         }
+      }
+      sb.append(']');
+      return sb.toString();
+   }
+
+   /**
+    * Write the contents of the JSONArray as JSON text to a writer.
+    * For compactness, no whitespace is added.
+    * <p>
+    * Warning: This method assumes that the data structure is acyclical.
+    *
+    * @return The writer.
+    * @throws JSONException
+    */
+   public Writer write(final Writer writer) throws JSONException
+   {
+      try
+      {
+         boolean b = false;
+         int len = length();
+
+         writer.write('[');
+
+         for (int i = 0; i < len; i += 1)
+         {
+            if (b)
+            {
+               writer.write(',');
+            }
+            Object v = myArrayList.get(i);
+            if (v instanceof JSONObject)
+            {
+               ((JSONObject)v).write(writer);
+            }
+            else if (v instanceof JSONArray)
+            {
+               ((JSONArray)v).write(writer);
+            }
+            else
+            {
+               writer.write(JSONObject.valueToString(v));
+            }
+            b = true;
+         }
+         writer.write(']');
+         return writer;
+      }
+      catch (IOException e)
+      {
+         throw new JSONException(e);
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/23e8edd9/activemq6-core-client/src/main/java/org/apache/activemq6/utils/json/JSONException.java
----------------------------------------------------------------------
diff --git a/activemq6-core-client/src/main/java/org/apache/activemq6/utils/json/JSONException.java
b/activemq6-core-client/src/main/java/org/apache/activemq6/utils/json/JSONException.java
new file mode 100644
index 0000000..f1b47c9
--- /dev/null
+++ b/activemq6-core-client/src/main/java/org/apache/activemq6/utils/json/JSONException.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2005-2014 Red Hat, Inc.
+ * Red Hat licenses this file to you 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.
+ */
+/*
+Copyright (c) 2002 JSON.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+The Software shall be used for Good, not Evil.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+package org.apache.activemq6.utils.json;
+
+/**
+ * The JSONException is thrown by the JSON.org classes then things are amiss.
+ * @author JSON.org
+ * @version 2008-09-18
+ */
+public class JSONException extends Exception
+{
+   /**
+   *
+   */
+   private static final long serialVersionUID = -3940674325153571604L;
+
+   private Throwable cause;
+
+   /**
+    * Constructs a JSONException with an explanatory message.
+    * @param message Detail about the reason for the exception.
+    */
+   public JSONException(final String message)
+   {
+      super(message);
+   }
+
+   public JSONException(final Throwable t)
+   {
+      super(t.getMessage());
+      cause = t;
+   }
+
+   @Override
+   public synchronized Throwable getCause()
+   {
+      return cause;
+   }
+}


Mime
View raw message