diff options
Diffstat (limited to 'src/com/isode/stroke/avatars/VCardUpdateAvatarManager.java')
-rwxr-xr-x | src/com/isode/stroke/avatars/VCardUpdateAvatarManager.java | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/src/com/isode/stroke/avatars/VCardUpdateAvatarManager.java b/src/com/isode/stroke/avatars/VCardUpdateAvatarManager.java index ce61892..5328fb4 100755 --- a/src/com/isode/stroke/avatars/VCardUpdateAvatarManager.java +++ b/src/com/isode/stroke/avatars/VCardUpdateAvatarManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2014 Isode Limited. + * Copyright (c) 2010-2015 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ @@ -13,6 +13,7 @@ package com.isode.stroke.avatars; import java.util.Map; import java.util.HashMap; + import com.isode.stroke.avatars.AvatarProvider; import com.isode.stroke.jid.JID; import com.isode.stroke.elements.VCard; @@ -20,7 +21,6 @@ import com.isode.stroke.elements.Presence; import com.isode.stroke.elements.ErrorPayload; import com.isode.stroke.elements.VCardUpdate; import com.isode.stroke.client.StanzaChannel; -import com.isode.stroke.vcards.GetVCardRequest; import com.isode.stroke.crypto.CryptoProvider; import com.isode.stroke.stringcodecs.Hexify; import com.isode.stroke.avatars.AvatarStorage; @@ -28,20 +28,21 @@ import com.isode.stroke.muc.MUCRegistry; import com.isode.stroke.vcards.VCardManager; import com.isode.stroke.signals.Slot2; import com.isode.stroke.signals.Slot1; + import java.util.logging.Logger; import com.isode.stroke.signals.SignalConnection; -public class VCardUpdateAvatarManager implements AvatarProvider { +public class VCardUpdateAvatarManager extends AvatarProvider { private VCardManager vcardManager_; private AvatarStorage avatarStorage_; private CryptoProvider crypto_; private MUCRegistry mucRegistry_; - private Map<JID, String> avatarHashes_ = new HashMap<JID, String>(); - private SignalConnection onPresenceReceivedConnection; - private SignalConnection onAvailableChangedConnection; - private SignalConnection onVCardChangedConnection; - private Logger logger_ = Logger.getLogger(this.getClass().getName()); + private final Map<JID, String> avatarHashes_ = new HashMap<JID, String>(); + private final SignalConnection onPresenceReceivedConnection; + private final SignalConnection onAvailableChangedConnection; + private final SignalConnection onVCardChangedConnection; + private final Logger logger_ = Logger.getLogger(this.getClass().getName()); public VCardUpdateAvatarManager(VCardManager vcardManager, StanzaChannel stanzaChannel, AvatarStorage avatarStorage, CryptoProvider crypto) { this(vcardManager, stanzaChannel, avatarStorage, crypto, null); @@ -53,25 +54,33 @@ public class VCardUpdateAvatarManager implements AvatarProvider { this.crypto_ = crypto; this.mucRegistry_ = mucRegistry; onPresenceReceivedConnection = stanzaChannel.onPresenceReceived.connect(new Slot1<Presence>() { - + @Override public void call(Presence p1) { handlePresenceReceived(p1); } }); onAvailableChangedConnection = stanzaChannel.onAvailableChanged.connect(new Slot1<Boolean>() { - + @Override public void call(Boolean b) { handleStanzaChannelAvailableChanged(b); } }); onVCardChangedConnection = vcardManager_.onVCardChanged.connect(new Slot2<JID, VCard>() { - + @Override public void call(JID p1, VCard vcard) { handleVCardChanged(p1, vcard); } }); } + + @Override + public void delete() { + onPresenceReceivedConnection.disconnect(); + onAvailableChangedConnection.disconnect(); + onVCardChangedConnection.disconnect(); + } + @Override public String getAvatarHash(JID jid) { if(avatarHashes_.containsKey(jid)) { return avatarHashes_.get(jid); |