From fcbf88a4fb5d8530522219efd855f27943606b4e Mon Sep 17 00:00:00 2001 From: Damian Minkov Date: Mon, 12 Nov 2007 09:03:00 +0000 Subject: [PATCH] fix yahoo statuses --- lib/installer-exclude/ymsg_network_v0_63.jar | Bin 264138 -> 273932 bytes .../ServerStoredContactListYahooImpl.java | 105 ++++++++++++++++++ .../yahoo/TestOperationSetPresence.java | 4 +- 3 files changed, 107 insertions(+), 2 deletions(-) diff --git a/lib/installer-exclude/ymsg_network_v0_63.jar b/lib/installer-exclude/ymsg_network_v0_63.jar index bf1dde1b36b4ef3616676a94258a7323d4e4da24..96e2043fe4d31eacb86cb80ae5c9368fc6149a0e 100644 GIT binary patch delta 44710 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 XC40Z5=*4k$*a=wP1$$>6&>Z_WxxJd^ delta 37662 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 diff --git a/src/net/java/sip/communicator/impl/protocol/yahoo/ServerStoredContactListYahooImpl.java b/src/net/java/sip/communicator/impl/protocol/yahoo/ServerStoredContactListYahooImpl.java index 9e324e740..9a0acc958 100644 --- a/src/net/java/sip/communicator/impl/protocol/yahoo/ServerStoredContactListYahooImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/yahoo/ServerStoredContactListYahooImpl.java @@ -1046,6 +1046,111 @@ public void pictureReceived(SessionPictureEvent ev) ContactPropertyChangeEvent.PROPERTY_IMAGE, contact, null, ev.getPictureData()); } + + /** + * Process Authorization responses + * @param ev the event to process + */ + public void authorizationReceived(SessionAuthorizationEvent ev) + { + if(ev.isAuthorizationAccepted()) + { + logger.trace("authorizationAccepted from " + ev.getFrom()); + Contact srcContact = findContactById(ev.getFrom()); + + if(srcContact == null) + logger.trace("No contact found"); + else + handler.processAuthorizationResponse( + new AuthorizationResponse( + AuthorizationResponse.ACCEPT, + ev.getMessage()), + srcContact); + } + else if(ev.isAuthorizationDenied()) + { + logger.trace("authorizationDenied from " + ev.getFrom()); + Contact srcContact = findContactById(ev.getFrom()); + + if(srcContact == null) + logger.trace("No contact found"); + else + { + handler.processAuthorizationResponse( + new AuthorizationResponse( + AuthorizationResponse.REJECT, + ev.getMessage()), + srcContact); + try + { + removeContact((ContactYahooImpl)srcContact); + } catch (Exception ex) + { + logger.error("cannot remove denied contact : " + + srcContact, ex); + } + } + } + else if(ev.isAuthorizationRequest()) + { + logger.trace("authorizationRequestReceived from " + ev.getFrom()); + Contact srcContact = findContactById(ev.getFrom()); + + // if there is no such contact we create it as + // volatile so we can fire notification + // and then if accepted add it in the protocol + // so we can receive its states + boolean isCurrentlyCreated = false; + if(srcContact == null) + { + srcContact = createVolatileContact(ev.getFrom()); + isCurrentlyCreated = true; + } + + AuthorizationRequest authRequest = new AuthorizationRequest(); + authRequest.setReason(ev.getMessage()); + + AuthorizationResponse authResponse = + handler.processAuthorisationRequest( + authRequest, srcContact); + + if (authResponse.getResponseCode() == AuthorizationResponse.IGNORE) + return; + else + if (authResponse.getResponseCode() == AuthorizationResponse.REJECT) + { + removeContact((ContactYahooImpl)srcContact); + try + { + yahooSession.rejectFriendAuthorization( + ev, ev.getFrom(), authResponse.getReason()); + }catch(IOException ex) + { + logger.error("cannot send auth deny", ex); + } + } + + // else we accepted it + try + { + yahooSession.acceptFriendAuthorization(ev, ev.getFrom()); + } + catch(IOException ex) + { + logger.error("cannot send auth deny", ex); + } + + if(isCurrentlyCreated) + try + { + addContact(ev.getFrom()); + } + catch (OperationFailedException ex) + { + logger.error("Cannot add friend", ex); + } + } + } } /** diff --git a/test/net/java/sip/communicator/slick/protocol/yahoo/TestOperationSetPresence.java b/test/net/java/sip/communicator/slick/protocol/yahoo/TestOperationSetPresence.java index de653cb45..bacaae2ee 100644 --- a/test/net/java/sip/communicator/slick/protocol/yahoo/TestOperationSetPresence.java +++ b/test/net/java/sip/communicator/slick/protocol/yahoo/TestOperationSetPresence.java @@ -287,7 +287,7 @@ public void subtestStateTransition( YahooStatusEnum newStatus) PresenceStatusEventCollector statusEventCollector2 = new PresenceStatusEventCollector(); ContactPresenceEventCollector statusEventCollector1 - = new ContactPresenceEventCollector(fixture.userID1, newStatus); + = new ContactPresenceEventCollector(fixture.userID2, newStatus); operationSetPresence2.addProviderPresenceStatusListener( statusEventCollector2); operationSetPresence1.addContactPresenceStatusListener( @@ -456,7 +456,7 @@ public void postTestSubscribe() .removeContactPresenceStatusListener(contactPresEvtCollector); } } - + assertEquals("Presence Notif. event dispatching failed." , 1, contactPresEvtCollector.collectedEvents.size()); ContactPresenceStatusChangeEvent presEvt =