Merge branch 'master' of http://git.apache.org/incubator-gossip
diff --git a/pom.xml b/pom.xml
index 71103ad..ad78c91 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,7 +38,7 @@
<java.version>1.8</java.version>
<!-- dependecy versions -->
- <jackson-datatype-json-org.version>1.8.0</jackson-datatype-json-org.version>
+ <jackson.version>2.8.5</jackson.version>
<junit.jupiter.version>5.0.0-M2</junit.jupiter.version>
<junit.platform.version>1.0.0-M2</junit.platform.version>
<junit.vintage.version>4.12.0-M2</junit.vintage.version>
@@ -75,9 +75,14 @@
<dependencies>
<dependency>
- <groupId>com.fasterxml.jackson</groupId>
- <artifactId>jackson-datatype-json-org</artifactId>
- <version>${jackson-datatype-json-org.version}</version>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ <version>${jackson.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
diff --git a/src/main/java/org/apache/gossip/GossipRunner.java b/src/main/java/org/apache/gossip/GossipRunner.java
index c765ed6..1ae609c 100644
--- a/src/main/java/org/apache/gossip/GossipRunner.java
+++ b/src/main/java/org/apache/gossip/GossipRunner.java
@@ -22,7 +22,7 @@
import java.io.IOException;
import java.net.URISyntaxException;
-import org.json.JSONException;
+
public class GossipRunner {
@@ -46,8 +46,6 @@
gossipService.start();
} catch (FileNotFoundException e) {
System.err.println("The given file is not found!");
- } catch (JSONException e) {
- System.err.println("The given file is not in the correct JSON format!");
} catch (IOException e) {
System.err.println("Could not read the configuration file: " + e.getMessage());
} catch (InterruptedException e) {
diff --git a/src/main/java/org/apache/gossip/StartupSettings.java b/src/main/java/org/apache/gossip/StartupSettings.java
index 93757bd..079aaa0 100644
--- a/src/main/java/org/apache/gossip/StartupSettings.java
+++ b/src/main/java/org/apache/gossip/StartupSettings.java
@@ -25,17 +25,18 @@
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import org.apache.log4j.Logger;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
+
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
/**
* This object represents the settings used when starting the gossip service.
*
- * @author harmenw
*/
public class StartupSettings {
private static final Logger log = Logger.getLogger(StartupSettings.class);
@@ -160,7 +161,7 @@
* Thrown when reading the file gives problems.
* @throws URISyntaxException
*/
- public static StartupSettings fromJSONFile(File jsonFile) throws JSONException,
+ public static StartupSettings fromJSONFile(File jsonFile) throws
FileNotFoundException, IOException, URISyntaxException {
// Read the file to a String.
StringBuffer buffer = new StringBuffer();
@@ -170,32 +171,31 @@
buffer.append(line.trim());
}
}
-
- JSONObject jsonObject = new JSONArray(buffer.toString()).getJSONObject(0);
- String uri = jsonObject.getString("uri");
- String id = jsonObject.getString("id");
- int gossipInterval = jsonObject.getInt("gossip_interval");
- int cleanupInterval = jsonObject.getInt("cleanup_interval");
- String cluster = jsonObject.getString("cluster");
+ ObjectMapper om = new ObjectMapper();
+ JsonNode root = om.readTree(jsonFile);
+ JsonNode jsonObject = root.get(0);
+ String uri = jsonObject.get("uri").textValue();
+ String id = jsonObject.get("id").textValue();
+ int gossipInterval = jsonObject.get("gossip_interval").intValue();
+ int cleanupInterval = jsonObject.get("cleanup_interval").intValue();
+ String cluster = jsonObject.get("cluster").textValue();
if (cluster == null){
throw new IllegalArgumentException("cluster was null. It is required");
}
URI uri2 = new URI(uri);
StartupSettings settings = new StartupSettings(id, uri2, new GossipSettings(gossipInterval,
cleanupInterval), cluster);
-
- // Now iterate over the members from the config file and add them to the settings.
String configMembersDetails = "Config-members [";
- JSONArray membersJSON = jsonObject.getJSONArray("members");
- for (int i = 0; i < membersJSON.length(); i++) {
- JSONObject memberJSON = membersJSON.getJSONObject(i);
- URI uri3 = new URI(memberJSON.getString("uri"));
- RemoteGossipMember member = new RemoteGossipMember(memberJSON.getString("cluster"),
+ JsonNode membersJSON = jsonObject.get("members");
+ Iterator<JsonNode> it = membersJSON.iterator();
+ while (it.hasNext()){
+ JsonNode child = it.next();
+ URI uri3 = new URI(child.get("uri").textValue());
+ RemoteGossipMember member = new RemoteGossipMember(child.get("cluster").asText(),
uri3, "", 0);
settings.addGossipMember(member);
configMembersDetails += member.getAddress();
- if (i < (membersJSON.length() - 1))
- configMembersDetails += ", ";
+ configMembersDetails += ", ";
}
log.info(configMembersDetails + "]");
diff --git a/src/main/java/org/apache/gossip/manager/ActiveGossipThread.java b/src/main/java/org/apache/gossip/manager/ActiveGossipThread.java
index 064df59..29f4688 100644
--- a/src/main/java/org/apache/gossip/manager/ActiveGossipThread.java
+++ b/src/main/java/org/apache/gossip/manager/ActiveGossipThread.java
@@ -39,7 +39,9 @@
import org.apache.gossip.udp.UdpGossipDataMessage;
import org.apache.gossip.udp.UdpSharedGossipDataMessage;
import org.apache.log4j.Logger;
-import org.codehaus.jackson.map.ObjectMapper;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
/**
* [The active thread: periodically send gossip request.] The class handles gossiping the membership
diff --git a/src/main/java/org/apache/gossip/manager/GossipCore.java b/src/main/java/org/apache/gossip/manager/GossipCore.java
index 258a159..0ab56a0 100644
--- a/src/main/java/org/apache/gossip/manager/GossipCore.java
+++ b/src/main/java/org/apache/gossip/manager/GossipCore.java
@@ -31,7 +31,6 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.ThreadPoolExecutor.DiscardPolicy;
@@ -52,7 +51,9 @@
import org.apache.gossip.udp.UdpNotAMemberFault;
import org.apache.gossip.udp.UdpSharedGossipDataMessage;
import org.apache.log4j.Logger;
-import org.codehaus.jackson.map.ObjectMapper;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
public class GossipCore {
diff --git a/src/main/java/org/apache/gossip/manager/PassiveGossipThread.java b/src/main/java/org/apache/gossip/manager/PassiveGossipThread.java
index 2e1fd81..b54a963 100644
--- a/src/main/java/org/apache/gossip/manager/PassiveGossipThread.java
+++ b/src/main/java/org/apache/gossip/manager/PassiveGossipThread.java
@@ -27,7 +27,8 @@
import org.apache.gossip.model.Base;
import org.apache.log4j.Logger;
-import org.codehaus.jackson.map.ObjectMapper;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
/**
* [The passive thread: reply to incoming gossip request.] This class handles the passive cycle,
diff --git a/src/main/java/org/apache/gossip/manager/random/RandomGossipManager.java b/src/main/java/org/apache/gossip/manager/random/RandomGossipManager.java
index e7e19da..26541ca 100644
--- a/src/main/java/org/apache/gossip/manager/random/RandomGossipManager.java
+++ b/src/main/java/org/apache/gossip/manager/random/RandomGossipManager.java
@@ -21,7 +21,6 @@
import org.apache.gossip.GossipSettings;
import org.apache.gossip.event.GossipListener;
import org.apache.gossip.manager.GossipManager;
-import org.apache.gossip.manager.impl.OnlyProcessReceivedPassiveGossipThread;
import java.net.URI;
import java.util.List;
diff --git a/src/main/java/org/apache/gossip/model/Base.java b/src/main/java/org/apache/gossip/model/Base.java
index 92b38cd..4551f2a 100644
--- a/src/main/java/org/apache/gossip/model/Base.java
+++ b/src/main/java/org/apache/gossip/model/Base.java
@@ -22,9 +22,11 @@
import org.apache.gossip.udp.UdpGossipDataMessage;
import org.apache.gossip.udp.UdpNotAMemberFault;
import org.apache.gossip.udp.UdpSharedGossipDataMessage;
-import org.codehaus.jackson.annotate.JsonSubTypes;
-import org.codehaus.jackson.annotate.JsonSubTypes.Type;
-import org.codehaus.jackson.annotate.JsonTypeInfo;
+
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
+
@JsonTypeInfo(
use = JsonTypeInfo.Id.CLASS,
diff --git a/src/test/java/org/apache/gossip/StartupSettingsTest.java b/src/test/java/org/apache/gossip/StartupSettingsTest.java
index 55c297b..1c0826b 100644
--- a/src/test/java/org/apache/gossip/StartupSettingsTest.java
+++ b/src/test/java/org/apache/gossip/StartupSettingsTest.java
@@ -18,7 +18,6 @@
package org.apache.gossip;
import org.apache.log4j.Logger;
-import org.json.JSONException;
import io.teknek.tunit.TUnit;
@@ -47,7 +46,7 @@
@Test
- public void testUsingSettingsFile() throws IOException, InterruptedException, JSONException, URISyntaxException {
+ public void testUsingSettingsFile() throws IOException, InterruptedException, URISyntaxException {
File settingsFile = File.createTempFile("gossipTest",".json");
log.debug( "Using settings file: " + settingsFile.getAbsolutePath() );
settingsFile.deleteOnExit();