From 9a5a18ee69e1daf50ac60c3c33619fa13743205f Mon Sep 17 00:00:00 2001 From: Alex Clayton Date: Thu, 10 Mar 2016 12:00:49 +0000 Subject: 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 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 -- cgit v0.10.2-6-g49f6