summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Young <consult.awy@gmail.com>2015-06-29 09:26:14 (GMT)
committerKevin Smith <kevin.smith@isode.com>2015-07-07 08:58:14 (GMT)
commitd32bc2d8ab89f9f9787f417d71055e2b88a3b92b (patch)
tree9a7dbb85b33805e0428e39efb3da9d1f127528c3 /src/com/isode/stroke/avatars/AvatarManagerImpl.java
parent1f31d8301bbb89a61235d575ac3c5a2061df3a69 (diff)
downloadstroke-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/AvatarManagerImpl.java')
-rwxr-xr-xsrc/com/isode/stroke/avatars/AvatarManagerImpl.java47
1 files changed, 17 insertions, 30 deletions
diff --git a/src/com/isode/stroke/avatars/AvatarManagerImpl.java b/src/com/isode/stroke/avatars/AvatarManagerImpl.java
index b324b3e..7803670 100755
--- a/src/com/isode/stroke/avatars/AvatarManagerImpl.java
+++ b/src/com/isode/stroke/avatars/AvatarManagerImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010-2013 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
* All rights reserved.
* See the COPYING file for more information.
*/
@@ -11,30 +11,22 @@
package com.isode.stroke.avatars;
-import com.isode.stroke.avatars.AvatarManager;
-import com.isode.stroke.avatars.CombinedAvatarProvider;
-import com.isode.stroke.muc.MUCRegistry;
-import com.isode.stroke.avatars.AvatarStorage;
import com.isode.stroke.client.StanzaChannel;
-import com.isode.stroke.vcards.VCardManager;
-import com.isode.stroke.avatars.VCardUpdateAvatarManager;
-import com.isode.stroke.avatars.VCardAvatarManager;
-import com.isode.stroke.avatars.OfflineAvatarManager;
import com.isode.stroke.crypto.CryptoProvider;
-import com.isode.stroke.base.ByteArray;
import com.isode.stroke.jid.JID;
-import com.isode.stroke.signals.Slot1;
-import java.nio.file.*;
+import com.isode.stroke.muc.MUCRegistry;
import com.isode.stroke.signals.SignalConnection;
+import com.isode.stroke.signals.Slot1;
+import com.isode.stroke.vcards.VCardManager;
-public class AvatarManagerImpl implements AvatarManager {
+public class AvatarManagerImpl extends AvatarManager {
- private CombinedAvatarProvider combinedAvatarProvider = new CombinedAvatarProvider();
+ private final CombinedAvatarProvider combinedAvatarProvider = new CombinedAvatarProvider();
private AvatarStorage avatarStorage;
private VCardUpdateAvatarManager vcardUpdateAvatarManager;
private VCardAvatarManager vcardAvatarManager;
private OfflineAvatarManager offlineAvatarManager;
- private SignalConnection onAvatarChangedConnection;
+ private final SignalConnection onAvatarChangedConnection;
public AvatarManagerImpl(VCardManager vcardManager, StanzaChannel stanzaChannel, AvatarStorage avatarStorage, CryptoProvider crypto) {
this(vcardManager, stanzaChannel, avatarStorage, crypto, null);
@@ -52,27 +44,22 @@ public class AvatarManagerImpl implements AvatarManager {
combinedAvatarProvider.addProvider(offlineAvatarManager);
onAvatarChangedConnection = combinedAvatarProvider.onAvatarChanged.connect(new Slot1<JID>() {
-
- public void call(JID p1) {
- handleCombinedAvatarChanged(p1);
- }
+ @Override public void call(JID p1) {handleCombinedAvatarChanged(p1);}
});
}
-
- public Path getAvatarPath(JID jid) {
- String hash = combinedAvatarProvider.getAvatarHash(jid);
- if (hash != null && hash.length() != 0) {
- return avatarStorage.getAvatarPath(hash);
- }
- return Paths.get("");
+
+ public void delete() {
+ onAvatarChangedConnection.disconnect();
+ combinedAvatarProvider.delete();
}
- public ByteArray getAvatar(JID jid) {
+ @Override
+ public String getAvatar(JID jid) {
String hash = combinedAvatarProvider.getAvatarHash(jid);
- if (hash != null && hash.length() != 0) {
- return avatarStorage.getAvatar(hash);
+ if (hash != null && hash.length() != 0 && avatarStorage.hasAvatar(hash)) {
+ return hash;
}
- return new ByteArray();
+ return null;
}
private void handleCombinedAvatarChanged(JID jid) {