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