From: Astrid S. <ast...@us...> - 2008-09-14 20:21:55
|
Update of /cvsroot/arianne/stendhal/src/games/stendhal/client In directory sc8-pr-cvs11.sourceforge.net:/tmp/cvs-serv31072/src/games/stendhal/client Modified Files: PerceptionToObject.java Log Message: next try to fix [ 2084886 ] cvs client: NPE in applyModifiedRPObjects Index: PerceptionToObject.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/client/PerceptionToObject.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** PerceptionToObject.java 13 Sep 2008 10:39:07 -0000 1.4 --- PerceptionToObject.java 14 Sep 2008 20:22:00 -0000 1.5 *************** *** 56,60 **** public boolean onDeleted(final RPObject object) { ! if (object != null && object.getID() != null) { ObjectChangeListener objectChangeListener = map.get(object.getID()); if (objectChangeListener == null) { --- 56,60 ---- public boolean onDeleted(final RPObject object) { ! if (isValid(object)) { ObjectChangeListener objectChangeListener = map.get(object.getID()); if (objectChangeListener == null) { *************** *** 68,71 **** --- 68,81 ---- } + private boolean isValid(final RPObject object) { + if (object == null) { + return false; + } else if (object.has("id")) { + return !RPObject.INVALID_ID.equals(object.getID()); + } else { + return false; + } + } + public void onException(final Exception exception, final MessageS2CPerception perception) { *************** *** 75,79 **** public boolean onModifiedAdded(final RPObject object, final RPObject changes) { ! if (object != null && object.getID() != null) { ObjectChangeListener objectChangeListener = map.get(object.getID()); if (objectChangeListener == null) { --- 85,89 ---- public boolean onModifiedAdded(final RPObject object, final RPObject changes) { ! if (isValid(object)) { ObjectChangeListener objectChangeListener = map.get(object.getID()); if (objectChangeListener == null) { *************** *** 88,98 **** public boolean onModifiedDeleted(final RPObject object, final RPObject changes) { ! if (object != null && object.getID() != null) { ! ObjectChangeListener objectChangeListener = map.get(object.getID()); ! if (objectChangeListener == null) { ! logger.error("no listener for: " + object); ! } else { ! objectChangeListener.modifiedDeleted(changes); ! } } return false; --- 98,108 ---- public boolean onModifiedDeleted(final RPObject object, final RPObject changes) { ! if (isValid(object)) { ! ObjectChangeListener objectChangeListener = map.get(object.getID()); ! if (objectChangeListener == null) { ! logger.error("no listener for: " + object); ! } else { ! objectChangeListener.modifiedDeleted(changes); ! } } return false; *************** *** 102,106 **** ! if (added != null && added.getID() != null) { ObjectChangeListener objectChangeListener = map.get(added.getID()); if (objectChangeListener == null) { --- 112,116 ---- ! if (isValid(added)) { ObjectChangeListener objectChangeListener = map.get(added.getID()); if (objectChangeListener == null) { *************** *** 110,114 **** } } ! if (deleted != null) { ObjectChangeListener objectChangeListener = map.get(deleted.getID()); if (objectChangeListener == null) { --- 120,124 ---- } } ! if (isValid(deleted)) { ObjectChangeListener objectChangeListener = map.get(deleted.getID()); if (objectChangeListener == null) { *************** *** 138,142 **** public void register(final RPObject object, final ObjectChangeListener listener) { ! if (object != null && object.getID()!= null) { map.put(object.getID(), listener); } --- 148,152 ---- public void register(final RPObject object, final ObjectChangeListener listener) { ! if (isValid(object)) { map.put(object.getID(), listener); } |