From db126d0087963aad877efca233fb1123e9872051 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 4 Jun 2016 14:54:27 +0100 Subject: Return optional element from findChild --- .../java/org/zwobble/mammoth/internal/xml/NullXmlElement.java | 8 ++++++++ src/main/java/org/zwobble/mammoth/internal/xml/XmlElement.java | 7 +++++-- .../java/org/zwobble/mammoth/internal/xml/XmlElementLike.java | 2 ++ 3 files changed, 15 insertions(+), 2 deletions(-) (limited to 'src/main/java/org/zwobble/mammoth/internal/xml') diff --git a/src/main/java/org/zwobble/mammoth/internal/xml/NullXmlElement.java b/src/main/java/org/zwobble/mammoth/internal/xml/NullXmlElement.java index ecc7971..4d32d38 100644 --- a/src/main/java/org/zwobble/mammoth/internal/xml/NullXmlElement.java +++ b/src/main/java/org/zwobble/mammoth/internal/xml/NullXmlElement.java @@ -1,7 +1,10 @@ package org.zwobble.mammoth.internal.xml; +import java.util.List; import java.util.Optional; +import static org.zwobble.mammoth.internal.util.Lists.list; + public class NullXmlElement implements XmlElementLike { public static final XmlElementLike INSTANCE = new NullXmlElement(); @@ -22,4 +25,9 @@ public class NullXmlElement implements XmlElementLike { public Optional getAttributeOrNone(String name) { return Optional.empty(); } + + @Override + public List getChildren() { + return list(); + } } diff --git a/src/main/java/org/zwobble/mammoth/internal/xml/XmlElement.java b/src/main/java/org/zwobble/mammoth/internal/xml/XmlElement.java index cd72494..0a1665c 100644 --- a/src/main/java/org/zwobble/mammoth/internal/xml/XmlElement.java +++ b/src/main/java/org/zwobble/mammoth/internal/xml/XmlElement.java @@ -1,5 +1,7 @@ package org.zwobble.mammoth.internal.xml; +import org.zwobble.mammoth.internal.util.Iterables; + import java.util.List; import java.util.Map; import java.util.Optional; @@ -47,6 +49,7 @@ public class XmlElement implements XmlNode, XmlElementLike { return visitor.visit(this); } + @Override public List getChildren() { return children; } @@ -61,8 +64,8 @@ public class XmlElement implements XmlNode, XmlElementLike { return new XmlElementList(toList(findChildrenIterable(name))); } - public XmlElement findChild(String name) { - return findChildrenIterable(name).iterator().next(); + public Optional findChild(String name) { + return Iterables.getFirst(findChildrenIterable(name)); } @Override diff --git a/src/main/java/org/zwobble/mammoth/internal/xml/XmlElementLike.java b/src/main/java/org/zwobble/mammoth/internal/xml/XmlElementLike.java index bdb3cc8..41df49f 100644 --- a/src/main/java/org/zwobble/mammoth/internal/xml/XmlElementLike.java +++ b/src/main/java/org/zwobble/mammoth/internal/xml/XmlElementLike.java @@ -1,9 +1,11 @@ package org.zwobble.mammoth.internal.xml; +import java.util.List; import java.util.Optional; public interface XmlElementLike { boolean hasChild(String name); XmlElementLike findChildOrEmpty(String name); Optional getAttributeOrNone(String name); + List getChildren(); } -- cgit v1.2.3