From 0eaeb3900d74fe62e468bbcea040000e945ff135 Mon Sep 17 00:00:00 2001 From: Damian Minkov Date: Fri, 9 Jul 2010 09:07:32 +0000 Subject: [PATCH] Fix some NPEs in jabber provider and fixing build. --- .../impl/protocol/jabber/ContactGroupJabberImpl.java | 5 ++++- .../impl/protocol/jabber/ContactJabberImpl.java | 5 ++++- .../jabber/OperationSetPersistentPresenceJabberImpl.java | 1 + .../jabber/OperationSetTypingNotificationsJabberImpl.java | 7 +++++-- .../protocol/jabber/ServerStoredContactListJabberImpl.java | 4 +++- .../protocol/jabber/VolatileContactGroupJabberImpl.java | 3 +++ .../impl/protocol/jabber/VolatileContactJabberImpl.java | 5 ++++- 7 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/ContactGroupJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/ContactGroupJabberImpl.java index dafa3809e..99c993a49 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/ContactGroupJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/ContactGroupJabberImpl.java @@ -96,7 +96,10 @@ public class ContactGroupJabberImpl ServerStoredContactListJabberImpl ssclCallback, boolean isResolved) { - this.id = rosterGroup.getName(); + // rosterGroup can be null when creating volatile contact group + if(rosterGroup != null) + this.id = rosterGroup.getName(); + this.isResolved = isResolved; this.ssclCallback = ssclCallback; diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/ContactJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/ContactJabberImpl.java index c431b0139..6f3bb3f6b 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/ContactJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/ContactJabberImpl.java @@ -82,7 +82,10 @@ public class ContactJabberImpl boolean isPersistent, boolean isResolved) { - this.jid = rosterEntry.getUser(); + // rosterEntry can be null when creating volatile contact + if(rosterEntry != null) + this.jid = rosterEntry.getUser(); + this.ssclCallback = ssclCallback; this.isPersistent = isPersistent; this.isResolved = isResolved; diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java index 088e1386c..815bfc846 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java @@ -786,6 +786,7 @@ else if(evt.getNewState() == RegistrationState.UNREGISTERED fireProviderStatusChangeEvent(oldStatus, currentStatus); ssContactList.cleanup(); + subscribtionPacketListener = null; if(parentProvider.getConnection() != null && parentProvider.getConnection().getRoster() != null) diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetTypingNotificationsJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetTypingNotificationsJabberImpl.java index 009dcb431..faec8ad8c 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetTypingNotificationsJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetTypingNotificationsJabberImpl.java @@ -266,8 +266,11 @@ else if(evt.getNewState() == RegistrationState.UNREGISTERED smackChatManagerListener = null; - messageEventManager.destroy(); - messageEventManager = null; + if(messageEventManager != null) + { + messageEventManager.destroy(); + messageEventManager = null; + } } } } diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/ServerStoredContactListJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/ServerStoredContactListJabberImpl.java index ae704e194..0a0e11f3d 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/ServerStoredContactListJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/ServerStoredContactListJabberImpl.java @@ -696,7 +696,9 @@ void cleanup() imageRetriever = null; } - this.roster.removeRosterListener(rosterChangeListener); + if(this.roster != null) + this.roster.removeRosterListener(rosterChangeListener); + this.rosterChangeListener = null; this.roster = null; } diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/VolatileContactGroupJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/VolatileContactGroupJabberImpl.java index 53128177d..d3e13c8ee 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/VolatileContactGroupJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/VolatileContactGroupJabberImpl.java @@ -44,6 +44,7 @@ public class VolatileContactGroupJabberImpl * Returns the name of this group. * @return a String containing the name of this group. */ + @Override public String getGroupName() { return contactGroupName; @@ -54,6 +55,7 @@ public String getGroupName() * JabberGroup.GroupName[size]{ buddy1.toString(), buddy2.toString(), ...}. * @return a String representation of the object. */ + @Override public String toString() { StringBuffer buff = new StringBuffer("VolatileJabberGroup."); @@ -77,6 +79,7 @@ public String toString() * containing non persistent contacts. * @return true if the contact group is persistent and false otherwise. */ + @Override public boolean isPersistent() { return false; diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/VolatileContactJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/VolatileContactJabberImpl.java index 2b4afdf99..0eca00c9e 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/VolatileContactJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/VolatileContactJabberImpl.java @@ -34,6 +34,7 @@ public class VolatileContactJabberImpl * Returns the Jabber Userid of this contact * @return the Jabber Userid of this contact */ + @Override public String getAddress() { return contactId; @@ -46,6 +47,7 @@ public String getAddress() * @return a String that can be used for referring to this contact when * interacting with the user. */ + @Override public String getDisplayName() { return contactId; @@ -57,6 +59,7 @@ public String getDisplayName() * * @return a string representation of this contact. */ + @Override public String toString() { StringBuffer buff = new StringBuffer("VolatileJabberContact[ id="); @@ -71,9 +74,9 @@ public String toString() * containing non persistent contacts. * @return true if the contact group is persistent and false otherwise. */ + @Override public boolean isPersistent() { return false; } - }