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)
This commit is contained in:
Treeku
2014-08-20 19:31:40 +01:00
parent ac982e2e8b
commit dd2afae373
+9 -9
View File
@@ -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<K, V> implements Map<K, V>, Serializable {
public class SWGMap<K, V> extends Delta implements Map<K, V> {
private static final long serialVersionUID = 1L;
private Map<K, V> map = new TreeMap<K, V>();
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<K, V> implements Map<K, V>, Serializable {
}
public void init(SWGObject object) {
objectMutex = new Object();
super.init(object);
updateCounter = 0;
this.object = object;
@@ -306,7 +306,7 @@ public class SWGMap<K, V> implements Map<K, V>, 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<K, V> implements Map<K, V>, 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<K, V> implements Map<K, V>, 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<K, V> implements Map<K, V>, 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<K, V> implements Map<K, V>, 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);