diff options
author | Alan Young <consult.awy@gmail.com> | 2015-06-29 09:26:14 (GMT) |
---|---|---|
committer | Kevin Smith <kevin.smith@isode.com> | 2015-07-07 08:58:14 (GMT) |
commit | d32bc2d8ab89f9f9787f417d71055e2b88a3b92b (patch) | |
tree | 9a7dbb85b33805e0428e39efb3da9d1f127528c3 /src/com/isode/stroke/avatars/VCardUpdateAvatarManager.java | |
parent | 1f31d8301bbb89a61235d575ac3c5a2061df3a69 (diff) | |
download | stroke-d32bc2d8ab89f9f9787f417d71055e2b88a3b92b.zip stroke-d32bc2d8ab89f9f9787f417d71055e2b88a3b92b.tar.bz2 |
Update Avatar access model.
Use the String avatar hash as the general handle for an avatar.
AvatarManager.getAvatar(JID jid) will return null if no
avatar is available.
AvatarManager.getAvatarPath() and AvatarStorage.getAvatarPath() are
deleted.
Make AvatarProvider & AvatarManager abstract classes instead of
interfaces so that their onAvatarChanged Signals are not static fields.
Implement delete() for AvatarManagerImpl and AvatarProvider & subclasses
so that signal connections can be released.
Add @Override annotations as appropriate.
Change-Id: Ia7c9d7607b642bb42c373f81dc6be9a60f0f2134
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); |