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 9c27f9d18..b8b36d0c8 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 @@ -8,6 +8,7 @@ import java.util.*; +import net.java.sip.communicator.impl.protocol.jabber.extensions.*; import net.java.sip.communicator.util.*; import org.jivesoftware.smack.packet.*; @@ -19,7 +20,7 @@ * * @author Emil Ivov */ -public class ContentPacketExtension implements PacketExtension +public class ContentPacketExtension extends AbstractPacketExtension { /** * Logger for this class @@ -27,12 +28,6 @@ public class ContentPacketExtension implements PacketExtension private static final Logger logger = Logger.getLogger(ContentPacketExtension.class); - /** - * The name space (or rather lack thereof ) that the content element - * belongs to. - */ - public static final String NAMESPACE = ""; - /** * The name of the "content" element. */ @@ -76,43 +71,6 @@ public static enum CreatorEnum responder }; - /** - * The creator field indicates which party originally generated the content - * type and is used to prevent race conditions regarding modifications; - * the defined values are "initiator" and "responder" (where the - * default is "initiator"). The value of the 'creator' attribute for a - * given content type MUST always match the party that originally generated - * the content type, even for Jingle actions that are sent by the other - * party in relation to that content type (e.g., subsequent content-modify - * or transport-info messages). The combination of the 'creator' - * attribute and the 'name' attribute is unique among both parties to a - * Jingle session. - */ - private CreatorEnum creator; - - /** - * Indicates how the content definition is to be interpreted by the - * recipient. The meaning of this attribute matches the - * "Content-Disposition" header as defined in RFC 2183 and applied to SIP - * by RFC 3261. The value of this attribute SHOULD be one of the values - * registered in the IANA Mail Content Disposition Values and Parameters - * Registry. The default value of this attribute is "session". - */ - private String disposition; - - /** - * A unique name or identifier for the content type according to the - * creator, which MAY have meaning to a human user in order to differentiate - * this content type from other content types (e.g., two content types - * containing video media could differentiate between "room-pan" and - * "slides"). If there are two content types with the same value for the - * 'name' attribute, they shall understood as alternative definitions for - * the same purpose (e.g., a legacy method and a standards-based method for - * establishing a voice call), typically to smooth the transition from an - * older technology to Jingle. - */ - private String name; - /** * Contains a list of packet extensions that are part of the jingle content. * Most often, the extensions we find in here would be description @@ -148,12 +106,6 @@ public static enum SendersEnum both }; - /** - * Indicates which parties in the session will be generating content; - * the allowable values are defined in the SendersEnum. - */ - private SendersEnum senders = SendersEnum.both; - /** * Creates a new ContentPacketExtension instance with only required * parameters. @@ -170,10 +122,11 @@ public ContentPacketExtension(CreatorEnum creator, String name, SendersEnum senders) { - this.creator = creator; - this.disposition = disposition; - this.name = name; - this.senders = senders; + super(null, ELEMENT_NAME); + super.setAttribute(CREATOR_ARG_NAME, creator); + super.setAttribute(DISPOSITION_ARG_NAME, disposition); + super.setAttribute(NAME_ARG_NAME, name); + super.setAttribute(SENDERS_ARG_NAME, senders); } /** @@ -187,30 +140,9 @@ public ContentPacketExtension(CreatorEnum creator, */ public ContentPacketExtension(CreatorEnum creator, String name) { - this.creator = creator; - this.name = name; - } - - /** - * Returns the name of the content element. - * - * @return the name of the content element. - */ - public String getElementName() - { - return ELEMENT_NAME; - } - - /** - * Returns an empty String as the content element does - * not have a namespace. - * - * @return an empty String as the content element does - * not have a namespace. - */ - public String getNamespace() - { - return NAMESPACE; + super(null, ELEMENT_NAME); + super.setAttribute(CREATOR_ARG_NAME, creator); + super.setAttribute(NAME_ARG_NAME, name); } /** @@ -229,7 +161,7 @@ public String getNamespace() */ public CreatorEnum getCreator() { - return creator; + return (CreatorEnum)getAttribute(CREATOR_ARG_NAME); } /** @@ -246,7 +178,7 @@ public CreatorEnum getCreator() */ public String getDisposition() { - return disposition; + return getAttributeString(DISPOSITION_ARG_NAME); } /** @@ -265,7 +197,7 @@ public String getDisposition() */ public String getName() { - return name; + return getAttributeString(NAME_ARG_NAME); } /** @@ -278,7 +210,7 @@ public String getName() */ public SendersEnum getSenders() { - return senders; + return (SendersEnum)getAttribute(SENDERS_ARG_NAME); } /** @@ -300,56 +232,23 @@ public List getExtensions() * @param extension the new PacketExtensions that we need to * add to this element. */ - public void addExtensions(PacketExtension extension) + public void addExtension(PacketExtension extension) { childExtensions.add(extension); } /** - * Returns the XML representation of the jingle content packet extension - * including all child elements. + * Returns a list of all extensions that have been added to this content + * element so far. * - * @return this packet extension as an XML String. + * @return a list of all extensions that have been added to this content + * element so far. */ - public String toXML() + @Override + public List getChildElements() { - StringBuilder bldr = new StringBuilder("<").append(getElementName()); - - - //add the arguments that we have - bldr.append(" " + CREATOR_ARG_NAME +"='"+ getCreator() + "'"); - - //disposition - if( getDisposition() != null ) - { - bldr.append(" " + DISPOSITION_ARG_NAME - +"='"+ getDisposition() + "'"); - } - - //name - bldr.append(" " + NAME_ARG_NAME +"='"+ getName() + "'"); - - //senders - if( getSenders() != null ) - { - bldr.append(" " + SENDERS_ARG_NAME - +"='"+ getSenders() + "'"); - } - - bldr.append(">"); - - - //other child elements - synchronized (childExtensions) - { - for(PacketExtension ext : childExtensions) - { - bldr.append(ext.toXML()); - } - } - - bldr.append(""); - return bldr.toString(); + return getExtensions(); } + } diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/jingle/RtpDescriptionPacketExtension.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/jingle/RtpDescriptionPacketExtension.java index 9ac907a19..6cc146c43 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/jingle/RtpDescriptionPacketExtension.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/jingle/RtpDescriptionPacketExtension.java @@ -212,7 +212,7 @@ public void setBandwidth(BandwidthPacketExtension bandwidth) * @return the max/preferred bandwidth set for this session or null * if none has been set yet. */ - public PacketExtension getBandwidth() + public BandwidthPacketExtension getBandwidth() { return bandwidth; }