diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetBasicTelephonyJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetBasicTelephonyJabberImpl.java
index 6ecb25d57..292769d10 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetBasicTelephonyJabberImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetBasicTelephonyJabberImpl.java
@@ -83,22 +83,6 @@ public void registrationStateChanged(RegistrationStateChangeEvent evt)
JingleIQ.NAMESPACE,
new JingleIQProvider());
- // provider
- providerManager.addExtensionProvider(
- RtpDescriptionPacketExtension.ELEMENT_NAME,
- RtpDescriptionPacketExtension.NAMESPACE,
- new DefaultPacketExtensionProvider
- (
- RtpDescriptionPacketExtension.class));
-
- // provider
- providerManager.addExtensionProvider(
- PayloadTypePacketExtension.ELEMENT_NAME,
- RtpDescriptionPacketExtension.NAMESPACE,
- new DefaultPacketExtensionProvider
- (
- PayloadTypePacketExtension.class));
-
subscribeForJinglePackets();
if (logger.isInfoEnabled())
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/AbstractPacketExtension.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/AbstractPacketExtension.java
index 8cfaa7ece..c8ab2bcd7 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/AbstractPacketExtension.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/AbstractPacketExtension.java
@@ -102,7 +102,7 @@ public String toXML()
//add the rest of the attributes if any
for(Map.Entry entry : attributes.entrySet())
{
- bldr.append(" " + entry.getKey() + "=" + entry.getValue());
+ bldr.append(" " + entry.getKey() + "='" + entry.getValue() + "'");
}
//add child elements if any
@@ -115,6 +115,7 @@ public String toXML()
}
else
{
+ bldr.append(">");
for(PacketExtension packExt : childElements)
{
bldr.append(packExt.toXML());
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/DefaultPacketExtensionProvider.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/DefaultPacketExtensionProvider.java
index 4377f55fd..bd1013554 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/DefaultPacketExtensionProvider.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/DefaultPacketExtensionProvider.java
@@ -101,9 +101,9 @@ public C parseExtension(XmlPullParser parser) throws Exception
= provider.parseExtension(parser);
packetExtension.addChildExtension(childExtension);
}
- else if (eventType == XmlPullParser.END_TAG)
+ if (eventType == XmlPullParser.END_TAG)
{
- if (parser.getName().equals(JingleIQ.ELEMENT_NAME))
+ if (parser.getName().equals(packetExtension.getElementName()))
{
done = true;
}
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/jingle/ContentPacketExtension.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/jingle/ContentPacketExtension.java
index 4d739a52b..01cb04cd8 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/jingle/ContentPacketExtension.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/jingle/ContentPacketExtension.java
@@ -89,7 +89,15 @@ public static enum SendersEnum
};
/**
- * Creates a new ContentPacketExtension instance with only required
+ * Creates a new ContentPacketExtension.
+ */
+ public ContentPacketExtension()
+ {
+ super(null, ELEMENT_NAME);
+ }
+
+ /**
+ * Creates a new ContentPacketExtension. instance with only required
* parameters.
*
* @param creator indicates which party originally generated the content
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/jingle/JingleIQProvider.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/jingle/JingleIQProvider.java
index 574d60a87..c713d6145 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/jingle/JingleIQProvider.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/jingle/JingleIQProvider.java
@@ -5,7 +5,9 @@
* See terms of license at gnu.org.
*/
package net.java.sip.communicator.impl.protocol.jabber.extensions.jingle;
-import net.java.sip.communicator.util.*;
+import java.util.logging.*;
+
+import net.java.sip.communicator.impl.protocol.jabber.extensions.*;
import org.jivesoftware.smack.provider.*;
import org.xmlpull.v1.XmlPullParser;
@@ -25,6 +27,39 @@ public class JingleIQProvider implements IQProvider
private static final Logger logger = Logger
.getLogger(JingleIQProvider.class.getName());
+ /**
+ * Creates a new instance of the JingleIQProvider and register all
+ * jingle related extension providers. It is the responsibility of the
+ * application to register the JingleIQProvider itself.
+ */
+ public JingleIQProvider()
+ {
+ ProviderManager providerManager = ProviderManager.getInstance();
+
+ // provider
+ providerManager.addExtensionProvider(
+ RtpDescriptionPacketExtension.ELEMENT_NAME,
+ RtpDescriptionPacketExtension.NAMESPACE,
+ new DefaultPacketExtensionProvider
+ (
+ RtpDescriptionPacketExtension.class));
+
+ // provider
+ providerManager.addExtensionProvider(
+ PayloadTypePacketExtension.ELEMENT_NAME,
+ RtpDescriptionPacketExtension.NAMESPACE,
+ new DefaultPacketExtensionProvider
+ (
+ PayloadTypePacketExtension.class));
+
+ // provider
+ providerManager.addExtensionProvider(
+ ParameterPacketExtension.ELEMENT_NAME,
+ RtpDescriptionPacketExtension.NAMESPACE,
+ new DefaultPacketExtensionProvider
+ (ParameterPacketExtension.class));
+ }
+
/**
* Parses a Jingle IQ sub-document and returns a {@link JingleIQ} instance.
*
@@ -57,7 +92,9 @@ public JingleIQ parseIQ(XmlPullParser parser)
boolean done = false;
// Sub-elements providers
- ContentProvider contentProvider = new ContentProvider();
+ DefaultPacketExtensionProvider contentProvider
+ = new DefaultPacketExtensionProvider
+ (ContentPacketExtension.class);
ReasonProvider reasonProvider = new ReasonProvider();
// Now go on and parse the jingle element's content.
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/jingle/ReasonProvider.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/jingle/ReasonProvider.java
index fd898a8e3..e5c7fa796 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/jingle/ReasonProvider.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/jingle/ReasonProvider.java
@@ -73,7 +73,7 @@ else if (elementName.equals(
}
else if (eventType == XmlPullParser.END_TAG)
{
- if (parser.getName().equals(Jingle.getElementName()))
+ if (parser.getName().equals(JingleIQ.ELEMENT_NAME))
{
done = true;
}