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();
}