From 36c8d217c89a9faab4334ed192ed0482008c175a Mon Sep 17 00:00:00 2001 From: Olof Larsson Date: Fri, 31 Aug 2012 10:32:49 +0200 Subject: [PATCH] Getting rid of the persist-maps in mcore. --- .../massivecraft/mcore4/InternalListener.java | 4 ++-- src/com/massivecraft/mcore4/MCore.java | 18 +----------------- src/com/massivecraft/mcore4/MPlugin.java | 7 +++---- .../massivecraft/mcore4/persist/Persist.java | 13 +++++++++++++ 4 files changed, 19 insertions(+), 23 deletions(-) diff --git a/src/com/massivecraft/mcore4/InternalListener.java b/src/com/massivecraft/mcore4/InternalListener.java index db46f145..0c1593ca 100644 --- a/src/com/massivecraft/mcore4/InternalListener.java +++ b/src/com/massivecraft/mcore4/InternalListener.java @@ -29,9 +29,9 @@ public class InternalListener implements Listener PlayerUtil.getAllVisitorNames().add(id); - for (Persist realm : MCore.getPersistInstances().values()) + for (Persist instance : Persist.instances) { - for (IClassManager manager : realm.getClassManagers().values()) + for (IClassManager manager : instance.getClassManagers().values()) { if (manager.idCanFix(Player.class) == false) continue; if (manager.containsId(id)) continue; diff --git a/src/com/massivecraft/mcore4/MCore.java b/src/com/massivecraft/mcore4/MCore.java index dea9ca0a..7527a18d 100644 --- a/src/com/massivecraft/mcore4/MCore.java +++ b/src/com/massivecraft/mcore4/MCore.java @@ -1,8 +1,6 @@ package com.massivecraft.mcore4; import java.lang.reflect.Modifier; -import java.util.HashMap; -import java.util.Map; import java.util.Random; import java.util.logging.Level; import java.util.logging.Logger; @@ -25,20 +23,6 @@ public class MCore extends JavaPlugin { InternalListener listener; - // -------------------------------------------- // - // PERSIST - // -------------------------------------------- // - - private static Map persistInstances = new HashMap(); - public static Map getPersistInstances() { return persistInstances; } - public static Persist getPersist(Object owner) { return persistInstances.get(owner); } - public static void removePersist(Object owner) { persistInstances.remove(owner); } - public static void createPersist(Object owner) - { - if (persistInstances.containsKey(owner)) return; - persistInstances.put(owner, new Persist()); - } - // -------------------------------------------- // // DERP // -------------------------------------------- // @@ -62,7 +46,7 @@ public class MCore extends JavaPlugin PlayerUtil.populateAllVisitorNames(); // This is safe since all plugins using Persist should bukkit-depend this plugin. - getPersistInstances().clear(); + Persist.instances.clear(); // Register events this.listener = new InternalListener(this); diff --git a/src/com/massivecraft/mcore4/MPlugin.java b/src/com/massivecraft/mcore4/MPlugin.java index df594779..476e7e51 100644 --- a/src/com/massivecraft/mcore4/MPlugin.java +++ b/src/com/massivecraft/mcore4/MPlugin.java @@ -43,10 +43,9 @@ public abstract class MPlugin extends JavaPlugin implements Listener // Create Gson this.gson = this.getGsonBuilder().create(); - - MCore.createPersist(this); + // Create tools this.cmd = new Cmd(); - this.persist = MCore.getPersist(this); + this.persist = new Persist(); this.one = new One(this); this.lib = new LibLoader(this); @@ -65,7 +64,7 @@ public abstract class MPlugin extends JavaPlugin implements Listener public void onDisable() { this.persist.saveAll(); - MCore.removePersist(this); + Persist.instances.remove(this.persist); this.cmd = null; this.persist = null; diff --git a/src/com/massivecraft/mcore4/persist/Persist.java b/src/com/massivecraft/mcore4/persist/Persist.java index 7d43495a..17c7d4c1 100644 --- a/src/com/massivecraft/mcore4/persist/Persist.java +++ b/src/com/massivecraft/mcore4/persist/Persist.java @@ -5,15 +5,19 @@ import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.SortedSet; import java.util.Timer; import java.util.TreeSet; +import java.util.concurrent.CopyOnWriteArrayList; import com.massivecraft.mcore4.Predictate; public class Persist { + public static List instances = new CopyOnWriteArrayList(); + private Map, IClassManager> classManagers = new HashMap, IClassManager>(); public void setManager(Class clazz, IClassManager manager) { @@ -57,6 +61,15 @@ public class Persist return (IClassManager) this.getManager(entity.getClass()); } + // -------------------------------------------- // + // CONSTRUCT + // -------------------------------------------- // + + public Persist() + { + instances.add(this); + } + // -------------------------------------------- // // SAVE ALL // -------------------------------------------- //