blob: 036ec8b3ddfacf231041f7b3c3c4d19339d8bf3f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
/*
* Copyright (c) 2010-2012, Isode Limited, London, England.
* All rights reserved.
*/
/*
* Copyright (c) 2010, Remko Tronçon.
* All rights reserved.
*/
package com.isode.stroke.elements;
import com.isode.stroke.jid.JID;
import java.util.Vector;
/**
* Base class for all types of XMPP stanza.
*/
public abstract class Stanza implements Element {
private String id_;
private JID from_;
private JID to_;
private Vector<Payload> payloads_ = new Vector<Payload>();
public <T extends Payload> T getPayload(T type) {
for (Payload payload : payloads_) {
if (payload.getClass().isAssignableFrom(type.getClass())) {
return (T)payload;
}
}
return null;
}
public <T extends Payload> Vector<T> getPayloads(T type) {
Vector<T> results = new Vector<T>();
for (Payload payload : payloads_) {
if (payload.getClass().isAssignableFrom(type.getClass())) {
results.add((T)payload);
}
}
return results;
}
public Vector<Payload> getPayloads() {
return payloads_;
}
public void addPayload(Payload payload) {
payloads_.add(payload);
}
public void updatePayload(Payload payload) {
for (int i = 0; i < payloads_.size(); i++) {
if (payloads_.get(i).getClass() == payload.getClass()) {
payloads_.set(i, payload);
return;
}
}
payloads_.add(payload);
}
public JID getFrom() {
return from_;
}
public void setFrom(JID from) {
from_ = from;
}
public JID getTo() {
return to_;
}
public void setTo(JID to) {
to_ = to;
}
public String getID() {
return id_;
}
public void setID(String id) {
id_ = id;
}
/**
* Returns debug-friendly String description of this Stanza, which will
* include the subclass's name (e.g. "Presence").
* @return a debug-friendly String.
*/
@Override
public String toString() {
String className = this.getClass().getSimpleName();
// Include actual stanza type based on class name of the object
return className +
" stanza from \"" + from_ + "\" to \"" + to_ + "\"" +
" id=\"" + id_ + "\"";
}
}
|