aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Bookmark.java14
-rw-r--r--src/main/java/eu/siacs/conversations/parser/AbstractParser.java6
-rw-r--r--src/main/java/eu/siacs/conversations/services/XmppConnectionService.java3
-rw-r--r--src/main/java/eu/siacs/conversations/xml/Element.java10
-rw-r--r--src/main/java/eu/siacs/conversations/xmpp/pep/Avatar.java3
-rw-r--r--src/main/java/eu/siacs/conversations/xmpp/stanzas/MessagePacket.java23
6 files changed, 38 insertions, 21 deletions
diff --git a/src/main/java/eu/siacs/conversations/entities/Bookmark.java b/src/main/java/eu/siacs/conversations/entities/Bookmark.java
index f81f1a876..cc6f146b5 100644
--- a/src/main/java/eu/siacs/conversations/entities/Bookmark.java
+++ b/src/main/java/eu/siacs/conversations/entities/Bookmark.java
@@ -75,12 +75,7 @@ public class Bookmark extends Element implements ListItem {
}
public String getNick() {
- Element nick = this.findChild("nick");
- if (nick != null) {
- return nick.getContent();
- } else {
- return null;
- }
+ return this.findChildContent("nick");
}
public void setNick(String nick) {
@@ -96,12 +91,7 @@ public class Bookmark extends Element implements ListItem {
}
public String getPassword() {
- Element password = this.findChild("password");
- if (password != null) {
- return password.getContent();
- } else {
- return null;
- }
+ return this.findChildContent("password");
}
public void setPassword(String password) {
diff --git a/src/main/java/eu/siacs/conversations/parser/AbstractParser.java b/src/main/java/eu/siacs/conversations/parser/AbstractParser.java
index bfe84440e..6f73f24da 100644
--- a/src/main/java/eu/siacs/conversations/parser/AbstractParser.java
+++ b/src/main/java/eu/siacs/conversations/parser/AbstractParser.java
@@ -70,10 +70,6 @@ public abstract class AbstractParser {
if (item == null) {
return null;
}
- Element data = item.findChild("data", "urn:xmpp:avatar:data");
- if (data == null) {
- return null;
- }
- return data.getContent();
+ return item.findChildContent("data", "urn:xmpp:avatar:data");
}
}
diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
index 63d9ba7a8..3a74b82b8 100644
--- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
+++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
@@ -1994,8 +1994,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
if (packet.getType() == IqPacket.TYPE.RESULT) {
Element vCard = packet.findChild("vCard","vcard-temp");
Element photo = vCard != null ? vCard.findChild("PHOTO") : null;
- Element binval = photo != null ? photo.findChild("BINVAL") : null;
- String image = binval != null ? binval.getContent() : null;
+ String image = photo != null ? photo.findChildContent("BINVAL") : null;
if (image != null) {
avatar.image = image;
if (getFileBackend().save(avatar)) {
diff --git a/src/main/java/eu/siacs/conversations/xml/Element.java b/src/main/java/eu/siacs/conversations/xml/Element.java
index 517087595..32657c66c 100644
--- a/src/main/java/eu/siacs/conversations/xml/Element.java
+++ b/src/main/java/eu/siacs/conversations/xml/Element.java
@@ -57,6 +57,11 @@ public class Element {
return null;
}
+ public String findChildContent(String name) {
+ Element element = findChild(name);
+ return element == null ? null : element.getContent();
+ }
+
public Element findChild(String name, String xmlns) {
for (Element child : this.children) {
if (child.getName().equals(name)
@@ -67,6 +72,11 @@ public class Element {
return null;
}
+ public String findChildContent(String name, String xmlns) {
+ Element element = findChild(name,xmlns);
+ return element == null ? null : element.getContent();
+ }
+
public boolean hasChild(final String name) {
return findChild(name) != null;
}
diff --git a/src/main/java/eu/siacs/conversations/xmpp/pep/Avatar.java b/src/main/java/eu/siacs/conversations/xmpp/pep/Avatar.java
index 04d55bbe5..74da6a9bd 100644
--- a/src/main/java/eu/siacs/conversations/xmpp/pep/Avatar.java
+++ b/src/main/java/eu/siacs/conversations/xmpp/pep/Avatar.java
@@ -83,8 +83,7 @@ public class Avatar {
}
public static Avatar parsePresence(Element x) {
- Element photo = x != null ? x.findChild("photo") : null;
- String hash = photo != null ? photo.getContent() : null;
+ String hash = x == null ? null : x.findChildContent("photo");
if (hash == null) {
return null;
}
diff --git a/src/main/java/eu/siacs/conversations/xmpp/stanzas/MessagePacket.java b/src/main/java/eu/siacs/conversations/xmpp/stanzas/MessagePacket.java
index 93aaa68cf..11c3452b0 100644
--- a/src/main/java/eu/siacs/conversations/xmpp/stanzas/MessagePacket.java
+++ b/src/main/java/eu/siacs/conversations/xmpp/stanzas/MessagePacket.java
@@ -66,4 +66,27 @@ public class MessagePacket extends AbstractStanza {
return TYPE_NORMAL;
}
}
+
+ public MessagePacket getForwardedMessagePacket(String name, String namespace) {
+ Element wrapper = findChild(name, namespace);
+ if (wrapper == null) {
+ return null;
+ }
+ Element forwarded = wrapper.findChild("forwarded","urn:xmpp:forward:0");
+ if (forwarded == null) {
+ return null;
+ }
+ return MessagePacket.create(forwarded.findChild("message"));
+ }
+
+
+ public static MessagePacket create(Element element) {
+ if (element == null) {
+ return null;
+ }
+ MessagePacket packet = new MessagePacket();
+ packet.setAttributes(element.getAttributes());
+ packet.setChildren(element.getChildren());
+ return packet;
+ }
}