diff --git a/pom.xml b/pom.xml index fc0a11c..7c30e20 100644 --- a/pom.xml +++ b/pom.xml @@ -38,7 +38,7 @@ 1.8 - 1.8.0 + 2.8.5 5.0.0-M2 1.0.0-M2 4.12.0-M2 @@ -74,9 +74,14 @@ - com.fasterxml.jackson - jackson-datatype-json-org - ${jackson-datatype-json-org.version} + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} org.junit.jupiter 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.FileNotFoundException; import java.io.IOException; import java.net.URISyntaxException; -import org.json.JSONException; + public class GossipRunner { @@ -46,8 +46,6 @@ public class GossipRunner { 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.io.IOException; 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 @@ public class StartupSettings { * 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 @@ public class StartupSettings { 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 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.UdpActiveGossipMessage; 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.Callable; 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.UdpGossipDataMessage; 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 java.util.concurrent.atomic.AtomicBoolean; 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.GossipMember; 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.UdpActiveGossipOk; 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 @@ public class StartupSettingsTest { @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();