From fdad0fd2c91c6052b91d6170d2a0969ba137eab8 Mon Sep 17 00:00:00 2001 From: paweldomas Date: Wed, 27 Aug 2014 15:16:44 +0200 Subject: [PATCH] Adds parsing of ChannelBundle elements. --- .../colibri/ColibriConferenceIQ.java | 22 ++++++++ .../extensions/colibri/ColibriIQProvider.java | 51 +++++++++++++++++-- 2 files changed, 69 insertions(+), 4 deletions(-) diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/colibri/ColibriConferenceIQ.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/colibri/ColibriConferenceIQ.java index 8577d4bac..6ecbe89a9 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/colibri/ColibriConferenceIQ.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/colibri/ColibriConferenceIQ.java @@ -157,6 +157,28 @@ public List getChannelBundles() return Collections.unmodifiableList(channelBundles); } + /** + * Finds {@link ChannelBundle} identified by given bundleId. + * @param bundleId ChannelBundle identifier. + * @return {@link ChannelBundle} identified by given bundleId or + * null if not found. + */ + public ChannelBundle getChannelBundle(String bundleId) + { + if (bundleId == null) + { + return null; + } + for (ChannelBundle bundle : channelBundles) + { + if (bundleId.equals(bundle.getId())) + { + return bundle; + } + } + return null; + } + /** * Returns an XML String representation of this IQ. * diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/colibri/ColibriIQProvider.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/colibri/ColibriIQProvider.java index 0e2acebfb..f5602e5ce 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/colibri/ColibriIQProvider.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/colibri/ColibriIQProvider.java @@ -99,8 +99,21 @@ else if (childExtension instanceof SourceGroupPacketExtension) } private void addChildExtension( - ColibriConferenceIQ.SctpConnection sctpConnection, - PacketExtension childExtension) + ColibriConferenceIQ.ChannelBundle bundle, + PacketExtension childExtension) + { + if (childExtension instanceof IceUdpTransportPacketExtension) + { + IceUdpTransportPacketExtension transport + = (IceUdpTransportPacketExtension) childExtension; + + bundle.setTransport(transport); + } + } + + private void addChildExtension( + ColibriConferenceIQ.SctpConnection sctpConnection, + PacketExtension childExtension) { if (childExtension instanceof IceUdpTransportPacketExtension) { @@ -173,6 +186,7 @@ public IQ parseIQ(XmlPullParser parser) ColibriConferenceIQ.RTCPTerminationStrategy rtcpTerminationStrategy = null; ColibriConferenceIQ.SctpConnection sctpConnection = null; + ColibriConferenceIQ.ChannelBundle bundle = null; ColibriConferenceIQ.Content content = null; ColibriConferenceIQ.Recording recording = null; ColibriConferenceIQ.Endpoint conferenceEndpoint = null; @@ -204,6 +218,16 @@ else if (ColibriConferenceIQ.SctpConnection.ELEMENT_NAME sctpConnection = null; } + else if (ColibriConferenceIQ.ChannelBundle.ELEMENT_NAME + .equals(name)) + { + if (bundle != null) + { + conference.addChannelBundle(bundle); + + bundle = null; + } + } else if (ColibriConferenceIQ.Endpoint.ELEMENT_NAME .equals(name)) { @@ -386,6 +410,21 @@ else if (ColibriConferenceIQ.Recording.ELEMENT_NAME.equals( if ((rtpPort != null) && (rtpPort.length() != 0)) channel.setRTPPort(Integer.parseInt(rtpPort)); } + else if (ColibriConferenceIQ.ChannelBundle + .ELEMENT_NAME.equals(name)) + { + String bundleId + = parser.getAttributeValue( + "", + ColibriConferenceIQ + .ChannelBundle.ID_ATTR_NAME); + + if(!StringUtils.isNullOrEmpty(bundleId)) + { + bundle = new ColibriConferenceIQ + .ChannelBundle(bundleId); + } + } else if (ColibriConferenceIQ.RTCPTerminationStrategy .ELEMENT_NAME.equals(name)) { @@ -531,7 +570,9 @@ else if (ColibriConferenceIQ.Endpoint.ELEMENT_NAME endpointName); } - else if (channel != null || sctpConnection != null) + else if ( channel != null + || sctpConnection != null + || bundle != null ) { String peName = null; String peNamespace = null; @@ -593,9 +634,11 @@ else if (SourceGroupPacketExtension.ELEMENT_NAME { if(channel != null) addChildExtension(channel, extension); - else + else if (sctpConnection != null) addChildExtension(sctpConnection, extension); + else + addChildExtension(bundle, extension); } } }