aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator/impl
diff options
context:
space:
mode:
authorDamian Minkov <damencho@jitsi.org>2010-08-27 05:44:31 +0000
committerDamian Minkov <damencho@jitsi.org>2010-08-27 05:44:31 +0000
commit4a445998e81975b1d998bcf59c421a6d38a268ec (patch)
tree23ac11560cf6a865c106014502ecc5f0c92f2feb /src/net/java/sip/communicator/impl
parent65d9be2c3429a7daf2e2c3ef9cb311282fcac4a7 (diff)
downloadjitsi-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')
-rw-r--r--src/net/java/sip/communicator/impl/contactlist/MetaContactListServiceImpl.java13
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java8
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/ServerStoredContactListJabberImpl.java37
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);
}
}