diff options
author | Damian Minkov <damencho@jitsi.org> | 2010-08-27 05:44:31 +0000 |
---|---|---|
committer | Damian Minkov <damencho@jitsi.org> | 2010-08-27 05:44:31 +0000 |
commit | 4a445998e81975b1d998bcf59c421a6d38a268ec (patch) | |
tree | 23ac11560cf6a865c106014502ecc5f0c92f2feb /src/net/java/sip/communicator/impl | |
parent | 65d9be2c3429a7daf2e2c3ef9cb311282fcac4a7 (diff) | |
download | jitsi-4a445998e81975b1d998bcf59c421a6d38a268ec.zip jitsi-4a445998e81975b1d998bcf59c421a6d38a268ec.tar.gz jitsi-4a445998e81975b1d998bcf59c421a6d38a268ec.tar.bz2 |
Fix when removing jabber contacts and operation fails inform user and stop any further actions.
Diffstat (limited to 'src/net/java/sip/communicator/impl')
3 files changed, 50 insertions, 8 deletions
diff --git a/src/net/java/sip/communicator/impl/contactlist/MetaContactListServiceImpl.java b/src/net/java/sip/communicator/impl/contactlist/MetaContactListServiceImpl.java index 26ba6dc..c7b19a1 100644 --- a/src/net/java/sip/communicator/impl/contactlist/MetaContactListServiceImpl.java +++ b/src/net/java/sip/communicator/impl/contactlist/MetaContactListServiceImpl.java @@ -1077,11 +1077,14 @@ public class MetaContactListServiceImpl } catch (Exception ex) { - throw new MetaContactListException("Failed to remove " - + contact + - " from its protocol provider.", - ex - , + String errorTxt = "Failed to remove " + + contact + " from its protocol provider. "; + + if(ex instanceof OperationFailedException) + errorTxt += ex.getMessage(); + + throw new MetaContactListException(errorTxt, + ex, MetaContactListException. CODE_NETWORK_ERROR); } diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java index 1d1eec3..85748cd 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java @@ -1100,7 +1100,13 @@ public class OperationSetPersistentPresenceJabberImpl ""); handler.processAuthorizationResponse(response, contact); - ssContactList.removeContact(contact); + try{ + ssContactList.removeContact(contact); + } + catch(OperationFailedException e) + { + logger.error("Cannot remove contact that unsubscribed."); + } } } else if (presenceType == Presence.Type.subscribed) 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 2d61958..3b5304c 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/ServerStoredContactListJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/ServerStoredContactListJabberImpl.java @@ -447,7 +447,23 @@ public class ServerStoredContactListJabberImpl } catch (XMPPException ex) { - logger.error("Error adding new jabber entry", ex); + String errTxt = "Error adding new jabber entry"; + logger.error(errTxt, ex); + + int errorCode = OperationFailedException.INTERNAL_ERROR; + + XMPPError err = ex.getXMPPError(); + if(err != null) + { + if(err.getCode() > 400 && err.getCode() < 500) + errorCode = OperationFailedException.FORBIDDEN; + else if(err.getCode() > 500) + errorCode = OperationFailedException.INTERNAL_SERVER_ERROR; + + errTxt = err.getCondition(); + } + + throw new OperationFailedException(errTxt, errorCode, ex); } } @@ -623,6 +639,7 @@ public class ServerStoredContactListJabberImpl * @param contactToRemove ContactJabberImpl */ void removeContact(ContactJabberImpl contactToRemove) + throws OperationFailedException { try { @@ -633,7 +650,23 @@ public class ServerStoredContactListJabberImpl } catch (XMPPException ex) { - logger.error("Error removing contact", ex); + String errTxt = "Error removing contact"; + logger.error(errTxt, ex); + + int errorCode = OperationFailedException.INTERNAL_ERROR; + + XMPPError err = ex.getXMPPError(); + if(err != null) + { + if(err.getCode() > 400 && err.getCode() < 500) + errorCode = OperationFailedException.FORBIDDEN; + else if(err.getCode() > 500) + errorCode = OperationFailedException.INTERNAL_SERVER_ERROR; + + errTxt = err.getCondition(); + } + + throw new OperationFailedException(errTxt, errorCode, ex); } } |