From c1459171947ea519bfe11c937c82ec3af958987e Mon Sep 17 00:00:00 2001 From: fullwall Date: Tue, 12 Nov 2013 12:01:42 +0800 Subject: [PATCH] Deprecate ByIdArray and pull in trove for better NPC storage --- pom.xml | 6 ++ .../citizensnpcs/npc/CitizensNPCRegistry.java | 7 +- .../java/net/citizensnpcs/util/ByIdArray.java | 1 + .../net/citizensnpcs/util/ByIdArrayTest.java | 91 ------------------- 4 files changed, 11 insertions(+), 94 deletions(-) delete mode 100644 src/test/java/net/citizensnpcs/util/ByIdArrayTest.java diff --git a/pom.xml b/pom.xml index 7574626d3..fd4fc7fe9 100644 --- a/pom.xml +++ b/pom.xml @@ -63,6 +63,12 @@ jar compile + + net.sf.trove4j + trove4j + 3.0.3 + compile + net.milkbowl.vault Vault diff --git a/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java b/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java index 3db080f1f..fb3e675d0 100644 --- a/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java +++ b/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java @@ -1,5 +1,7 @@ package net.citizensnpcs.npc; +import gnu.trove.map.hash.TIntObjectHashMap; + import java.util.Iterator; import net.citizensnpcs.api.event.DespawnReason; @@ -9,7 +11,6 @@ import net.citizensnpcs.api.npc.NPCDataStore; import net.citizensnpcs.api.npc.NPCRegistry; import net.citizensnpcs.api.trait.Trait; import net.citizensnpcs.npc.ai.NPCHolder; -import net.citizensnpcs.util.ByIdArray; import net.citizensnpcs.util.NMS; import org.bukkit.Bukkit; @@ -20,7 +21,7 @@ import org.bukkit.entity.LivingEntity; import com.google.common.base.Preconditions; public class CitizensNPCRegistry implements NPCRegistry { - private final ByIdArray npcs = new ByIdArray(); + private final TIntObjectHashMap npcs = new TIntObjectHashMap(); private final NPCDataStore saves; public CitizensNPCRegistry(NPCDataStore store) { @@ -103,6 +104,6 @@ public class CitizensNPCRegistry implements NPCRegistry { @Override public Iterator iterator() { - return npcs.iterator(); + return npcs.valueCollection().iterator(); } } \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/util/ByIdArray.java b/src/main/java/net/citizensnpcs/util/ByIdArray.java index 2d9bcdbc3..233d633dd 100644 --- a/src/main/java/net/citizensnpcs/util/ByIdArray.java +++ b/src/main/java/net/citizensnpcs/util/ByIdArray.java @@ -5,6 +5,7 @@ import java.util.ConcurrentModificationException; import java.util.Iterator; import java.util.NoSuchElementException; +@Deprecated public class ByIdArray implements Iterable { private final int capacity; private Object[] elementData; diff --git a/src/test/java/net/citizensnpcs/util/ByIdArrayTest.java b/src/test/java/net/citizensnpcs/util/ByIdArrayTest.java deleted file mode 100644 index 6cc1c85d1..000000000 --- a/src/test/java/net/citizensnpcs/util/ByIdArrayTest.java +++ /dev/null @@ -1,91 +0,0 @@ -package net.citizensnpcs.util; - -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -import java.util.Iterator; - -import org.junit.Test; - -import com.google.common.collect.Iterables; - -public class ByIdArrayTest { - private void assertSize(ByIdArray array, int size) { - assertThat(array.size(), is(size)); - assertThat(Iterables.size(array), is(size)); - } - - @Test - public void testBeyondCapacity() { - ByIdArray array = ByIdArray.create(); - array.put(1000, 1); - assertThat(array.contains(1000), is(true)); - assertSize(array, 1); - } - - @Test - public void testClear() { - ByIdArray array = ByIdArray.create(); - array.put(0, 1); - array.put(1, 2); - array.clear(); - assertSize(array, 0); - } - - @Test - public void testContains() { - ByIdArray array = ByIdArray.create(); - array.put(1, 1); - assertThat(array.contains(1), is(true)); - } - - @Test - public void testInsertion() { - ByIdArray array = ByIdArray.create(); - array.add(1); - array.add(2); - assertSize(array, 2); - } - - @Test - public void testIteratorRemove() { - ByIdArray array = ByIdArray.create(); - array.put(10, 1); - array.put(20, 2); - array.put(30, 3); - Iterator itr = array.iterator(); - itr.next(); - itr.remove(); - itr.next(); - assertSize(array, 2); - assertThat(array.contains(10), is(false)); - assertThat(array.get(20), is(2)); - assertThat(array.get(30), is(3)); - - itr = array.iterator(); - while (itr.hasNext()) { - itr.next(); - itr.remove(); - } - assertSize(array, 0); - } - - @Test - public void testPut() { - ByIdArray array = ByIdArray.create(); - array.put(50, 1); - array.put(20, 2); - assertSize(array, 2); - assertThat(array.get(20), is(2)); - assertThat(array.get(50), is(1)); - } - - @Test - public void testRemoval() { - ByIdArray array = ByIdArray.create(); - array.put(0, 1); - array.put(1, 2); - array.remove(1); - assertSize(array, 1); - } -}