JinglePacket.java

 1package eu.siacs.conversations.xmpp.jingle.stanzas;
 2
 3import eu.siacs.conversations.xml.Element;
 4import eu.siacs.conversations.xmpp.stanzas.IqPacket;
 5
 6public class JinglePacket extends IqPacket {
 7	Content content = null;
 8	Reason reason = null;
 9	Element jingle = new Element("jingle");
10
11	@Override
12	public Element addChild(Element child) {
13		if ("jingle".equals(child.getName())) {
14			Element contentElement = child.findChild("content");
15			if (contentElement != null) {
16				this.content = new Content();
17				this.content.setChildren(contentElement.getChildren());
18				this.content.setAttributes(contentElement.getAttributes());
19			}
20			Element reasonElement = child.findChild("reason");
21			if (reasonElement != null) {
22				this.reason = new Reason();
23				this.reason.setChildren(reasonElement.getChildren());
24				this.reason.setAttributes(reasonElement.getAttributes());
25			}
26			this.jingle.setAttributes(child.getAttributes());
27		}
28		return child;
29	}
30
31	public JinglePacket setContent(Content content) {
32		this.content = content;
33		return this;
34	}
35
36	public Content getJingleContent() {
37		if (this.content == null) {
38			this.content = new Content();
39		}
40		return this.content;
41	}
42
43	public JinglePacket setReason(Reason reason) {
44		this.reason = reason;
45		return this;
46	}
47
48	public Reason getReason() {
49		return this.reason;
50	}
51
52	private void build() {
53		this.children.clear();
54		this.jingle.clearChildren();
55		this.jingle.setAttribute("xmlns", "urn:xmpp:jingle:1");
56		if (this.content != null) {
57			jingle.addChild(this.content);
58		}
59		if (this.reason != null) {
60			jingle.addChild(this.reason);
61		}
62		this.children.add(jingle);
63		this.setAttribute("type", "set");
64	}
65
66	public String getSessionId() {
67		return this.jingle.getAttribute("sid");
68	}
69
70	public void setSessionId(String sid) {
71		this.jingle.setAttribute("sid", sid);
72	}
73
74	@Override
75	public String toString() {
76		this.build();
77		return super.toString();
78	}
79
80	public void setAction(String action) {
81		this.jingle.setAttribute("action", action);
82	}
83
84	public String getAction() {
85		return this.jingle.getAttribute("action");
86	}
87
88	public void setInitiator(String initiator) {
89		this.jingle.setAttribute("initiator", initiator);
90	}
91
92	public boolean isAction(String action) {
93		return action.equalsIgnoreCase(this.getAction());
94	}
95}