summaryrefslogtreecommitdiffstats
path: root/EssentialsGroupManager
diff options
context:
space:
mode:
authorElgarL <ElgarL@palmergames.com>2012-04-16 23:54:33 +0100
committerElgarL <ElgarL@palmergames.com>2012-04-16 23:54:33 +0100
commitda857895fc2eea8449c98c64719fe1e32f54c80c (patch)
treeee4ce4808a56f9c12b4315d5163cb69497f7d856 /EssentialsGroupManager
parent1599a36642014d2b3284288676999a39b417a841 (diff)
downloadEssentials-da857895fc2eea8449c98c64719fe1e32f54c80c.tar
Essentials-da857895fc2eea8449c98c64719fe1e32f54c80c.tar.gz
Essentials-da857895fc2eea8449c98c64719fe1e32f54c80c.tar.lz
Essentials-da857895fc2eea8449c98c64719fe1e32f54c80c.tar.xz
Essentials-da857895fc2eea8449c98c64719fe1e32f54c80c.zip
Re-initialize the WorldsHolder on a reload, as un-registering and
re-registering a new holder means all plugins have to check for the new service on every quiery.
Diffstat (limited to 'EssentialsGroupManager')
-rw-r--r--EssentialsGroupManager/src/Changelog.txt3
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java96
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java11
3 files changed, 72 insertions, 38 deletions
diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt
index f900d5aa9..fcdc1ed9d 100644
--- a/EssentialsGroupManager/src/Changelog.txt
+++ b/EssentialsGroupManager/src/Changelog.txt
@@ -179,4 +179,5 @@ v 2.0:
- Unregister the worldsHolder as a service on a reload/shutdown instead of the whole plugin.
- Update all code formatting to use tabs for indentation.
- Stop using our own deprecated methods as we tell others to do.
- - Finally remove all deprecated methods. \ No newline at end of file
+ - Finally remove all deprecated methods.
+ - Re-initialize the WorldsHolder on a reload, as un-registering and re-registering a new holder means all plugins have to check for the new service on every quiery. \ No newline at end of file
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java
index df46b70d0..3da9666c3 100644
--- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java
+++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java
@@ -56,25 +56,7 @@ public class GroupManager extends JavaPlugin {
private Map<CommandSender, String> selectedWorlds = new HashMap<CommandSender, String>();
private WorldsHolder worldsHolder;
private boolean validateOnlinePlayer = true;
-
- private String lastError = "";
-
- /**
- * @return the validateOnlinePlayer
- */
- public boolean isValidateOnlinePlayer() {
-
- return validateOnlinePlayer;
- }
-
- /**
- * @param validateOnlinePlayer the validateOnlinePlayer to set
- */
- public void setValidateOnlinePlayer(boolean validateOnlinePlayer) {
-
- this.validateOnlinePlayer = validateOnlinePlayer;
- }
-
+
private static boolean isLoaded = false;
protected GMConfiguration config;
@@ -89,13 +71,28 @@ public class GroupManager extends JavaPlugin {
private OverloadedWorldHolder dataHolder = null;
private AnjoPermissionsHandler permissionHandler = null;
+ private String lastError = "";
+
@Override
public void onDisable() {
+
+ onDisable(false);
+ }
+
+ @Override
+ public void onEnable() {
+
+ onEnable(false);
+ }
+
+ public void onDisable(boolean restarting) {
setLoaded(false);
- // Unregister this service.
- this.getServer().getServicesManager().unregister(this.worldsHolder);
+ if (!restarting) {
+ // Unregister this service if we are shutting down.
+ this.getServer().getServicesManager().unregister(this.worldsHolder);
+ }
disableScheduler(); // Shutdown before we save, so it doesn't interfere.
if (worldsHolder != null) {
@@ -118,18 +115,26 @@ public class GroupManager extends JavaPlugin {
// EXAMPLE: Custom code, here we just output some info so we can check that all is well
PluginDescriptionFile pdfFile = this.getDescription();
System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is disabled!");
- GroupManager.logger.removeHandler(ch);
+
+ if (!restarting)
+ GroupManager.logger.removeHandler(ch);
}
-
- @Override
- public void onEnable() {
+
+ public void onEnable(boolean restarting) {
try {
+ /*
+ * reset local variables.
+ */
+ overloadedUsers = new HashMap<String, ArrayList<User>>();
+ selectedWorlds = new HashMap<CommandSender, String>();
lastError = "";
-
- GroupManager.logger.setUseParentHandlers(false);
- ch = new GMLoggerHandler();
- GroupManager.logger.addHandler(ch);
+
+ if (!restarting) {
+ GroupManager.logger.setUseParentHandlers(false);
+ ch = new GMLoggerHandler();
+ GroupManager.logger.addHandler(ch);
+ }
logger.setLevel(Level.ALL);
// Create the backup folder, if it doesn't exist.
@@ -138,7 +143,11 @@ public class GroupManager extends JavaPlugin {
prepareConfig();
// Load the global groups
globalGroups = new GlobalGroups(this);
- worldsHolder = new WorldsHolder(this);
+
+ if (!restarting)
+ worldsHolder = new WorldsHolder(this);
+ else
+ worldsHolder.resetWorldsHolder();
PluginDescriptionFile pdfFile = this.getDescription();
if (worldsHolder == null) {
@@ -169,7 +178,9 @@ public class GroupManager extends JavaPlugin {
System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!");
// Register as a service
- this.getServer().getServicesManager().register(WorldsHolder.class, this.worldsHolder, this, ServicePriority.Lowest);
+ if (!restarting)
+ this.getServer().getServicesManager().register(WorldsHolder.class, this.worldsHolder, this, ServicePriority.Lowest);
+
} catch (Exception ex) {
/*
@@ -222,6 +233,22 @@ public class GroupManager extends JavaPlugin {
}
}
+
+ /**
+ * @return the validateOnlinePlayer
+ */
+ public boolean isValidateOnlinePlayer() {
+
+ return validateOnlinePlayer;
+ }
+
+ /**
+ * @param validateOnlinePlayer the validateOnlinePlayer to set
+ */
+ public void setValidateOnlinePlayer(boolean validateOnlinePlayer) {
+
+ this.validateOnlinePlayer = validateOnlinePlayer;
+ }
public static boolean isLoaded() {
@@ -1633,11 +1660,10 @@ public class GroupManager extends JavaPlugin {
*/
/*
- * Reset the last error as we are attempting a fresh load.
+ * Attempting a fresh load.
*/
- lastError = "";
- onDisable();
- onEnable();
+ onDisable(true);
+ onEnable(true);
sender.sendMessage("All settings and worlds were reloaded!");
}
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java
index 37d0a8430..a9ab4befa 100644
--- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java
+++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java
@@ -57,12 +57,19 @@ public class WorldsHolder {
public WorldsHolder(GroupManager plugin) {
this.plugin = plugin;
+ resetWorldsHolder();
+ }
+
+ public void resetWorldsHolder() {
+
+ mirrorsGroup = new HashMap<String, String>();
+ mirrorsUser = new HashMap<String, String>();
+
// Setup folders and check files exist for the primary world
verifyFirstRun();
initialLoad();
- if (serverDefaultWorldName == null) {
+ if (serverDefaultWorldName == null)
throw new IllegalStateException("There is no default group! OMG!");
- }
}
private void initialLoad() {