SLING-6893: Remove commons.json from Content Distribution Integration Tests - take2
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1797389 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index 94b82ff..147a7b6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -50,7 +50,7 @@
optionally using -Dmaven.surefire.debug to enable debugging.
-->
<properties>
-
+ <sling.java.version>8</sling.java.version>
<!-- Set this to run tests against an existing server instance -->
<keepJarRunning>false</keepJarRunning>
@@ -345,7 +345,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.testing.tools</artifactId>
- <version>1.0.12</version>
+ <version>1.0.17-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
diff --git a/src/test/java/org/apache/sling/distribution/it/DistributionIntegrationTestBase.java b/src/test/java/org/apache/sling/distribution/it/DistributionIntegrationTestBase.java
index e81b60e..cb4a3b4 100644
--- a/src/test/java/org/apache/sling/distribution/it/DistributionIntegrationTestBase.java
+++ b/src/test/java/org/apache/sling/distribution/it/DistributionIntegrationTestBase.java
@@ -20,7 +20,8 @@
import java.io.IOException;
-import org.apache.sling.commons.json.JSONException;
+import javax.json.JsonException;
+
import org.apache.sling.testing.tools.sling.SlingClient;
import org.apache.sling.testing.tools.sling.SlingInstance;
import org.apache.sling.testing.tools.sling.SlingInstanceManager;
@@ -125,7 +126,7 @@
@After
- public void checkNoPackagesLeft() throws IOException, JSONException, InterruptedException {
+ public void checkNoPackagesLeft() throws IOException, JsonException, InterruptedException {
Thread.sleep(5000);
diff --git a/src/test/java/org/apache/sling/distribution/it/DistributionUtils.java b/src/test/java/org/apache/sling/distribution/it/DistributionUtils.java
index 11a53ab..9e42acc 100644
--- a/src/test/java/org/apache/sling/distribution/it/DistributionUtils.java
+++ b/src/test/java/org/apache/sling/distribution/it/DistributionUtils.java
@@ -20,6 +20,7 @@
package org.apache.sling.distribution.it;
import java.io.IOException;
+import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -27,15 +28,17 @@
import java.util.Map;
import java.util.UUID;
+import javax.json.Json;
+import javax.json.JsonArray;
+import javax.json.JsonException;
+import javax.json.JsonObject;
+import javax.json.JsonString;
+
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.message.BasicNameValuePair;
import org.apache.jackrabbit.util.Text;
-import org.apache.sling.commons.json.JSONArray;
-import org.apache.sling.commons.json.JSONException;
-import org.apache.sling.commons.json.JSONObject;
-import org.apache.sling.commons.json.JSONTokener;
import org.apache.sling.distribution.DistributionRequestType;
import org.apache.sling.testing.tools.http.Request;
import org.apache.sling.testing.tools.sling.SlingClient;
@@ -56,7 +59,7 @@
private static final String DISTRIBUTOR_PASSWORD = "123";
- public static JSONObject getResource(SlingInstance slingInstance, String path) throws IOException, JSONException {
+ public static JsonObject getResource(SlingInstance slingInstance, String path) throws IOException, JsonException {
if (!path.endsWith(JSON_SELECTOR)) {
path += JSON_SELECTOR;
}
@@ -71,7 +74,7 @@
// Parse JSON response for more precise testing
- return new JSONObject(new JSONTokener(content));
+ return Json.createReader(new StringReader(content)).readObject();
}
public static String assertPostResourceWithParameters(SlingInstance slingInstance,
@@ -290,7 +293,7 @@
}
- public static void assertEmptyFolder(SlingInstance instance, SlingClient client, String path) throws IOException, JSONException {
+ public static void assertEmptyFolder(SlingInstance instance, SlingClient client, String path) throws IOException, JsonException {
if (client.exists(path)) {
List<String> children = getChildrenForFolder(instance, path);
@@ -301,10 +304,10 @@
}
- public static List<String> getChildrenForFolder(SlingInstance instance, String path) throws IOException, JSONException {
+ public static List<String> getChildrenForFolder(SlingInstance instance, String path) throws IOException, JsonException {
List<String> result = new ArrayList<String>();
- JSONObject authorJson = getResource(instance, path + ".1.json");
- Iterator<String> it = authorJson.keys();
+ JsonObject authorJson = getResource(instance, path + ".1.json");
+ Iterator<String> it = authorJson.keySet().iterator();
while (it.hasNext()) {
String key = it.next();
@@ -315,21 +318,21 @@
return result;
}
- public static Map<String, Map<String, Object>> getQueues(SlingInstance instance, String agentName) throws IOException, JSONException {
+ public static Map<String, Map<String, Object>> getQueues(SlingInstance instance, String agentName) throws IOException, JsonException {
Map<String, Map<String, Object>> result = new HashMap<String, Map<String, Object>>();
- JSONObject json = getResource(instance, queueUrl(agentName) + ".infinity");
+ JsonObject json = getResource(instance, queueUrl(agentName) + ".infinity");
- JSONArray items = json.getJSONArray("items");
+ JsonArray items = json.getJsonArray("items");
- for(int i=0; i < items.length(); i++) {
+ for(int i=0; i < items.size(); i++) {
String queueName = items.getString(i);
Map<String, Object> queueProperties = new HashMap<String, Object>();
- JSONObject queue = json.getJSONObject(queueName);
+ JsonObject queue = json.getJsonObject(queueName);
queueProperties.put("empty", queue.getBoolean("empty"));
- queueProperties.put("itemsCount", queue.get("itemsCount"));
+ queueProperties.put("itemsCount", queue.getInt("itemsCount"));
result.put(queueName, queueProperties);
}
@@ -337,27 +340,43 @@
return result;
}
- public static List<Map<String, Object>> getQueueItems(SlingInstance instance, String queueUrl) throws IOException, JSONException {
+ public static List<Map<String, Object>> getQueueItems(SlingInstance instance, String queueUrl) throws IOException, JsonException {
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
- JSONObject json = getResource(instance, queueUrl + ".infinity");
+ JsonObject json = getResource(instance, queueUrl + ".infinity");
- Iterator<String> keys = json.keys();
+ Iterator<String> keys = json.keySet().iterator();
while (keys.hasNext()) {
String key = keys.next();
- JSONObject queueItem = json.optJSONObject(key);
- if (queueItem != null && queueItem.optString("id") != null) {
+ JsonObject queueItem;
+ Object item = json.get(key);
+ if (item instanceof JsonObject)
+ {
+ queueItem = (JsonObject) item;
+ }
+ else if (item instanceof JsonString) {
+ try {
+ queueItem = Json.createReader(new StringReader(((JsonString) item).getString())).readObject();
+ } catch (JsonException ex) {
+ queueItem = null;
+ }
+ }
+ else {
+ queueItem = null;
+ }
+
+ if (queueItem != null && queueItem.containsKey("id")) {
Map<String, Object> itemProperties = new HashMap<String, Object>();
- itemProperties.put("id", queueItem.get("id"));
- itemProperties.put("paths", queueItem.get("paths"));
- itemProperties.put("action", queueItem.get("action"));
- itemProperties.put("userid", queueItem.get("userid"));
- itemProperties.put("attempts", queueItem.get("attempts"));
- itemProperties.put("time", queueItem.get("time"));
- itemProperties.put("state", queueItem.get("state"));
+ itemProperties.put("id", queueItem.getString("id"));
+ itemProperties.put("paths", JsonUtil.unbox(queueItem.get("paths")));
+ itemProperties.put("action", JsonUtil.unbox(queueItem.get("action")));
+ itemProperties.put("userid", JsonUtil.unbox(queueItem.get("userid")));
+ itemProperties.put("attempts", JsonUtil.unbox(queueItem.get("attempts")));
+ itemProperties.put("time", JsonUtil.unbox(queueItem.get("time")));
+ itemProperties.put("state", JsonUtil.unbox(queueItem.get("state")));
result.add(itemProperties);
}
diff --git a/src/test/java/org/apache/sling/distribution/it/JsonUtil.java b/src/test/java/org/apache/sling/distribution/it/JsonUtil.java
new file mode 100644
index 0000000..11fabb1
--- /dev/null
+++ b/src/test/java/org/apache/sling/distribution/it/JsonUtil.java
@@ -0,0 +1,97 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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.
+ */
+package org.apache.sling.distribution.it;
+
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.AbstractMap;
+import java.util.Map.Entry;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+import javax.json.Json;
+import javax.json.JsonArray;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonException;
+import javax.json.JsonNumber;
+import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
+import javax.json.JsonString;
+import javax.json.JsonStructure;
+import javax.json.JsonValue;
+import javax.json.JsonValue.ValueType;
+
+public class JsonUtil {
+ public static JsonStructure parse(String input) throws JsonException {
+ return Json.createReader(new StringReader(input)).read();
+ }
+
+ public static JsonObject parseObject(String input) throws JsonException{
+ return (JsonObject) parse(input);
+ }
+
+ public static JsonArray parseArray(String input) throws JsonException {
+ return (JsonArray) parse(input);
+ }
+
+ public static Object unbox(JsonValue value, Function<JsonStructure, Object> convert) throws JsonException {
+ switch (value.getValueType()) {
+ case ARRAY:
+ case OBJECT:
+ return convert.apply((JsonStructure) value);
+ case FALSE:
+ return Boolean.FALSE;
+ case TRUE:
+ return Boolean.TRUE;
+ case NULL:
+ return null;
+ case NUMBER:
+ JsonNumber number = (JsonNumber) value;
+ return number.isIntegral() ? number.longValue() : number.doubleValue();
+ case STRING:
+ return ((JsonString) value).getString();
+ default:
+ throw new JsonException("Unknow value type");
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ public static <T> T unbox(JsonValue value) {
+ return (T) unbox(value, json -> json.getValueType() == ValueType.ARRAY ?
+ ((JsonArray) json).stream()
+ .map(JsonUtil::unbox)
+ .collect(Collectors.toList())
+ :
+ ((JsonObject) json).entrySet().stream()
+ .map(entry -> new AbstractMap.SimpleEntry<>(entry.getKey(),unbox(entry.getValue())))
+ .collect(Collectors.toMap(Entry::getKey, Entry::getValue)));
+ }
+
+ public static String toString(JsonValue value) {
+ StringWriter writer = new StringWriter();
+ Json.createGenerator(writer).write(value).close();
+ return writer.toString();
+ }
+
+ public static String toString(JsonArrayBuilder builder) {
+ return toString(builder.build());
+ }
+
+ public static String toString(JsonObjectBuilder builder) {
+ return toString(builder.build());
+ }
+}
diff --git a/src/test/java/org/apache/sling/distribution/it/MultipleForwardDistributionTest.java b/src/test/java/org/apache/sling/distribution/it/MultipleForwardDistributionTest.java
index 73bb488..a60def5 100644
--- a/src/test/java/org/apache/sling/distribution/it/MultipleForwardDistributionTest.java
+++ b/src/test/java/org/apache/sling/distribution/it/MultipleForwardDistributionTest.java
@@ -18,8 +18,6 @@
*/
package org.apache.sling.distribution.it;
-import org.apache.sling.commons.json.JSONArray;
-import org.apache.sling.commons.json.JSONObject;
import org.apache.sling.distribution.DistributionRequestType;
import org.junit.After;
import org.junit.Ignore;
@@ -27,6 +25,9 @@
import java.io.IOException;
+import javax.json.JsonArray;
+import javax.json.JsonObject;
+
import static junit.framework.Assert.assertEquals;
import static org.apache.sling.distribution.it.DistributionUtils.assertExists;
import static org.apache.sling.distribution.it.DistributionUtils.assertNotExists;
@@ -70,10 +71,10 @@
assertExists(publishClient, nodePath);
{
- JSONObject json = getResource(author, queueUrl("publish-multiple") + "/passivequeue1");
+ JsonObject json = getResource(author, queueUrl("publish-multiple") + "/passivequeue1");
- JSONArray queueItems = json.getJSONArray("items");
- assertEquals(1, queueItems.length());
+ JsonArray queueItems = json.getJsonArray("items");
+ assertEquals(1, queueItems.size());
assertEquals(1, json.get("itemsCount"));
}
@@ -81,10 +82,10 @@
String content = doExport(author, "publish-multiple-passivequeue1", DistributionRequestType.PULL, null);
{
- JSONObject json = getResource(author, queueUrl("publish-multiple") + "/passivequeue1");
+ JsonObject json = getResource(author, queueUrl("publish-multiple") + "/passivequeue1");
- JSONArray queueItems = json.getJSONArray("items");
- assertEquals(0, queueItems.length());
+ JsonArray queueItems = json.getJsonArray("items");
+ assertEquals(0, queueItems.size());
assertEquals(0, json.get("itemsCount"));
}