Close plugins internally when reloading them instead of externally

This commit is contained in:
Frank van der Heijden 2020-07-19 21:55:00 +02:00
parent a0e0072f12
commit 4b6008299b
No known key found for this signature in database
GPG key ID: 26DA56488D314D11
6 changed files with 23 additions and 26 deletions

View file

@ -195,9 +195,8 @@ public class CommandServerUtils extends BaseCommand {
@CommandPermission("serverutils.reloadplugin") @CommandPermission("serverutils.reloadplugin")
@Description("Reloads a specified plugin.") @Description("Reloads a specified plugin.")
public void onReloadPlugin(CommandSender sender, String pluginName) { public void onReloadPlugin(CommandSender sender, String pluginName) {
CloseableResult result = BukkitPluginManager.get().reloadPlugin(pluginName); Result result = BukkitPluginManager.get().reloadPlugin(pluginName);
result.getResult().sendTo(BukkitUtils.wrap(sender), "reload", pluginName); result.sendTo(BukkitUtils.wrap(sender), "reload", pluginName);
result.tryClose();
} }
/** /**

View file

@ -179,9 +179,9 @@ public class BukkitPluginManager extends AbstractPluginManager<Plugin> {
* @return The result of the reload. * @return The result of the reload.
*/ */
@Override @Override
public CloseableResult reloadPlugin(String pluginName) { public Result reloadPlugin(String pluginName) {
Plugin plugin = Bukkit.getPluginManager().getPlugin(pluginName); Plugin plugin = Bukkit.getPluginManager().getPlugin(pluginName);
if (plugin == null) return new CloseableResult(Result.NOT_EXISTS); if (plugin == null) return Result.NOT_EXISTS;
return reloadPlugin(plugin); return reloadPlugin(plugin);
} }
@ -191,21 +191,22 @@ public class BukkitPluginManager extends AbstractPluginManager<Plugin> {
* @return The result of the reload. * @return The result of the reload.
*/ */
@Override @Override
public CloseableResult reloadPlugin(Plugin plugin) { public Result reloadPlugin(Plugin plugin) {
Result disableResult = disablePlugin(plugin); Result disableResult = disablePlugin(plugin);
if (disableResult != Result.SUCCESS && disableResult != Result.ALREADY_DISABLED) { if (disableResult != Result.SUCCESS && disableResult != Result.ALREADY_DISABLED) {
return new CloseableResult(disableResult); return disableResult;
} }
CloseableResult result = unloadPlugin(plugin); CloseableResult result = unloadPlugin(plugin);
if (result.getResult() != Result.SUCCESS) return result; if (result.getResult() != Result.SUCCESS) return result.getResult();
result.tryClose();
File pluginFile = getPluginFile(plugin.getName()); File pluginFile = getPluginFile(plugin.getName());
if (pluginFile == null) return result.set(Result.FILE_DELETED); if (pluginFile == null) return Result.FILE_DELETED;
BukkitLoadResult loadResult = loadPlugin(pluginFile); BukkitLoadResult loadResult = loadPlugin(pluginFile);
if (!loadResult.isSuccess()) return result.set(loadResult.getResult()); if (!loadResult.isSuccess()) return loadResult.getResult();
return result.set(enablePlugin(loadResult.get())); return enablePlugin(loadResult.get());
} }
/** /**

View file

@ -136,9 +136,8 @@ public class CommandServerUtils extends BaseCommand {
@CommandPermission("serverutils.reloadplugin") @CommandPermission("serverutils.reloadplugin")
@Description("Reloads a specified plugin.") @Description("Reloads a specified plugin.")
public void onReloadPlugin(CommandSender sender, String pluginName) { public void onReloadPlugin(CommandSender sender, String pluginName) {
CloseableResult result = BungeePluginManager.get().reloadPlugin(pluginName); Result result = BungeePluginManager.get().reloadPlugin(pluginName);
result.getResult().sendTo(BungeeUtils.wrap(sender), "reload", pluginName); result.sendTo(BungeeUtils.wrap(sender), "reload", pluginName);
result.tryClose();
} }
/** /**

View file

@ -115,25 +115,25 @@ public class BungeePluginManager extends AbstractPluginManager<Plugin> {
} }
@Override @Override
public CloseableResult reloadPlugin(String pluginName) { public Result reloadPlugin(String pluginName) {
Plugin plugin = proxy.getPluginManager().getPlugin(pluginName); Plugin plugin = proxy.getPluginManager().getPlugin(pluginName);
if (plugin == null) return new CloseableResult(Result.NOT_ENABLED); if (plugin == null) return Result.NOT_ENABLED;
return reloadPlugin(plugin); return reloadPlugin(plugin);
} }
@Override @Override
public CloseableResult reloadPlugin(Plugin plugin) { public Result reloadPlugin(Plugin plugin) {
CloseableResult result = unloadPlugin(plugin); CloseableResult result = unloadPlugin(plugin);
if (result.getResult() != Result.SUCCESS) return result; if (result.getResult() != Result.SUCCESS) return result.getResult();
result.tryClose(); result.tryClose();
File file = getPluginFile(plugin.getDescription().getName()); File file = getPluginFile(plugin.getDescription().getName());
if (file == null) return result.set(Result.FILE_DELETED); if (file == null) return Result.FILE_DELETED;
BungeeLoadResult loadResult = loadPlugin(file); BungeeLoadResult loadResult = loadPlugin(file);
if (!loadResult.isSuccess()) return result.set(loadResult.getResult()); if (!loadResult.isSuccess()) return loadResult.getResult();
return result.set(enablePlugin(loadResult.get())); return enablePlugin(loadResult.get());
} }
@Override @Override

View file

@ -15,9 +15,9 @@ public abstract class AbstractPluginManager<T> extends PluginProvider<T> {
public abstract Result enablePlugin(T plugin); public abstract Result enablePlugin(T plugin);
public abstract CloseableResult reloadPlugin(String pluginName); public abstract Result reloadPlugin(String pluginName);
public abstract CloseableResult reloadPlugin(T plugin); public abstract Result reloadPlugin(T plugin);
public abstract CloseableResult unloadPlugin(String pluginName); public abstract CloseableResult unloadPlugin(String pluginName);

View file

@ -16,7 +16,6 @@ import net.frankheijden.serverutils.common.ServerUtilsApp;
import net.frankheijden.serverutils.common.config.Config; import net.frankheijden.serverutils.common.config.Config;
import net.frankheijden.serverutils.common.config.Messenger; import net.frankheijden.serverutils.common.config.Messenger;
import net.frankheijden.serverutils.common.config.YamlConfig; import net.frankheijden.serverutils.common.config.YamlConfig;
import net.frankheijden.serverutils.common.entities.CloseableResult;
import net.frankheijden.serverutils.common.entities.ServerCommandSender; import net.frankheijden.serverutils.common.entities.ServerCommandSender;
import net.frankheijden.serverutils.common.entities.ServerUtilsPlugin; import net.frankheijden.serverutils.common.entities.ServerUtilsPlugin;
import net.frankheijden.serverutils.common.managers.AbstractVersionManager; import net.frankheijden.serverutils.common.managers.AbstractVersionManager;
@ -181,9 +180,8 @@ public class UpdateCheckerTask implements Runnable {
if (isStartupCheck()) { if (isStartupCheck()) {
plugin.getLogger().info(String.format(DOWNLOADED_RESTART, downloadedVersion)); plugin.getLogger().info(String.format(DOWNLOADED_RESTART, downloadedVersion));
CloseableResult result = plugin.getPluginManager().reloadPlugin((Object)ServerUtilsApp.getPlatformPlugin()); plugin.getPluginManager().reloadPlugin((Object)ServerUtilsApp.getPlatformPlugin());
plugin.getLogger().info(String.format(UPGRADE_SUCCESS, downloadedVersion)); plugin.getLogger().info(String.format(UPGRADE_SUCCESS, downloadedVersion));
result.tryClose();
} else { } else {
broadcastDownloadStatus(downloadedVersion, false); broadcastDownloadStatus(downloadedVersion, false);
} }