You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@velocity.apache.org by cb...@apache.org on 2017/08/07 10:11:20 UTC
svn commit: r1804318 - in /velocity/tools/trunk/velocity-tools-generic:
pom.xml src/main/java/org/apache/velocity/tools/generic/JsonTool.java
src/test/java/org/apache/velocity/tools/generic/JsonToolTests.java
Author: cbrisson
Date: Mon Aug 7 10:11:20 2017
New Revision: 1804318
URL: http://svn.apache.org/viewvc?rev=1804318&view=rev
Log:
[tools] Switch JSON tool to org.json.simple
Modified:
velocity/tools/trunk/velocity-tools-generic/pom.xml
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/JsonTool.java
velocity/tools/trunk/velocity-tools-generic/src/test/java/org/apache/velocity/tools/generic/JsonToolTests.java
Modified: velocity/tools/trunk/velocity-tools-generic/pom.xml
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-generic/pom.xml?rev=1804318&r1=1804317&r2=1804318&view=diff
==============================================================================
--- velocity/tools/trunk/velocity-tools-generic/pom.xml (original)
+++ velocity/tools/trunk/velocity-tools-generic/pom.xml Mon Aug 7 10:11:20 2017
@@ -46,13 +46,17 @@
<configuration>
<artifactSet>
<includes>
- <include>org.json</include>
+ <include>com.googlecode.json-simple:json-simple</include>
</includes>
</artifactSet>
<relocations>
<relocation>
- <pattern>org.json</pattern>
- <shadedPattern>org.apache.velocity.tools.shaded.org.json</shadedPattern>
+ <pattern>org.json.simple</pattern>
+ <shadedPattern>org.apache.velocity.tools.shaded.org.json.simple</shadedPattern>
+ </relocation>
+ <relocation>
+ <pattern>org.json.simple.parser</pattern>
+ <shadedPattern>org.apache.velocity.tools.shaded.org.json.simple.parser</shadedPattern>
</relocation>
</relocations>
<minimizeJar>true</minimizeJar>
@@ -96,9 +100,9 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.json</groupId>
- <artifactId>json</artifactId>
- <version>20160810</version>
+ <groupId>com.googlecode.json-simple</groupId>
+ <artifactId>json-simple</artifactId>
+ <version>1.1.1</version>
</dependency>
</dependencies>
</project>
Modified: velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/JsonTool.java
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/JsonTool.java?rev=1804318&r1=1804317&r2=1804318&view=diff
==============================================================================
--- velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/JsonTool.java (original)
+++ velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/JsonTool.java Mon Aug 7 10:11:20 2017
@@ -30,9 +30,9 @@ import java.util.Set;
import org.apache.velocity.tools.ConversionUtils;
import org.apache.velocity.tools.XmlUtils;
-import org.json.JSONArray;
-import org.json.JSONObject;
-import org.json.JSONTokener;
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
import org.apache.velocity.tools.Scope;
import org.apache.velocity.tools.config.DefaultKey;
@@ -139,11 +139,11 @@ public class JsonTool extends ImportSupp
Object ret = null;
if (jsonArray != null)
{
- ret = wrapIfNeeded(jsonArray.opt(index));
+ ret = wrapIfNeeded(jsonArray.get(index));
}
else if (jsonObject != null)
{
- ret = wrapIfNeeded(jsonObject.opt(String.valueOf(index)));
+ ret = wrapIfNeeded(jsonObject.get(String.valueOf(index)));
}
return ret;
}
@@ -166,7 +166,7 @@ public class JsonTool extends ImportSupp
}
else if (jsonObject != null)
{
- ret = wrapIfNeeded(jsonObject.opt(key));
+ ret = wrapIfNeeded(jsonObject.get(key));
}
return ret;
}
@@ -177,7 +177,7 @@ public class JsonTool extends ImportSupp
*/
public Iterator<String> keys()
{
- return jsonObject == null ? null : jsonObject.keys();
+ return jsonObject == null ? null : jsonObject.keySet().iterator();
}
/**
@@ -198,7 +198,7 @@ public class JsonTool extends ImportSupp
{
if (jsonObject != null)
{
- return jsonObject.keys();
+ return jsonObject.keySet().iterator();
}
else if (jsonArray != null)
{
@@ -211,28 +211,9 @@ public class JsonTool extends ImportSupp
* Get size of root object or array.
* @return size
*/
- public int length()
+ public int size()
{
- return jsonObject == null ? jsonArray == null ? null : jsonArray.length() : jsonObject.length();
- }
-
- /**
- * Get array of root object keys.
- * @return array of keys
- */
- public JSONArray names()
- {
- return jsonObject == null ? null : jsonObject.names();
- }
-
- /**
- * Query root object or array using a JSON pointer
- * @param jsonPointer
- * @return result
- */
- public Object query(String jsonPointer)
- {
- return jsonObject == null ? jsonArray == null ? null : wrapIfNeeded(jsonArray.query(jsonPointer)) : wrapIfNeeded(jsonObject.query(jsonPointer));
+ return jsonObject == null ? jsonArray == null ? null : jsonArray.size() : jsonObject.size();
}
/**
@@ -260,8 +241,7 @@ public class JsonTool extends ImportSupp
importSupport.configure(config);
}
- private HybridJsonContainer root = null;
-
+ private HybridJsonContainer root = null;
/**
* Looks for the "file" parameter and automatically uses
@@ -311,65 +291,21 @@ public class JsonTool extends ImportSupp
{
try
{
- final int lookahead = 100;
-
- final int TYPE_UNKNOWN = 0;
- final int TYPE_OBJECT = 1;
- final int TYPE_ARRAY = 2;
-
- int jsonType = TYPE_UNKNOWN;
-
- if (!reader.markSupported())
- {
- reader = new BufferedReader(reader);
- }
- reader.mark(lookahead);
- char buffer[] = new char[lookahead];
- int read = reader.read(buffer);
- reader.reset();
- for (int i = 0; i < read; ++i)
+ Object result = new JSONParser().parse(reader);
+ if (result instanceof JSONObject)
{
- switch (buffer[i])
- {
- case '{':
- jsonType = TYPE_OBJECT;
- break;
- case '[':
- jsonType = TYPE_ARRAY;
- break;
- case ' ':
- case '\t':
- case '\r':
- case '\n':
- break;
- default:
- {
- String msg = "could not pase JSON: invalid character at position " + i + ": '" + buffer[i] + "'";
- throw new Exception(msg);
- }
- }
- if (jsonType != TYPE_UNKNOWN)
- {
- break;
- }
+ root = new HybridJsonContainer((JSONObject)result);
}
- switch (jsonType)
+ else if (result instanceof JSONArray)
{
- case TYPE_UNKNOWN:
- {
- String msg = "could not pase JSON: did not find any '{' or '[' in the first " + lookahead + " characters";
- throw new Exception(msg);
- }
- case TYPE_OBJECT:
- root = new HybridJsonContainer(new JSONObject(new JSONTokener(reader)));
- break;
- case TYPE_ARRAY:
- root = new HybridJsonContainer(new JSONArray(new JSONTokener(reader)));
+ root = new HybridJsonContainer((JSONArray)result);
}
+ else throw new Exception("Expecting JSON array or object");
}
catch (Exception e)
{
getLog().error("error while setting up JSON source", e);
+ root = null;
}
}
@@ -521,28 +457,9 @@ public class JsonTool extends ImportSupp
* Get size of root object or array.
* @return size
*/
- public int length()
- {
- return root == null ? null : root.length();
- }
-
- /**
- * Get array of root object keys.
- * @return array of keys
- */
- public JSONArray names()
- {
- return root == null ? null : root.names();
- }
-
- /**
- * Query root object or array using a JSON pointer
- * @param jsonPointer
- * @return result
- */
- public Object query(String jsonPointer)
+ public int size()
{
- return root == null ? null : root.query(jsonPointer);
+ return root == null ? null : root.size();
}
/**
Modified: velocity/tools/trunk/velocity-tools-generic/src/test/java/org/apache/velocity/tools/generic/JsonToolTests.java
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-generic/src/test/java/org/apache/velocity/tools/generic/JsonToolTests.java?rev=1804318&r1=1804317&r2=1804318&view=diff
==============================================================================
--- velocity/tools/trunk/velocity-tools-generic/src/test/java/org/apache/velocity/tools/generic/JsonToolTests.java (original)
+++ velocity/tools/trunk/velocity-tools-generic/src/test/java/org/apache/velocity/tools/generic/JsonToolTests.java Mon Aug 7 10:11:20 2017
@@ -19,7 +19,7 @@ package org.apache.velocity.tools.generi
* under the License.
*/
-import org.json.JSONArray;
+import org.json.simple.JSONArray;
import org.junit.Test;
import java.util.HashMap;