You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by ni...@apache.org on 2015/04/17 18:05:33 UTC

[13/50] [abbrv] zest-qi4j git commit: QI-318 Removed org.json package from SPI, using dependency instead

QI-318 Removed org.json package from SPI, using dependency instead


Project: http://git-wip-us.apache.org/repos/asf/zest-qi4j/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-qi4j/commit/e428fa92
Tree: http://git-wip-us.apache.org/repos/asf/zest-qi4j/tree/e428fa92
Diff: http://git-wip-us.apache.org/repos/asf/zest-qi4j/diff/e428fa92

Branch: refs/heads/master
Commit: e428fa925871c5568527968c41e59dd00f2692ab
Parents: f875d7c
Author: Paul Merlin <pa...@nosphere.org>
Authored: Wed Feb 13 00:32:50 2013 +0100
Committer: Paul Merlin <pa...@nosphere.org>
Committed: Wed Feb 13 00:32:50 2013 +0100

----------------------------------------------------------------------
 .../org/qi4j/runtime/mixin/JDKMixinTest.java    |   38 +-
 core/spi/build.gradle                           |    1 +
 core/spi/src/main/java/org/json/JSONArray.java  | 1195 -----------
 .../src/main/java/org/json/JSONException.java   |   45 -
 core/spi/src/main/java/org/json/JSONObject.java | 1904 ------------------
 core/spi/src/main/java/org/json/JSONString.java |   34 -
 .../src/main/java/org/json/JSONStringer.java    |   95 -
 .../spi/src/main/java/org/json/JSONTokener.java |  501 -----
 core/spi/src/main/java/org/json/JSONWriter.java |  429 ----
 core/spi/src/main/java/org/json/package.html    |    8 -
 .../helpers/JSONManyAssociationState.java       |   99 +-
 .../helpers/JSONManyAssociationStateTest.java   |  137 ++
 libraries.gradle                                |    4 +
 13 files changed, 233 insertions(+), 4257 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/e428fa92/core/runtime/src/test/java/org/qi4j/runtime/mixin/JDKMixinTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/qi4j/runtime/mixin/JDKMixinTest.java b/core/runtime/src/test/java/org/qi4j/runtime/mixin/JDKMixinTest.java
index 93799c2..f52a6c6 100644
--- a/core/runtime/src/test/java/org/qi4j/runtime/mixin/JDKMixinTest.java
+++ b/core/runtime/src/test/java/org/qi4j/runtime/mixin/JDKMixinTest.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright (c) 2012, Paul Merlin. All Rights Reserved.
+ *
+ * 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.qi4j.runtime.mixin;
 
 import java.lang.reflect.Method;
@@ -38,6 +53,7 @@ public class JDKMixinTest
 
     }
 
+    @SuppressWarnings( "serial" )
     public static class ExtendsJDKMixin
         extends HashMap<String, String>
         implements JSONSerializableMap
@@ -47,7 +63,8 @@ public class JDKMixinTest
         public JSONObject toJSON()
         {
             System.out.println( ">>>> Call ExtendsJDKMixin.toJSON()" );
-            return new JSONObject( this );
+            // Copy the Map before handing it to JSONObject so that the JSONObject do not use the Composite
+            return new JSONObject( new HashMap<String, String>( this ) );
         }
 
     }
@@ -63,7 +80,8 @@ public class JDKMixinTest
         public JSONObject toJSON()
         {
             System.out.println( ">>>> Call ComposeWithJDKMixin.toJSON()" );
-            return new JSONObject( map );
+            // Copy the Map before handing it to JSONObject so that the JSONObject do not use the Composite
+            return new JSONObject( new HashMap<String, String>( map ) );
         }
 
     }
@@ -85,8 +103,8 @@ public class JDKMixinTest
 
     private static final String EXTENDS_IDENTITY = ExtendsJDKMixin.class.getName();
     private static final String COMPOSE_IDENTITY = ComposeWithJDKMixin.class.getName();
-    private static final Specification<ServiceReference> EXTENDS_IDENTITY_SPEC = new ServiceIdentitySpec( EXTENDS_IDENTITY );
-    private static final Specification<ServiceReference> COMPOSE_IDENTITY_SPEC = new ServiceIdentitySpec( COMPOSE_IDENTITY );
+    private static final Specification<ServiceReference<?>> EXTENDS_IDENTITY_SPEC = new ServiceIdentitySpec( EXTENDS_IDENTITY );
+    private static final Specification<ServiceReference<?>> COMPOSE_IDENTITY_SPEC = new ServiceIdentitySpec( COMPOSE_IDENTITY );
     private static final List<String> CONCERN_RECORDS = new ArrayList<String>();
 
     @Before
@@ -122,8 +140,8 @@ public class JDKMixinTest
         assertThat( services.get( 0 ).identity(), equalTo( EXTENDS_IDENTITY ) );
 
         JSONSerializableMap extending = services.get( 0 ).get();
-        extending.put( "foo", "bar" );
-        JSONObject json = extending.toJSON();
+        extending.put( "foo", "bar" ); // Concern trigger #1 (put)
+        JSONObject json = extending.toJSON(); // Concern trigger #2, #3 and #4 (toJSON, size, entrySet)
 
         assertThat( json.length(), equalTo( 1 ) );
         assertThat( json.optString( "foo" ), equalTo( "bar" ) );
@@ -142,8 +160,8 @@ public class JDKMixinTest
         assertThat( services.get( 0 ).identity(), equalTo( COMPOSE_IDENTITY ) );
 
         JSONSerializableMap composing = services.get( 0 ).get();
-        composing.put( "foo", "bar" );
-        JSONObject json = composing.toJSON();
+        composing.put( "foo", "bar" ); // Concern trigger #1 (put)
+        JSONObject json = composing.toJSON(); // Concern trigger #2, #3 and #4 (toJSON, size, entrySet)
 
         assertThat( json.length(), equalTo( 1 ) );
         assertThat( json.optString( "foo" ), equalTo( "bar" ) );
@@ -152,7 +170,7 @@ public class JDKMixinTest
     }
 
     private static class ServiceIdentitySpec
-        implements Specification<ServiceReference>
+        implements Specification<ServiceReference<?>>
     {
 
         private final String identity;
@@ -163,7 +181,7 @@ public class JDKMixinTest
         }
 
         @Override
-        public boolean satisfiedBy( ServiceReference item )
+        public boolean satisfiedBy( ServiceReference<?> item )
         {
             return item.identity().equals( identity );
         }

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/e428fa92/core/spi/build.gradle
----------------------------------------------------------------------
diff --git a/core/spi/build.gradle b/core/spi/build.gradle
index 8b6b977..7288303 100644
--- a/core/spi/build.gradle
+++ b/core/spi/build.gradle
@@ -3,6 +3,7 @@ jar { manifest { name = "Qi4j Core SPI"}}
 dependencies {
 
     compile project( ':org.qi4j.core:org.qi4j.core.api' )
+    compile libraries.org_json
 
     testCompile project(":org.qi4j.core:org.qi4j.core.testsupport")
 

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/e428fa92/core/spi/src/main/java/org/json/JSONArray.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/json/JSONArray.java b/core/spi/src/main/java/org/json/JSONArray.java
deleted file mode 100644
index fc29154..0000000
--- a/core/spi/src/main/java/org/json/JSONArray.java
+++ /dev/null
@@ -1,1195 +0,0 @@
-package org.json;
-/*
-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.
-*/
-
-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</code>, 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</code> 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</code>.</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>
- */
-public final class JSONArray
-{
-
-    /**
-     * The arrayList where the JSONArray's properties are kept.
-     */
-    private ArrayList myArrayList;
-
-    /**
-     * Construct an empty JSONArray.
-     */
-    public JSONArray()
-    {
-        this.myArrayList = new ArrayList();
-    }
-
-    /**
-     * Construct a JSONArray from a JSONTokener.
-     *
-     * @param x A JSONTokener
-     *
-     * @throws JSONException If there is a syntax error.
-     */
-    public JSONArray( 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();
-                this.myArrayList.add( null );
-            }
-            else
-            {
-                x.back();
-                this.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( String source )
-        throws JSONException
-    {
-        this( new JSONTokener( source ) );
-    }
-
-    /**
-     * Construct a JSONArray from a Collection.
-     *
-     * @param collection A Collection.
-     */
-    public JSONArray( Collection collection )
-    {
-        this.myArrayList = ( collection == null ) ?
-                           new ArrayList() :
-                           new ArrayList( collection );
-    }
-
-    /**
-     * Construct a JSONArray from a collection of beans.
-     * The collection should have Java Beans.
-     *
-     * @throws JSONException If not an array.
-     */
-
-    public JSONArray( Collection collection, boolean includeSuperClass )
-    {
-        this.myArrayList = new ArrayList();
-        if( collection != null )
-        {
-            Iterator iter = collection.iterator();
-            ;
-            while( iter.hasNext() )
-            {
-                Object o = iter.next();
-                if( o instanceof Map )
-                {
-                    this.myArrayList.add( new JSONObject( (Map) o, includeSuperClass ) );
-                }
-                else if( !JSONObject.isStandardProperty( o.getClass() ) )
-                {
-                    this.myArrayList.add( new JSONObject( o, includeSuperClass ) );
-                }
-                else
-                {
-                    this.myArrayList.add( o );
-                }
-            }
-        }
-    }
-
-    /**
-     * Construct a JSONArray from an array
-     *
-     * @throws JSONException If not an array.
-     */
-    public JSONArray( 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( Object array, 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() ) )
-                {
-                    this.myArrayList.add( o );
-                }
-                else
-                {
-                    this.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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( this.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 this.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( int index )
-    {
-        return ( index < 0 || index >= length() ) ?
-               null : this.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( 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( int index, 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( 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( int index, 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( 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( int index, 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( 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( 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( 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( int index, 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 coverted to a string.
-     *
-     * @param index The index must be between 0 and length() - 1.
-     *
-     * @return A String value.
-     */
-    public String optString( 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( int index, 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( 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( 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.
-     *
-     * @return this.
-     *
-     * @throws JSONException if the value is not finite.
-     */
-    public JSONArray put( 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( 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( 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( 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( Object value )
-    {
-        this.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( int index, 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( int index, 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( int index, 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( int index, 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( int index, 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( int index, 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( int index, Object value )
-        throws JSONException
-    {
-        JSONObject.testValidity( value );
-        if( index < 0 )
-        {
-            throw new JSONException( "JSONArray[" + index + "] not found." );
-        }
-        if( index < length() )
-        {
-            this.myArrayList.set( index, value );
-        }
-        else
-        {
-            while( index != length() )
-            {
-                put( JSONObject.NULL );
-            }
-            put( value );
-        }
-        return this;
-    }
-
-    /**
-     * Insert 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 insert 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 insert( int index, Object value )
-        throws JSONException
-    {
-        JSONObject.testValidity( value );
-        if( index < 0 )
-        {
-            throw new JSONException( "JSONArray[" + index + "] not found." );
-        }
-        if( index < length() )
-        {
-            this.myArrayList.add( 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( int index )
-    {
-        Object o = opt( index );
-        this.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( 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 ), this.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.
-     */
-    public String toString()
-    {
-        try
-        {
-            return '[' + join( "," ) + ']';
-        }
-        catch( Exception e )
-        {
-            return null;
-        }
-    }
-
-    /**
-     * Make a prettyprinted 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( int indentFactor )
-        throws JSONException
-    {
-        return toString( indentFactor, 0 );
-    }
-
-    /**
-     * Make a prettyprinted 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( int indentFactor, int indent )
-        throws JSONException
-    {
-        int len = length();
-        if( len == 0 )
-        {
-            return "[]";
-        }
-        int i;
-        StringBuffer sb = new StringBuffer( "[" );
-        if( len == 1 )
-        {
-            sb.append( JSONObject.valueToString( this.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( this.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( 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 = this.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 );
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/e428fa92/core/spi/src/main/java/org/json/JSONException.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/json/JSONException.java b/core/spi/src/main/java/org/json/JSONException.java
deleted file mode 100644
index 41f2375..0000000
--- a/core/spi/src/main/java/org/json/JSONException.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2009, Rickard Öberg. All Rights Reserved.
- *
- * 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.json;
-
-/**
- * The JSONException is thrown by the JSON.org classes then things are amiss.
- */
-public class JSONException
-    extends Exception
-{
-    private Throwable cause;
-
-    /**
-     * Constructs a JSONException with an explanatory message.
-     *
-     * @param message Detail about the reason for the exception.
-     */
-    public JSONException( String message )
-    {
-        super( message );
-    }
-
-    public JSONException( Throwable t )
-    {
-        super( t.getMessage() );
-        this.cause = t;
-    }
-
-    public Throwable getCause()
-    {
-        return this.cause;
-    }
-}