From 5898ddd57f5dbbc4bb67d704278addcddebcc5d8 Mon Sep 17 00:00:00 2001 From: Damian Minkov Date: Tue, 19 Nov 2013 17:51:45 +0200 Subject: [PATCH] Fixes working with server-side readonly groups (shared groups in OF), handles 406 error while editing roster items. --- lib/installer-exclude/smack.jar | Bin 309383 -> 309502 bytes .../MetaContactListServiceImpl.java | 21 +++++++++++---- ...rationSetPersistentPresenceJabberImpl.java | 8 ++++++ .../ServerStoredContactListJabberImpl.java | 25 ++++++++++++++++-- .../OperationSetPersistentPresence.java | 8 ++++-- .../TestOperationSetPersistentPresence.java | 15 ++++++++--- .../TestOperationSetPersistentPresence.java | 15 ++++++++--- .../TestOperationSetPersistentPresence.java | 13 ++++++--- .../TestOperationSetPersistentPresence.java | 15 ++++++++--- .../TestOperationSetPersistentPresence.java | 13 ++++++--- .../TestOperationSetPersistentPresence.java | 15 ++++++++--- 11 files changed, 117 insertions(+), 31 deletions(-) diff --git a/lib/installer-exclude/smack.jar b/lib/installer-exclude/smack.jar index 05d7470983d9bf01652415e34cc8f1988b7af561..4468cfc6ecb699a2572423fa120cead4c888268e 100644 GIT binary patch delta 16158 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 K7SOLx!~8!1 addresses) public void entriesDeleted(Collection addresses) {} + /** + * Not used here. + */ + public void rosterError(XMPPError error, Packet packet) + {} + /** * Received on resource status change. * @param presence presence that has changed diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/ServerStoredContactListJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/ServerStoredContactListJabberImpl.java index 315a8f443..f7030dcfa 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/ServerStoredContactListJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/ServerStoredContactListJabberImpl.java @@ -656,6 +656,7 @@ public void createGroup(String groupName) * @param groupToRemove the group that we'd like removed. */ public void removeGroup(ContactGroupJabberImpl groupToRemove) + throws OperationFailedException { try { @@ -681,6 +682,8 @@ public void removeGroup(ContactGroupJabberImpl groupToRemove) catch (XMPPException ex) { logger.error("Error removing group", ex); + throw new OperationFailedException( + ex.getMessage(), OperationFailedException.GENERAL_ERROR, ex); } } @@ -748,6 +751,7 @@ public void renameGroup(ContactGroupJabberImpl groupToRename, String newName) */ public void moveContact(ContactJabberImpl contact, ContactGroupJabberImpl newParent) + throws OperationFailedException { // when the contact is not persistent, coming // from NotInContactList group, we need just to add it to the list @@ -773,11 +777,12 @@ public void moveContact(ContactJabberImpl contact, catch(OperationFailedException ex) { logger.error("Cannot move contact! ", ex); + throw new OperationFailedException( + ex.getMessage(), + OperationFailedException.GENERAL_ERROR, ex); } } - newParent.addContact(contact); - try { // will create the entry with the new group so it can be removed @@ -790,10 +795,15 @@ public void moveContact(ContactJabberImpl contact, contact.getDisplayName(), new String[]{newParent.getGroupName()}); SmackConfiguration.setPacketReplyTimeout(5000); + + newParent.addContact(contact); } catch (XMPPException ex) { logger.error("Cannot move contact! ", ex); + throw new OperationFailedException( + ex.getMessage(), + OperationFailedException.GENERAL_ERROR, ex); } } @@ -1195,6 +1205,17 @@ else if(group instanceof RootContactGroupJabberImpl) private class ChangeListener implements RosterListener { + /** + * Notifies for errors in roster packets. + * @param error the error. + * @param packet the source packet containing the error. + */ + public void rosterError(XMPPError error, Packet packet) + { + logger.error("Error received in roster " + error.getCode() + " " + + error.getMessage()); + } + /** * Received event when entry is added to the server stored list * @param addresses Collection diff --git a/src/net/java/sip/communicator/service/protocol/OperationSetPersistentPresence.java b/src/net/java/sip/communicator/service/protocol/OperationSetPersistentPresence.java index cc0ff97c4..b5b1e8af9 100644 --- a/src/net/java/sip/communicator/service/protocol/OperationSetPersistentPresence.java +++ b/src/net/java/sip/communicator/service/protocol/OperationSetPersistentPresence.java @@ -139,7 +139,8 @@ public void createServerStoredContactGroup(ContactGroup parent, * @throws IllegalStateException if the underlying protocol provider is not * registered/signed on a public service. */ - public void removeServerStoredContactGroup(ContactGroup group); + public void removeServerStoredContactGroup(ContactGroup group) + throws OperationFailedException; /** * Renames the specified group from the server stored contact list. This @@ -167,8 +168,11 @@ public void renameServerStoredContactGroup(ContactGroup group, * @param contactToMove the Contact to move * @param newParent the ContactGroup where Contact would * be placed. + * @throws OperationFailedException when the operation didn't finished + * successfully. */ - public void moveContactToGroup(Contact contactToMove, ContactGroup newParent); + public void moveContactToGroup(Contact contactToMove, ContactGroup newParent) + throws OperationFailedException; /** * Returns the root group of the server stored contact list. Most often this diff --git a/test/net/java/sip/communicator/slick/protocol/gibberish/TestOperationSetPersistentPresence.java b/test/net/java/sip/communicator/slick/protocol/gibberish/TestOperationSetPersistentPresence.java index a77eb65a1..51961da8f 100644 --- a/test/net/java/sip/communicator/slick/protocol/gibberish/TestOperationSetPersistentPresence.java +++ b/test/net/java/sip/communicator/slick/protocol/gibberish/TestOperationSetPersistentPresence.java @@ -280,10 +280,17 @@ public void postTestRemoveGroup() opSetPersPresence1 .addServerStoredGroupChangeListener(groupChangeCollector); - //create the group - opSetPersPresence1.removeServerStoredContactGroup( - opSetPersPresence1.getServerStoredContactListRoot() - .getGroup(testGroupName2)); + try + { + // remove the group + opSetPersPresence1.removeServerStoredContactGroup( + opSetPersPresence1.getServerStoredContactListRoot() + .getGroup(testGroupName2)); + } + catch(OperationFailedException ex) + { + logger.error("error removing group", ex); + } groupChangeCollector.waitForEvent(10000); diff --git a/test/net/java/sip/communicator/slick/protocol/icq/TestOperationSetPersistentPresence.java b/test/net/java/sip/communicator/slick/protocol/icq/TestOperationSetPersistentPresence.java index ffd9f3046..9478ccae0 100644 --- a/test/net/java/sip/communicator/slick/protocol/icq/TestOperationSetPersistentPresence.java +++ b/test/net/java/sip/communicator/slick/protocol/icq/TestOperationSetPersistentPresence.java @@ -346,10 +346,17 @@ public void postTestRemoveGroup() opSetPersPresence .addServerStoredGroupChangeListener(groupChangeCollector); - //create the group - opSetPersPresence.removeServerStoredContactGroup( - opSetPersPresence.getServerStoredContactListRoot() - .getGroup(testGroupName2)); + try + { + // remove the group + opSetPersPresence.removeServerStoredContactGroup( + opSetPersPresence.getServerStoredContactListRoot() + .getGroup(testGroupName2)); + } + catch(OperationFailedException ex) + { + logger.error("error removing group", ex); + } groupChangeCollector.waitForEvent(10000); diff --git a/test/net/java/sip/communicator/slick/protocol/jabber/TestOperationSetPersistentPresence.java b/test/net/java/sip/communicator/slick/protocol/jabber/TestOperationSetPersistentPresence.java index 5d24a2549..0286342d0 100644 --- a/test/net/java/sip/communicator/slick/protocol/jabber/TestOperationSetPersistentPresence.java +++ b/test/net/java/sip/communicator/slick/protocol/jabber/TestOperationSetPersistentPresence.java @@ -276,9 +276,16 @@ public void postTestRemoveGroup() .addServerStoredGroupChangeListener(groupChangeCollector); //create the group - opSetPersPresence1.removeServerStoredContactGroup( - opSetPersPresence1.getServerStoredContactListRoot() - .getGroup(testGroupName2)); + try + { + opSetPersPresence1.removeServerStoredContactGroup( + opSetPersPresence1.getServerStoredContactListRoot() + .getGroup(testGroupName2)); + } + catch(OperationFailedException ex) + { + logger.error("error removing group", ex); + } groupChangeCollector.waitForEvent(10000); diff --git a/test/net/java/sip/communicator/slick/protocol/msn/TestOperationSetPersistentPresence.java b/test/net/java/sip/communicator/slick/protocol/msn/TestOperationSetPersistentPresence.java index dee8605c6..82741edc0 100644 --- a/test/net/java/sip/communicator/slick/protocol/msn/TestOperationSetPersistentPresence.java +++ b/test/net/java/sip/communicator/slick/protocol/msn/TestOperationSetPersistentPresence.java @@ -276,10 +276,17 @@ public void postTestRemoveGroup() opSetPersPresence1 .addServerStoredGroupChangeListener(groupChangeCollector); - //remove the group - opSetPersPresence1.removeServerStoredContactGroup( - opSetPersPresence1.getServerStoredContactListRoot() - .getGroup(testGroupName)); + try + { + //remove the group + opSetPersPresence1.removeServerStoredContactGroup( + opSetPersPresence1.getServerStoredContactListRoot() + .getGroup(testGroupName)); + } + catch(OperationFailedException ex) + { + logger.error("error removing group", ex); + } groupChangeCollector.waitForEvent(10000); diff --git a/test/net/java/sip/communicator/slick/protocol/sip/TestOperationSetPersistentPresence.java b/test/net/java/sip/communicator/slick/protocol/sip/TestOperationSetPersistentPresence.java index 7a3ad7ff5..df62131c7 100644 --- a/test/net/java/sip/communicator/slick/protocol/sip/TestOperationSetPersistentPresence.java +++ b/test/net/java/sip/communicator/slick/protocol/sip/TestOperationSetPersistentPresence.java @@ -281,10 +281,17 @@ public void postTestRemoveGroup() this.opSetPersPresence1 .addServerStoredGroupChangeListener(groupChangeCollector); - //create the group - this.opSetPersPresence1.removeServerStoredContactGroup( + try + { + // remove the group + this.opSetPersPresence1.removeServerStoredContactGroup( this.opSetPersPresence1.getServerStoredContactListRoot() - .getGroup(testGroupName2)); + .getGroup(testGroupName2)); + } + catch(OperationFailedException ex) + { + logger.error("error removing group", ex); + } groupChangeCollector.waitForEvent(10000); diff --git a/test/net/java/sip/communicator/slick/protocol/yahoo/TestOperationSetPersistentPresence.java b/test/net/java/sip/communicator/slick/protocol/yahoo/TestOperationSetPersistentPresence.java index 50b2b7926..64ede09a4 100644 --- a/test/net/java/sip/communicator/slick/protocol/yahoo/TestOperationSetPersistentPresence.java +++ b/test/net/java/sip/communicator/slick/protocol/yahoo/TestOperationSetPersistentPresence.java @@ -274,10 +274,17 @@ public void postTestRemoveGroup() opSetPersPresence1 .addServerStoredGroupChangeListener(groupChangeCollector); - //remove the group - opSetPersPresence1.removeServerStoredContactGroup( - opSetPersPresence1.getServerStoredContactListRoot() - .getGroup(testGroupName)); + try + { + //remove the group + opSetPersPresence1.removeServerStoredContactGroup( + opSetPersPresence1.getServerStoredContactListRoot() + .getGroup(testGroupName)); + } + catch(OperationFailedException ex) + { + logger.error("error removing group", ex); + } groupChangeCollector.waitForEvent(10000);