From dd2afae37324b975ef69b91bde82dc6c1dd17ce5 Mon Sep 17 00:00:00 2001 From: Treeku Date: Wed, 20 Aug 2014 19:31:40 +0100 Subject: [PATCH] Fixed various problems that occur after rebooting. Fixes SWGMap objectMutex issues. Fixes this buff error received after rebooting the server: java.lang.NullPointerException at resources.objects.SWGMap.values(SWGMap.java:284) at services.BuffService.clearBuffs(BuffService.java:376) at services.object.ObjectService$7.handlePacket(ObjectService.java:1149) at engine.resources.service.NetworkDispatch$1.run(NetworkDispatch.java:216) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) --- src/resources/objects/SWGMap.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/resources/objects/SWGMap.java b/src/resources/objects/SWGMap.java index 20ff287e..b8f385d0 100644 --- a/src/resources/objects/SWGMap.java +++ b/src/resources/objects/SWGMap.java @@ -21,7 +21,6 @@ ******************************************************************************/ package resources.objects; -import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -41,15 +40,15 @@ import engine.resources.objects.SWGObject; /* A SWGMap element should extend Delta or implement IDelta */ -public class SWGMap implements Map, Serializable { +public class SWGMap extends Delta implements Map { private static final long serialVersionUID = 1L; + private Map map = new TreeMap(); private transient int updateCounter = 0; private byte viewType; private short updateType; private boolean addByte; - protected transient Object objectMutex = new Object(); private transient SWGObject object; public SWGMap() { } @@ -71,7 +70,8 @@ public class SWGMap implements Map, Serializable { } public void init(SWGObject object) { - objectMutex = new Object(); + super.init(object); + updateCounter = 0; this.object = object; @@ -306,7 +306,7 @@ public class SWGMap implements Map, Serializable { byte[] value = Baseline.toBytes(entry.getValue()); size += ((addByte) ? 1 : 0) + key.length + value.length; - IoBuffer buffer = Baseline.createBuffer(size); + IoBuffer buffer = createBuffer(size); buffer.put(objects); if (addByte) buffer.put((byte) 0); buffer.put(key); @@ -316,7 +316,7 @@ public class SWGMap implements Map, Serializable { objects = buffer.array(); } - IoBuffer buffer = Baseline.createBuffer(8 + size); + IoBuffer buffer = createBuffer(8 + size); buffer.putInt(map.size()); buffer.putInt(updateCounter); buffer.put(objects); @@ -343,7 +343,7 @@ public class SWGMap implements Map, Serializable { int size = 1 + ((useIndex) ? (Baseline.toBytes(index).length) : 0) + ((useData) ? data.length : 0); - IoBuffer buffer = Delta.createBuffer(size); + IoBuffer buffer = createBuffer(size); buffer.put((byte) type); if (useIndex) buffer.put(Baseline.toBytes(index)); if (useData) buffer.put(data); @@ -355,7 +355,7 @@ public class SWGMap implements Map, Serializable { } private void queue(byte[] data) { - IoBuffer buffer = Delta.createBuffer(data.length + 8); + IoBuffer buffer = createBuffer(data.length + 8); buffer.putInt(1); buffer.putInt(updateCounter); buffer.put(data); @@ -370,7 +370,7 @@ public class SWGMap implements Map, Serializable { size += queued.length; } - IoBuffer buffer = Delta.createBuffer((size + 8)); + IoBuffer buffer = createBuffer((size + 8)); buffer.putInt(data.size()); buffer.putInt(updateCounter); for (byte[] queued : data) buffer.put(queued);