provide helper function for getting the content of a child directly

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/entities/Bookmark.java              | 14 
src/main/java/eu/siacs/conversations/parser/AbstractParser.java          |  6 
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java |  3 
src/main/java/eu/siacs/conversations/xml/Element.java                    | 10 
src/main/java/eu/siacs/conversations/xmpp/pep/Avatar.java                |  3 
src/main/java/eu/siacs/conversations/xmpp/stanzas/MessagePacket.java     | 23 
6 files changed, 38 insertions(+), 21 deletions(-)

Detailed changes

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) {

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");
 	}
 }

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)) {

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;
 	}

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;
 		}

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;
+	}
 }