From db02c81261af7d93a3f12573621800c653acd6f1 Mon Sep 17 00:00:00 2001 From: Waverunner Date: Wed, 22 Oct 2014 13:17:56 -0400 Subject: [PATCH] Added null parent destination check for cell permissions, Deprecated checkForReservedNames, Fixed characters not in odb showing up in characters datatable, Removed updating of highestid in datatables until persistence is fixed in odb's --- src/resources/objects/cell/CellObject.java | 6 +++++- src/services/CharacterService.java | 7 +++++-- src/services/LoginService.java | 5 +++++ src/services/object/ObjectService.java | 9 +++++---- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/resources/objects/cell/CellObject.java b/src/resources/objects/cell/CellObject.java index 07665658..a01a4554 100644 --- a/src/resources/objects/cell/CellObject.java +++ b/src/resources/objects/cell/CellObject.java @@ -94,8 +94,12 @@ public class CellObject extends SWGObject implements Serializable { System.out.println("NULL session [permission]"); return; } + if (destination.getParent() == null) { + System.out.println("NULL parent [sendPermissionMessage]"); + return; + } - byte canEnter = (byte) (((BuildingObject) getContainer()).canEnter(destination.parent) ? 1 : 0); + byte canEnter = (byte) (((BuildingObject) getContainer()).canEnter(destination.getParent()) ? 1 : 0); destination.getSession().write(new UpdateCellPermissionMessage(canEnter, getObjectID()).serialize()); } diff --git a/src/services/CharacterService.java b/src/services/CharacterService.java index 78be6653..c75a9ad7 100644 --- a/src/services/CharacterService.java +++ b/src/services/CharacterService.java @@ -465,9 +465,12 @@ public class CharacterService implements INetworkDispatch { } + @Deprecated private String checkForReservedName(String firstName, String lastName) throws SQLException { - + /* + * This table has been removed. + * PreparedStatement psc = databaseConnection.preparedStatement("SELECT COUNT(*) FROM pg_tables WHERE \"tablename\"=?"); psc.setString(1, "reservednames"); ResultSet rsc = psc.executeQuery(); @@ -508,7 +511,7 @@ public class CharacterService implements INetworkDispatch { return resultSet.getString("type"); - } + }*/ return null; } diff --git a/src/services/LoginService.java b/src/services/LoginService.java index e98ae6b0..22a89812 100644 --- a/src/services/LoginService.java +++ b/src/services/LoginService.java @@ -318,6 +318,11 @@ public class LoginService implements INetworkDispatch{ while (resultSet.next() && !resultSet.isClosed()) { + if (core.objectService.getObject(resultSet.getLong("id")) == null) { + resultSet.deleteRow(); + continue; + } + //TODO: on creation just don't allow spaces in first or last name maybe? String characterName = resultSet.getString("firstName").replaceAll("\\s",""); ; String lastName = resultSet.getString("lastName").replaceAll("\\s",""); diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index 82734aad..f218d3c0 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -838,22 +838,23 @@ public class ObjectService implements INetworkDispatch { // stack overflow when using recursion long newId = 0; - try { + //try { synchronized(objectMutex) { - newId = highestId.get(); + newId = highestId.incrementAndGet(); ObjectDatabase objectIdODB = core.getObjectIdODB(); while (objectList.containsKey(newId) || objectIdODB.contains(newId)) { newId = highestId.incrementAndGet(); } + //System.out.println("Got an objid."); } - final String sql = "UPDATE highestid SET id=? WHERE id=(SELECT MAX(id) FROM highestid)"; + /*final String sql = "UPDATE highestid SET id=? WHERE id=(SELECT MAX(id) FROM highestid)"; final PreparedStatement ps2 = databaseConnection.preparedStatement(sql); ps2.setLong(1, newId); ps2.executeUpdate(); ps2.close(); } catch (SQLException e) { e.printStackTrace(); - } + }*/ return newId; }