diff options
author | Alex Clayton <alex.clayton@isode.com> | 2016-03-10 12:00:49 (GMT) |
---|---|---|
committer | Alex Clayton <alex.clayton@isode.com> | 2016-03-14 14:08:40 (GMT) |
commit | 9a5a18ee69e1daf50ac60c3c33619fa13743205f (patch) | |
tree | a9cb31beb7aec44e09a7f7eeffe5b672acc052b6 | |
parent | 5c9f31f688e480d63daab8f99205a05ff4f91e8b (diff) | |
download | stroke-9a5a18ee69e1daf50ac60c3c33619fa13743205f.zip stroke-9a5a18ee69e1daf50ac60c3c33619fa13743205f.tar.bz2 |
Do not flush VCard cache if IQ request returns an error.
As per swiften patch of the same name
(37aafcb4d693a0b4f5944a52e0c070e5aa384245) changes behaviour of VCard
cache slightly, and updates test accordingly.
Test-information: Unit tests pass.
Change-Id: I933c8000b4cb73b43db28db94887a768d0272dd2
-rw-r--r-- | src/com/isode/stroke/vcards/VCardManager.java | 15 | ||||
-rw-r--r-- | test/com/isode/stroke/vcards/VCardManagerTest.java | 14 |
2 files changed, 14 insertions, 15 deletions
diff --git a/src/com/isode/stroke/vcards/VCardManager.java b/src/com/isode/stroke/vcards/VCardManager.java index 80e7942..082aeeb 100644 --- a/src/com/isode/stroke/vcards/VCardManager.java +++ b/src/com/isode/stroke/vcards/VCardManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2015, Isode Limited, London, England. + * Copyright (c) 2010-2016, Isode Limited, London, England. * All rights reserved. */ package com.isode.stroke.vcards; @@ -82,14 +82,15 @@ public class VCardManager { requestVCard(new JID()); } - private void handleVCardReceived(final JID actualJID, VCard vcard, ErrorPayload error) { - if (error != null || vcard == null) { - vcard = new VCard(); + if (error == null) { + if (vcard == null) { + vcard = new VCard(); + } + requestedVCards.remove(actualJID); + JID jid = actualJID.isValid() ? actualJID : ownJID.toBare(); + setVCard(jid, vcard); } - requestedVCards.remove(actualJID); - JID jid = actualJID.isValid() ? actualJID : ownJID.toBare(); - setVCard(jid, vcard); } public SetVCardRequest createSetVCardRequest(final VCard vcard) { diff --git a/test/com/isode/stroke/vcards/VCardManagerTest.java b/test/com/isode/stroke/vcards/VCardManagerTest.java index 4c51081..729eda9 100644 --- a/test/com/isode/stroke/vcards/VCardManagerTest.java +++ b/test/com/isode/stroke/vcards/VCardManagerTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 Isode Limited. + * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ @@ -155,14 +155,12 @@ public class VCardManagerTest { @Test public void testRequest_Error() { - VCardManager testling = createManager(); - testling.requestVCard(new JID("foo@bar.com/baz")); - stanzaChannel.onIQReceived.emit(IQ.createError(new JID("baz@fum.com/foo"), stanzaChannel.sentStanzas.get(0).getTo(), stanzaChannel.sentStanzas.get(0).getID())); + VCardManager testling = createManager(); + testling.requestVCard(new JID("foo@bar.com/baz")); + stanzaChannel.onIQReceived.emit(IQ.createError(new JID("baz@fum.com/foo"), stanzaChannel.sentStanzas.get(0).getTo(), stanzaChannel.sentStanzas.get(0).getID())); - assertEquals(1, (changes.size())); - assertEquals(new JID("foo@bar.com/baz"), changes.get(0).jid); - assertEquals((""), changes.get(0).vcard.getFullName()); - assertEquals((""), vcardStorage.getVCard(new JID("foo@bar.com/baz")).getFullName()); + // On error, cached vCards should not be changed + assertEquals(0,changes.size()); } @Test |