You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by je...@apache.org on 2019/05/07 16:04:37 UTC
[geode] branch develop updated: GEODE-6743: Remove GFJsonObject and
GFJsonArray classes (#3555)
This is an automated email from the ASF dual-hosted git repository.
jensdeppe pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new 6defb1b GEODE-6743: Remove GFJsonObject and GFJsonArray classes (#3555)
6defb1b is described below
commit 6defb1b8e2a663afb5d23124a9a63b5107ab85a2
Author: Jens Deppe <jd...@pivotal.io>
AuthorDate: Tue May 7 09:04:24 2019 -0700
GEODE-6743: Remove GFJsonObject and GFJsonArray classes (#3555)
---
.../geode/management/QueryDataDUnitTest.java | 27 +-
.../DestroyAsyncEventQueueCommandDUnitTest.java | 8 +-
.../geode/pdx/JSONPdxClientServerDUnitTest.java | 6 +-
.../QueryResultFormatterQueryIntegrationTest.java | 14 +-
.../management/DataQueryEngineIntegrationTest.java | 33 +-
.../QueryResultFormatterPdxIntegrationTest.java | 11 +-
.../apache/geode/pdx/JSONFormatterJUnitTest.java | 8 +-
.../apache/geode/distributed/AbstractLauncher.java | 14 +-
.../apache/geode/distributed/LocatorLauncher.java | 36 +-
.../apache/geode/distributed/ServerLauncher.java | 34 +-
.../management/internal/beans/DataQueryEngine.java | 16 +-
.../management/internal/cli/json/GfJsonArray.java | 198 -----------
.../internal/cli/json/GfJsonException.java | 35 --
.../management/internal/cli/json/GfJsonObject.java | 384 ---------------------
.../internal/cli/json/QueryResultFormatter.java | 18 +-
.../management/internal/cli/util/JsonUtil.java | 381 +-------------------
.../sanctioned-geode-core-serializables.txt | 1 -
.../AbstractLauncherServiceStateTest.java | 33 +-
.../apache/geode/distributed/LocatorStateTest.java | 23 +-
.../internal/cli/DataCommandJsonJUnitTest.java | 54 ---
.../internal/cli/json/GfJsonArrayTest.java | 107 ------
.../internal/cli/json/GfJsonObjectTest.java | 181 ----------
.../cli/json/QueryResultFormatterTest.java | 10 +-
.../apache/geode/pdx/JSONFormatVerifyUtility.java | 45 ++-
.../geode/pdx/TestObjectForJSONFormatter.java | 14 +-
25 files changed, 188 insertions(+), 1503 deletions(-)
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/management/QueryDataDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/management/QueryDataDUnitTest.java
index 0fcb6c9..2a0b61f 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/management/QueryDataDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/management/QueryDataDUnitTest.java
@@ -37,6 +37,8 @@ import java.util.concurrent.TimeoutException;
import javax.management.ObjectName;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -61,8 +63,6 @@ import org.apache.geode.internal.cache.partitioned.fixed.SingleHopQuarterPartiti
import org.apache.geode.management.internal.SystemManagementService;
import org.apache.geode.management.internal.beans.BeanUtilFuncs;
import org.apache.geode.management.internal.beans.QueryDataFunction;
-import org.apache.geode.management.internal.cli.json.GfJsonArray;
-import org.apache.geode.management.internal.cli.json.GfJsonObject;
import org.apache.geode.pdx.PdxInstance;
import org.apache.geode.pdx.PdxInstanceFactory;
import org.apache.geode.pdx.internal.PdxInstanceFactoryImpl;
@@ -245,16 +245,12 @@ public class QueryDataDUnitTest implements Serializable {
assertThat(jsonString).contains("result").doesNotContain("No Data Found");
assertThat(jsonString).contains(BIG_COLLECTION_ELEMENT_);
- GfJsonObject jsonObject = new GfJsonObject(jsonString);
- GfJsonArray jsonArray = jsonObject.getJSONArray("result");
- assertThat(jsonArray.length()).isEqualTo(DEFAULT_QUERY_LIMIT);
-
- // Get the first element
- GfJsonArray jsonArray1 = jsonArray.getJSONArray(0);
- assertThat(jsonArray1).isNotNull();
+ JsonNode jsonObject = new ObjectMapper().readTree(jsonString);
+ JsonNode jsonArray = jsonObject.get("result");
+ assertThat(jsonArray.size()).isEqualTo(DEFAULT_QUERY_LIMIT);
// Get the ObjectValue
- GfJsonObject collectionObject = jsonArray1.getJsonObject(1);
+ JsonNode collectionObject = jsonArray.get(0).get(1);
assertThat(collectionObject.size()).isEqualTo(100);
// Query With Override Values
@@ -274,17 +270,14 @@ public class QueryDataDUnitTest implements Serializable {
verifyJsonIsValid(jsonString);
assertThat(jsonString).contains("result").doesNotContain("No Data Found");
- jsonObject = new GfJsonObject(jsonString);
+ jsonObject = new ObjectMapper().readTree(jsonString);
assertThat(jsonString).contains(BIG_COLLECTION_ELEMENT_);
- jsonArray = jsonObject.getJSONArray("result");
- assertThat(jsonArray.length()).isEqualTo(newQueryResultSetLimit);
-
- // Get the first element
- jsonArray1 = jsonArray.getJSONArray(0);
+ jsonArray = jsonObject.get("result");
+ assertThat(jsonArray.size()).isEqualTo(newQueryResultSetLimit);
// Get the ObjectValue
- collectionObject = jsonArray1.getJsonObject(1);
+ collectionObject = jsonArray.get(0).get(1);
assertThat(collectionObject.size()).isEqualTo(newQueryCollectionDepth);
});
}
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/management/internal/cli/commands/DestroyAsyncEventQueueCommandDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/management/internal/cli/commands/DestroyAsyncEventQueueCommandDUnitTest.java
index b775ac5..11e2edf 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/management/internal/cli/commands/DestroyAsyncEventQueueCommandDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/management/internal/cli/commands/DestroyAsyncEventQueueCommandDUnitTest.java
@@ -16,8 +16,6 @@ package org.apache.geode.management.internal.cli.commands;
import static org.assertj.core.api.Assertions.assertThat;
-import java.io.IOException;
-
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -26,7 +24,6 @@ import org.junit.experimental.categories.Category;
import org.apache.geode.distributed.internal.InternalConfigurationPersistenceService;
import org.apache.geode.internal.cache.wan.MyAsyncEventListener;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.json.GfJsonException;
import org.apache.geode.management.internal.configuration.domain.Configuration;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.MemberVM;
@@ -162,8 +159,7 @@ public class DestroyAsyncEventQueueCommandDUnitTest {
}
@Test
- public void destroyAeq_selectsQueuesOnGroup_showsErrorForServersNotInGroup()
- throws GfJsonException {
+ public void destroyAeq_selectsQueuesOnGroup_showsErrorForServersNotInGroup() {
gfsh.executeAndAssertThat("create async-event-queue --id=queue1 --group=group1 --listener="
+ MyAsyncEventListener.class.getName()).statusIsSuccess();
@@ -181,7 +177,7 @@ public class DestroyAsyncEventQueueCommandDUnitTest {
}
@Test
- public void destroyAeq_selectsQueuesByGroup_returnsSuccess() throws GfJsonException, IOException {
+ public void destroyAeq_selectsQueuesByGroup_returnsSuccess() {
server3 = lsRule.startServerVM(3, "group3", locator.getPort());
gfsh.executeAndAssertThat("create async-event-queue --id=queue1 --group=group1 --listener="
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/pdx/JSONPdxClientServerDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/pdx/JSONPdxClientServerDUnitTest.java
index 3a68ded..21a3970 100755
--- a/geode-core/src/distributedTest/java/org/apache/geode/pdx/JSONPdxClientServerDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/pdx/JSONPdxClientServerDUnitTest.java
@@ -25,7 +25,6 @@ import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Properties;
-import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;
@@ -44,7 +43,6 @@ import org.apache.geode.cache.server.CacheServer;
import org.apache.geode.internal.Assert;
import org.apache.geode.internal.AvailablePortHelper;
import org.apache.geode.internal.cache.GemFireCacheImpl;
-import org.apache.geode.management.internal.cli.json.GfJsonException;
import org.apache.geode.pdx.internal.json.PdxToJSON;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.NetworkUtils;
@@ -185,7 +183,7 @@ public class JSONPdxClientServerDUnitTest extends JUnit4CacheTestCase {
});
}
- public void VerifyPdxInstanceAndJsonConversion() throws JsonProcessingException, GfJsonException {
+ public void VerifyPdxInstanceAndJsonConversion() throws Exception {
Region region = getRootRegion("testSimplePdx");
// Create Object and initialize its members.
@@ -215,7 +213,7 @@ public class JSONPdxClientServerDUnitTest extends JUnit4CacheTestCase {
}
private void validateReceivedJSON(Region region, TestObjectForJSONFormatter actualTestObject,
- ObjectMapper objectMapper) throws JsonProcessingException, GfJsonException {
+ ObjectMapper objectMapper) throws Exception {
// 1. get the json from the object using Jackson Object Mapper
String json = objectMapper.writeValueAsString(actualTestObject);
String jsonWithClassType = actualTestObject.addClassTypeToJson(json);
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/cache/query/QueryResultFormatterQueryIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/cache/query/QueryResultFormatterQueryIntegrationTest.java
index 1e9373c..8cbc317 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/cache/query/QueryResultFormatterQueryIntegrationTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/cache/query/QueryResultFormatterQueryIntegrationTest.java
@@ -16,14 +16,16 @@ package org.apache.geode.cache.query;
import static org.assertj.core.api.Assertions.assertThat;
+import java.io.IOException;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.apache.geode.cache.query.data.Portfolio;
import org.apache.geode.cache.query.data.Position;
import org.apache.geode.cache.util.ObjectSizer;
-import org.apache.geode.management.internal.cli.json.GfJsonException;
-import org.apache.geode.management.internal.cli.json.GfJsonObject;
import org.apache.geode.management.internal.cli.json.QueryResultFormatter;
import org.apache.geode.management.internal.cli.json.QueryResultFormatterPdxIntegrationTest;
import org.apache.geode.test.junit.categories.OQLQueryTest;
@@ -96,9 +98,9 @@ public class QueryResultFormatterQueryIntegrationTest {
return portfolios;
}
- private void checkResult(final QueryResultFormatter queryResultFormatter) throws GfJsonException {
- GfJsonObject gfJsonObject = new GfJsonObject(queryResultFormatter.toString());
- System.out.println(gfJsonObject);
- assertThat(gfJsonObject.get(RESULT)).isNotNull();
+ private void checkResult(final QueryResultFormatter queryResultFormatter) throws IOException {
+ JsonNode jsonObject = new ObjectMapper().readTree(queryResultFormatter.toString());
+ System.out.println(jsonObject.toString());
+ assertThat(jsonObject.get(RESULT)).isNotNull();
}
}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/management/DataQueryEngineIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/management/DataQueryEngineIntegrationTest.java
index d2d9091..3a4dc7b 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/management/DataQueryEngineIntegrationTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/management/DataQueryEngineIntegrationTest.java
@@ -19,6 +19,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.util.ArrayList;
import java.util.Collection;
+import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -32,7 +33,6 @@ import org.apache.geode.management.internal.ManagementConstants;
import org.apache.geode.management.internal.SystemManagementService;
import org.apache.geode.management.internal.beans.DataQueryEngine;
import org.apache.geode.management.internal.beans.QueryDataFunction;
-import org.apache.geode.management.internal.cli.json.GfJsonObject;
import org.apache.geode.management.model.EmptyObject;
import org.apache.geode.management.model.Item;
import org.apache.geode.management.model.Order;
@@ -105,7 +105,7 @@ public class DataQueryEngineIntegrationTest {
assertThat(queryResult).isEqualToIgnoringWhitespace(expectedResult);
// If not correct JSON format this will throw a JSONException
- new GfJsonObject(queryResult);
+ new ObjectMapper().readTree(queryResult);
}
/**
@@ -135,7 +135,7 @@ public class DataQueryEngineIntegrationTest {
assertThat(queryResult).isEqualToIgnoringWhitespace(expectedResult);
// If not correct JSON format this will throw a JSONException
- new GfJsonObject(queryResult);
+ new ObjectMapper().readTree(queryResult);
}
/**
@@ -165,7 +165,7 @@ public class DataQueryEngineIntegrationTest {
assertThat(queryResult).isEqualToIgnoringWhitespace(expectedResult);
// If not correct JSON format this will throw a JSONException
- new GfJsonObject(queryResult);
+ new ObjectMapper().readTree(queryResult);
}
@Test
@@ -189,7 +189,7 @@ public class DataQueryEngineIntegrationTest {
System.out.println("Query Result: " + queryResult);
// If not correct JSON format this will throw a JSONException
- new GfJsonObject(queryResult);
+ new ObjectMapper().readTree(queryResult);
}
@Test
@@ -215,7 +215,7 @@ public class DataQueryEngineIntegrationTest {
System.out.println("Query Result: " + queryResult);
// If not correct JSON format this will throw a JSONException
- new GfJsonObject(queryResult);
+ new ObjectMapper().readTree(queryResult);
}
@Test
@@ -241,7 +241,7 @@ public class DataQueryEngineIntegrationTest {
System.out.println("Query Result: " + queryResult);
// If not correct JSON format this will throw a JSONException
- new GfJsonObject(queryResult);
+ new ObjectMapper().readTree(queryResult);
}
@@ -254,7 +254,7 @@ public class DataQueryEngineIntegrationTest {
System.out.println(queryResult);
// If not correct JSON format this will throw a JSONException
- new GfJsonObject(queryResult);
+ new ObjectMapper().readTree(queryResult);
}
@Test
@@ -267,7 +267,7 @@ public class DataQueryEngineIntegrationTest {
assertThat(queryResult).isEqualToIgnoringWhitespace(expectedResult);
// If not correct JSON format this will throw a JSONException
- new GfJsonObject(queryResult);
+ new ObjectMapper().readTree(queryResult);
}
@Test
@@ -281,7 +281,7 @@ public class DataQueryEngineIntegrationTest {
assertThat(queryResult).isEqualToIgnoringWhitespace(expectedResult);
// If not correct JSON format this will throw a JSONException
- new GfJsonObject(queryResult);
+ new ObjectMapper().readTree(queryResult);
}
@Test
@@ -304,7 +304,7 @@ public class DataQueryEngineIntegrationTest {
assertThat(queryResult).isEqualToIgnoringWhitespace(expectedResult);
// If not correct JSON format this will throw a JSONException
- new GfJsonObject(queryResult);
+ new ObjectMapper().readTree(queryResult);
}
@Test
@@ -322,7 +322,7 @@ public class DataQueryEngineIntegrationTest {
assertThat(queryResult).isEqualToIgnoringWhitespace(expectedResult);
// If not correct JSON format this will throw a JSONException
- new GfJsonObject(queryResult);
+ new ObjectMapper().readTree(queryResult);
}
@Test
@@ -340,7 +340,14 @@ public class DataQueryEngineIntegrationTest {
assertThat(queryResult).isEqualToIgnoringWhitespace(expectedResult);
// If not correct JSON format this will throw a JSONException
- new GfJsonObject(queryResult);
+ new ObjectMapper().readTree(queryResult);
+ }
+
+ @Test
+ public void testWithUnknownRegion() throws Exception {
+ String queryResult = queryEngine.queryForJsonResult("select * from /unknonwn", 1, 1, 1);
+ assertThat(queryResult)
+ .isEqualTo("{\"message\":\"Cannot find regions /unknonwn in any of the members\"}");
}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/management/internal/cli/json/QueryResultFormatterPdxIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/management/internal/cli/json/QueryResultFormatterPdxIntegrationTest.java
index dfe9f8c..0f7e793 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/management/internal/cli/json/QueryResultFormatterPdxIntegrationTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/management/internal/cli/json/QueryResultFormatterPdxIntegrationTest.java
@@ -18,9 +18,12 @@ import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
import static org.assertj.core.api.Assertions.assertThat;
+import java.io.IOException;
import java.io.Serializable;
import java.util.Properties;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -90,10 +93,10 @@ public class QueryResultFormatterPdxIntegrationTest {
checkResult(queryResultFormatter);
}
- private void checkResult(QueryResultFormatter queryResultFormatter) throws GfJsonException {
- GfJsonObject gfJsonObject = new GfJsonObject(queryResultFormatter.toString());
- System.out.println(gfJsonObject);
- assertThat(gfJsonObject.get(RESULT)).isNotNull();
+ private void checkResult(QueryResultFormatter queryResultFormatter) throws IOException {
+ JsonNode jsonObject = new ObjectMapper().readTree(queryResultFormatter.toString());
+ System.out.println(jsonObject.toString());
+ assertThat(jsonObject.get(RESULT)).isNotNull();
}
private static class SerializableObject implements Serializable {
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/pdx/JSONFormatterJUnitTest.java b/geode-core/src/integrationTest/java/org/apache/geode/pdx/JSONFormatterJUnitTest.java
index 5eb0cb3..0995fb8 100755
--- a/geode-core/src/integrationTest/java/org/apache/geode/pdx/JSONFormatterJUnitTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/pdx/JSONFormatterJUnitTest.java
@@ -21,7 +21,6 @@ import static org.junit.Assert.assertTrue;
import java.text.SimpleDateFormat;
import java.util.List;
-import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.After;
@@ -33,7 +32,6 @@ import org.apache.geode.cache.Cache;
import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.DataPolicy;
import org.apache.geode.cache.Region;
-import org.apache.geode.management.internal.cli.json.GfJsonException;
import org.apache.geode.pdx.internal.PdxInstanceImpl;
import org.apache.geode.pdx.internal.PeerTypeRegistration;
import org.apache.geode.test.junit.categories.SerializationTest;
@@ -58,7 +56,7 @@ public class JSONFormatterJUnitTest {
}
@Test
- public void ValidatePdxInstanceToJsonConversion() throws GfJsonException {
+ public void ValidatePdxInstanceToJsonConversion() throws Exception {
TestObjectForJSONFormatter actualTestObject = new TestObjectForJSONFormatter();
actualTestObject.defaultInitialization();
@@ -78,7 +76,7 @@ public class JSONFormatterJUnitTest {
}
@Test
- public void verifyJsonToPdxInstanceConversion() throws JsonProcessingException, GfJsonException {
+ public void verifyJsonToPdxInstanceConversion() throws Exception {
TestObjectForJSONFormatter expectedTestObject = new TestObjectForJSONFormatter();
expectedTestObject.defaultInitialization();
@@ -113,7 +111,7 @@ public class JSONFormatterJUnitTest {
}
@Test
- public void verifyJsonToPdxInstanceConversionWithJSONFormatter() throws GfJsonException {
+ public void verifyJsonToPdxInstanceConversionWithJSONFormatter() throws Exception {
TestObjectForJSONFormatter expectedTestObject = new TestObjectForJSONFormatter();
expectedTestObject.defaultInitialization();
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/AbstractLauncher.java b/geode-core/src/main/java/org/apache/geode/distributed/AbstractLauncher.java
index 4fd2280..864a509 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/AbstractLauncher.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/AbstractLauncher.java
@@ -41,6 +41,9 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Logger;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
import org.apache.geode.annotations.Immutable;
import org.apache.geode.distributed.internal.DistributionConfig;
import org.apache.geode.distributed.internal.InternalDistributedSystem;
@@ -52,7 +55,6 @@ import org.apache.geode.internal.process.PidUnavailableException;
import org.apache.geode.internal.process.ProcessUtils;
import org.apache.geode.internal.util.ArgumentRedactor;
import org.apache.geode.internal.util.SunAPINotFoundException;
-import org.apache.geode.management.internal.cli.json.GfJsonObject;
/**
* The AbstractLauncher class is a base class for implementing various launchers to construct and
@@ -597,7 +599,15 @@ public abstract class AbstractLauncher<T extends Comparable<T>> implements Runna
map.put(JSON_TIMESTAMP, getTimestamp().getTime());
map.put(JSON_UPTIME, getUptime());
map.put(JSON_WORKINGDIRECTORY, getWorkingDirectory());
- return new GfJsonObject(map).toString();
+
+ String jsonStatus = null;
+ try {
+ jsonStatus = new ObjectMapper().writeValueAsString(map);
+ } catch (JsonProcessingException e) {
+ // Ignored
+ }
+
+ return jsonStatus;
}
public static boolean isStartingNotRespondingOrNull(final ServiceState serviceState) {
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/LocatorLauncher.java b/geode-core/src/main/java/org/apache/geode/distributed/LocatorLauncher.java
index cb7a7d9..1733b8e 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/LocatorLauncher.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/LocatorLauncher.java
@@ -46,6 +46,8 @@ import java.util.logging.Level;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
import joptsimple.OptionException;
import joptsimple.OptionParser;
import joptsimple.OptionSet;
@@ -78,9 +80,8 @@ import org.apache.geode.internal.process.ProcessType;
import org.apache.geode.internal.process.ProcessUtils;
import org.apache.geode.internal.process.UnableToControlProcessException;
import org.apache.geode.lang.AttachAPINotFoundException;
-import org.apache.geode.management.internal.cli.json.GfJsonException;
-import org.apache.geode.management.internal.cli.json.GfJsonObject;
import org.apache.geode.management.internal.cli.util.HostUtils;
+import org.apache.geode.management.internal.cli.util.JsonUtil;
/**
* The LocatorLauncher class is a launcher for a GemFire Locator.
@@ -1995,22 +1996,21 @@ public class LocatorLauncher extends AbstractLauncher<String> {
*/
public static LocatorState fromJson(final String json) {
try {
- final GfJsonObject gfJsonObject = new GfJsonObject(json);
-
- final Status status = Status.valueOfDescription(gfJsonObject.getString(JSON_STATUS));
-
- final List<String> jvmArguments =
- gfJsonObject.getJSONArray(JSON_JVMARGUMENTS).toStringList();
-
- return new LocatorState(status, gfJsonObject.getString(JSON_STATUSMESSAGE),
- gfJsonObject.getLong(JSON_TIMESTAMP), gfJsonObject.getString(JSON_LOCATION),
- gfJsonObject.getInt(JSON_PID), gfJsonObject.getLong(JSON_UPTIME),
- gfJsonObject.getString(JSON_WORKINGDIRECTORY), jvmArguments,
- gfJsonObject.getString(JSON_CLASSPATH), gfJsonObject.getString(JSON_GEMFIREVERSION),
- gfJsonObject.getString(JSON_JAVAVERSION), gfJsonObject.getString(JSON_LOGFILE),
- gfJsonObject.getString(JSON_HOST), gfJsonObject.getString(JSON_PORT),
- gfJsonObject.getString(JSON_MEMBERNAME));
- } catch (GfJsonException e) {
+ final JsonNode jsonObject = new ObjectMapper().readTree(json);
+
+ final Status status = Status.valueOfDescription(jsonObject.get(JSON_STATUS).asText());
+
+ final List<String> jvmArguments = JsonUtil.toStringList(jsonObject.get(JSON_JVMARGUMENTS));
+
+ return new LocatorState(status, jsonObject.get(JSON_STATUSMESSAGE).asText(),
+ jsonObject.get(JSON_TIMESTAMP).asLong(), jsonObject.get(JSON_LOCATION).asText(),
+ jsonObject.get(JSON_PID).asInt(), jsonObject.get(JSON_UPTIME).asLong(),
+ jsonObject.get(JSON_WORKINGDIRECTORY).asText(), jvmArguments,
+ jsonObject.get(JSON_CLASSPATH).asText(), jsonObject.get(JSON_GEMFIREVERSION).asText(),
+ jsonObject.get(JSON_JAVAVERSION).asText(), jsonObject.get(JSON_LOGFILE).asText(),
+ jsonObject.get(JSON_HOST).asText(), jsonObject.get(JSON_PORT).asText(),
+ jsonObject.get(JSON_MEMBERNAME).asText());
+ } catch (Exception e) {
throw new IllegalArgumentException(
"Unable to create LocatorStatus from JSON: ".concat(json), e);
}
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/ServerLauncher.java b/geode-core/src/main/java/org/apache/geode/distributed/ServerLauncher.java
index a12de6e..2b1f093 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/ServerLauncher.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/ServerLauncher.java
@@ -47,6 +47,8 @@ import java.util.concurrent.atomic.AtomicReference;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
import joptsimple.OptionException;
import joptsimple.OptionParser;
import joptsimple.OptionSet;
@@ -85,9 +87,8 @@ import org.apache.geode.internal.process.ProcessType;
import org.apache.geode.internal.process.UnableToControlProcessException;
import org.apache.geode.lang.AttachAPINotFoundException;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.json.GfJsonException;
-import org.apache.geode.management.internal.cli.json.GfJsonObject;
import org.apache.geode.management.internal.cli.util.HostUtils;
+import org.apache.geode.management.internal.cli.util.JsonUtil;
import org.apache.geode.pdx.PdxSerializer;
import org.apache.geode.security.AuthenticationRequiredException;
import org.apache.geode.security.GemFireSecurityException;
@@ -2591,21 +2592,20 @@ public class ServerLauncher extends AbstractLauncher<String> {
*/
public static ServerState fromJson(final String json) {
try {
- final GfJsonObject gfJsonObject = new GfJsonObject(json);
-
- final Status status = Status.valueOfDescription(gfJsonObject.getString(JSON_STATUS));
- final List<String> jvmArguments =
- gfJsonObject.getJSONArray(JSON_JVMARGUMENTS).toStringList();
-
- return new ServerState(status, gfJsonObject.getString(JSON_STATUSMESSAGE),
- gfJsonObject.getLong(JSON_TIMESTAMP), gfJsonObject.getString(JSON_LOCATION),
- gfJsonObject.getInt(JSON_PID), gfJsonObject.getLong(JSON_UPTIME),
- gfJsonObject.getString(JSON_WORKINGDIRECTORY), jvmArguments,
- gfJsonObject.getString(JSON_CLASSPATH), gfJsonObject.getString(JSON_GEMFIREVERSION),
- gfJsonObject.getString(JSON_JAVAVERSION), gfJsonObject.getString(JSON_LOGFILE),
- gfJsonObject.getString(JSON_HOST), gfJsonObject.getString(JSON_PORT),
- gfJsonObject.getString(JSON_MEMBERNAME));
- } catch (GfJsonException e) {
+ final JsonNode jsonObject = new ObjectMapper().readTree(json);
+
+ final Status status = Status.valueOfDescription(jsonObject.get(JSON_STATUS).asText());
+ final List<String> jvmArguments = JsonUtil.toStringList(jsonObject.get(JSON_JVMARGUMENTS));
+
+ return new ServerState(status, jsonObject.get(JSON_STATUSMESSAGE).asText(),
+ jsonObject.get(JSON_TIMESTAMP).asLong(), jsonObject.get(JSON_LOCATION).asText(),
+ jsonObject.get(JSON_PID).asInt(), jsonObject.get(JSON_UPTIME).asLong(),
+ jsonObject.get(JSON_WORKINGDIRECTORY).asText(), jvmArguments,
+ jsonObject.get(JSON_CLASSPATH).asText(), jsonObject.get(JSON_GEMFIREVERSION).asText(),
+ jsonObject.get(JSON_JAVAVERSION).asText(), jsonObject.get(JSON_LOGFILE).asText(),
+ jsonObject.get(JSON_HOST).asText(), jsonObject.get(JSON_PORT).asText(),
+ jsonObject.get(JSON_MEMBERNAME).asText());
+ } catch (Exception e) {
throw new IllegalArgumentException("Unable to create ServerStatus from JSON: " + json, e);
}
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/beans/DataQueryEngine.java b/geode-core/src/main/java/org/apache/geode/management/internal/beans/DataQueryEngine.java
index 13f0f30..bb1699f 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/beans/DataQueryEngine.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/beans/DataQueryEngine.java
@@ -40,8 +40,6 @@ import org.apache.geode.management.DistributedRegionMXBean;
import org.apache.geode.management.internal.ManagementConstants;
import org.apache.geode.management.internal.SystemManagementService;
import org.apache.geode.management.internal.cli.CliUtil;
-import org.apache.geode.management.internal.cli.json.GfJsonException;
-import org.apache.geode.management.internal.cli.json.GfJsonObject;
/**
* this is used by DistributedSystemBridge.queryData() call. It calls QueryDataFunction on each
@@ -289,21 +287,15 @@ public class DataQueryEngine {
static class JsonisedErrorMessage {
- private static final String message = "message";
+ private final String message;
- private GfJsonObject gFJsonObject = new GfJsonObject();
-
- public JsonisedErrorMessage(final String errorMessage) throws Exception {
- try {
- gFJsonObject.put(message, errorMessage);
- } catch (GfJsonException e) {
- throw new Exception(e);
- }
+ public JsonisedErrorMessage(final String errorMessage) {
+ message = errorMessage;
}
@Override
public String toString() {
- return gFJsonObject.toString();
+ return String.format("{\"message\":\"%s\"}", message);
}
}
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/GfJsonArray.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/GfJsonArray.java
deleted file mode 100644
index 0d8d7d4..0000000
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/GfJsonArray.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * 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.geode.management.internal.cli.json;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import org.apache.logging.log4j.Logger;
-
-import org.apache.geode.internal.logging.LogService;
-
-/**
- * Wrapper over JSONArray.
- *
- *
- * @since GemFire 7.0
- */
-public class GfJsonArray extends AbstractJSONFormatter {
- private static final Logger logger = LogService.getLogger();
-
- private final ArrayNode jsonArray;
-
- public GfJsonArray() {
- super(-1, -1, false);
- this.jsonArray = mapper.createArrayNode();
- }
-
- /**
- * @throws GfJsonException If not an array.
- */
- public GfJsonArray(Object array) throws GfJsonException {
- super(-1, -1, false);
- try {
- if (array instanceof ArrayNode) {
- this.jsonArray = (ArrayNode) array;
- } else {
- this.jsonArray = mapper.valueToTree(array);
- }
- if (this.jsonArray == null) {
- throw new IllegalArgumentException("Array translated into null JSON node: " + array);
- }
- } catch (IllegalArgumentException e) {
- throw new GfJsonException(e);
- }
- }
-
- void postCreateMapper() {
- mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
- mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
- }
-
- /**
- * Get the object value associated with an index.
- *
- * @return An object value.
- * @throws GfJsonException If there is no value for the index.
- */
- public String getString(int index) throws GfJsonException {
- try {
- JsonNode node = jsonArray.get(index);
- if (node.textValue() != null) {
- return node.asText();
- } else {
- return node.toString();
- }
- } catch (IllegalArgumentException e) {
- throw new GfJsonException(e);
- }
- }
-
- public GfJsonObject getJsonObject(int index) throws GfJsonException {
- try {
- return new GfJsonObject(jsonArray.get(index));
- } catch (IllegalArgumentException e) {
- throw new GfJsonException(e);
- }
- }
-
- public GfJsonArray put(Object value) {
- this.jsonArray.add(toJsonNode(value));
- return this;
- }
-
- public int length() {
- return this.jsonArray.size();
- }
-
- /**
- * @return this GfJsonArray
- * @throws GfJsonException If the index is negative or if the the value is an invalid number.
- */
- public GfJsonArray put(int index, Object value) throws GfJsonException {
- JsonNode json = null;
- try {
- json = toJsonNode(value);
- this.jsonArray.set(index, json);
- } catch (IndexOutOfBoundsException e) {
- while (this.jsonArray.size() < index) {
- this.jsonArray.add((JsonNode) null);
- }
- this.jsonArray.add(json);
- } catch (IllegalArgumentException e) {
- throw new GfJsonException(e);
- }
- return this;
- }
-
- /**
- * @return this GfJsonArray
- * @throws GfJsonException If the index is negative or if the the value is an invalid number.
- */
- public GfJsonArray put(int index, Map<?, ?> value) throws GfJsonException {
- try {
- this.jsonArray.set(index, toJsonNode(value));
- } catch (IllegalArgumentException e) {
- throw new GfJsonException(e);
- }
- return this;
- }
-
- public int size() {
- return jsonArray.size();
- }
-
- @Override
- public String toString() {
- return jsonArray.toString();
- }
-
- public static byte[] toByteArray(GfJsonArray jsonArray) throws GfJsonException {
- byte[] byteArray = null;
- if (jsonArray != null) {
- int length = jsonArray.size();
-
- byteArray = new byte[length];
- for (int i = 0; i < length; i++) {
- try {
- byteArray[i] = Byte.valueOf(String.valueOf(jsonArray.getString(i)));
- } catch (GfJsonException e) {
- throw new GfJsonException(e.getMessage());
- }
- }
- }
-
- return byteArray;
- }
-
- public List<String> toStringList() {
- List<String> stringArray = null;
- int length = jsonArray.size();
- stringArray = new ArrayList<>(length);
- for (int i = 0; i < length; i++) {
- try {
- stringArray.add(getString(i));
- } catch (GfJsonException e) {
- logger.info("", e);
- stringArray = null;
- }
- }
- return stringArray;
- }
-
- public ArrayNode getInternalJsonArray() {
- return jsonArray;
- }
-
- private JsonNode toJsonNode(Object value) {
- if (value instanceof GfJsonObject) {
- return ((GfJsonObject) value).getInternalJsonObject();
- }
- if (value instanceof GfJsonArray) {
- return ((GfJsonArray) value).getInternalJsonArray();
- } else if (value == null) {
- return mapper.valueToTree(GfJsonObject.NULL);
- }
- return mapper.valueToTree(value);
- }
-
- public GfJsonArray getJSONArray(int i) throws GfJsonException {
- return new GfJsonArray(jsonArray.get(i));
- }
-}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/GfJsonException.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/GfJsonException.java
deleted file mode 100644
index 16bece2..0000000
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/GfJsonException.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.geode.management.internal.cli.json;
-
-/**
- * Wraps GemFire JSON Exceptions
- *
- *
- *
- * @since GemFire 7.0
- */
-public class GfJsonException extends Exception {
-
- private static final long serialVersionUID = 36449998984143318L;
-
- public GfJsonException(String message) {
- super(message);
- }
-
- public GfJsonException(Exception e) {
- super(e);
- }
-}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/GfJsonObject.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/GfJsonObject.java
deleted file mode 100644
index 5f54639..0000000
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/GfJsonObject.java
+++ /dev/null
@@ -1,384 +0,0 @@
-/*
- * 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.geode.management.internal.cli.json;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Simiulation of org.json.JSONObject based on Jackson Databind
- */
-public class GfJsonObject extends AbstractJSONFormatter {
- @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
- public static final Object NULL = new Object() {
- @Override
- public boolean equals(Object o) {
- if (Objects.isNull(o)) {
- return true;
- }
- return o == this;
- }
-
- @Override
- public int hashCode() {
- return 0;
- }
-
- @Override
- public String toString() {
- return "null";
- }
- };
-
- private ObjectNode rootNode;
-
- public GfJsonObject() {
- super(-1, -1, false);
- this.rootNode = mapper.createObjectNode();
- }
-
- public GfJsonObject(Map<?, ?> map) {
- super(-1, -1, false);
- this.rootNode = mapper.valueToTree(map);
- }
-
- public GfJsonObject(Object bean) {
- super(-1, -1, false);
- if (bean instanceof ObjectNode) {
- this.rootNode = (ObjectNode) bean;
- } else {
- this.rootNode = mapper.valueToTree(bean);
- }
- }
-
- /**
- *
- * @param source A string beginning with { (left brace) and ending with } (right brace).
- * @throws GfJsonException - If there is a syntax error in the source string or a duplicated key.
- */
- public GfJsonObject(String source) throws GfJsonException {
- super(-1, -1, false);
- try {
- this.rootNode = (ObjectNode) mapper.readTree(source);
- } catch (IOException e) {
- throw new GfJsonException(e.getMessage());
- }
- if (rootNode == null) {
- throw new GfJsonException("Unable to parse JSON document");
- }
- }
-
- void postCreateMapper() {
- mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
- mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
- }
-
- /**
- *
- * @return this GfJsonObject
- * @throws GfJsonException If the key is null OR if the value is non-finite number
- */
- public GfJsonObject accumulate(String key, Object value) throws GfJsonException {
- try {
- if (rootNode.has(key)) {
- append(key, value);
- } else {
- // first time always add JSONArray for accumulate - for convenience
- ArrayNode array = mapper.createArrayNode();
- array.add(mapper.valueToTree(value));
- rootNode.set(key, array);
- }
- } catch (RuntimeException e) {
- throw new GfJsonException(e);
- }
- return this;
- }
-
- /**
- *
- * @return this GfJsonObject
- * @throws GfJsonException - If the key is null or if the current value associated with the key is
- * not a JSONArray.
- */
- public GfJsonObject append(String key, Object value) throws GfJsonException {
- try {
- JsonNode current = rootNode.get(key);
- if (current instanceof ArrayNode) {
- ArrayNode array = (ArrayNode) current;
- array.add(mapper.valueToTree(value));
- } else if (current == null) {
- ArrayNode array = mapper.createArrayNode();
- array.add(mapper.valueToTree(value));
- rootNode.set(key, array);
- } else {
- throw new GfJsonException("Cannot append to a non-array field");
- }
- } catch (RuntimeException e) {
- throw new GfJsonException(e);
- }
- return this;
- }
-
- /**
- * return the Jackson JsonNode associated with the given key
- */
- public JsonNode get(String key) {
- return rootNode.get(key);
- }
-
- public String getString(String key) {
- JsonNode node = rootNode.get(key);
- if (node == null) {
- return null; // "null";
- }
- if (node.textValue() != null) {
- return node.textValue();
- }
- return node.toString();
- }
-
- public int getInt(String key) {
- return rootNode.get(key).asInt();
- }
-
- public long getLong(String key) {
- return rootNode.get(key).asLong();
- }
-
- public double getDouble(String key) {
- return rootNode.get(key).asDouble();
- }
-
- public boolean getBoolean(String key) {
- return rootNode.get(key).asBoolean();
- }
-
- public GfJsonObject getJSONObject(String key) {
- Object value = rootNode.get(key);
- if (value == null) {
- return null;
- }
- return new GfJsonObject(value);
- }
-
- public JsonNode getInternalJsonObject() {
- return rootNode;
- }
-
- /**
- *
- * @return this GfJsonObject
- * @throws GfJsonException If there is a syntax error while preparing GfJsonArray.
- */
- public GfJsonArray getJSONArray(String key) throws GfJsonException {
- JsonNode node = rootNode.get(key);
- if (node == null) {
- return null;
- }
- if (!(node instanceof ArrayNode)) {
- // convert from list format to array format
- ArrayNode newNode = mapper.createArrayNode();
- for (int i = 0; i < node.size(); i++) {
- newNode.add(node.get("" + i));
- }
- rootNode.set(key, newNode);
- return new GfJsonArray(newNode);
- }
- return new GfJsonArray(node);
- }
-
- /**
- *
- * @return A GfJsonArray containing the key strings, or null if the internal JSONObject is empty.
- * @throws GfJsonException If there is a syntax error while preparing GfJsonArray.
- */
- public GfJsonArray names() throws GfJsonException {
- int size = rootNode.size();
- if (size == 0) {
- return new GfJsonArray();
- }
- String[] fieldNames = new String[rootNode.size()];
- Iterator<String> fieldNameIter = rootNode.fieldNames();
- int i = 0;
- while (fieldNameIter.hasNext()) {
- fieldNames[i++] = fieldNameIter.next();
- }
- return new GfJsonArray(fieldNames);
- }
-
- /**
- *
- * @return this GfJsonObject object
- * @throws GfJsonException If the value is non-finite number or if the key is null.
- */
- public GfJsonObject put(String key, Object value) throws GfJsonException {
- try {
- rootNode.set(key, toJsonNode(value));
- } catch (IllegalArgumentException e) {
- throw new GfJsonException(e);
- }
- return this;
- }
-
- public GfJsonObject putAsJSONObject(String key, Object value) throws GfJsonException {
- try {
- JsonNode internalJsonObj = toJsonNode(value);
- rootNode.set(key, internalJsonObj);
- } catch (IllegalArgumentException e) {
- throw new GfJsonException(e);
- }
- return this;
- }
-
- /**
- *
- * @return this GfJsonObject
- * @throws GfJsonException If the value is a non-finite number.
- */
- public GfJsonObject putOpt(String key, Object value) throws GfJsonException {
- if (key == null || value == null) {
- return this;
- }
- try {
- rootNode.set(key, toJsonNode(value));
- } catch (IllegalArgumentException e) {
- throw new GfJsonException(e);
- }
- return this;
- }
-
- // /**
- // *
- // * @return this GfJsonObject
- // * @throws GfJsonException If the value is a non-finite number.
- // */
- // public GfJsonObject put(String key, Collection<?> value) throws GfJsonException {
- // if (key == null || value == null) {
- // return this;
- // }
- // try {
- // rootNode.set(key, toJsonNode(value));
- // } catch (IllegalArgumentException e) {
- // throw new GfJsonException(e);
- // }
- // return this;
- // }
- //
- // public GfJsonObject put(String key, Map<?, ?> value) throws GfJsonException {
- // try {
- // rootNode.set(key, toJsonNode(value));
- // } catch (IllegalArgumentException e) {
- // throw new GfJsonException(e);
- // }
- // return this;
- // }
-
- // public static String quote(String string) {
- // return JSONObject.quote(string);
- // }
-
- // public Object remove(String key) {
- // return rootNode.remove(key);
- // }
-
- public boolean has(String key) {
- return rootNode.has(key);
- }
-
- public Iterator<String> keys() {
- return rootNode.fieldNames();
- }
-
- /**
- * @return the column size of this GfJsonObject
- */
- public int size() {
- return rootNode.size();
- }
-
- public String toString() {
- return rootNode.toString();
- }
-
- // public String getType() {
- // return rootNode.optString("type-class");
- // }
-
- /**
- *
- * @return this GfJsonObject
- * @throws GfJsonException If the object contains an invalid number.
- */
- public String toIndentedString() throws GfJsonException {
- try {
- return rootNode.toString();
- } catch (Exception e) {
- throw new GfJsonException(e);
- }
- }
-
- public List<String> getArrayValues(String key) {
- List<String> result = new ArrayList<>();
- if (rootNode.has(key)) {
- JsonNode node = rootNode.get(key);
- if (!(node instanceof ArrayNode)) {
- throw new IllegalStateException("requested field is not an array: " + key);
- }
- ArrayNode array = (ArrayNode) node;
- for (int i = 0; i < array.size(); i++) {
- JsonNode valueNode = array.get(i);
- result.add(valueNode.textValue() == null ? valueNode.toString() : valueNode.asText());
- }
- }
- return result;
- }
-
- private JsonNode toJsonNode(Object value) {
- if (value instanceof JsonNode) {
- return (JsonNode) value;
- }
- if (value instanceof GfJsonObject) {
- return ((GfJsonObject) value).getInternalJsonObject();
- }
- if (value instanceof GfJsonArray) {
- return ((GfJsonArray) value).getInternalJsonArray();
- }
- if (value == null) {
- return mapper.valueToTree(NULL);
- }
- return mapper.valueToTree(value);
- }
-
- public static GfJsonObject getGfJsonErrorObject(String errorMessage) {
- Map<String, String> errorMap = new HashMap<String, String>();
- errorMap.put("error", errorMessage);
- return new GfJsonObject(errorMap);
- }
-
- public ObjectMapper getObjectMapper() {
- return mapper;
- }
-}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/QueryResultFormatter.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/QueryResultFormatter.java
index 7a67e9c..7ae4b22 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/QueryResultFormatter.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/QueryResultFormatter.java
@@ -22,6 +22,8 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import org.eclipse.jetty.io.RuntimeIOException;
+
/**
* A JSON serializer that has special handling for collections to limit the number of elements
* written to the document. It also has special handling for PdxInstance and query Structs.
@@ -34,8 +36,8 @@ public class QueryResultFormatter extends AbstractJSONFormatter {
private final Map<String, List<Object>> map;
/**
- * Create a formatter that will limit collection sizes to maxCollectionElements
- * and will limit object traversal to being the same but in depth.
+ * Create a formatter that will limit collection sizes to maxCollectionElements and will limit
+ * object traversal to being the same but in depth.
*
* @param maxCollectionElements limit on collection elements and depth-first object traversal
*/
@@ -55,8 +57,8 @@ public class QueryResultFormatter extends AbstractJSONFormatter {
}
/**
- * After instantiating a formatter add the objects you want to be formatted
- * using this method. Typically this will be add("result", queryResult)
+ * After instantiating a formatter add the objects you want to be formatted using this method.
+ * Typically this will be add("result", queryResult)
*/
public synchronized QueryResultFormatter add(String key, Object value) {
List<Object> list = this.map.get(key);
@@ -91,16 +93,14 @@ public class QueryResultFormatter extends AbstractJSONFormatter {
writer.write('}');
return writer.toString();
- } catch (IOException exception) {
- new GfJsonException(exception).printStackTrace();
- } catch (GfJsonException e) {
+ } catch (Exception e) {
e.printStackTrace();
}
return null;
}
- private Writer writeList(Writer writer, List<Object> values) throws GfJsonException {
+ private Writer writeList(Writer writer, List<Object> values) {
// for each object we clear out the serializedObjects recursion map so that
// we don't immediately see "duplicate" entries
serializedObjects.clear();
@@ -123,7 +123,7 @@ public class QueryResultFormatter extends AbstractJSONFormatter {
}
writer.write(']');
} catch (IOException e) {
- throw new GfJsonException(e);
+ throw new RuntimeIOException(e);
}
return writer;
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/JsonUtil.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/JsonUtil.java
index 7af37f0..af64c4d 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/JsonUtil.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/JsonUtil.java
@@ -14,336 +14,20 @@
*/
package org.apache.geode.management.internal.cli.util;
-import java.lang.reflect.Array;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
+import java.util.Collections;
import java.util.List;
-import java.util.Map;
-import java.util.Set;
import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.JsonNodeType;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.apache.commons.beanutils.ConvertUtils;
-
-import org.apache.geode.management.internal.cli.json.GfJsonException;
-import org.apache.geode.management.internal.cli.json.GfJsonObject;
/**
* This class contains utility methods for JSON (http://www.json.org/) which is used by classes used
* for the Command Line Interface (CLI).
*
- *
* @since GemFire 7.0
*/
public class JsonUtil {
- /**
- * Converts given JSON String in to a Object. Refer http://www.json.org/ to construct a JSON
- * format.
- *
- * @param jsonString jsonString to be converted in to a Map.
- * @return an object constructed from given JSON String
- *
- * @throws IllegalArgumentException if the specified JSON string can not be converted in to an
- * Object
- */
- public static <T> T jsonToObject(String jsonString, Class<T> klass) {
- T objectFromJson = null;
- try {
- GfJsonObject jsonObject = new GfJsonObject(jsonString);
- objectFromJson = klass.newInstance();
- Method[] declaredMethods = klass.getMethods();
- Map<String, Method> methodsMap = new HashMap<String, Method>();
- for (Method method : declaredMethods) {
- methodsMap.put(method.getName(), method);
- }
-
- int noOfFields = jsonObject.size();
- Iterator<String> keys = jsonObject.keys();
-
- while (keys.hasNext()) {
- String key = keys.next();
- Method method = methodsMap.get("set" + capitalize(key));
- if (method != null) {
- Class<?>[] parameterTypes = method.getParameterTypes();
- if (parameterTypes.length == 1) {
- Class<?> parameterType = parameterTypes[0];
-
- Object value = jsonObject.get(key);
- if (isPrimitiveOrWrapper(parameterType)) {
- value = ConvertUtils.convert(getPrimitiveOrWrapperValue(parameterType, value),
- parameterType);
- }
- // Bug #51175
- else if (isArray(parameterType)) {
- value = toArray(value, parameterType);
- } else if (isList(parameterType)) {
- value = toList(value, parameterType);
- } else if (isMap(parameterType)) {
- value = toMap(value, parameterType);
- } else if (isSet(parameterType)) {
- value = toSet(value, parameterType);
- } else {
- value = jsonToObject(value.toString(), parameterType);
- }
- method.invoke(objectFromJson, new Object[] {value});
- noOfFields--;
- }
-
- }
- }
-
- if (noOfFields != 0) {
- throw new IllegalArgumentException(
- "Not enough setter methods for fields in given JSON String : " + jsonString
- + " in class : " + klass);
- }
-
- } catch (InstantiationException e) {
- throw new IllegalArgumentException("Couldn't convert JSON to Object of type " + klass, e);
- } catch (IllegalAccessException e) {
- throw new IllegalArgumentException("Couldn't convert JSON to Object of type " + klass, e);
- } catch (IllegalArgumentException e) {
- throw new IllegalArgumentException("Couldn't convert JSON to Object of type " + klass, e);
- } catch (InvocationTargetException e) {
- throw new IllegalArgumentException("Couldn't convert JSON to Object of type " + klass, e);
- } catch (GfJsonException e) {
- throw new IllegalArgumentException(e);
- }
- return objectFromJson;
- }
-
- private static void throwUnsupportedType(String containerType, JsonNodeType valueType)
- throws GfJsonException {
- throw new GfJsonException(String.format(
- "Only primitive types are supported in %s type for input commands but found %s",
- containerType, valueType.toString()));
- }
-
- private static Object toArray(Object value, Class<?> parameterType) throws GfJsonException {
- Class arrayComponentType = parameterType.getComponentType();
- if (isPrimitiveOrWrapper(arrayComponentType)) {
- if (value instanceof ArrayNode) {
- try {
- ArrayNode jsonArray = (ArrayNode) value;
- Object jArray = Array.newInstance(arrayComponentType, jsonArray.size());
- for (int i = 0; i < jsonArray.size(); i++) {
- JsonNode elem = jsonArray.get(i);
- switch (elem.getNodeType()) {
- case ARRAY:
- throwUnsupportedType("array", elem.getNodeType());
- case BINARY:
- throwUnsupportedType("array", elem.getNodeType());
- case BOOLEAN:
- Array.set(jArray, i, jsonArray.get(i).booleanValue());
- case MISSING:
- throwUnsupportedType("array", elem.getNodeType());
- case NULL:
- throwUnsupportedType("array", elem.getNodeType());
- case NUMBER:
- if (elem.isIntegralNumber()) {
- Array.set(jArray, i, elem.longValue());
- } else {
- Array.set(jArray, i, elem.doubleValue());
- }
- break;
- case OBJECT:
- throwUnsupportedType("array", elem.getNodeType());
- case POJO:
- throwUnsupportedType("array", elem.getNodeType());
- case STRING:
- if (elem.textValue() != null) {
- Array.set(jArray, i, elem.textValue());
- } else {
- Array.set(jArray, i, elem.toString());
- }
- }
- }
- return jArray;
- } catch (ArrayIndexOutOfBoundsException e) {
- throw new GfJsonException(e);
- } catch (IllegalArgumentException e) {
- throw new GfJsonException(e);
- }
- } else {
- throw new GfJsonException("Expected JSONArray for array type");
- }
- } else
- throw new GfJsonException(
- "Array contains non-primitive element. Non-primitive elements are not supported in json array");
- }
-
-
-
- /**
- * This is used in Put command this method uses HashSet as default implementation
- *
- */
- @SuppressWarnings({"rawtypes", "unchecked"})
- private static Object toSet(Object value, Class<?> parameterType) throws GfJsonException {
- try {
- ArrayNode array = (ArrayNode) value;
- Set set = new HashSet();
- for (int i = 0; i < array.size(); i++) {
- JsonNode elem = array.get(i);
- switch (elem.getNodeType()) {
- case ARRAY:
- throwUnsupportedType("list", elem.getNodeType());
- case BINARY:
- throwUnsupportedType("list", elem.getNodeType());
- case BOOLEAN:
- set.add(elem.booleanValue());
- case MISSING:
- throwUnsupportedType("list", elem.getNodeType());
- case NULL:
- throwUnsupportedType("list", elem.getNodeType());
- case NUMBER:
- if (elem.isIntegralNumber()) {
- set.add(elem.longValue());
- } else {
- set.add(elem.doubleValue());
- }
- break;
- case OBJECT:
- throwUnsupportedType("list", elem.getNodeType());
- case POJO:
- throwUnsupportedType("list", elem.getNodeType());
- case STRING:
- if (elem.textValue() != null) {
- set.add(elem.textValue());
- } else {
- set.add(elem.toString());
- }
- }
- }
- return set;
- } catch (Exception e) {
- throw new GfJsonException(e);
- }
- }
-
- private static Object toMap(Object value, Class<?> parameterType) throws GfJsonException {
- try {
- if (value instanceof ObjectNode) {
- ObjectNode obj = (ObjectNode) value;
- Iterator iterator = obj.fieldNames();
- Map map = new HashMap();
- while (iterator.hasNext()) {
- String key = (String) iterator.next();
- JsonNode elem = obj.get(key);
- switch (elem.getNodeType()) {
- case ARRAY:
- throwUnsupportedType("map", elem.getNodeType());
- case BINARY:
- throwUnsupportedType("map", elem.getNodeType());
- case BOOLEAN:
- map.put(key, elem.booleanValue());
- case MISSING:
- throwUnsupportedType("map", elem.getNodeType());
- case NULL:
- throwUnsupportedType("map", elem.getNodeType());
- case NUMBER:
- if (elem.isIntegralNumber()) {
- map.put(key, elem.longValue());
- } else {
- map.put(key, elem.doubleValue());
- }
- break;
- case OBJECT:
- throwUnsupportedType("map", elem.getNodeType());
- case POJO:
- throwUnsupportedType("map", elem.getNodeType());
- case STRING:
- if (elem.textValue() != null) {
- map.put(key, elem.textValue());
- } else {
- map.put(key, elem.toString());
- }
- }
- }
- return map;
- } else
- throw new GfJsonException(
- "Expected JSONObject for Map. Retrieved type is " + value.getClass());
- } catch (Exception e) {
- throw new GfJsonException(e);
- }
- }
-
- private static Object toList(Object value, Class<?> parameterType) throws GfJsonException {
- try {
- ArrayNode array = (ArrayNode) value;
- List list = new ArrayList();
- for (int i = 0; i < array.size(); i++) {
- JsonNode elem = array.get(i);
- switch (elem.getNodeType()) {
- case ARRAY:
- throwUnsupportedType("list", elem.getNodeType());
- case BINARY:
- throwUnsupportedType("list", elem.getNodeType());
- case BOOLEAN:
- list.add(elem.booleanValue());
- case MISSING:
- throwUnsupportedType("list", elem.getNodeType());
- case NULL:
- throwUnsupportedType("list", elem.getNodeType());
- case NUMBER:
- if (elem.isIntegralNumber()) {
- list.add(elem.longValue());
- } else {
- list.add(elem.doubleValue());
- }
- break;
- case OBJECT:
- throwUnsupportedType("list", elem.getNodeType());
- case POJO:
- throwUnsupportedType("list", elem.getNodeType());
- case STRING:
- if (elem.textValue() != null) {
- list.add(elem.textValue());
- } else {
- list.add(elem.toString());
- }
- }
- }
- return list;
- } catch (Exception e) {
- throw new GfJsonException(e);
- }
- }
-
- public static String capitalize(String str) {
- String capitalized = str;
- if (str == null || str.isEmpty()) {
- return capitalized;
- }
- capitalized = String.valueOf(str.charAt(0)).toUpperCase() + str.substring(1);
-
- return capitalized;
- }
-
- private static boolean isArray(Class<?> parameterType) {
- return parameterType.isArray();
- }
-
- public static boolean isList(Class<?> klass) {
- return klass.isAssignableFrom(List.class);
- }
-
- public static boolean isSet(Class<?> klass) {
- return klass.isAssignableFrom(Set.class);
- }
-
- public static boolean isMap(Class<?> klass) {
- return klass.isAssignableFrom(Map.class);
- }
-
public static boolean isPrimitiveOrWrapper(Class<?> klass) {
return klass.isAssignableFrom(Byte.class) || klass.isAssignableFrom(byte.class)
|| klass.isAssignableFrom(Short.class) || klass.isAssignableFrom(short.class)
@@ -356,59 +40,16 @@ public class JsonUtil {
|| klass.isAssignableFrom(char.class);
}
- public static Object getPrimitiveOrWrapperValue(Class<?> klass, Object value)
- throws IllegalArgumentException {
- if (klass.isAssignableFrom(Byte.class) || klass.isAssignableFrom(byte.class)) {
- return value;
- } else if (klass.isAssignableFrom(Short.class) || klass.isAssignableFrom(short.class)) {
- return value;
- } else if (klass.isAssignableFrom(Integer.class) || klass.isAssignableFrom(int.class)) {
- return value;
- } else if (klass.isAssignableFrom(Long.class) || klass.isAssignableFrom(long.class)) {
- return value;
- } else if (klass.isAssignableFrom(Float.class) || klass.isAssignableFrom(float.class)) {
- return value;
- } else if (klass.isAssignableFrom(Double.class) || klass.isAssignableFrom(double.class)) {
- return value;
- } else if (klass.isAssignableFrom(Boolean.class) || klass.isAssignableFrom(boolean.class)) {
- return value;
- } else if (klass.isAssignableFrom(String.class)) {
- return String.valueOf(value);
- } else if (klass.isAssignableFrom(Character.class)) {
- // Need to take care of converting between string to char values
- if (value instanceof String) {
- String str = (String) value;
- if (str.length() == 1)
- return new Character(str.charAt(0));
- else if (str.length() > 1 || str.length() == 0) {
- throw new IllegalArgumentException(
- "Expected Character value but found String with length " + str.length());
- }
- } else if (value instanceof Character) {
- return value;
- } else {
- throw new IllegalArgumentException(
- "Expected Character value but found " + value.getClass());
- }
- } else if (klass.isAssignableFrom(char.class)) {
- // Need to take care of converting between string to char values
- if (value instanceof String) {
- String str = (String) value;
- if (str.length() == 1)
- return str.charAt(0);
- else if (str.length() > 1 || str.length() == 0) {
- throw new IllegalArgumentException(
- "Expected Character value but found String with length " + str.length());
- }
- } else if (value instanceof Character) {
- return ((Character) value).charValue();
- } else {
- throw new IllegalArgumentException(
- "Expected Character value but found " + value.getClass());
- }
- } else {
- return null;
+ public static List<String> toStringList(JsonNode jsonArray) {
+ if (!jsonArray.isArray()) {
+ return Collections.emptyList();
}
- return value;
+
+ List<String> result = new ArrayList<>();
+ for (JsonNode node : jsonArray) {
+ result.add(node.asText());
+ }
+
+ return result;
}
}
diff --git a/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt b/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt
index 2ad9818..fabf1c7 100644
--- a/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt
+++ b/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt
@@ -549,7 +549,6 @@ org/apache/geode/management/internal/cli/functions/UnregisterFunction,true,1
org/apache/geode/management/internal/cli/functions/UpdateCacheFunction,false
org/apache/geode/management/internal/cli/functions/UpdateCacheFunction$CacheElementOperation,false
org/apache/geode/management/internal/cli/functions/UserFunctionExecution,true,1
-org/apache/geode/management/internal/cli/json/GfJsonException,true,36449998984143318
org/apache/geode/management/internal/cli/result/CommandResultException,true,1,result:org/apache/geode/management/cli/Result
org/apache/geode/management/internal/cli/result/TableBuilder$Align,false
org/apache/geode/management/internal/cli/result/TableBuilderHelper$TooManyColumnsException,false
diff --git a/geode-core/src/test/java/org/apache/geode/distributed/AbstractLauncherServiceStateTest.java b/geode-core/src/test/java/org/apache/geode/distributed/AbstractLauncherServiceStateTest.java
index 07d0a36..d8cf92e 100755
--- a/geode-core/src/test/java/org/apache/geode/distributed/AbstractLauncherServiceStateTest.java
+++ b/geode-core/src/test/java/org/apache/geode/distributed/AbstractLauncherServiceStateTest.java
@@ -35,6 +35,8 @@ import java.net.InetAddress;
import java.util.Arrays;
import java.util.List;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.lang3.StringUtils;
import org.junit.After;
import org.junit.Before;
@@ -42,8 +44,7 @@ import org.junit.Test;
import org.apache.geode.internal.GemFireVersion;
import org.apache.geode.internal.process.ProcessUtils;
-import org.apache.geode.management.internal.cli.json.GfJsonException;
-import org.apache.geode.management.internal.cli.json.GfJsonObject;
+import org.apache.geode.management.internal.cli.util.JsonUtil;
/**
* Unit tests for {@link AbstractLauncher.ServiceState}. Tests marshalling of ServiceState to and
@@ -801,20 +802,20 @@ public class AbstractLauncherServiceStateTest {
protected static TestState fromJson(final String json) {
try {
- GfJsonObject gfJsonObject = new GfJsonObject(json);
-
- Status status = valueOfDescription(gfJsonObject.getString(JSON_STATUS));
- List<String> jvmArguments = gfJsonObject.getJSONArray(JSON_JVMARGUMENTS).toStringList();
-
- return new TestState(status, gfJsonObject.getString(JSON_STATUSMESSAGE),
- gfJsonObject.getLong(JSON_TIMESTAMP), gfJsonObject.getString(JSON_LOCATION),
- gfJsonObject.getInt(JSON_PID), gfJsonObject.getLong(JSON_UPTIME),
- gfJsonObject.getString(JSON_WORKINGDIRECTORY), jvmArguments,
- gfJsonObject.getString(JSON_CLASSPATH), gfJsonObject.getString(JSON_GEMFIREVERSION),
- gfJsonObject.getString(JSON_JAVAVERSION), gfJsonObject.getString(JSON_LOGFILE),
- gfJsonObject.getString(JSON_HOST), gfJsonObject.getString(JSON_PORT),
- gfJsonObject.getString(JSON_MEMBERNAME));
- } catch (GfJsonException e) {
+ JsonNode jsonObject = new ObjectMapper().readTree(json);
+
+ Status status = valueOfDescription(jsonObject.get(JSON_STATUS).asText());
+ List<String> jvmArguments = JsonUtil.toStringList(jsonObject.get(JSON_JVMARGUMENTS));
+
+ return new TestState(status, jsonObject.get(JSON_STATUSMESSAGE).asText(),
+ jsonObject.get(JSON_TIMESTAMP).asLong(), jsonObject.get(JSON_LOCATION).asText(),
+ jsonObject.get(JSON_PID).asInt(), jsonObject.get(JSON_UPTIME).asLong(),
+ jsonObject.get(JSON_WORKINGDIRECTORY).asText(), jvmArguments,
+ jsonObject.get(JSON_CLASSPATH).asText(), jsonObject.get(JSON_GEMFIREVERSION).asText(),
+ jsonObject.get(JSON_JAVAVERSION).asText(), jsonObject.get(JSON_LOGFILE).asText(),
+ jsonObject.get(JSON_HOST).asText(), jsonObject.get(JSON_PORT).asText(),
+ jsonObject.get(JSON_MEMBERNAME).asText());
+ } catch (Exception e) {
throw new IllegalArgumentException("Unable to create TestState from JSON: " + json);
}
}
diff --git a/geode-core/src/test/java/org/apache/geode/distributed/LocatorStateTest.java b/geode-core/src/test/java/org/apache/geode/distributed/LocatorStateTest.java
index 843f8b2..8339820 100755
--- a/geode-core/src/test/java/org/apache/geode/distributed/LocatorStateTest.java
+++ b/geode-core/src/test/java/org/apache/geode/distributed/LocatorStateTest.java
@@ -22,14 +22,14 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Before;
import org.junit.Test;
import org.apache.geode.distributed.AbstractLauncher.ServiceState;
import org.apache.geode.distributed.AbstractLauncher.Status;
import org.apache.geode.distributed.LocatorLauncher.LocatorState;
-import org.apache.geode.management.internal.cli.json.GfJsonException;
-import org.apache.geode.management.internal.cli.json.GfJsonObject;
/**
* Unit tests for {@link LocatorLauncher.LocatorState}.
@@ -79,10 +79,9 @@ public class LocatorStateTest {
// when: passed to fromJson
Throwable thrown = catchThrowable(() -> fromJson(emptyString));
- // then: throws IllegalArgumentException with cause of GfJsonException
assertThat(thrown).isInstanceOf(IllegalArgumentException.class)
- .hasCauseInstanceOf(GfJsonException.class);
- assertThat(thrown.getCause()).isInstanceOf(GfJsonException.class).hasNoCause();
+ .hasCauseInstanceOf(NullPointerException.class);
+ assertThat(thrown.getCause()).isInstanceOf(NullPointerException.class).hasNoCause();
}
@Test
@@ -95,8 +94,8 @@ public class LocatorStateTest {
// then: throws IllegalArgumentException with cause of GfJsonException
assertThat(thrown).isInstanceOf(IllegalArgumentException.class)
- .hasCauseInstanceOf(GfJsonException.class);
- assertThat(thrown.getCause()).isInstanceOf(GfJsonException.class).hasNoCause();
+ .hasCauseInstanceOf(NullPointerException.class);
+ assertThat(thrown.getCause()).isInstanceOf(NullPointerException.class).hasNoCause();
}
@Test
@@ -165,6 +164,14 @@ public class LocatorStateTest {
map.put(ServiceState.JSON_TIMESTAMP, timestampTime);
map.put(ServiceState.JSON_UPTIME, uptime);
map.put(ServiceState.JSON_WORKINGDIRECTORY, workingDirectory);
- return new GfJsonObject(map).toString();
+
+ String status = null;
+ try {
+ status = new ObjectMapper().writeValueAsString(map);
+ } catch (JsonProcessingException e) {
+ e.printStackTrace();
+ }
+
+ return status;
}
}
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/DataCommandJsonJUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/DataCommandJsonJUnitTest.java
deleted file mode 100644
index bcb83be..0000000
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/DataCommandJsonJUnitTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.geode.management.internal.cli;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-
-import org.junit.Test;
-
-import org.apache.geode.management.internal.cli.dto.Car;
-import org.apache.geode.management.internal.cli.util.JsonUtil;
-
-public class DataCommandJsonJUnitTest {
-
- @Test
- public void testCollectionTypesInJson() {
- String json =
- "{'attributes':{'power':'90hp'},'make':'502.1825','model':'502.1825','colors':['red','white','blue'],'attributeSet':['red','white','blue'], 'attributeArray':['red','white','blue']}";
- Car car = (Car) JsonUtil.jsonToObject(json, Car.class);
- assertNotNull(car.getAttributeSet());
- assertTrue(car.getAttributeSet() instanceof HashSet);
- assertEquals(3, car.getAttributeSet().size());
-
- assertNotNull(car.getColors());
- assertTrue(car.getColors() instanceof ArrayList);
- assertEquals(3, car.getColors().size());
-
- assertNotNull(car.getAttributes());
- assertTrue(car.getAttributes() instanceof HashMap);
- assertEquals(1, car.getAttributes().size());
- assertTrue(car.getAttributes().containsKey("power"));
-
- assertNotNull(car.getAttributeArray());
- assertTrue(car.getAttributeArray() instanceof String[]);
- assertEquals(3, car.getAttributeArray().length);
- }
-}
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/GfJsonArrayTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/GfJsonArrayTest.java
deleted file mode 100644
index 409dcd9..0000000
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/GfJsonArrayTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * 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.geode.management.internal.cli.json;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import org.junit.Before;
-import org.junit.Test;
-
-
-public class GfJsonArrayTest {
-
- private GfJsonArray gfJsonArray;
-
- public static class Simple {
- private int key;
- private String value;
-
- public Simple(int key, String value) {
- this.key = key;
- this.value = value;
- }
-
- public int getKey() {
- return key;
- }
-
- public String getValue() {
- return value;
- }
- }
-
- @Before
- public void setup() {
- gfJsonArray = new GfJsonArray();
- }
-
- @Test
- public void emptyArray() {
- assertThat(gfJsonArray.size()).isEqualTo(0);
- assertThat(gfJsonArray.toString()).isEqualTo("[]");
- }
-
- @Test
- public void arrayFromPrimitives() throws Exception {
- gfJsonArray = new GfJsonArray(new String[] {"a", "b", "c"});
-
- assertThat(gfJsonArray.size()).isEqualTo(3);
- assertThat(gfJsonArray.getString(0)).isEqualTo("a");
- assertThat(gfJsonArray.getString(1)).isEqualTo("b");
- assertThat(gfJsonArray.getString(2)).isEqualTo("c");
- }
-
- @Test
- public void addSingleObject() throws Exception {
- gfJsonArray.put("a");
- assertThat(gfJsonArray.getString(0)).isEqualTo("a");
- assertThat(gfJsonArray.toString()).isEqualTo("[\"a\"]");
- }
-
- @Test
- public void addMultipleObjects() throws Exception {
- gfJsonArray.put("a");
- gfJsonArray.put("b");
- gfJsonArray.put("c");
-
- assertThat(gfJsonArray.getString(0)).isEqualTo("a");
- assertThat(gfJsonArray.getString(1)).isEqualTo("b");
- assertThat(gfJsonArray.getString(2)).isEqualTo("c");
- assertThat(gfJsonArray.toString()).isEqualTo("[\"a\",\"b\",\"c\"]");
- }
-
- @Test
- public void putObject() throws Exception {
- GfJsonObject obj = new GfJsonObject(new Simple(1, "a"));
- gfJsonArray.put(obj);
- gfJsonArray.put(1, obj);
-
- assertThat(gfJsonArray.getJsonObject(0).getInt("key")).isEqualTo(1);
- assertThat(gfJsonArray.getJsonObject(0).getString("value")).isEqualTo("a");
- assertThat(gfJsonArray.getJsonObject(1).getInt("key")).isEqualTo(1);
- assertThat(gfJsonArray.getJsonObject(1).getString("value")).isEqualTo("a");
- }
-
- @Test
- public void putOutOfBoundsAddsNull() throws Exception {
- gfJsonArray.put(1, "a");
-
- assertThat(gfJsonArray.size()).isEqualTo(2);
- assertThat(gfJsonArray.toString()).isEqualTo("[null,\"a\"]");
- }
-
-
-}
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/GfJsonObjectTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/GfJsonObjectTest.java
deleted file mode 100644
index 1a6e2a9..0000000
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/GfJsonObjectTest.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * 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.geode.management.internal.cli.json;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-
-import org.junit.Before;
-import org.junit.Test;
-
-
-public class GfJsonObjectTest {
-
- private GfJsonObject gfJsonObject;
-
- public static class Simple {
- private int key;
- private String value;
-
- public int getKey() {
- return key;
- }
-
- public String getValue() {
- return value;
- }
-
- public Simple(int key, String value) {
- this.key = key;
- this.value = value;
- }
- }
-
- public static class GetMethodReturnsObjectReferencingMe {
- private String id;
- private GetMethodReturnsObjectReferencingMe peer;
-
- static GetMethodReturnsObjectReferencingMe createTestInstance() {
- GetMethodReturnsObjectReferencingMe inst1 = new GetMethodReturnsObjectReferencingMe();
- inst1.id = "instance1";
- GetMethodReturnsObjectReferencingMe inst2 = new GetMethodReturnsObjectReferencingMe();
- inst2.id = "instance2";
- inst1.peer = inst2;
- inst2.peer = inst1;
- return inst1;
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public GetMethodReturnsObjectReferencingMe getPeer() {
- return peer;
- }
-
- }
-
-
- @Before
- public void setup() {
- gfJsonObject = new GfJsonObject();
- }
-
- @Test
- public void emptyObject() {
- assertThat(gfJsonObject.toString()).isEqualTo("{}");
- }
-
- @Test
- public void addObject() {
- gfJsonObject = new GfJsonObject(new Simple(1, "a"));
-
- assertThat(gfJsonObject.getString("key")).isEqualTo("1");
- assertThat(gfJsonObject.getString("value")).isEqualTo("a");
- }
-
- @Test
- public void addBidirectionalReferenceObject() throws GfJsonException {
- // JSONObject.cyclicDepChkEnabled.set(true);
- // JSONObject.cyclicDependencySet.set(new HashSet());
- new GfJsonObject(new GetMethodReturnsObjectReferencingMe());
- }
-
- @Test
- public void addRawObject() throws Exception {
- gfJsonObject = new GfJsonObject("{\"key\":1}");
- assertThat(gfJsonObject.getString("key")).isEqualTo("1");
- }
-
- @Test
- public void accumulatePrimitives() throws Exception {
- gfJsonObject.accumulate("string", "value1");
- gfJsonObject.accumulate("string", "value2");
-
- assertThat(gfJsonObject.getString("string")).isEqualTo("[\"value1\",\"value2\"]");
- }
-
- @Test
- public void putAndGetPrimitives() throws Exception {
- gfJsonObject.put("string", "value1");
- gfJsonObject.put("int", Integer.MAX_VALUE);
- gfJsonObject.put("boolean", true);
- gfJsonObject.put("double", Double.MAX_VALUE);
- gfJsonObject.put("long", Long.MAX_VALUE);
-
- assertThat(gfJsonObject.getString("string")).isEqualTo("value1");
-
- assertThat(gfJsonObject.getString("int")).isEqualTo(Integer.toString(Integer.MAX_VALUE));
- assertThat(gfJsonObject.getInt("int")).isEqualTo(Integer.MAX_VALUE);
-
- assertThat(gfJsonObject.getString("boolean")).isEqualTo("true");
- assertThat(gfJsonObject.getBoolean("boolean")).isEqualTo(true);
-
- assertThat(gfJsonObject.getString("double")).isEqualTo(Double.toString(Double.MAX_VALUE));
- assertThat(gfJsonObject.getDouble("double")).isEqualTo(Double.MAX_VALUE);
-
- assertThat(gfJsonObject.getString("long")).isEqualTo(Long.toString(Long.MAX_VALUE));
- assertThat(gfJsonObject.getDouble("long")).isEqualTo(Long.MAX_VALUE);
- }
-
- @Test
- public void appendCreatesAndAddsToArray() throws Exception {
- gfJsonObject.append("array", 1);
- gfJsonObject.append("array", 2);
-
- assertThat(gfJsonObject.getString("array")).isEqualTo("[1,2]");
- }
-
- @Test
- public void cannotAppendToExistingKey() throws Exception {
- gfJsonObject.put("wat", 1);
- assertThatThrownBy(() -> gfJsonObject.append("wat", 2)).isInstanceOf(GfJsonException.class);
- }
-
- @Test
- public void canGetGfJsonObject() throws Exception {
- GfJsonObject sub = new GfJsonObject();
- sub.put("foo", "bar");
- gfJsonObject.put("sub", sub);
-
- assertThat(gfJsonObject.getJSONObject("sub").toString()).isEqualTo("{\"foo\":\"bar\"}");
- }
-
- @Test
- public void canGetGfJsonArray() throws Exception {
- gfJsonObject.append("array", 1);
- gfJsonObject.append("array", "a");
-
- assertThat(gfJsonObject.getJSONArray("array").toString()).isEqualTo("[1,\"a\"]");
- }
-
- @Test
- public void canGetNames() throws Exception {
- gfJsonObject.put("string", "value1");
- gfJsonObject.put("int", Integer.MAX_VALUE);
- gfJsonObject.put("boolean", true);
- gfJsonObject.put("double", Double.MAX_VALUE);
- gfJsonObject.put("long", Long.MAX_VALUE);
-
- assertThat(gfJsonObject.names().size()).isEqualTo(5);
- assertThat(gfJsonObject.names().toString())
- .isEqualTo("[\"string\",\"int\",\"boolean\",\"double\",\"long\"]");
- }
-}
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/QueryResultFormatterTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/QueryResultFormatterTest.java
index 888fa0f..9849d4e 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/QueryResultFormatterTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/QueryResultFormatterTest.java
@@ -25,6 +25,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;
@@ -140,12 +142,12 @@ public class QueryResultFormatterTest {
checkResult(queryResultFormatter);
}
- private void checkResult(final QueryResultFormatter queryResultFormatter) throws GfJsonException {
+ private void checkResult(final QueryResultFormatter queryResultFormatter) throws Exception {
String jsonString = queryResultFormatter.toString();
System.out.println("queryResultFormatter.toString=" + jsonString);
- GfJsonObject gfJsonObject = new GfJsonObject(jsonString);
- System.out.println("gfJsonObject=" + gfJsonObject);
- assertThat(gfJsonObject.get(RESULT)).isNotNull();
+ JsonNode jsonObject = new ObjectMapper().readTree(jsonString);
+ System.out.println("jsonObject=" + jsonObject);
+ assertThat(jsonObject.get(RESULT)).isNotNull();
}
private enum Currency {
diff --git a/geode-dunit/src/main/java/org/apache/geode/pdx/JSONFormatVerifyUtility.java b/geode-dunit/src/main/java/org/apache/geode/pdx/JSONFormatVerifyUtility.java
index c371744..0b8fa71 100644
--- a/geode-dunit/src/main/java/org/apache/geode/pdx/JSONFormatVerifyUtility.java
+++ b/geode-dunit/src/main/java/org/apache/geode/pdx/JSONFormatVerifyUtility.java
@@ -16,67 +16,64 @@
package org.apache.geode.pdx;
-import org.junit.Assert;
+import java.io.IOException;
-import org.apache.geode.management.internal.cli.json.GfJsonException;
-import org.apache.geode.management.internal.cli.json.GfJsonObject;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Assert;
public class JSONFormatVerifyUtility {
static void verifyJsonWithJavaObject(String json, TestObjectForJSONFormatter testObject)
- throws GfJsonException {
- GfJsonObject jsonObject = new GfJsonObject(json);
+ throws IOException {
+ JsonNode jsonObject = new ObjectMapper().readTree(json);
// Testcase-1: Validate json string against the pdxInstance.
// validation for primitive types
Assert.assertEquals("VerifyPdxInstanceToJson: Int type values are not matched",
testObject.getP_int(),
- jsonObject.getInt(testObject.getP_intFN()));
+ jsonObject.get(testObject.getP_intFN()).asInt());
Assert.assertEquals("VerifyPdxInstanceToJson: long type values are not matched",
- testObject.getP_long(), jsonObject.getLong(testObject.getP_longFN()));
+ testObject.getP_long(), jsonObject.get(testObject.getP_longFN()).asLong());
// validation for wrapper types
Assert.assertEquals("VerifyPdxInstanceToJson: Boolean type values are not matched",
- testObject.getW_bool().booleanValue(), jsonObject.getBoolean(testObject.getW_boolFN()));
+ testObject.getW_bool().booleanValue(),
+ jsonObject.get(testObject.getW_boolFN()).asBoolean());
Assert.assertEquals("VerifyPdxInstanceToJson: Float type values are not matched",
- testObject.getW_double().doubleValue(), jsonObject.getDouble(testObject.getW_doubleFN()),
+ testObject.getW_double().doubleValue(),
+ jsonObject.get(testObject.getW_doubleFN()).asDouble(),
0);
Assert.assertEquals("VerifyPdxInstanceToJson: bigDec type values are not matched",
- testObject.getW_bigDec().longValue(), jsonObject.getLong(testObject.getW_bigDecFN()));
+ testObject.getW_bigDec().longValue(), jsonObject.get(testObject.getW_bigDecFN()).asLong());
// validation for array types
Assert.assertEquals("VerifyPdxInstanceToJson: Byte[] type values are not matched",
(int) testObject.getW_byteArray()[1],
- jsonObject.getJSONArray(testObject.getW_byteArrayFN()).getInternalJsonArray().get(1)
- .asInt());
+ jsonObject.get(testObject.getW_byteArrayFN()).get(1).asInt());
Assert.assertEquals("VerifyPdxInstanceToJson: Double[] type values are not matched",
testObject.getW_doubleArray()[0],
- jsonObject.getJSONArray(testObject.getW_doubleArrayFN()).getInternalJsonArray().get(0)
- .asDouble(0),
- 0);
+ jsonObject.get(testObject.getW_doubleArrayFN()).get(0).asDouble(0), 0);
Assert.assertEquals("VerifyPdxInstanceToJson: String[] type values are not matched",
testObject.getW_strArray()[2],
- jsonObject.getJSONArray(testObject.getW_strArrayFN()).getInternalJsonArray().get(2)
- .textValue());
+ jsonObject.get(testObject.getW_strArrayFN()).get(2).textValue());
// validation for collection types
Assert.assertEquals("VerifyPdxInstanceToJson: list type values are not matched",
testObject.getC_list().get(0),
- jsonObject.getJSONArray(testObject.getC_listFN()).getInternalJsonArray().get(0)
- .textValue());
+ jsonObject.get(testObject.getC_listFN()).get(0).textValue());
Assert.assertEquals("VerifyPdxInstanceToJson: stack type values are not matched",
testObject.getC_stack().get(2),
- jsonObject.getJSONArray(testObject.getC_stackFN()).getInternalJsonArray().get(2)
- .textValue());
+ jsonObject.get(testObject.getC_stackFN()).get(2).textValue());
// validation for Map
Assert.assertEquals("VerifyPdxInstanceToJson: Map type values are not matched",
testObject.getM_empByCity().get("Ahmedabad").get(0).getFname(),
- jsonObject.getJSONObject(testObject.getM_empByCityFN()).getJSONArray("Ahmedabad")
- .getJsonObject(0).getString("fname"));
+ jsonObject.get(testObject.getM_empByCityFN()).get("Ahmedabad")
+ .get(0).get("fname").asText());
// validation Enum
Assert.assertEquals("VerifyPdxInstanceToJson: Enum type values are not matched",
- testObject.getDay().toString(), jsonObject.getString(testObject.getDayFN()));
+ testObject.getDay().toString(), jsonObject.get(testObject.getDayFN()).asText());
}
}
diff --git a/geode-junit/src/main/java/org/apache/geode/pdx/TestObjectForJSONFormatter.java b/geode-junit/src/main/java/org/apache/geode/pdx/TestObjectForJSONFormatter.java
index 85fd4a8..f2c3b59 100755
--- a/geode-junit/src/main/java/org/apache/geode/pdx/TestObjectForJSONFormatter.java
+++ b/geode-junit/src/main/java/org/apache/geode/pdx/TestObjectForJSONFormatter.java
@@ -14,6 +14,7 @@
*/
package org.apache.geode.pdx;
+import java.io.IOException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayDeque;
@@ -29,11 +30,9 @@ import java.util.Queue;
import java.util.Set;
import java.util.Stack;
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.apache.geode.management.internal.cli.json.GfJsonException;
-import org.apache.geode.management.internal.cli.json.GfJsonObject;
-
enum Day {
Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
}
@@ -99,11 +98,10 @@ public class TestObjectForJSONFormatter implements PdxSerializable {
public TestObjectForJSONFormatter() {}
- public String addClassTypeToJson(String json) throws GfJsonException {
- GfJsonObject jsonObj = new GfJsonObject(json);
- ((ObjectNode) jsonObj.getInternalJsonObject()).put("@type",
- "org.apache.geode.pdx.TestObjectForJSONFormatter");
- return jsonObj.toString();
+ public String addClassTypeToJson(String json) throws IOException {
+ ObjectNode node = (ObjectNode) new ObjectMapper().readTree(json);
+ node.put("@type", "org.apache.geode.pdx.TestObjectForJSONFormatter");
+ return node.toString();
}
public void defaultInitialization() {