aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas')
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/AbstractAcknowledgeableStanza.java31
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/AbstractStanza.java8
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/IqPacket.java12
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/MessagePacket.java9
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/PresencePacket.java2
5 files changed, 47 insertions, 15 deletions
diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/AbstractAcknowledgeableStanza.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/AbstractAcknowledgeableStanza.java
new file mode 100644
index 00000000..49d9f799
--- /dev/null
+++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/AbstractAcknowledgeableStanza.java
@@ -0,0 +1,31 @@
+package de.thedevstack.conversationsplus.xmpp.stanzas;
+
+import de.thedevstack.conversationsplus.xml.Element;
+
+abstract public class AbstractAcknowledgeableStanza extends AbstractStanza {
+
+ protected AbstractAcknowledgeableStanza(String name) {
+ super(name);
+ }
+
+
+ public String getId() {
+ return this.getAttribute("id");
+ }
+
+ public void setId(final String id) {
+ setAttribute("id", id);
+ }
+
+ public Element getError() {
+ Element error = findChild("error");
+ if (error != null) {
+ for(Element element : error.getChildren()) {
+ if (!element.getName().equals("text")) {
+ return element;
+ }
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/AbstractStanza.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/AbstractStanza.java
index dff5b58d..78c71541 100644
--- a/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/AbstractStanza.java
+++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/AbstractStanza.java
@@ -18,10 +18,6 @@ public class AbstractStanza extends Element {
return getAttributeAsJid("from");
}
- public String getId() {
- return this.getAttribute("id");
- }
-
public void setTo(final Jid to) {
if (to != null) {
setAttribute("to", to.toString());
@@ -34,10 +30,6 @@ public class AbstractStanza extends Element {
}
}
- public void setId(final String id) {
- setAttribute("id", id);
- }
-
public boolean fromServer(final Account account) {
return getFrom() == null
|| getFrom().equals(account.getServer())
diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/IqPacket.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/IqPacket.java
index fb08556b..d86831e0 100644
--- a/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/IqPacket.java
+++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/IqPacket.java
@@ -2,14 +2,15 @@ package de.thedevstack.conversationsplus.xmpp.stanzas;
import de.thedevstack.conversationsplus.xml.Element;
-public class IqPacket extends AbstractStanza {
+public class IqPacket extends AbstractAcknowledgeableStanza {
- public static enum TYPE {
+ public enum TYPE {
ERROR,
SET,
RESULT,
GET,
- INVALID
+ INVALID,
+ TIMEOUT
}
public IqPacket(final TYPE type) {
@@ -39,6 +40,9 @@ public class IqPacket extends AbstractStanza {
public TYPE getType() {
final String type = getAttribute("type");
+ if (type == null) {
+ return TYPE.INVALID;
+ }
switch (type) {
case "error":
return TYPE.ERROR;
@@ -48,6 +52,8 @@ public class IqPacket extends AbstractStanza {
return TYPE.SET;
case "get":
return TYPE.GET;
+ case "timeout":
+ return TYPE.TIMEOUT;
default:
return TYPE.INVALID;
}
diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/MessagePacket.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/MessagePacket.java
index 638ba5f4..e14cdacd 100644
--- a/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/MessagePacket.java
+++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/MessagePacket.java
@@ -2,12 +2,10 @@ package de.thedevstack.conversationsplus.xmpp.stanzas;
import android.util.Pair;
-import java.text.ParseException;
-
import de.thedevstack.conversationsplus.parser.AbstractParser;
import de.thedevstack.conversationsplus.xml.Element;
-public class MessagePacket extends AbstractStanza {
+public class MessagePacket extends AbstractAcknowledgeableStanza {
public static final int TYPE_CHAT = 0;
public static final int TYPE_NORMAL = 2;
public static final int TYPE_GROUPCHAT = 3;
@@ -29,6 +27,11 @@ public class MessagePacket extends AbstractStanza {
this.children.add(0, body);
}
+ public void setAxolotlMessage(Element axolotlMessage) {
+ this.children.remove(findChild("body"));
+ this.children.add(0, axolotlMessage);
+ }
+
public void setType(int type) {
switch (type) {
case TYPE_CHAT:
diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/PresencePacket.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/PresencePacket.java
index dfe40f87..5fd21b3b 100644
--- a/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/PresencePacket.java
+++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/PresencePacket.java
@@ -1,6 +1,6 @@
package de.thedevstack.conversationsplus.xmpp.stanzas;
-public class PresencePacket extends AbstractStanza {
+public class PresencePacket extends AbstractAcknowledgeableStanza {
public PresencePacket() {
super("presence");