Skip to content

Commit 55d1ff2

Browse files
committed
Fixed a NPE when querying status from the StatusManager when disabled
1 parent f248134 commit 55d1ff2

File tree

9 files changed

+37
-37
lines changed

9 files changed

+37
-37
lines changed

src/main/java/me/jaimemartz/lobbybalancer/LobbyBalancer.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import me.jaimemartz.lobbybalancer.connection.ServerAssignRegistry;
99
import me.jaimemartz.lobbybalancer.listener.*;
1010
import me.jaimemartz.lobbybalancer.manager.PlayerLocker;
11-
import me.jaimemartz.lobbybalancer.ping.PingManager;
11+
import me.jaimemartz.lobbybalancer.ping.StatusManager;
1212
import me.jaimemartz.lobbybalancer.section.SectionManager;
1313
import me.jaimemartz.lobbybalancer.utils.DigitUtils;
1414
import net.md_5.bungee.api.plugin.Command;
@@ -20,7 +20,6 @@
2020

2121
import java.io.IOException;
2222
import java.util.logging.Level;
23-
import java.util.logging.Logger;
2423

2524
public class LobbyBalancer extends Plugin {
2625
public static final String USER_ID = "%%__USER__%%";
@@ -31,7 +30,7 @@ public class LobbyBalancer extends Plugin {
3130
private boolean failed = false;
3231

3332
private ConfigFactory factory;
34-
private PingManager pingManager;
33+
private StatusManager statusManager;
3534
private SectionManager sectionManager;
3635
private Command fallbackCommand, mainCommand, manageCommand;
3736
private Listener connectListener, kickListener, messageListener, reloadListener;
@@ -92,8 +91,9 @@ private void enable() {
9291
try {
9392
sectionManager.load();
9493

94+
statusManager = new StatusManager();
9595
if (ConfigEntries.SERVER_CHECK_ENABLED.get()) {
96-
pingManager = new PingManager(this);
96+
statusManager.start(this);
9797
}
9898

9999
if (ConfigEntries.FALLBACK_COMMAND_ENABLED.get()) {
@@ -149,8 +149,7 @@ private void disable() {
149149
}
150150

151151
if (ConfigEntries.SERVER_CHECK_ENABLED.get()) {
152-
pingManager.stop();
153-
pingManager = null;
152+
statusManager.stop();
154153
}
155154

156155
if (ConfigEntries.FALLBACK_COMMAND_ENABLED.get()) {
@@ -193,8 +192,8 @@ public void reloadPlugin() {
193192
getLogger().info(String.format("The plugin has been reloaded, took %sms", ending));
194193
}
195194

196-
public PingManager getPingManager() {
197-
return pingManager;
195+
public StatusManager getStatusManager() {
196+
return statusManager;
198197
}
199198

200199
public SectionManager getSectionManager() {

src/main/java/me/jaimemartz/lobbybalancer/commands/ManageCommand.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import me.jaimemartz.lobbybalancer.LobbyBalancer;
77
import me.jaimemartz.lobbybalancer.configuration.ConfigEntries;
88
import me.jaimemartz.lobbybalancer.connection.ConnectionIntent;
9-
import me.jaimemartz.lobbybalancer.ping.PingStatus;
9+
import me.jaimemartz.lobbybalancer.ping.StatusInfo;
1010
import me.jaimemartz.lobbybalancer.section.ServerSection;
1111
import net.md_5.bungee.api.ChatColor;
1212
import net.md_5.bungee.api.CommandSender;
@@ -117,7 +117,7 @@ public void execute(CommandSender sender, String[] args) {
117117
if (!section.getServers().isEmpty()) {
118118
msgr.send("&7Section Servers: ");
119119
section.getServers().forEach(server -> {
120-
PingStatus status = plugin.getPingManager().getStatus(server);
120+
StatusInfo status = plugin.getStatusManager().getStatus(server);
121121
msgr.send("&7> Server &b{name} &c({connected}/{maximum}) &7({status}&7)",
122122
new Replacement("{name}", server.getName()),
123123
new Replacement("{connected}", String.valueOf(status.getOnlinePlayers())),

src/main/java/me/jaimemartz/lobbybalancer/connection/ConnectionIntent.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import me.jaimemartz.lobbybalancer.LobbyBalancer;
66
import me.jaimemartz.lobbybalancer.configuration.ConfigEntries;
77
import me.jaimemartz.lobbybalancer.manager.PlayerLocker;
8-
import me.jaimemartz.lobbybalancer.ping.PingStatus;
8+
import me.jaimemartz.lobbybalancer.ping.StatusInfo;
99
import me.jaimemartz.lobbybalancer.section.ServerSection;
1010
import net.md_5.bungee.api.config.ServerInfo;
1111
import net.md_5.bungee.api.connection.ProxiedPlayer;
@@ -57,7 +57,7 @@ private ServerInfo fetchServer(LobbyBalancer plugin, ProxiedPlayer player, Serve
5757
if (ConfigEntries.ASSIGN_TARGETS_ENABLED.get()) {
5858
if (ServerAssignRegistry.hasAssignedServer(player, section)) {
5959
ServerInfo target = ServerAssignRegistry.getAssignedServer(player, section);
60-
PingStatus status = plugin.getPingManager().getStatus(target);
60+
StatusInfo status = plugin.getStatusManager().getStatus(target);
6161
if (status.isAccessible()) {
6262
return target;
6363
} else {
@@ -74,7 +74,7 @@ private ServerInfo fetchServer(LobbyBalancer plugin, ProxiedPlayer player, Serve
7474
ServerInfo target = provider.requestTarget(plugin, section, servers, player);
7575
if (target == null) continue;
7676

77-
PingStatus status = plugin.getPingManager().getStatus(target);
77+
StatusInfo status = plugin.getStatusManager().getStatus(target);
7878
if (status.isAccessible()) {
7979
return target;
8080
} else {

src/main/java/me/jaimemartz/lobbybalancer/connection/ProviderType.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import com.google.common.collect.Iterables;
44
import me.jaimemartz.lobbybalancer.LobbyBalancer;
55
import me.jaimemartz.lobbybalancer.manager.NetworkManager;
6-
import me.jaimemartz.lobbybalancer.ping.PingStatus;
6+
import me.jaimemartz.lobbybalancer.ping.StatusInfo;
77
import me.jaimemartz.lobbybalancer.section.ServerSection;
88
import net.md_5.bungee.api.config.ServerInfo;
99
import net.md_5.bungee.api.connection.ProxiedPlayer;
@@ -56,7 +56,7 @@ public ServerInfo requestTarget(LobbyBalancer plugin, ServerSection section, Lis
5656
@Override
5757
public ServerInfo requestTarget(LobbyBalancer plugin, ServerSection section, List<ServerInfo> list, ProxiedPlayer player) {
5858
for (ServerInfo server : list) {
59-
PingStatus status = plugin.getPingManager().getStatus(server);
59+
StatusInfo status = plugin.getStatusManager().getStatus(server);
6060
if (NetworkManager.getPlayers(server).size() < status.getMaximumPlayers()) {
6161
return server;
6262
}
@@ -73,7 +73,7 @@ public ServerInfo requestTarget(LobbyBalancer plugin, ServerSection section, Lis
7373
ServerInfo target = null;
7474

7575
for (ServerInfo server : list) {
76-
PingStatus status = plugin.getPingManager().getStatus(server);
76+
StatusInfo status = plugin.getStatusManager().getStatus(server);
7777
int count = NetworkManager.getPlayers(server).size();
7878

7979
if (count > max && count <= status.getMaximumPlayers()) {

src/main/java/me/jaimemartz/lobbybalancer/ping/PingTactic.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ public enum PingTactic {
1414
ServerListPing utility = new ServerListPing();
1515

1616
@Override
17-
public void ping(ServerInfo server, Callback<PingStatus> callback, LobbyBalancer plugin) {
17+
public void ping(ServerInfo server, Callback<StatusInfo> callback, LobbyBalancer plugin) {
1818
utility.setTimeout(ConfigEntries.SERVER_CHECK_TIMEOUT.get());
1919
plugin.getProxy().getScheduler().runAsync(plugin, () -> {
2020
try {
2121
StatusResponse response = utility.ping(server.getAddress());
22-
callback.done(new PingStatus(
22+
callback.done(new StatusInfo(
2323
response.getDescription().toLegacyText(),
2424
response.getPlayers().getOnline(),
2525
response.getPlayers().getMax()),
@@ -33,11 +33,11 @@ public void ping(ServerInfo server, Callback<PingStatus> callback, LobbyBalancer
3333

3434
GENERIC {
3535
@Override
36-
public void ping(ServerInfo server, Callback<PingStatus> callback, LobbyBalancer plugin) {
36+
public void ping(ServerInfo server, Callback<StatusInfo> callback, LobbyBalancer plugin) {
3737
try {
3838
server.ping((ping, throwable) -> {
3939
if (ping != null) {
40-
callback.done(new PingStatus(
40+
callback.done(new StatusInfo(
4141
ping.getDescription(),
4242
ping.getPlayers().getOnline(),
4343
ping.getPlayers().getMax()
@@ -52,5 +52,5 @@ public void ping(ServerInfo server, Callback<PingStatus> callback, LobbyBalancer
5252
}
5353
};
5454

55-
public abstract void ping(ServerInfo server, Callback<PingStatus> callback, LobbyBalancer plugin);
55+
public abstract void ping(ServerInfo server, Callback<StatusInfo> callback, LobbyBalancer plugin);
5656
}

src/main/java/me/jaimemartz/lobbybalancer/ping/PingStatus.java renamed to src/main/java/me/jaimemartz/lobbybalancer/ping/StatusInfo.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,20 @@
33
import me.jaimemartz.lobbybalancer.configuration.ConfigEntries;
44
import net.md_5.bungee.api.config.ServerInfo;
55

6-
public final class PingStatus {
6+
public final class StatusInfo {
77
private final String description;
88
private final int online, maximum;
99
private boolean outdated = true;
1010

11-
public PingStatus() {
11+
public StatusInfo() {
1212
this("Server Unreachable", 0, 0);
1313
}
1414

15-
public PingStatus(ServerInfo server) {
15+
public StatusInfo(ServerInfo server) {
1616
this(server.getMotd(), server.getPlayers().size(), Integer.MAX_VALUE);
1717
}
1818

19-
public PingStatus(String description, int online, int maximum) {
19+
public StatusInfo(String description, int online, int maximum) {
2020
this.description = description;
2121
this.online = online;
2222
this.maximum = maximum;

src/main/java/me/jaimemartz/lobbybalancer/ping/PingManager.java renamed to src/main/java/me/jaimemartz/lobbybalancer/ping/StatusManager.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010
import java.util.Map;
1111
import java.util.concurrent.TimeUnit;
1212

13-
public class PingManager {
13+
public class StatusManager {
1414
private boolean stopped = true;
1515
private PingTactic tactic;
1616
private ScheduledTask task;
17-
private final Map<ServerInfo, PingStatus> storage = new HashMap<>();
17+
private final Map<ServerInfo, StatusInfo> storage = new HashMap<>();
1818

19-
public PingManager(LobbyBalancer plugin) {
19+
public void start(LobbyBalancer plugin) {
2020
if (task != null) {
2121
stop();
2222
}
@@ -54,19 +54,19 @@ public void stop() {
5454
private void update(LobbyBalancer plugin, ServerInfo server) {
5555
tactic.ping(server, (status, throwable) -> {
5656
if (status == null) {
57-
status = new PingStatus();
57+
status = new StatusInfo();
5858
}
5959

6060
status.setOutdated(false);
6161
storage.put(server, status);
6262
}, plugin);
6363
}
6464

65-
public PingStatus getStatus(ServerInfo server) {
66-
PingStatus status = storage.get(server);
65+
public StatusInfo getStatus(ServerInfo server) {
66+
StatusInfo status = storage.get(server);
6767

6868
if (status == null) {
69-
return new PingStatus(server);
69+
return new StatusInfo(server);
7070
} else {
7171
return status;
7272
}

src/main/java/me/jaimemartz/lobbybalancer/utils/WrappedAdapter.java renamed to src/main/java/me/jaimemartz/lobbybalancer/utils/AdapterWrapper.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@
77
import java.util.Collection;
88
import java.util.Map;
99

10-
public class WrappedAdapter implements ConfigurationAdapter {
10+
public class AdapterWrapper implements ConfigurationAdapter {
1111
private final ConfigurationAdapter wrapped;
1212

13-
public WrappedAdapter(ConfigurationAdapter adapter) {
14-
if (adapter instanceof WrappedAdapter) {
15-
this.wrapped = ((WrappedAdapter) adapter).wrapped;
13+
public AdapterWrapper(ConfigurationAdapter adapter) {
14+
//Prevents memory leak
15+
if (adapter instanceof AdapterWrapper) {
16+
this.wrapped = ((AdapterWrapper) adapter).wrapped;
1617
} else {
1718
this.wrapped = adapter;
1819
}

src/main/java/me/jaimemartz/lobbybalancer/utils/FixedAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import java.util.HashMap;
88
import java.util.Map;
99

10-
public class FixedAdapter extends WrappedAdapter {
10+
public class FixedAdapter extends AdapterWrapper {
1111
private static final Map<String, ServerInfo> fakeServers = new HashMap<>();
1212

1313
static {

0 commit comments

Comments
 (0)