diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/CallPeerGTalkImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/CallPeerGTalkImpl.java index e648b1882..d7cbc1fa5 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/CallPeerGTalkImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/CallPeerGTalkImpl.java @@ -658,4 +658,12 @@ protected void sendCandidates( protocolProvider.getConnection().sendPacket(candidatesIQ); } + + /** + * {@inheritDoc} + */ + public String getEntity() + { + return getAddress(); + } } diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/CallPeerJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/CallPeerJabberImpl.java index c7fd0c0dc..6b6e9d00d 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/CallPeerJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/CallPeerJabberImpl.java @@ -1480,4 +1480,12 @@ public void setCoinScheduled(boolean coinScheduled) this.coinScheduled = coinScheduled; } } + + /** + * {@inheritDoc} + */ + public String getEntity() + { + return getAddress(); + } } diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetTelephonyConferencingJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetTelephonyConferencingJabberImpl.java index e96174699..17039253b 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetTelephonyConferencingJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetTelephonyConferencingJabberImpl.java @@ -167,7 +167,7 @@ public void run() } ConferenceInfoDocument currentConfInfo - = getCurrentConferenceInfo(callPeer); + = getCurrentConferenceInfo(callPeerJabber); ConferenceInfoDocument lastSentConfInfo = callPeerJabber.getLastConferenceInfoSent(); @@ -419,7 +419,8 @@ private void handleCoin(CallPeerJabberImpl callPeer, CoinIQ coinIQ) * temporary and should be removed once we choose a better way to pass the * SID. */ - protected ConferenceInfoDocument getCurrentConferenceInfo(CallPeer callPeer) + protected ConferenceInfoDocument getCurrentConferenceInfo( + MediaAwareCallPeer callPeer) { ConferenceInfoDocument confInfo = super.getCurrentConferenceInfo(callPeer); diff --git a/src/net/java/sip/communicator/impl/protocol/sip/CallPeerSipImpl.java b/src/net/java/sip/communicator/impl/protocol/sip/CallPeerSipImpl.java index b0963b7cc..874225f1b 100644 --- a/src/net/java/sip/communicator/impl/protocol/sip/CallPeerSipImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/sip/CallPeerSipImpl.java @@ -1681,4 +1681,14 @@ private void setDisconnectedState(boolean failed, String reason) else setState(CallPeerState.DISCONNECTED, reason); } + + /** + * {@inheritDoc} + */ + public String getEntity() + { + return AbstractOperationSetTelephonyConferencing + .stripParametersFromAddress(getURI()); + } + } diff --git a/src/net/java/sip/communicator/service/protocol/media/AbstractOperationSetTelephonyConferencing.java b/src/net/java/sip/communicator/service/protocol/media/AbstractOperationSetTelephonyConferencing.java index dd4c9ff88..7a62b861f 100644 --- a/src/net/java/sip/communicator/service/protocol/media/AbstractOperationSetTelephonyConferencing.java +++ b/src/net/java/sip/communicator/service/protocol/media/AbstractOperationSetTelephonyConferencing.java @@ -1003,7 +1003,7 @@ else if (documentState == ConferenceInfoDocument.State.PARTIAL) * @return a String representing the specified address * without any parameters */ - protected static String stripParametersFromAddress(String address) + public static String stripParametersFromAddress(String address) { if (address != null) { @@ -1024,7 +1024,8 @@ protected static String stripParametersFromAddress(String address) * @return a ConferenceInfoDocument which describes the current * state of the conference in which this CallPeer participates. */ - protected ConferenceInfoDocument getCurrentConferenceInfo(CallPeer callPeer) + protected ConferenceInfoDocument getCurrentConferenceInfo( + MediaAwareCallPeer callPeer) { ConferenceInfoDocument confInfo; try @@ -1048,7 +1049,13 @@ protected ConferenceInfoDocument getCurrentConferenceInfo(CallPeer callPeer) /* Remote users */ for (CallPeer conferenceCallPeer : conferenceCallPeers) - addPeerToConferenceInfo(confInfo, conferenceCallPeer, true); + { + if (conferenceCallPeer instanceof MediaAwareCallPeer) + addPeerToConferenceInfo( + confInfo, + (MediaAwareCallPeer)conferenceCallPeer, + true); + } return confInfo; } @@ -1065,12 +1072,12 @@ protected ConferenceInfoDocument getCurrentConferenceInfo(CallPeer callPeer) */ private void addPeerToConferenceInfo( ConferenceInfoDocument confInfo, - CallPeer callPeer, + MediaAwareCallPeer callPeer, boolean remote) { String entity = remote - ? callPeer.getURI() + ? callPeer.getEntity() : getLocalEntity(callPeer); ConferenceInfoDocument.User user = confInfo.addNewUser(entity); @@ -1088,40 +1095,35 @@ private void addPeerToConferenceInfo( ? getEndpointStatus(callPeer) : ConferenceInfoDocument.EndpointStatusType.connected); - if (callPeer instanceof MediaAwareCallPeer) - { - MediaAwareCallPeer mediaAwarePeer - = (MediaAwareCallPeer) callPeer; - CallPeerMediaHandler mediaHandler - = mediaAwarePeer.getMediaHandler(); + CallPeerMediaHandler mediaHandler + = callPeer.getMediaHandler(); - for (MediaType mediaType : MediaType.values()) + for (MediaType mediaType : MediaType.values()) + { + MediaStream stream = mediaHandler.getStream(mediaType); + if (stream != null) { - MediaStream stream = mediaHandler.getStream(mediaType); - if (stream != null) - { - ConferenceInfoDocument.Media media - = endpoint.addNewMedia(mediaType.toString()); - long srcId - = remote - ? getRemoteSourceID(mediaAwarePeer, mediaType) - : stream.getLocalSourceID(); + ConferenceInfoDocument.Media media + = endpoint.addNewMedia(mediaType.toString()); + long srcId + = remote + ? getRemoteSourceID(callPeer, mediaType) + : stream.getLocalSourceID(); - if (srcId != -1) - media.setSrcId(Long.toString(srcId)); + if (srcId != -1) + media.setSrcId(Long.toString(srcId)); - media.setType(mediaType.toString()); + media.setType(mediaType.toString()); - MediaDirection direction - = remote - ? getRemoteDirection(mediaAwarePeer, mediaType) - : stream.getDirection(); + MediaDirection direction + = remote + ? getRemoteDirection(callPeer, mediaType) + : stream.getDirection(); - if (direction == null) - direction = MediaDirection.INACTIVE; + if (direction == null) + direction = MediaDirection.INACTIVE; - media.setStatus(direction.toString()); - } + media.setStatus(direction.toString()); } } } diff --git a/src/net/java/sip/communicator/service/protocol/media/MediaAwareCallPeer.java b/src/net/java/sip/communicator/service/protocol/media/MediaAwareCallPeer.java index 96f8738d3..5efa7caf2 100644 --- a/src/net/java/sip/communicator/service/protocol/media/MediaAwareCallPeer.java +++ b/src/net/java/sip/communicator/service/protocol/media/MediaAwareCallPeer.java @@ -1106,4 +1106,17 @@ public int getLastConferenceInfoReceivedVersion() ? -1 : lastConferenceInfoReceived.getVersion(); } + + /** + * Gets the String to be used for this CallPeer when + * we describe it in a ConferenceInfoDocument (e.g. the + * entity key attribute which to use for the user + * element corresponding to this CallPeer) + * + * @return the String to be used for this CallPeer when + * we describe it in a ConferenceInfoDocument (e.g. the + * entity key attribute which to use for the user + * element corresponding to this CallPeer) + */ + public abstract String getEntity(); }