Merge pull request #6 from joprice/housekeeping
Small cleanup
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..fc368f3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,16 @@
+# Eclipse
+.classpath
+.project
+.settings/
+
+# Intellij
+.idea/
+*.iml
+*.iws
+
+# Mac
+.DS_Store
+
+# Maven
+log/
+target/
diff --git a/README.md b/README.md
index 690e08d..bf1d73d 100644
--- a/README.md
+++ b/README.md
@@ -1,66 +1,79 @@
-
-Gossip protocol is a method for a group of nodes to discover and check the livelyness of a cluster. More information can be found at http://en.wikipedia.org/wiki/Gossip_protocol.
-
-The original implementation was forked from https://code.google.com/p/java-gossip/. Several bug fixes and changes have already been added.
-
-Usage
------
-
-To gossip you need one or more seed nodes. Seed is just a list of places to initially connect to.
-
- GossipSettings settings = new GossipSettings();
- int seedNodes = 3;
- ArrayList<GossipMember> startupMembers = new ArrayList<GossipMember>();
- for (int i = 1; i < seedNodes+1; ++i) {
- startupMembers.add(new RemoteGossipMember("127.0.0." + i, 2000, i + ""));
- }
-
-Here we start five gossip processes and check that they discover each other. (Normally these are on different hosts but here we give each process a distinct local ip.
-
- ArrayList<GossipService> clients = new ArrayList<GossipService>();
- int clusterMembers = 5;
- for (int i = 1; i < clusterMembers+1; ++i) {
- GossipService gossipService = new GossipService("127.0.0." + i, 2000, i + "",
- LogLevel.DEBUG, startupMembers, settings, null);
- clients.add(gossipService);
- gossipService.start();
- }
-
-Later we can check that the nodes discover each other
-
- Thread.sleep(10000);
- for (int i = 0; i < clusterMembers; ++i) {
- Assert.assertEquals(4, clients.get(i).get_gossipManager().getMemberList().size());
- }
-
-Event Listener
-------
-
-The status can be polled using the getters that return immutable lists.
-
- List<LocalGossipMember> getMemberList()
- public List<LocalGossipMember> getDeadList()
-
-Users can also attach an event listener:
-
- GossipService gossipService = new GossipService("127.0.0." + i, 2000, i + "", LogLevel.DEBUG,
- startupMembers, settings,
- new GossipListener(){
- @Override
- public void gossipEvent(GossipMember member, GossipState state) {
- System.out.println(member+" "+ state);
- }
- });
-
-
-Maven
-------
-
-
-You can get this software from maven central.
-
- <dependency>
- <groupId>io.teknek</groupId>
- <artifactId>gossip</artifactId>
- <version>${pick_the_latest_version}</version>
- </dependency>
+# Gossip
+
+Gossip protocol is a method for a group of nodes to discover and check the liveliness of a cluster. More information can be found at http://en.wikipedia.org/wiki/Gossip_protocol.
+
+The original implementation was forked from https://code.google.com/p/java-gossip/. Several bug fixes and changes have already been added.
+
+Usage
+-----
+
+To gossip you need one or more seed nodes. Seed is just a list of places to initially connect to.
+
+```java
+ GossipSettings settings = new GossipSettings();
+ int seedNodes = 3;
+ List<GossipMember> startupMembers = new ArrayList<>();
+ for (int i = 1; i < seedNodes+1; ++i) {
+ startupMembers.add(new RemoteGossipMember("127.0.0." + i, 2000, i + ""));
+ }
+```
+
+Here we start five gossip processes and check that they discover each other. (Normally these are on different hosts but here we give each process a distinct local ip.
+
+```java
+ List<GossipService> clients = new ArrayList<>();
+ int clusterMembers = 5;
+ for (int i = 1; i < clusterMembers+1; ++i) {
+ GossipService gossipService = new GossipService("127.0.0." + i, 2000, i + "",
+ LogLevel.DEBUG, startupMembers, settings, null);
+ clients.add(gossipService);
+ gossipService.start();
+ }
+```
+
+Later we can check that the nodes discover each other
+
+```java
+ Thread.sleep(10000);
+ for (int i = 0; i < clusterMembers; ++i) {
+ Assert.assertEquals(4, clients.get(i).get_gossipManager().getMemberList().size());
+ }
+```
+
+Event Listener
+------
+
+The status can be polled using the getters that return immutable lists.
+
+```java
+ List<LocalGossipMember> getMemberList()
+ public List<LocalGossipMember> getDeadList()
+```
+
+Users can also attach an event listener:
+
+```java
+ GossipService gossipService = new GossipService("127.0.0." + i, 2000, i + "", LogLevel.DEBUG,
+ startupMembers, settings,
+ new GossipListener(){
+ @Override
+ public void gossipEvent(GossipMember member, GossipState state) {
+ System.out.println(member+" "+ state);
+ }
+ });
+```
+
+
+Maven
+------
+
+
+You can get this software from maven central.
+
+```xml
+ <dependency>
+ <groupId>io.teknek</groupId>
+ <artifactId>gossip</artifactId>
+ <version>${pick_the_latest_version}</version>
+ </dependency>
+```
diff --git a/src/main/java/com/google/code/gossip/GossipMember.java b/src/main/java/com/google/code/gossip/GossipMember.java
index 50e9af3..bf60820 100644
--- a/src/main/java/com/google/code/gossip/GossipMember.java
+++ b/src/main/java/com/google/code/gossip/GossipMember.java
@@ -7,20 +7,20 @@
/**
* A abstract class representing a gossip member.
- *
+ *
* @author joshclemm, harmenw
*/
public abstract class GossipMember implements Comparable<GossipMember>{
-
+
public static final String JSON_HOST = "host";
public static final String JSON_PORT = "port";
public static final String JSON_HEARTBEAT = "heartbeat";
public static final String JSON_ID = "id";
- protected String _host;
- protected int _port;
+ protected final String _host;
+ protected final int _port;
protected int _heartbeat;
protected String _id;
-
+
/**
* Constructor.
* @param host The hostname or IP address.
@@ -33,7 +33,7 @@
_id = id;
_heartbeat = heartbeat;
}
-
+
/**
* Get the hostname or IP address of the remote gossip member.
* @return The hostname or IP address.
@@ -41,7 +41,7 @@
public String getHost() {
return _host;
}
-
+
/**
* Get the port number of the remote gossip member.
* @return The port number.
@@ -65,7 +65,7 @@
public int getHeartbeat() {
return _heartbeat;
}
-
+
/**
* Set the heartbeat of this gossip member.
* @param heartbeat The new heartbeat.
@@ -73,8 +73,8 @@
public void setHeartbeat(int heartbeat) {
this._heartbeat = heartbeat;
}
-
-
+
+
public String getId() {
return _id;
}
@@ -86,7 +86,7 @@
public String toString() {
return "Member [address=" + getAddress() + ", id=" + _id + ", heartbeat=" + _heartbeat + "]";
}
-
+
/**
* @see java.lang.Object#hashCode()
*/
@@ -136,7 +136,7 @@
throw new RuntimeException(e);
}
}
-
+
public int compareTo(GossipMember other){
return this.getAddress().compareTo(other.getAddress());
}
diff --git a/src/main/java/com/google/code/gossip/GossipRunner.java b/src/main/java/com/google/code/gossip/GossipRunner.java
index e452f93..8d856cd 100644
--- a/src/main/java/com/google/code/gossip/GossipRunner.java
+++ b/src/main/java/com/google/code/gossip/GossipRunner.java
@@ -7,7 +7,6 @@
import org.json.JSONException;
public class GossipRunner {
- private StartupSettings _settings;
public static void main(String[] args) {
File configFile;
@@ -26,9 +25,9 @@
if (configFile != null && configFile.exists()) {
try {
System.out.println("Parsing the configuration file...");
- _settings = StartupSettings.fromJSONFile(configFile);
+ StartupSettings _settings = StartupSettings.fromJSONFile(configFile);
GossipService gossipService = new GossipService(_settings);
- System.out.println("Gossip service successfully inialized, let's start it...");
+ System.out.println("Gossip service successfully initialized, let's start it...");
gossipService.start();
} catch (FileNotFoundException e) {
System.err.println("The given file is not found!");
diff --git a/src/main/java/com/google/code/gossip/GossipService.java b/src/main/java/com/google/code/gossip/GossipService.java
index 1f05c25..707937f 100644
--- a/src/main/java/com/google/code/gossip/GossipService.java
+++ b/src/main/java/com/google/code/gossip/GossipService.java
@@ -1,9 +1,9 @@
package com.google.code.gossip;
import java.net.InetAddress;
-import java.net.SocketException;
import java.net.UnknownHostException;
-import java.util.ArrayList;
+import java.util.List;
+
import org.apache.log4j.Logger;
import com.google.code.gossip.event.GossipListener;
@@ -12,7 +12,7 @@
/**
* This object represents the service which is responsible for gossiping with other gossip members.
- *
+ *
* @author joshclemm, harmenw
*/
public class GossipService {
@@ -23,7 +23,7 @@
/**
* Constructor with the default settings.
- *
+ *
* @throws InterruptedException
* @throws UnknownHostException
*/
@@ -36,13 +36,12 @@
/**
* Setup the client's lists, gossiping parameters, and parse the startup config file.
- *
- * @throws SocketException
+ *
* @throws InterruptedException
* @throws UnknownHostException
*/
public GossipService(String ipAddress, int port, String id, int logLevel,
- ArrayList<GossipMember> gossipMembers, GossipSettings settings, GossipListener listener)
+ List<GossipMember> gossipMembers, GossipSettings settings, GossipListener listener)
throws InterruptedException, UnknownHostException {
_gossipManager = new RandomGossipManager(ipAddress, port, id, settings, gossipMembers, listener);
}
diff --git a/src/main/java/com/google/code/gossip/GossipTimeoutTimer.java b/src/main/java/com/google/code/gossip/GossipTimeoutTimer.java
index c3613fb..3df8041 100644
--- a/src/main/java/com/google/code/gossip/GossipTimeoutTimer.java
+++ b/src/main/java/com/google/code/gossip/GossipTimeoutTimer.java
@@ -9,20 +9,20 @@
* This object represents a timer for a gossip member. When the timer has elapsed without being
* reset in the meantime, it will inform the GossipService about this who in turn will put the
* gossip member on the dead list, because it is apparantly not alive anymore.
- *
+ *
* @author joshclemm, harmenw
*/
public class GossipTimeoutTimer extends Timer {
- private long _sleepTime;
- private LocalGossipMember _source;
+ private final long _sleepTime;
+ private final LocalGossipMember _source;
/**
* Constructor. Creates a reset-able timer that wakes up after millisecondsSleepTime.
- *
+ *
* @param millisecondsSleepTime
* The time for this timer to wait before an event.
- * @param service
+ * @param notificationListener
* @param member
*/
public GossipTimeoutTimer(long millisecondsSleepTime, NotificationListener notificationListener,
@@ -51,7 +51,7 @@
/**
* Adds a new wake-up time for this timer.
- *
+ *
* @param milliseconds
*/
private void setWakeupTime(long milliseconds) {
diff --git a/src/main/java/com/google/code/gossip/LocalGossipMember.java b/src/main/java/com/google/code/gossip/LocalGossipMember.java
index 6d040ae..1c651a9 100644
--- a/src/main/java/com/google/code/gossip/LocalGossipMember.java
+++ b/src/main/java/com/google/code/gossip/LocalGossipMember.java
@@ -5,24 +5,24 @@
/**
* This object represent a gossip member with the properties known locally. These objects are stored
* in the local list of gossip member.s
- *
+ *
* @author harmenw
*/
public class LocalGossipMember extends GossipMember {
/** The timeout timer for this gossip member. */
- private transient GossipTimeoutTimer timeoutTimer;
+ private final transient GossipTimeoutTimer timeoutTimer;
/**
* Constructor.
- *
- * @param host
+ *
+ * @param hostname
* The hostname or IP address.
* @param port
* The port number.
+ * @param id
* @param heartbeat
* The current heartbeat.
- * @param gossipService
- * The GossipService object.
+ * @param notificationListener
* @param cleanupTimeout
* The cleanup timeout for this gossip member.
*/
diff --git a/src/main/java/com/google/code/gossip/RemoteGossipMember.java b/src/main/java/com/google/code/gossip/RemoteGossipMember.java
index f42f699..5a95004 100644
--- a/src/main/java/com/google/code/gossip/RemoteGossipMember.java
+++ b/src/main/java/com/google/code/gossip/RemoteGossipMember.java
@@ -3,15 +3,15 @@
/**
* The object represents a gossip member with the properties as received from a remote gossip
* member.
- *
+ *
* @author harmenw
*/
public class RemoteGossipMember extends GossipMember {
/**
* Constructor.
- *
- * @param host
+ *
+ * @param hostname
* The hostname or IP address.
* @param port
* The port number.
@@ -24,8 +24,8 @@
/**
* Construct a RemoteGossipMember with a heartbeat of 0.
- *
- * @param host
+ *
+ * @param hostname
* The hostname or IP address.
* @param port
* The port number.
diff --git a/src/main/java/com/google/code/gossip/StartupSettings.java b/src/main/java/com/google/code/gossip/StartupSettings.java
index 2e558ef..a377f29 100644
--- a/src/main/java/com/google/code/gossip/StartupSettings.java
+++ b/src/main/java/com/google/code/gossip/StartupSettings.java
@@ -6,6 +6,7 @@
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
@@ -13,7 +14,7 @@
/**
* This object represents the settings used when starting the gossip service.
- *
+ *
* @author harmenw
*/
public class StartupSettings {
@@ -25,14 +26,14 @@
private int _logLevel;
/** The gossip settings used at startup. */
- private GossipSettings _gossipSettings;
+ private final GossipSettings _gossipSettings;
/** The list with gossip members to start with. */
- private ArrayList<GossipMember> _gossipMembers;
+ private final List<GossipMember> _gossipMembers;
/**
* Constructor.
- *
+ *
* @param port
* The port to start the service on.
*/
@@ -42,7 +43,7 @@
/**
* Constructor.
- *
+ *
* @param port
* The port to start the service on.
*/
@@ -50,12 +51,12 @@
_port = port;
_logLevel = logLevel;
_gossipSettings = gossipSettings;
- _gossipMembers = new ArrayList<GossipMember>();
+ _gossipMembers = new ArrayList<>();
}
/**
* Set the port of the gossip service.
- *
+ *
* @param port
* The port for the gossip service.
*/
@@ -65,7 +66,7 @@
/**
* Get the port for the gossip service.
- *
+ *
* @return The port of the gossip service.
*/
public int getPort() {
@@ -74,7 +75,7 @@
/**
* Set the log level of the gossip service.
- *
+ *
* @param logLevel
* The log level({LogLevel}).
*/
@@ -84,7 +85,7 @@
/**
* Get the log level of the gossip service.
- *
+ *
* @return The log level.
*/
public int getLogLevel() {
@@ -93,7 +94,7 @@
/**
* Get the GossipSettings.
- *
+ *
* @return The GossipSettings object.
*/
public GossipSettings getGossipSettings() {
@@ -102,7 +103,7 @@
/**
* Add a gossip member to the list of members to start with.
- *
+ *
* @param member
* The member to add.
*/
@@ -112,16 +113,16 @@
/**
* Get the list with gossip members.
- *
+ *
* @return The gossip members.
*/
- public ArrayList<GossipMember> getGossipMembers() {
+ public List<GossipMember> getGossipMembers() {
return _gossipMembers;
}
/**
* Parse the settings for the gossip service from a JSON file.
- *
+ *
* @param jsonFile
* The file object which refers to the JSON config file.
* @return The StartupSettings object with the settings from the config file.
diff --git a/src/main/java/com/google/code/gossip/event/GossipState.java b/src/main/java/com/google/code/gossip/event/GossipState.java
index 9e5db5f..bea5924 100644
--- a/src/main/java/com/google/code/gossip/event/GossipState.java
+++ b/src/main/java/com/google/code/gossip/event/GossipState.java
@@ -2,8 +2,8 @@
public enum GossipState {
UP("up"), DOWN("down");
- private String state;
-
+ private final String state;
+
private GossipState(String state){
this.state = state;
}
diff --git a/src/main/java/com/google/code/gossip/examples/GossipExample.java b/src/main/java/com/google/code/gossip/examples/GossipExample.java
index ffcf7ca..f5ddfea 100644
--- a/src/main/java/com/google/code/gossip/examples/GossipExample.java
+++ b/src/main/java/com/google/code/gossip/examples/GossipExample.java
@@ -3,6 +3,7 @@
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
+import java.util.List;
import com.google.code.gossip.GossipMember;
import com.google.code.gossip.GossipService;
@@ -13,7 +14,7 @@
/**
* This class is an example of how one could use the gossip service. Here we start multiple gossip
* clients on this host as specified in the config file.
- *
+ *
* @author harmenw
*/
public class GossipExample extends Thread {
@@ -41,14 +42,14 @@
try {
GossipSettings settings = new GossipSettings();
- ArrayList<GossipService> clients = new ArrayList<GossipService>();
+ List<GossipService> clients = new ArrayList<>();
// Get my ip address.
String myIpAddress = InetAddress.getLocalHost().getHostAddress();
// Create the gossip members and put them in a list and give them a port number starting with
// 2000.
- ArrayList<GossipMember> startupMembers = new ArrayList<GossipMember>();
+ List<GossipMember> startupMembers = new ArrayList<>();
for (int i = 0; i < NUMBER_OF_CLIENTS; ++i) {
startupMembers.add(new RemoteGossipMember(myIpAddress, 2000 + i, ""));
}
diff --git a/src/main/java/com/google/code/gossip/manager/ActiveGossipThread.java b/src/main/java/com/google/code/gossip/manager/ActiveGossipThread.java
index 5823c74..1dd8837 100644
--- a/src/main/java/com/google/code/gossip/manager/ActiveGossipThread.java
+++ b/src/main/java/com/google/code/gossip/manager/ActiveGossipThread.java
@@ -14,7 +14,7 @@
*/
abstract public class ActiveGossipThread implements Runnable {
- private GossipManager _gossipManager;
+ private final GossipManager _gossipManager;
private final AtomicBoolean _keepRunning;
@@ -50,7 +50,7 @@
/**
* Abstract method which should be implemented by a subclass. This method should return a member
* of the list to gossip with.
- *
+ *
* @param memberList
* The list of members which are stored in the local list of members.
* @return The chosen LocalGossipMember to gossip with.
diff --git a/src/main/java/com/google/code/gossip/manager/GossipManager.java b/src/main/java/com/google/code/gossip/manager/GossipManager.java
index 197d624..4edc426 100644
--- a/src/main/java/com/google/code/gossip/manager/GossipManager.java
+++ b/src/main/java/com/google/code/gossip/manager/GossipManager.java
@@ -24,24 +24,24 @@
import com.google.code.gossip.event.GossipState;
public abstract class GossipManager extends Thread implements NotificationListener {
-
+
public static final Logger LOGGER = Logger.getLogger(GossipManager.class);
public static final int MAX_PACKET_SIZE = 102400;
- private ConcurrentSkipListMap<LocalGossipMember,GossipState> members;
- private LocalGossipMember _me;
- private GossipSettings _settings;
- private AtomicBoolean _gossipServiceRunning;
- private ExecutorService _gossipThreadExecutor;
- private Class<? extends PassiveGossipThread> _passiveGossipThreadClass;
- private PassiveGossipThread passiveGossipThread;
- private Class<? extends ActiveGossipThread> _activeGossipThreadClass;
+ private final ConcurrentSkipListMap<LocalGossipMember,GossipState> members;
+ private final LocalGossipMember _me;
+ private final GossipSettings _settings;
+ private final AtomicBoolean _gossipServiceRunning;
+ private final Class<? extends PassiveGossipThread> _passiveGossipThreadClass;
+ private final Class<? extends ActiveGossipThread> _activeGossipThreadClass;
+ private final GossipListener listener;
private ActiveGossipThread activeGossipThread;
- private GossipListener listener;
+ private PassiveGossipThread passiveGossipThread;
+ private ExecutorService _gossipThreadExecutor;
public GossipManager(Class<? extends PassiveGossipThread> passiveGossipThreadClass,
Class<? extends ActiveGossipThread> activeGossipThreadClass, String address, int port,
- String id, GossipSettings settings, ArrayList<GossipMember> gossipMembers,
+ String id, GossipSettings settings, List<GossipMember> gossipMembers,
GossipListener listener) {
_passiveGossipThreadClass = passiveGossipThreadClass;
_activeGossipThreadClass = activeGossipThreadClass;
@@ -87,7 +87,7 @@
listener.gossipEvent(m, GossipState.UP);
}
}
-
+
public GossipSettings getSettings() {
return _settings;
}
@@ -105,7 +105,7 @@
public LocalGossipMember getMyself() {
return _me;
}
-
+
public List<LocalGossipMember> getDeadList() {
List<LocalGossipMember> up = new ArrayList<>();
for (Entry<LocalGossipMember, GossipState> entry : members.entrySet()){
@@ -119,8 +119,6 @@
/**
* Starts the client. Specifically, start the various cycles for this protocol. Start the gossip
* thread and start the receiver thread.
- *
- * @throws InterruptedException
*/
public void run() {
for (LocalGossipMember member : members.keySet()) {
@@ -160,7 +158,7 @@
activeGossipThread.shutdown();
try {
boolean result = _gossipThreadExecutor.awaitTermination(1000, TimeUnit.MILLISECONDS);
- if (result == false){
+ if (!result){
LOGGER.error("executor shutdown timed out");
}
} catch (InterruptedException e) {
diff --git a/src/main/java/com/google/code/gossip/manager/PassiveGossipThread.java b/src/main/java/com/google/code/gossip/manager/PassiveGossipThread.java
index 314432a..02a6be8 100644
--- a/src/main/java/com/google/code/gossip/manager/PassiveGossipThread.java
+++ b/src/main/java/com/google/code/gossip/manager/PassiveGossipThread.java
@@ -26,13 +26,13 @@
* determine the incoming message.
*/
abstract public class PassiveGossipThread implements Runnable {
-
+
public static final Logger LOGGER = Logger.getLogger(PassiveGossipThread.class);
/** The socket used for the passive thread of the gossip service. */
private DatagramSocket _server;
- private GossipManager _gossipManager;
+ private final GossipManager _gossipManager;
private AtomicBoolean _keepRunning;
@@ -73,7 +73,7 @@
// A package larger than this would not be possible to be send from a GossipService,
// since this is check before sending the message.
// This could normally only occur when the list of members is very big,
- // or when the packet is misformed, and the first 4 bytes is not the right in anymore.
+ // or when the packet is malformed, and the first 4 bytes is not the right in anymore.
// For this reason we regards the message.
if (packet_length <= GossipManager.MAX_PACKET_SIZE) {
byte[] json_bytes = new byte[packet_length];
@@ -84,7 +84,7 @@
GossipService.LOGGER.debug("Received message (" + packet_length + " bytes): "
+ receivedMessage);
try {
- ArrayList<GossipMember> remoteGossipMembers = new ArrayList<GossipMember>();
+ List<GossipMember> remoteGossipMembers = new ArrayList<>();
RemoteGossipMember senderMember = null;
GossipService.LOGGER.debug("Received member list:");
JSONArray jsonArray = new JSONArray(receivedMessage);
@@ -136,7 +136,7 @@
/**
* Abstract method for merging the local and remote list.
- *
+ *
* @param gossipManager
* The GossipManager for retrieving the local members and dead members list.
* @param senderMember
@@ -147,4 +147,4 @@
*/
abstract protected void mergeLists(GossipManager gossipManager, RemoteGossipMember senderMember,
List<GossipMember> remoteList);
-}
\ No newline at end of file
+}
diff --git a/src/main/java/com/google/code/gossip/manager/impl/OnlyProcessReceivedPassiveGossipThread.java b/src/main/java/com/google/code/gossip/manager/impl/OnlyProcessReceivedPassiveGossipThread.java
index f0afaf9..2441204 100644
--- a/src/main/java/com/google/code/gossip/manager/impl/OnlyProcessReceivedPassiveGossipThread.java
+++ b/src/main/java/com/google/code/gossip/manager/impl/OnlyProcessReceivedPassiveGossipThread.java
@@ -19,7 +19,9 @@
* Merge remote list (received from peer), and our local member list. Simply, we must update the
* heartbeats that the remote list has with our list. Also, some additional logic is needed to
* make sure we have not timed out a member and then immediately received a list with that member.
- *
+ *
+ * @param gossipManager
+ * @param senderMember
* @param remoteList
*/
protected void mergeLists(GossipManager gossipManager, RemoteGossipMember senderMember,
@@ -92,6 +94,6 @@
}
}
-
+
}
diff --git a/src/main/java/com/google/code/gossip/manager/impl/SendMembersActiveGossipThread.java b/src/main/java/com/google/code/gossip/manager/impl/SendMembersActiveGossipThread.java
index 85e4b8a..d788f79 100644
--- a/src/main/java/com/google/code/gossip/manager/impl/SendMembersActiveGossipThread.java
+++ b/src/main/java/com/google/code/gossip/manager/impl/SendMembersActiveGossipThread.java
@@ -35,8 +35,7 @@
GossipService.LOGGER.debug("Sending memberlist to " + dest + ":" + member.getPort());
jsonArray.put(me.toJSONObject());
GossipService.LOGGER.debug(me);
- for (int i = 0; i < memberList.size(); i++) {
- LocalGossipMember other = memberList.get(i);
+ for (LocalGossipMember other : memberList) {
jsonArray.put(other.toJSONObject());
GossipService.LOGGER.debug(other);
}
diff --git a/src/main/java/com/google/code/gossip/manager/random/RandomActiveGossipThread.java b/src/main/java/com/google/code/gossip/manager/random/RandomActiveGossipThread.java
index d232f38..7849f8d 100644
--- a/src/main/java/com/google/code/gossip/manager/random/RandomActiveGossipThread.java
+++ b/src/main/java/com/google/code/gossip/manager/random/RandomActiveGossipThread.java
@@ -11,7 +11,7 @@
public class RandomActiveGossipThread extends SendMembersActiveGossipThread {
/** The Random used for choosing a member to gossip with. */
- private Random _random;
+ private final Random _random;
public RandomActiveGossipThread(GossipManager gossipManager) {
super(gossipManager);
@@ -21,7 +21,7 @@
/**
* [The selectToSend() function.] Find a random peer from the local membership list. In the case
* where this client is the only member in the list, this method will return null.
- *
+ *
* @return Member random member if list is greater than 1, null otherwise
*/
protected LocalGossipMember selectPartner(List<LocalGossipMember> memberList) {
diff --git a/src/main/java/com/google/code/gossip/manager/random/RandomGossipManager.java b/src/main/java/com/google/code/gossip/manager/random/RandomGossipManager.java
index 3d028eb..dc82170 100644
--- a/src/main/java/com/google/code/gossip/manager/random/RandomGossipManager.java
+++ b/src/main/java/com/google/code/gossip/manager/random/RandomGossipManager.java
@@ -1,16 +1,16 @@
package com.google.code.gossip.manager.random;
-import java.util.ArrayList;
-
import com.google.code.gossip.GossipMember;
import com.google.code.gossip.GossipSettings;
import com.google.code.gossip.event.GossipListener;
import com.google.code.gossip.manager.GossipManager;
import com.google.code.gossip.manager.impl.OnlyProcessReceivedPassiveGossipThread;
+import java.util.List;
+
public class RandomGossipManager extends GossipManager {
public RandomGossipManager(String address, int port, String id, GossipSettings settings,
- ArrayList<GossipMember> gossipMembers, GossipListener listener) {
+ List<GossipMember> gossipMembers, GossipListener listener) {
super(OnlyProcessReceivedPassiveGossipThread.class, RandomActiveGossipThread.class, address,
port, id, settings, gossipMembers, listener);
}
diff --git a/src/test/java/io/teknek/gossip/TenNodeThreeSeedTest.java b/src/test/java/io/teknek/gossip/TenNodeThreeSeedTest.java
index 93f93c5..76c5b5b 100644
--- a/src/test/java/io/teknek/gossip/TenNodeThreeSeedTest.java
+++ b/src/test/java/io/teknek/gossip/TenNodeThreeSeedTest.java
@@ -2,6 +2,7 @@
import java.net.UnknownHostException;
import java.util.ArrayList;
+import java.util.List;
import junit.framework.Assert;
@@ -17,25 +18,25 @@
public class TenNodeThreeSeedTest {
-
+
@Test
public void test() throws UnknownHostException, InterruptedException{
abc();
}
-
+
@Test
public void testAgain() throws UnknownHostException, InterruptedException{
abc();
}
-
+
public void abc() throws InterruptedException, UnknownHostException{
GossipSettings settings = new GossipSettings();
int seedNodes = 3;
- ArrayList<GossipMember> startupMembers = new ArrayList<GossipMember>();
+ List<GossipMember> startupMembers = new ArrayList<>();
for (int i = 1; i < seedNodes+1; ++i) {
startupMembers.add(new RemoteGossipMember("127.0.0." + i, 2000, i + ""));
}
- ArrayList<GossipService> clients = new ArrayList<GossipService>();
+ List<GossipService> clients = new ArrayList<>();
int clusterMembers = 5;
for (int i = 1; i < clusterMembers+1; ++i) {
GossipService gossipService = new GossipService("127.0.0." + i, 2000, i + "", LogLevel.DEBUG,
@@ -56,6 +57,6 @@
}
for (int i = 0; i < clusterMembers; ++i) {
clients.get(i).shutdown();
- }
+ }
}
}