summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/isode/stroke/avatars/VCardUpdateAvatarManager.java')
-rwxr-xr-xsrc/com/isode/stroke/avatars/VCardUpdateAvatarManager.java31
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);