From baef7539351e0f2dc1feeef9abee8ec303545340 Mon Sep 17 00:00:00 2001 From: TheLimeGlass Date: Wed, 23 Sep 2020 13:58:28 -0600 Subject: [PATCH 01/13] Add InetSocketAddress methods --- build.gradle | 2 +- .../com/sitrica/japson/shared/Japson.java | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index a22db67..a58b984 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ plugins { jar.archiveName = project.name + '.jar' // Add SNAPSHOT to make this publish as a beta. -version '1.1.3' +version '1.1.3.1-SNAPSHOT' sourceCompatibility = 1.8 diff --git a/src/main/java/com/sitrica/japson/shared/Japson.java b/src/main/java/com/sitrica/japson/shared/Japson.java index ea47ff2..df98a8a 100644 --- a/src/main/java/com/sitrica/japson/shared/Japson.java +++ b/src/main/java/com/sitrica/japson/shared/Japson.java @@ -4,6 +4,7 @@ import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; +import java.net.InetSocketAddress; import java.net.SocketException; import java.util.HashSet; import java.util.Set; @@ -81,6 +82,14 @@ public boolean isDebug() { return debug; } + public T sendPacket(InetSocketAddress address, ReturnablePacket packet) throws TimeoutException, InterruptedException, ExecutionException { + return sendPacket(address.getAddress(), address.getPort(), packet, new GsonBuilder() + .enableComplexMapKeySerialization() + .serializeNulls() + .setLenient() + .create()); + } + public T sendPacket(InetAddress address, int port, ReturnablePacket packet) throws TimeoutException, InterruptedException, ExecutionException { return sendPacket(address, port, packet, new GsonBuilder() .enableComplexMapKeySerialization() @@ -89,6 +98,10 @@ public T sendPacket(InetAddress address, int port, ReturnablePacket packe .create()); } + public T sendPacket(InetSocketAddress address, ReturnablePacket japsonPacket, Gson gson) throws TimeoutException, InterruptedException, ExecutionException { + return sendPacket(address.getAddress(), address.getPort(), japsonPacket, gson); + } + public T sendPacket(InetAddress address, int port, ReturnablePacket japsonPacket, Gson gson) throws TimeoutException, InterruptedException, ExecutionException { return CompletableFuture.supplyAsync(() -> { try (DatagramSocket socket = new DatagramSocket()) { @@ -132,6 +145,14 @@ public T sendPacket(InetAddress address, int port, ReturnablePacket japso }).get(TIMEOUT, TimeUnit.MILLISECONDS); } + public void sendPacket(InetSocketAddress address, Packet japsonPacket) throws InterruptedException, ExecutionException, TimeoutException { + sendPacket(address.getAddress(), address.getPort(), japsonPacket, new GsonBuilder() + .enableComplexMapKeySerialization() + .serializeNulls() + .setLenient() + .create()); + } + public void sendPacket(InetAddress address, int port, Packet japsonPacket) throws InterruptedException, ExecutionException, TimeoutException { sendPacket(address, port, japsonPacket, new GsonBuilder() .enableComplexMapKeySerialization() @@ -140,6 +161,10 @@ public void sendPacket(InetAddress address, int port, Packet japsonPacket) throw .create()); } + public void sendPacket(InetSocketAddress address, Packet japsonPacket, Gson gson) throws InterruptedException, ExecutionException, TimeoutException { + sendPacket(address.getAddress(), address.getPort(), japsonPacket, gson); + } + public void sendPacket(InetAddress address, int port, Packet japsonPacket, Gson gson) throws InterruptedException, ExecutionException, TimeoutException { CompletableFuture.runAsync(() -> { try (DatagramSocket socket = new DatagramSocket()) { From 41e7c699784e72cf392b666df391810aa73b9099 Mon Sep 17 00:00:00 2001 From: TheLimeGlass Date: Wed, 23 Sep 2020 14:15:13 -0600 Subject: [PATCH 02/13] Add heartbeat to the listener --- build.gradle | 2 +- src/main/java/com/sitrica/japson/server/Connections.java | 1 + src/main/java/com/sitrica/japson/server/Listener.java | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index a58b984..60d553d 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ plugins { jar.archiveName = project.name + '.jar' // Add SNAPSHOT to make this publish as a beta. -version '1.1.3.1-SNAPSHOT' +version '1.1.3.2-SNAPSHOT' sourceCompatibility = 1.8 diff --git a/src/main/java/com/sitrica/japson/server/Connections.java b/src/main/java/com/sitrica/japson/server/Connections.java index 00c6889..3dbe14b 100644 --- a/src/main/java/com/sitrica/japson/server/Connections.java +++ b/src/main/java/com/sitrica/japson/server/Connections.java @@ -164,6 +164,7 @@ public int getPort() { public void update() { updated = System.currentTimeMillis(); + listeners.forEach(listener -> listener.onHeartbeat(this)); } } diff --git a/src/main/java/com/sitrica/japson/server/Listener.java b/src/main/java/com/sitrica/japson/server/Listener.java index 44be629..95b3e73 100644 --- a/src/main/java/com/sitrica/japson/server/Listener.java +++ b/src/main/java/com/sitrica/japson/server/Listener.java @@ -12,6 +12,8 @@ public interface Listener { public void onDisconnect(JapsonConnection connection); + public void onHeartbeat(JapsonConnection connection); + public void onForget(JapsonConnection connection); public void onShutdown(); From b372ad498e27a43bb5707905b4534aa1f995a8cb Mon Sep 17 00:00:00 2001 From: TheLimeGlass Date: Wed, 23 Sep 2020 14:23:32 -0600 Subject: [PATCH 03/13] Fix listeners not working --- build.gradle | 2 +- .../com/sitrica/japson/server/Connections.java | 16 ++++++---------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/build.gradle b/build.gradle index 60d553d..482aa52 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ plugins { jar.archiveName = project.name + '.jar' // Add SNAPSHOT to make this publish as a beta. -version '1.1.3.2-SNAPSHOT' +version '1.1.3.3-SNAPSHOT' sourceCompatibility = 1.8 diff --git a/src/main/java/com/sitrica/japson/server/Connections.java b/src/main/java/com/sitrica/japson/server/Connections.java index 3dbe14b..477e56d 100644 --- a/src/main/java/com/sitrica/japson/server/Connections.java +++ b/src/main/java/com/sitrica/japson/server/Connections.java @@ -3,10 +3,8 @@ import java.net.InetAddress; import java.net.InetSocketAddress; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; import java.util.Optional; -import java.util.Set; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -26,7 +24,6 @@ public class Connections extends Handler { private final ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); private final LoadingCache disconnected; private final List connections = new ArrayList<>(); - private final Set listeners = new HashSet<>(); private final JapsonServer japson; public Connections(JapsonServer japson) { @@ -42,7 +39,7 @@ public void onRemoval(RemovalNotification n // Connection was reacquired. if (notification.getCause() == RemovalCause.EXPLICIT) return; - listeners.forEach(listener -> listener.onForget(connection)); + japson.getListeners().forEach(listener -> listener.onForget(connection)); } }).build(new CacheLoader() { @Override @@ -55,15 +52,14 @@ public JapsonConnection load(InetSocketAddress address) throws Exception { }); } }); - listeners.addAll(japson.getListeners()); executor.schedule(() -> { for (JapsonConnection connection : connections) { if (System.currentTimeMillis() - connection.getLastUpdate() < japson.getTimeout()) continue; - listeners.forEach(listener -> listener.onUnresponsive(connection)); + japson.getListeners().forEach(listener -> listener.onUnresponsive(connection)); connection.unresponsive(); if (connection.getUnresponsiveCount() > japson.getMaxReconnectAttempts()) { - listeners.forEach(listener -> listener.onDisconnect(connection)); + japson.getListeners().forEach(listener -> listener.onDisconnect(connection)); disconnected.put(InetSocketAddress.createUnresolved(connection.getAddress().getHostName(), connection.getPort()), connection); } } @@ -75,7 +71,7 @@ public JapsonConnection addConnection(InetAddress address, int port) { return getConnection(address, port) .orElseGet(() -> { JapsonConnection connection = new JapsonConnection(address, port); - listeners.forEach(listener -> listener.onAcquiredCommunication(connection)); + japson.getListeners().forEach(listener -> listener.onAcquiredCommunication(connection)); connections.add(connection); return connection; }); @@ -93,7 +89,7 @@ public Optional getConnection(InetAddress address, int port) { if (!optional.isPresent()) return Optional.empty(); JapsonConnection connection = optional.get(); - listeners.forEach(listener -> listener.onReacquiredCommunication(connection)); + japson.getListeners().forEach(listener -> listener.onReacquiredCommunication(connection)); connections.add(connection); disconnected.invalidate(socketAddress); return optional; @@ -164,7 +160,7 @@ public int getPort() { public void update() { updated = System.currentTimeMillis(); - listeners.forEach(listener -> listener.onHeartbeat(this)); + japson.getListeners().forEach(listener -> listener.onHeartbeat(this)); } } From 0683ba1358892508f70c57b95789d49631e16618 Mon Sep 17 00:00:00 2001 From: TheLimeGlass Date: Wed, 23 Sep 2020 15:10:35 -0600 Subject: [PATCH 04/13] Add data to debug --- build.gradle | 2 +- src/main/java/com/sitrica/japson/shared/Japson.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 482aa52..d6b87be 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ plugins { jar.archiveName = project.name + '.jar' // Add SNAPSHOT to make this publish as a beta. -version '1.1.3.3-SNAPSHOT' +version '1.1.3.4-SNAPSHOT' sourceCompatibility = 1.8 diff --git a/src/main/java/com/sitrica/japson/shared/Japson.java b/src/main/java/com/sitrica/japson/shared/Japson.java index df98a8a..50f94f6 100644 --- a/src/main/java/com/sitrica/japson/shared/Japson.java +++ b/src/main/java/com/sitrica/japson/shared/Japson.java @@ -170,12 +170,13 @@ public void sendPacket(InetAddress address, int port, Packet japsonPacket, Gson try (DatagramSocket socket = new DatagramSocket()) { ByteArrayDataOutput out = ByteStreams.newDataOutput(); out.writeInt(japsonPacket.getID()); - out.writeUTF(gson.toJson(japsonPacket.toJson())); + String data = gson.toJson(japsonPacket.toJson()); + out.writeUTF(data); byte[] buf = out.toByteArray(); socket.setSoTimeout(TIMEOUT); socket.send(new DatagramPacket(buf, buf.length, address, port)); if (debug) - logger.atInfo().log("Sent non-returnable packet with id %s", japsonPacket.getID()); + logger.atInfo().log("Sent non-returnable packet with id %s and data %s", japsonPacket.getID(), data); socket.close(); } catch (SocketException socketException) { logger.atSevere().withCause(socketException) From 0053dc005496d6e15949ebfc57d4a9b18a39aa88 Mon Sep 17 00:00:00 2001 From: TheLimeGlass Date: Fri, 30 Oct 2020 00:09:13 -0600 Subject: [PATCH 05/13] Add ignored debug packets for client too --- build.gradle | 2 +- .../com/sitrica/japson/server/Connections.java | 7 +++++++ .../com/sitrica/japson/server/JapsonServer.java | 9 --------- .../java/com/sitrica/japson/shared/Japson.java | 14 ++++++++++++-- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/build.gradle b/build.gradle index d6b87be..f2b551a 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ plugins { jar.archiveName = project.name + '.jar' // Add SNAPSHOT to make this publish as a beta. -version '1.1.3.4-SNAPSHOT' +version '1.1.3.5-SNAPSHOT' sourceCompatibility = 1.8 diff --git a/src/main/java/com/sitrica/japson/server/Connections.java b/src/main/java/com/sitrica/japson/server/Connections.java index 477e56d..07ee3bb 100644 --- a/src/main/java/com/sitrica/japson/server/Connections.java +++ b/src/main/java/com/sitrica/japson/server/Connections.java @@ -154,6 +154,13 @@ public void unresponsive() { fails++; } + @Deprecated + /** + * The port of the connection will be the port the server is bound too. + * A client does not bind to a port, so thus it will not be any use. + * + * @return + */ public int getPort() { return port; } diff --git a/src/main/java/com/sitrica/japson/server/JapsonServer.java b/src/main/java/com/sitrica/japson/server/JapsonServer.java index c081612..9c0e073 100644 --- a/src/main/java/com/sitrica/japson/server/JapsonServer.java +++ b/src/main/java/com/sitrica/japson/server/JapsonServer.java @@ -20,7 +20,6 @@ public class JapsonServer extends Japson { private final ExecutorService executor = Executors.newCachedThreadPool(); protected final Set listeners = new HashSet<>(); - private final Set ignored = new HashSet<>(); private final SocketHandler handler; protected final InetAddress address; @@ -86,10 +85,6 @@ public JapsonServer registerListeners(Listener... listeners) { return this; } - public void addIgnoreDebugPackets(Integer... packets) { - ignored.addAll(Sets.newHashSet(packets)); - } - /** * The amount of minutes to wait before forgetting about a connection. * @@ -123,10 +118,6 @@ public JapsonServer setTimeout(int timeout) { return this; } - public Set getIgnoredPackets() { - return Collections.unmodifiableSet(ignored); - } - public long getMaxReconnectAttempts() { return RECONNECT; } diff --git a/src/main/java/com/sitrica/japson/shared/Japson.java b/src/main/java/com/sitrica/japson/shared/Japson.java index 50f94f6..6664a7c 100644 --- a/src/main/java/com/sitrica/japson/shared/Japson.java +++ b/src/main/java/com/sitrica/japson/shared/Japson.java @@ -6,6 +6,7 @@ import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.SocketException; +import java.util.Collections; import java.util.HashSet; import java.util.Set; import java.util.concurrent.CompletableFuture; @@ -27,6 +28,7 @@ public abstract class Japson { protected final FluentLogger logger = FluentLogger.forEnclosingClass(); protected final Set acceptable = new HashSet<>(); protected final Set handlers = new HashSet<>(); + private final Set ignored = new HashSet<>(); protected int PACKET_SIZE = 1024; // UDP standard protected int TIMEOUT = 2000; // milliseconds @@ -82,6 +84,14 @@ public boolean isDebug() { return debug; } + public final void addIgnoreDebugPackets(Integer... packets) { + ignored.addAll(Sets.newHashSet(packets)); + } + + public final Set getIgnoredPackets() { + return Collections.unmodifiableSet(ignored); + } + public T sendPacket(InetSocketAddress address, ReturnablePacket packet) throws TimeoutException, InterruptedException, ExecutionException { return sendPacket(address.getAddress(), address.getPort(), packet, new GsonBuilder() .enableComplexMapKeySerialization() @@ -127,7 +137,7 @@ public T sendPacket(InetAddress address, int port, ReturnablePacket japso return null; } String json = input.readUTF(); - if (debug) + if (debug && (ignored.isEmpty() || !ignored.contains(japsonPacket.getID()))) logger.atInfo().log("Sent returnable packet with id %s and recieved %s", japsonPacket.getID(), json); return japsonPacket.getObject(JsonParser.parseString(json).getAsJsonObject()); } catch (SocketException socketException) { @@ -175,7 +185,7 @@ public void sendPacket(InetAddress address, int port, Packet japsonPacket, Gson byte[] buf = out.toByteArray(); socket.setSoTimeout(TIMEOUT); socket.send(new DatagramPacket(buf, buf.length, address, port)); - if (debug) + if (debug && (ignored.isEmpty() || !ignored.contains(japsonPacket.getID()))) logger.atInfo().log("Sent non-returnable packet with id %s and data %s", japsonPacket.getID(), data); socket.close(); } catch (SocketException socketException) { From f71a9b1ea653ef30f091760e94966d4d27dcd3cf Mon Sep 17 00:00:00 2001 From: Jordan <22429962+ItsJordan@users.noreply.github.com> Date: Sat, 7 Nov 2020 18:23:21 -0500 Subject: [PATCH 06/13] Downgrade Gson --- .gitignore | 1 + build.gradle | 11 +++-------- .../java/com/sitrica/japson/server/SocketHandler.java | 2 +- src/main/java/com/sitrica/japson/shared/Japson.java | 2 +- 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 488fd80..6fb5c2c 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* /.gradle/ +/.idea/ /.settings/ /build/ /bin/ \ No newline at end of file diff --git a/build.gradle b/build.gradle index f2b551a..80720e0 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ plugins { jar.archiveName = project.name + '.jar' // Add SNAPSHOT to make this publish as a beta. -version '1.1.3.5-SNAPSHOT' +version '1.1.3.6-SNAPSHOT' sourceCompatibility = 1.8 @@ -24,7 +24,7 @@ dependencies { shadow (group: 'com.google.flogger', name: 'flogger', version: '0.5.1') // Google Gson - shadow (group: 'com.google.code.gson', name: 'gson', version: '2.8.6') + shadow (group: 'com.google.code.gson', name: 'gson', version: '2.8.0') // Google Guava shadow (group: 'com.google.guava', name: 'guava', version: '29.0-jre') @@ -32,7 +32,7 @@ dependencies { // JUnit testRuntimeOnly (group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.6.0') testImplementation (group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.6.0') - testImplementation (group: 'com.google.code.gson', name: 'gson', version: '2.8.6') + testImplementation (group: 'com.google.code.gson', name: 'gson', version: '2.8.0') testImplementation (group: 'com.google.guava', name: 'guava', version: '29.0-jre') testImplementation (group: 'com.google.flogger', name: 'flogger-system-backend', version: '0.5.1') testImplementation (group: 'com.google.flogger', name: 'flogger', version: '0.5.1') @@ -78,11 +78,6 @@ shadowJar { minimize { exclude(dependency('com.google.flogger:')) } - dependencies { - exclude(dependency('org.spigotmc:')) - exclude(dependency('org.yaml:')) - exclude(dependency('io.netty:')) - } } test { diff --git a/src/main/java/com/sitrica/japson/server/SocketHandler.java b/src/main/java/com/sitrica/japson/server/SocketHandler.java index 3a8e7bb..9299ad8 100644 --- a/src/main/java/com/sitrica/japson/server/SocketHandler.java +++ b/src/main/java/com/sitrica/japson/server/SocketHandler.java @@ -50,7 +50,7 @@ public void run() { if (japson.isDebug() && (japson.getIgnoredPackets().isEmpty() || !japson.getIgnoredPackets().contains(id))) japson.getLogger().atInfo().log("Received packet with id %s and data %s", id, data); // Handle - JsonObject object = JsonParser.parseString(data).getAsJsonObject(); + JsonObject object = new JsonParser().parse(data).getAsJsonObject(); japson.getHandlers().stream() .filter(handler -> handler.getID() == id) .map(handler -> handler.handle(packet.getAddress(), packet.getPort(), object)) diff --git a/src/main/java/com/sitrica/japson/shared/Japson.java b/src/main/java/com/sitrica/japson/shared/Japson.java index 6664a7c..33be89e 100644 --- a/src/main/java/com/sitrica/japson/shared/Japson.java +++ b/src/main/java/com/sitrica/japson/shared/Japson.java @@ -139,7 +139,7 @@ public T sendPacket(InetAddress address, int port, ReturnablePacket japso String json = input.readUTF(); if (debug && (ignored.isEmpty() || !ignored.contains(japsonPacket.getID()))) logger.atInfo().log("Sent returnable packet with id %s and recieved %s", japsonPacket.getID(), json); - return japsonPacket.getObject(JsonParser.parseString(json).getAsJsonObject()); + return japsonPacket.getObject(new JsonParser().parse(json).getAsJsonObject()); } catch (SocketException socketException) { logger.atSevere().withCause(socketException) .atMostEvery(15, TimeUnit.SECONDS) From 942953dfcbdf30eedbc5af88993e5bb8cad35edf Mon Sep 17 00:00:00 2001 From: Jordan Date: Wed, 25 Nov 2020 14:55:11 -0500 Subject: [PATCH 07/13] Update build.gradle --- build.gradle | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index 80720e0..80affbf 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ plugins { jar.archiveName = project.name + '.jar' // Add SNAPSHOT to make this publish as a beta. -version '1.1.3.6-SNAPSHOT' +version '1.1.3.7-SNAPSHOT' sourceCompatibility = 1.8 @@ -20,20 +20,20 @@ repositories { dependencies { // Google Flogger - shadow (group: 'com.google.flogger', name: 'flogger-system-backend', version: '0.5.1') - shadow (group: 'com.google.flogger', name: 'flogger', version: '0.5.1') + implementation (group: 'com.google.flogger', name: 'flogger-system-backend', version: '0.5.1') + implementation (group: 'com.google.flogger', name: 'flogger', version: '0.5.1') // Google Gson - shadow (group: 'com.google.code.gson', name: 'gson', version: '2.8.0') + implementation (group: 'com.google.code.gson', name: 'gson', version: '2.8.0') // Google Guava - shadow (group: 'com.google.guava', name: 'guava', version: '29.0-jre') + implementation (group: 'com.google.guava', name: 'guava', version: '19.0') // JUnit testRuntimeOnly (group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.6.0') testImplementation (group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.6.0') testImplementation (group: 'com.google.code.gson', name: 'gson', version: '2.8.0') - testImplementation (group: 'com.google.guava', name: 'guava', version: '29.0-jre') + testImplementation (group: 'com.google.guava', name: 'guava', version: '19.0') testImplementation (group: 'com.google.flogger', name: 'flogger-system-backend', version: '0.5.1') testImplementation (group: 'com.google.flogger', name: 'flogger', version: '0.5.1') @@ -70,7 +70,6 @@ processResources { } shadowJar { - configurations = [project.configurations.shadow] archiveVersion = version baseName = project.name classifier = '' From 5abbceeeef187e6fcbc20c38d9d5bcb54cddd438 Mon Sep 17 00:00:00 2001 From: TheLimeGlass Date: Sat, 20 Feb 2021 03:09:11 -0700 Subject: [PATCH 08/13] Make the handler not shutdown on error --- .../java/com/sitrica/japson/server/JapsonServer.java | 1 - .../java/com/sitrica/japson/server/SocketHandler.java | 11 ++++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/sitrica/japson/server/JapsonServer.java b/src/main/java/com/sitrica/japson/server/JapsonServer.java index 9c0e073..fb235c4 100644 --- a/src/main/java/com/sitrica/japson/server/JapsonServer.java +++ b/src/main/java/com/sitrica/japson/server/JapsonServer.java @@ -4,7 +4,6 @@ import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; -import java.util.Collections; import java.util.HashSet; import java.util.Set; import java.util.concurrent.ExecutorService; diff --git a/src/main/java/com/sitrica/japson/server/SocketHandler.java b/src/main/java/com/sitrica/japson/server/SocketHandler.java index 9299ad8..3fd61fa 100644 --- a/src/main/java/com/sitrica/japson/server/SocketHandler.java +++ b/src/main/java/com/sitrica/japson/server/SocketHandler.java @@ -4,6 +4,7 @@ import java.net.DatagramPacket; import java.net.DatagramSocket; import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataOutput; @@ -38,14 +39,14 @@ public void run() { .create(packet) .get(); if (input == null) { - japson.getLogger().atSevere().log("Packet received was null or an incorrect readable object for Japson"); - return; + japson.getLogger().atSevere().atMostEvery(30, TimeUnit.SECONDS).log("Packet received was null or an incorrect readable object for Japson"); + continue; } int id = input.readInt(); String data = input.readUTF(); if (data == null) { japson.getLogger().atSevere().log("Received packet with id %s and the json was null.", id); - return; + continue; } if (japson.isDebug() && (japson.getIgnoredPackets().isEmpty() || !japson.getIgnoredPackets().contains(id))) japson.getLogger().atInfo().log("Received packet with id %s and data %s", id, data); @@ -74,6 +75,10 @@ public void run() { }); } catch (InterruptedException | ExecutionException e) { japson.getListeners().forEach(listener -> listener.onShutdown()); + } catch (Exception e) { + if (japson.isDebug()) + japson.getLogger().atSevere().atMostEvery(30, TimeUnit.SECONDS).withCause(e); + continue; } } } From 68aa56a09d87cd285f9e7471c3ed2de6ac366d6e Mon Sep 17 00:00:00 2001 From: TheLimeGlass Date: Sat, 20 Feb 2021 03:19:57 -0700 Subject: [PATCH 09/13] Make the handler not shutdown on error --- src/main/java/com/sitrica/japson/server/SocketHandler.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/sitrica/japson/server/SocketHandler.java b/src/main/java/com/sitrica/japson/server/SocketHandler.java index 3fd61fa..39d2385 100644 --- a/src/main/java/com/sitrica/japson/server/SocketHandler.java +++ b/src/main/java/com/sitrica/japson/server/SocketHandler.java @@ -76,8 +76,7 @@ public void run() { } catch (InterruptedException | ExecutionException e) { japson.getListeners().forEach(listener -> listener.onShutdown()); } catch (Exception e) { - if (japson.isDebug()) - japson.getLogger().atSevere().atMostEvery(30, TimeUnit.SECONDS).withCause(e); + japson.getLogger().atSevere().atMostEvery(30, TimeUnit.SECONDS).withCause(e); continue; } } From 4aed4c11390d82903e258f4f02011dab62d77ff3 Mon Sep 17 00:00:00 2001 From: TheLimeGlass Date: Sat, 20 Feb 2021 23:18:38 -0700 Subject: [PATCH 10/13] Bump version --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 80affbf..9c20984 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ plugins { jar.archiveName = project.name + '.jar' // Add SNAPSHOT to make this publish as a beta. -version '1.1.3.7-SNAPSHOT' +version '1.1.3.8-SNAPSHOT' sourceCompatibility = 1.8 From 4e5be7e07df77d4d69a21b8e67ab20b8072ec17b Mon Sep 17 00:00:00 2001 From: TheLimeGlass Date: Mon, 21 Jun 2021 02:11:33 -0600 Subject: [PATCH 11/13] 1.1.3.9-SNAPSHOT Remove InetAddress for InetSocketAddress --- build.gradle | 2 +- .../sitrica/japson/client/JapsonClient.java | 37 +++++--------- .../sitrica/japson/server/Connections.java | 49 +++++++------------ .../sitrica/japson/server/JapsonServer.java | 41 ++++++---------- .../sitrica/japson/server/SocketHandler.java | 3 +- .../com/sitrica/japson/shared/Executor.java | 11 ++--- .../com/sitrica/japson/shared/Handler.java | 7 ++- .../com/sitrica/japson/shared/Japson.java | 32 ++---------- .../java/com/sitrica/japson/ClientTest.java | 4 ++ .../java/com/sitrica/japson/GeneralTest.java | 3 +- .../java/com/sitrica/japson/ServerTest.java | 15 +++--- 11 files changed, 72 insertions(+), 132 deletions(-) diff --git a/build.gradle b/build.gradle index 9c20984..d3af654 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ plugins { jar.archiveName = project.name + '.jar' // Add SNAPSHOT to make this publish as a beta. -version '1.1.3.8-SNAPSHOT' +version '1.1.3.9-SNAPSHOT' sourceCompatibility = 1.8 diff --git a/src/main/java/com/sitrica/japson/client/JapsonClient.java b/src/main/java/com/sitrica/japson/client/JapsonClient.java index daa64ba..ac40f14 100644 --- a/src/main/java/com/sitrica/japson/client/JapsonClient.java +++ b/src/main/java/com/sitrica/japson/client/JapsonClient.java @@ -1,6 +1,7 @@ package com.sitrica.japson.client; import java.net.InetAddress; +import java.net.InetSocketAddress; import java.net.UnknownHostException; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; @@ -22,22 +23,17 @@ public class JapsonClient extends Japson { protected long HEARTBEAT = 1000L, DELAY = 1000L; // in milliseconds. - protected final InetAddress address; - protected final int port; + protected final InetSocketAddress address; private boolean check, valid = true; private final Gson gson; public JapsonClient(int port) throws UnknownHostException { - this(InetAddress.getLocalHost(), port); + this(new InetSocketAddress(InetAddress.getLocalHost().getHostName(), port)); } - public JapsonClient(String host, int port) throws UnknownHostException { - this(InetAddress.getByName(host), port); - } - - public JapsonClient(InetAddress address, int port) { - this(address, port, new GsonBuilder() + public JapsonClient(InetSocketAddress address) { + this(address, new GsonBuilder() .enableComplexMapKeySerialization() .serializeNulls() .setLenient() @@ -45,30 +41,25 @@ public JapsonClient(InetAddress address, int port) { } public JapsonClient(int port, Gson gson) throws UnknownHostException { - this(InetAddress.getLocalHost(), port, gson); - } - - public JapsonClient(String host, int port, Gson gson) throws UnknownHostException { - this(InetAddress.getByName(host), port, gson); + this(new InetSocketAddress(InetAddress.getLocalHost().getHostName(), port), gson); } - public JapsonClient(InetAddress address, int port, Gson gson) { + public JapsonClient(InetSocketAddress address, Gson gson) { this.address = address; - this.port = port; this.gson = gson; } public JapsonClient start() { executor.scheduleAtFixedRate(() -> { try { - Boolean success = sendPacket(new HeartbeatPacket(password, port)); + Boolean success = sendPacket(new HeartbeatPacket(password, address.getPort())); if (check && success != null && success) valid = true; } catch (TimeoutException | InterruptedException | ExecutionException e) { valid = false; } }, DELAY, HEARTBEAT, TimeUnit.MILLISECONDS); - logger.atInfo().log("Started Japson client bound to %s.", address.getHostAddress() + ":" + port); + logger.atInfo().log("Started Japson client bound to %s.", address.getAddress().getHostName() + ":" + address.getPort()); return this; } @@ -124,14 +115,10 @@ public JapsonClient enableDebug() { return this; } - public InetAddress getAddress() { + public InetSocketAddress getAddress() { return address; } - public int getPort() { - return port; - } - public void shutdown() { executor.shutdown(); } @@ -143,11 +130,11 @@ public void kill() { public T sendPacket(ReturnablePacket packet) throws TimeoutException, InterruptedException, ExecutionException { if (check && !valid && !(packet instanceof HeartbeatPacket)) throw new TimeoutException("No connection to the server. Cancelling sending packet."); - return super.sendPacket(address, port, packet, gson); + return super.sendPacket(address, packet, gson); } public void sendPacket(Packet packet) throws InterruptedException, ExecutionException, TimeoutException { - super.sendPacket(address, port, packet, gson); + super.sendPacket(address, packet, gson); } } diff --git a/src/main/java/com/sitrica/japson/server/Connections.java b/src/main/java/com/sitrica/japson/server/Connections.java index 07ee3bb..f290243 100644 --- a/src/main/java/com/sitrica/japson/server/Connections.java +++ b/src/main/java/com/sitrica/japson/server/Connections.java @@ -1,6 +1,5 @@ package com.sitrica.japson.server; -import java.net.InetAddress; import java.net.InetSocketAddress; import java.util.ArrayList; import java.util.List; @@ -44,9 +43,9 @@ public void onRemoval(RemovalNotification n }).build(new CacheLoader() { @Override public JapsonConnection load(InetSocketAddress address) throws Exception { - return getConnection(address.getAddress(), address.getPort()) + return getConnection(address) .orElseGet(() -> { - JapsonConnection created = new JapsonConnection(address.getAddress(), address.getPort()); + JapsonConnection created = new JapsonConnection(address); connections.add(created); return created; }); @@ -60,46 +59,45 @@ public JapsonConnection load(InetSocketAddress address) throws Exception { connection.unresponsive(); if (connection.getUnresponsiveCount() > japson.getMaxReconnectAttempts()) { japson.getListeners().forEach(listener -> listener.onDisconnect(connection)); - disconnected.put(InetSocketAddress.createUnresolved(connection.getAddress().getHostName(), connection.getPort()), connection); + disconnected.put(connection.getAddress(), connection); } } connections.removeIf(connection -> connection.getUnresponsiveCount() > japson.getMaxReconnectAttempts()); }, 1, TimeUnit.SECONDS); } - public JapsonConnection addConnection(InetAddress address, int port) { - return getConnection(address, port) + public JapsonConnection addConnection(InetSocketAddress address) { + return getConnection(address) .orElseGet(() -> { - JapsonConnection connection = new JapsonConnection(address, port); + JapsonConnection connection = new JapsonConnection(address); japson.getListeners().forEach(listener -> listener.onAcquiredCommunication(connection)); connections.add(connection); return connection; }); } - public Optional getConnection(InetAddress address, int port) { + public Optional getConnection(InetSocketAddress address) { Optional optional = connections.stream() .filter(existing -> existing.getAddress().equals(address)) - .filter(existing -> existing.getPort() == port) .findFirst(); if (optional.isPresent()) return optional; - InetSocketAddress socketAddress = InetSocketAddress.createUnresolved(address.getHostName(), port); - optional = Optional.ofNullable(disconnected.getIfPresent(socketAddress)); + optional = Optional.ofNullable(disconnected.getIfPresent(address)); if (!optional.isPresent()) return Optional.empty(); JapsonConnection connection = optional.get(); japson.getListeners().forEach(listener -> listener.onReacquiredCommunication(connection)); connections.add(connection); - disconnected.invalidate(socketAddress); + disconnected.invalidate(address); return optional; } @Override - public JsonObject handle(InetAddress address, int packetPort, JsonObject json) { + public JsonObject handle(InetSocketAddress address, JsonObject json) { int port = json.get("port").getAsInt(); + InetSocketAddress server = InetSocketAddress.createUnresolved(address.getHostName(), port); if (!japson.hasPassword()) { - JapsonConnection connection = addConnection(address, port); + JapsonConnection connection = addConnection(server); connection.update(); } else { Optional optional = Optional.ofNullable(json.get("password")); @@ -107,10 +105,10 @@ public JsonObject handle(InetAddress address, int packetPort, JsonObject json) { return null; String password = optional.get().getAsString(); if (!japson.passwordMatches(password)) { - japson.getLogger().atWarning().log("A packet from %s did not match the correct password!", address.getHostName()); + japson.getLogger().atWarning().log("A packet from %s did not match the correct password!", server.getHostName()); return null; } - JapsonConnection connection = addConnection(address, port); + JapsonConnection connection = addConnection(server); connection.update(); } JsonObject returning = new JsonObject(); @@ -129,20 +127,18 @@ public void kill() { public class JapsonConnection { private long updated = System.currentTimeMillis(); - private final InetAddress address; - private final int port; + private final InetSocketAddress address; private int fails = 0; - public JapsonConnection(InetAddress address, int port) { + public JapsonConnection(InetSocketAddress address) { this.address = address; - this.port = port; } public int getUnresponsiveCount() { return fails; } - public InetAddress getAddress() { + public InetSocketAddress getAddress() { return address; } @@ -154,17 +150,6 @@ public void unresponsive() { fails++; } - @Deprecated - /** - * The port of the connection will be the port the server is bound too. - * A client does not bind to a port, so thus it will not be any use. - * - * @return - */ - public int getPort() { - return port; - } - public void update() { updated = System.currentTimeMillis(); japson.getListeners().forEach(listener -> listener.onHeartbeat(this)); diff --git a/src/main/java/com/sitrica/japson/server/JapsonServer.java b/src/main/java/com/sitrica/japson/server/JapsonServer.java index fb235c4..893562d 100644 --- a/src/main/java/com/sitrica/japson/server/JapsonServer.java +++ b/src/main/java/com/sitrica/japson/server/JapsonServer.java @@ -2,6 +2,7 @@ import java.net.DatagramSocket; import java.net.InetAddress; +import java.net.InetSocketAddress; import java.net.SocketException; import java.net.UnknownHostException; import java.util.HashSet; @@ -21,25 +22,20 @@ public class JapsonServer extends Japson { protected final Set listeners = new HashSet<>(); private final SocketHandler handler; - protected final InetAddress address; - protected final int port; + protected final InetSocketAddress address; - private long RECONNECT = 5, EXPIRY = 10; // EXPIRY in minutes, DISCONNECT is amount. + private long RECONNECT = 5, EXPIRY = 10; // EXPIRY in minutes, RECONNECT is amount of trys. private final Connections connections; private final DatagramSocket socket; private final Gson gson; public JapsonServer(int port) throws UnknownHostException, SocketException { - this(InetAddress.getLocalHost(), port); + this(new InetSocketAddress(InetAddress.getLocalHost().getHostName(), port)); } - public JapsonServer(String host, int port) throws UnknownHostException, SocketException { - this(InetAddress.getByName(host), port); - } - - public JapsonServer(InetAddress address, int port) throws SocketException { - this(address, port, new GsonBuilder() + public JapsonServer(InetSocketAddress address) throws SocketException { + this(address, new GsonBuilder() .enableComplexMapKeySerialization() .serializeNulls() .setLenient() @@ -47,24 +43,19 @@ public JapsonServer(InetAddress address, int port) throws SocketException { } public JapsonServer(int port, Gson gson) throws UnknownHostException, SocketException { - this(InetAddress.getLocalHost(), port, gson); - } - - public JapsonServer(String host, int port, Gson gson) throws UnknownHostException, SocketException { - this(InetAddress.getByName(host), port, gson); + this(new InetSocketAddress(InetAddress.getLocalHost().getHostName(), port), gson); } - public JapsonServer(InetAddress address, int port, Gson gson) throws SocketException { + public JapsonServer(InetSocketAddress address, Gson gson) throws SocketException { this.address = address; - this.port = port; this.gson = gson; - this.socket = new DatagramSocket(port, address); + this.socket = new DatagramSocket(address); socket.setSoTimeout(TIMEOUT); connections = new Connections(this); handlers.add(connections); handler = new SocketHandler(PACKET_SIZE, this, socket); executor.execute(handler); - logger.atInfo().log("Started Japson server bound to %s.", address.getHostAddress() + ":" + port); + logger.atInfo().log("Started Japson server bound to %s.", address.getHostName() + ":" + address.getPort()); } @Override @@ -121,6 +112,10 @@ public long getMaxReconnectAttempts() { return RECONNECT; } + public InetSocketAddress getAddress() { + return address; + } + public Connections getConnections() { return connections; } @@ -143,14 +138,6 @@ public FluentLogger getLogger() { return logger; } - public InetAddress getAddress() { - return address; - } - - public int getPort() { - return port; - } - public long getTimeout() { return TIMEOUT; } diff --git a/src/main/java/com/sitrica/japson/server/SocketHandler.java b/src/main/java/com/sitrica/japson/server/SocketHandler.java index 39d2385..3e0e742 100644 --- a/src/main/java/com/sitrica/japson/server/SocketHandler.java +++ b/src/main/java/com/sitrica/japson/server/SocketHandler.java @@ -3,6 +3,7 @@ import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; +import java.net.InetSocketAddress; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -54,7 +55,7 @@ public void run() { JsonObject object = new JsonParser().parse(data).getAsJsonObject(); japson.getHandlers().stream() .filter(handler -> handler.getID() == id) - .map(handler -> handler.handle(packet.getAddress(), packet.getPort(), object)) + .map(handler -> handler.handle((InetSocketAddress)packet.getSocketAddress(), object)) .filter(jsonObject -> jsonObject != null) .findFirst() .ifPresent(jsonObject -> { diff --git a/src/main/java/com/sitrica/japson/shared/Executor.java b/src/main/java/com/sitrica/japson/shared/Executor.java index 6a18714..5b4a6e1 100644 --- a/src/main/java/com/sitrica/japson/shared/Executor.java +++ b/src/main/java/com/sitrica/japson/shared/Executor.java @@ -1,6 +1,6 @@ package com.sitrica.japson.shared; -import java.net.InetAddress; +import java.net.InetSocketAddress; import com.google.gson.JsonObject; @@ -13,16 +13,15 @@ public Executor(int id) { /** * A void executor used from an incoming packet matching the id. * - * @param address The InetAddress of the incoming packet. - * @param post The port of the address from the incoming packet. + * @param address The InetSocketAddress of the incoming packet. * @param json The incoming JsonObject from the packet. * @return String of Json for the packet on the client to read. Return null for no response. */ - public abstract void execute(InetAddress address, int port, JsonObject json); + public abstract void execute(InetSocketAddress address, JsonObject json); @Override - public final JsonObject handle(InetAddress address, int port, JsonObject json) { - execute(address, port, json); + public final JsonObject handle(InetSocketAddress address, JsonObject json) { + execute(address, json); return null; } diff --git a/src/main/java/com/sitrica/japson/shared/Handler.java b/src/main/java/com/sitrica/japson/shared/Handler.java index d84ff79..0d1b382 100644 --- a/src/main/java/com/sitrica/japson/shared/Handler.java +++ b/src/main/java/com/sitrica/japson/shared/Handler.java @@ -1,6 +1,6 @@ package com.sitrica.japson.shared; -import java.net.InetAddress; +import java.net.InetSocketAddress; import com.google.gson.JsonObject; @@ -19,11 +19,10 @@ public int getID() { /** * Handle data from an incoming packet matching the id. * - * @param address The InetAddress of the incoming packet. - * @param post The port of the address from the incoming packet. + * @param address The InetSocketAddress of the incoming packet. * @param json The incoming JsonObject from the packet. * @return JsonObject of Json for the packet on the client to read. Return null for no response. */ - public abstract JsonObject handle(InetAddress address, int port, JsonObject json); + public abstract JsonObject handle(InetSocketAddress address, JsonObject json); } diff --git a/src/main/java/com/sitrica/japson/shared/Japson.java b/src/main/java/com/sitrica/japson/shared/Japson.java index 33be89e..d973623 100644 --- a/src/main/java/com/sitrica/japson/shared/Japson.java +++ b/src/main/java/com/sitrica/japson/shared/Japson.java @@ -93,15 +93,7 @@ public final Set getIgnoredPackets() { } public T sendPacket(InetSocketAddress address, ReturnablePacket packet) throws TimeoutException, InterruptedException, ExecutionException { - return sendPacket(address.getAddress(), address.getPort(), packet, new GsonBuilder() - .enableComplexMapKeySerialization() - .serializeNulls() - .setLenient() - .create()); - } - - public T sendPacket(InetAddress address, int port, ReturnablePacket packet) throws TimeoutException, InterruptedException, ExecutionException { - return sendPacket(address, port, packet, new GsonBuilder() + return sendPacket(address, packet, new GsonBuilder() .enableComplexMapKeySerialization() .serializeNulls() .setLenient() @@ -109,10 +101,6 @@ public T sendPacket(InetAddress address, int port, ReturnablePacket packe } public T sendPacket(InetSocketAddress address, ReturnablePacket japsonPacket, Gson gson) throws TimeoutException, InterruptedException, ExecutionException { - return sendPacket(address.getAddress(), address.getPort(), japsonPacket, gson); - } - - public T sendPacket(InetAddress address, int port, ReturnablePacket japsonPacket, Gson gson) throws TimeoutException, InterruptedException, ExecutionException { return CompletableFuture.supplyAsync(() -> { try (DatagramSocket socket = new DatagramSocket()) { ByteArrayDataOutput out = ByteStreams.newDataOutput(); @@ -120,7 +108,7 @@ public T sendPacket(InetAddress address, int port, ReturnablePacket japso out.writeUTF(gson.toJson(japsonPacket.toJson())); byte[] buf = out.toByteArray(); socket.setSoTimeout(TIMEOUT); - socket.send(new DatagramPacket(buf, buf.length, address, port)); + socket.send(new DatagramPacket(buf, buf.length, address)); // Reset the byte buffer buf = new byte[PACKET_SIZE]; ByteArrayDataInput input = new ReceiverFuture(logger, this, socket) @@ -156,15 +144,7 @@ public T sendPacket(InetAddress address, int port, ReturnablePacket japso } public void sendPacket(InetSocketAddress address, Packet japsonPacket) throws InterruptedException, ExecutionException, TimeoutException { - sendPacket(address.getAddress(), address.getPort(), japsonPacket, new GsonBuilder() - .enableComplexMapKeySerialization() - .serializeNulls() - .setLenient() - .create()); - } - - public void sendPacket(InetAddress address, int port, Packet japsonPacket) throws InterruptedException, ExecutionException, TimeoutException { - sendPacket(address, port, japsonPacket, new GsonBuilder() + sendPacket(address, japsonPacket, new GsonBuilder() .enableComplexMapKeySerialization() .serializeNulls() .setLenient() @@ -172,10 +152,6 @@ public void sendPacket(InetAddress address, int port, Packet japsonPacket) throw } public void sendPacket(InetSocketAddress address, Packet japsonPacket, Gson gson) throws InterruptedException, ExecutionException, TimeoutException { - sendPacket(address.getAddress(), address.getPort(), japsonPacket, gson); - } - - public void sendPacket(InetAddress address, int port, Packet japsonPacket, Gson gson) throws InterruptedException, ExecutionException, TimeoutException { CompletableFuture.runAsync(() -> { try (DatagramSocket socket = new DatagramSocket()) { ByteArrayDataOutput out = ByteStreams.newDataOutput(); @@ -184,7 +160,7 @@ public void sendPacket(InetAddress address, int port, Packet japsonPacket, Gson out.writeUTF(data); byte[] buf = out.toByteArray(); socket.setSoTimeout(TIMEOUT); - socket.send(new DatagramPacket(buf, buf.length, address, port)); + socket.send(new DatagramPacket(buf, buf.length, address)); if (debug && (ignored.isEmpty() || !ignored.contains(japsonPacket.getID()))) logger.atInfo().log("Sent non-returnable packet with id %s and data %s", japsonPacket.getID(), data); socket.close(); diff --git a/src/test/java/com/sitrica/japson/ClientTest.java b/src/test/java/com/sitrica/japson/ClientTest.java index b40aaae..f90445a 100644 --- a/src/test/java/com/sitrica/japson/ClientTest.java +++ b/src/test/java/com/sitrica/japson/ClientTest.java @@ -1,6 +1,7 @@ package com.sitrica.japson; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.net.UnknownHostException; @@ -20,6 +21,9 @@ public static void setupClient() { } catch (UnknownHostException e) { e.printStackTrace(); } + assertTrue(japson.getAddress().getPort() == 1337); + assertTrue(japson.hasPassword()); + assertTrue(japson.passwordMatches("test-password")); assertNotNull(japson); } diff --git a/src/test/java/com/sitrica/japson/GeneralTest.java b/src/test/java/com/sitrica/japson/GeneralTest.java index 491de73..2b7c06e 100644 --- a/src/test/java/com/sitrica/japson/GeneralTest.java +++ b/src/test/java/com/sitrica/japson/GeneralTest.java @@ -34,7 +34,8 @@ public void startClient() { @Test @Order(3) public void sendPacket() { - assertEquals(ClientTest.japson.getAddress(), ServerTest.japson.getAddress()); + assertEquals(ClientTest.japson.getAddress().getAddress(), ServerTest.japson.getAddress().getAddress()); + //assertEquals(ClientTest.japson.getAddress().getPort(), ServerTest.japson.getAddress().getPort()); String value = "testing Japson", value2 = "testing Japson 2"; String returned = null, second = null; try { diff --git a/src/test/java/com/sitrica/japson/ServerTest.java b/src/test/java/com/sitrica/japson/ServerTest.java index 3bbeb36..cab2f11 100644 --- a/src/test/java/com/sitrica/japson/ServerTest.java +++ b/src/test/java/com/sitrica/japson/ServerTest.java @@ -4,7 +4,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; -import java.net.InetAddress; +import java.net.InetSocketAddress; import java.net.SocketException; import java.net.UnknownHostException; @@ -22,12 +22,13 @@ public static void setupServer() { japson = new JapsonServer(1337) .setPassword("test-password") .enableDebug(); + assertNotNull(japson); japson.registerHandlers(new Handler[] {new Handler(0x01) { @Override - public JsonObject handle(InetAddress address, int port, JsonObject object) { + public JsonObject handle(InetSocketAddress address, JsonObject object) { assertNotNull(object); assertTrue(object.has("value")); - assertEquals(address, japson.getAddress()); + assertEquals(address.getAddress(), japson.getAddress().getAddress()); String value = object.get("value").getAsString(); assertEquals(value, "testing Japson"); JsonObject returnJson = new JsonObject(); @@ -36,10 +37,10 @@ public JsonObject handle(InetAddress address, int port, JsonObject object) { } }, new Handler(0x02) { @Override - public JsonObject handle(InetAddress address, int port, JsonObject object) { + public JsonObject handle(InetSocketAddress address, JsonObject object) { assertNotNull(object); assertTrue(object.has("value2")); - assertEquals(address, japson.getAddress()); + assertEquals(address.getAddress(), japson.getAddress().getAddress()); String value = object.get("value2").getAsString(); assertEquals(value, "testing Japson 2"); JsonObject returnJson = new JsonObject(); @@ -48,10 +49,10 @@ public JsonObject handle(InetAddress address, int port, JsonObject object) { } }, new Executor(0x03) { @Override - public void execute(InetAddress address, int port, JsonObject object) { + public void execute(InetSocketAddress address, JsonObject object) { assertNotNull(object); assertTrue(object.has("test")); - assertEquals(address, japson.getAddress()); + assertEquals(address.getAddress(), japson.getAddress().getAddress()); String value = object.get("test").getAsString(); assertEquals(value, "test"); } From e7748b96867530680b48a2526f029432e744d0f8 Mon Sep 17 00:00:00 2001 From: TheLimeGlass Date: Mon, 30 Aug 2021 19:21:25 -0600 Subject: [PATCH 12/13] Fix null unresolved ip --- build.gradle | 2 +- src/main/java/com/sitrica/japson/client/JapsonClient.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index d3af654..f45b10a 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ plugins { jar.archiveName = project.name + '.jar' // Add SNAPSHOT to make this publish as a beta. -version '1.1.3.9-SNAPSHOT' +version '1.1.4.0-SNAPSHOT' sourceCompatibility = 1.8 diff --git a/src/main/java/com/sitrica/japson/client/JapsonClient.java b/src/main/java/com/sitrica/japson/client/JapsonClient.java index ac40f14..30a66a0 100644 --- a/src/main/java/com/sitrica/japson/client/JapsonClient.java +++ b/src/main/java/com/sitrica/japson/client/JapsonClient.java @@ -59,7 +59,7 @@ public JapsonClient start() { valid = false; } }, DELAY, HEARTBEAT, TimeUnit.MILLISECONDS); - logger.atInfo().log("Started Japson client bound to %s.", address.getAddress().getHostName() + ":" + address.getPort()); + logger.atInfo().log("Started Japson client bound to %s.", address.getHostName() + ":" + address.getPort()); return this; } From 80652e900d62e2c26534b3d22ff2947ce08861df Mon Sep 17 00:00:00 2001 From: TheLimeGlass Date: Mon, 6 Sep 2021 19:13:28 -0600 Subject: [PATCH 13/13] 1.1.4.0 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index f45b10a..befa635 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ plugins { jar.archiveName = project.name + '.jar' // Add SNAPSHOT to make this publish as a beta. -version '1.1.4.0-SNAPSHOT' +version '1.1.4.0' sourceCompatibility = 1.8