From 899da6155561a43e51f62bdf7ccab657c02522f3 Mon Sep 17 00:00:00 2001 From: iNPUTmice Date: Fri, 13 Jun 2014 11:16:52 +0200 Subject: [PATCH] further bullet proofing --- src/eu/siacs/conversations/xml/Element.java | 65 +++++++++++---------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/src/eu/siacs/conversations/xml/Element.java b/src/eu/siacs/conversations/xml/Element.java index ce1d10ce1..f8e070f7e 100644 --- a/src/eu/siacs/conversations/xml/Element.java +++ b/src/eu/siacs/conversations/xml/Element.java @@ -9,24 +9,24 @@ public class Element { protected Hashtable attributes = new Hashtable(); protected String content; protected List children = new ArrayList(); - + public Element(String name) { this.name = name; } - + public Element addChild(Element child) { this.content = null; children.add(child); return child; } - + public Element addChild(String name) { this.content = null; Element child = new Element(name); children.add(child); return child; } - + public Element addChild(String name, String xmlns) { this.content = null; Element child = new Element(name); @@ -34,64 +34,65 @@ public class Element { children.add(child); return child; } - + public Element setContent(String content) { this.content = content; this.children.clear(); return this; } - + public Element findChild(String name) { - for(Element child : this.children) { + for (Element child : this.children) { if (child.getName().equals(name)) { return child; } } return null; } - + public Element findChild(String name, String xmlns) { - for(Element child : this.children) { - if (child.getName().equals(name)&&(child.getAttribute("xmlns").equals(xmlns))) { + for (Element child : this.children) { + if (child.getName().equals(name) + && (child.getAttribute("xmlns").equals(xmlns))) { return child; } } return null; } - + public boolean hasChild(String name) { return findChild(name) != null; } - + public boolean hasChild(String name, String xmlns) { return findChild(name, xmlns) != null; } - - - + public List getChildren() { return this.children; } - + public Element setChildren(List children) { this.children = children; return this; } - + public String getContent() { return content; } - + public Element setAttribute(String name, String value) { - this.attributes.put(name, value); + if (name != null && value != null) { + this.attributes.put(name, value); + } return this; } - + public Element setAttributes(Hashtable attributes) { this.attributes = attributes; return this; } - + public String getAttribute(String name) { if (this.attributes.containsKey(name)) { return this.attributes.get(name); @@ -99,14 +100,14 @@ public class Element { return null; } } - + public Hashtable getAttributes() { return this.attributes; } - + public String toString() { StringBuilder elementOutput = new StringBuilder(); - if ((content==null)&&(children.size() == 0)) { + if ((content == null) && (children.size() == 0)) { Tag emptyTag = Tag.empty(name); emptyTag.setAtttributes(this.attributes); elementOutput.append(emptyTag.toString()); @@ -114,10 +115,10 @@ public class Element { Tag startTag = Tag.start(name); startTag.setAtttributes(this.attributes); elementOutput.append(startTag); - if (content!=null) { + if (content != null) { elementOutput.append(encodeEntities(content)); } else { - for(Element child : children) { + for (Element child : children) { elementOutput.append(child.toString()); } } @@ -130,13 +131,13 @@ public class Element { public String getName() { return name; } - + private String encodeEntities(String content) { - content = content.replace("&","&"); - content = content.replace("<","<"); - content = content.replace(">",">"); - content = content.replace("\"","""); - content = content.replace("'","'"); + content = content.replace("&", "&"); + content = content.replace("<", "<"); + content = content.replace(">", ">"); + content = content.replace("\"", """); + content = content.replace("'", "'"); return content; }