aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java4
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/NotesXmlReader.java4
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/StylesXml.java4
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/util/MammothIterables.java23
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/util/MammothLists.java5
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/xml/XmlElement.java6
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/DeepReflectionMatcher.java22
7 files changed, 49 insertions, 19 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java
index 2770984..c8cdc1c 100644
--- a/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java
+++ b/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java
@@ -14,9 +14,9 @@ import java.util.Optional;
import java.util.Set;
import java.util.function.Function;
-import static com.google.common.collect.Iterables.filter;
import static org.zwobble.mammoth.internal.docx.ReadResult.EMPTY_SUCCESS;
import static org.zwobble.mammoth.internal.docx.ReadResult.success;
+import static org.zwobble.mammoth.internal.util.MammothIterables.lazyFilter;
import static org.zwobble.mammoth.internal.util.MammothLists.list;
import static org.zwobble.mammoth.internal.util.MammothStrings.trimLeft;
@@ -171,7 +171,7 @@ public class BodyXmlReader {
}
public ReadResult readElements(Iterable<XmlNode> nodes) {
- return ReadResult.flatMap(filter(nodes, XmlElement.class), this::readElement);
+ return ReadResult.flatMap(lazyFilter(nodes, XmlElement.class), this::readElement);
}
private ReadResult readParagraph(XmlElement element) {
diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/NotesXmlReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/NotesXmlReader.java
index 235535e..b75df9b 100644
--- a/src/main/java/org/zwobble/mammoth/internal/docx/NotesXmlReader.java
+++ b/src/main/java/org/zwobble/mammoth/internal/docx/NotesXmlReader.java
@@ -7,7 +7,7 @@ import org.zwobble.mammoth.internal.xml.XmlElement;
import java.util.List;
-import static com.google.common.collect.Iterables.filter;
+import static org.zwobble.mammoth.internal.util.MammothIterables.lazyFilter;
public class NotesXmlReader {
public static NotesXmlReader footnote(BodyXmlReader bodyReader) {
@@ -29,7 +29,7 @@ public class NotesXmlReader {
}
public InternalResult<List<Note>> readElement(XmlElement element) {
- Iterable<XmlElement> elements = filter(element.findChildren("w:" + tagName), this::isNoteElement);
+ Iterable<XmlElement> elements = lazyFilter(element.findChildren("w:" + tagName), this::isNoteElement);
return InternalResult.flatMap(elements, this::readNoteElement);
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/StylesXml.java b/src/main/java/org/zwobble/mammoth/internal/docx/StylesXml.java
index 9b468fe..81a16af 100644
--- a/src/main/java/org/zwobble/mammoth/internal/docx/StylesXml.java
+++ b/src/main/java/org/zwobble/mammoth/internal/docx/StylesXml.java
@@ -7,7 +7,7 @@ import org.zwobble.mammoth.internal.xml.XmlElementList;
import java.util.Map;
import java.util.Optional;
-import static com.google.common.collect.Iterables.filter;
+import static org.zwobble.mammoth.internal.util.MammothIterables.lazyFilter;
import static org.zwobble.mammoth.internal.util.MammothMaps.entry;
import static org.zwobble.mammoth.internal.util.MammothMaps.toMap;
@@ -21,7 +21,7 @@ public class StylesXml {
private static Map<String, Style> readStyles(XmlElementList styleElements, String styleType) {
return toMap(
- filter(styleElements, styleElement -> styleElement.getAttribute("w:type").equals(styleType)),
+ lazyFilter(styleElements, styleElement -> styleElement.getAttribute("w:type").equals(styleType)),
StylesXml::readStyle);
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/util/MammothIterables.java b/src/main/java/org/zwobble/mammoth/internal/util/MammothIterables.java
index c0231e0..fececa3 100644
--- a/src/main/java/org/zwobble/mammoth/internal/util/MammothIterables.java
+++ b/src/main/java/org/zwobble/mammoth/internal/util/MammothIterables.java
@@ -65,6 +65,29 @@ public class MammothIterables {
};
}
+ public static <T> Iterable<T> lazyFilter(Iterable<T> iterables, Predicate<T> predicate) {
+ return new Iterable<T>() {
+ @Override
+ public Iterator<T> iterator() {
+ return stream(iterables)
+ .filter(predicate)
+ .iterator();
+ }
+ };
+ }
+
+ public static <T, R> Iterable<R> lazyFilter(Iterable<T> iterables, Class<R> clazz) {
+ return new Iterable<R>() {
+ @Override
+ @SuppressWarnings("unchecked")
+ public Iterator<R> iterator() {
+ return (Iterator<R>) stream(iterables)
+ .filter(clazz::isInstance)
+ .iterator();
+ }
+ };
+ }
+
private static <T, R> Iterator<R> map(Iterator<T> iterator, Function<T, R> function) {
return new Iterator<R>() {
@Override
diff --git a/src/main/java/org/zwobble/mammoth/internal/util/MammothLists.java b/src/main/java/org/zwobble/mammoth/internal/util/MammothLists.java
index 3519cd2..7f5b83c 100644
--- a/src/main/java/org/zwobble/mammoth/internal/util/MammothLists.java
+++ b/src/main/java/org/zwobble/mammoth/internal/util/MammothLists.java
@@ -6,6 +6,7 @@ import com.google.common.collect.Ordering;
import java.util.List;
import java.util.function.Function;
+import java.util.function.Predicate;
import java.util.stream.Collectors;
import static org.zwobble.mammoth.internal.util.MammothIterables.stream;
@@ -35,6 +36,10 @@ public class MammothLists {
return ImmutableList.copyOf(Iterables.concat(first, second));
}
+ public static <T> List<T> eagerFilter(Iterable<T> iterable, Predicate<T> predicate) {
+ return stream(iterable).filter(predicate).collect(Collectors.toList());
+ }
+
public static <T, R> List<R> eagerMap(Iterable<T> iterable, Function<T, R> function) {
return stream(iterable).map(function).collect(Collectors.toList());
}
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 f8a94f2..ad6f8f3 100644
--- a/src/main/java/org/zwobble/mammoth/internal/xml/XmlElement.java
+++ b/src/main/java/org/zwobble/mammoth/internal/xml/XmlElement.java
@@ -6,8 +6,8 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
-import static com.google.common.collect.Iterables.filter;
import static org.zwobble.mammoth.internal.util.MammothIterables.getFirst;
+import static org.zwobble.mammoth.internal.util.MammothIterables.lazyFilter;
import static org.zwobble.mammoth.internal.util.MammothIterables.lazyMap;
import static org.zwobble.mammoth.internal.util.MammothMaps.lookup;
@@ -84,8 +84,8 @@ public class XmlElement implements XmlNode, XmlElementLike {
}
private Iterable<XmlElement> findChildrenIterable(String name) {
- return filter(
- filter(children, XmlElement.class),
+ return lazyFilter(
+ lazyFilter(children, XmlElement.class),
child -> child.getName().equals(name));
}
}
diff --git a/src/test/java/org/zwobble/mammoth/tests/DeepReflectionMatcher.java b/src/test/java/org/zwobble/mammoth/tests/DeepReflectionMatcher.java
index dff85a8..19a8043 100644
--- a/src/test/java/org/zwobble/mammoth/tests/DeepReflectionMatcher.java
+++ b/src/test/java/org/zwobble/mammoth/tests/DeepReflectionMatcher.java
@@ -1,9 +1,11 @@
package org.zwobble.mammoth.tests;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
-import org.hamcrest.*;
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.hamcrest.Matchers;
+import org.hamcrest.TypeSafeDiagnosingMatcher;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
@@ -13,9 +15,9 @@ import java.util.Optional;
import java.util.Set;
import static com.google.common.collect.Iterables.any;
-import static com.google.common.collect.Iterables.filter;
import static java.util.Arrays.asList;
import static org.zwobble.mammoth.internal.util.MammothIterables.lazyMap;
+import static org.zwobble.mammoth.internal.util.MammothLists.eagerFilter;
public class DeepReflectionMatcher<T> extends TypeSafeDiagnosingMatcher<T> {
public static <T> Matcher<T> deepEquals(T value) {
@@ -98,9 +100,9 @@ public class DeepReflectionMatcher<T> extends TypeSafeDiagnosingMatcher<T> {
}
private static <T> boolean matchesSet(String path, Set<?> expected, Set<?> actual, Description mismatchDescription) {
- List<?> missing = ImmutableList.copyOf(filter(
+ List<?> missing = eagerFilter(
expected,
- expectedElement -> !any(actual, actualElement -> deepEquals(expectedElement, actualElement))));
+ expectedElement -> !any(actual, actualElement -> deepEquals(expectedElement, actualElement)));
if (!missing.isEmpty()) {
appendPath(mismatchDescription, path);
@@ -109,9 +111,9 @@ public class DeepReflectionMatcher<T> extends TypeSafeDiagnosingMatcher<T> {
return false;
}
- List<?> extra = ImmutableList.copyOf(filter(
+ List<?> extra = eagerFilter(
actual,
- actualElement -> !any(expected, expectedElement -> deepEquals(expectedElement, actualElement))));
+ actualElement -> !any(expected, expectedElement -> deepEquals(expectedElement, actualElement)));
if (!extra.isEmpty()) {
appendPath(mismatchDescription, path);
@@ -234,10 +236,10 @@ public class DeepReflectionMatcher<T> extends TypeSafeDiagnosingMatcher<T> {
return value.replaceAll("\n", "\n ");
}
- private static ImmutableList<Field> fields(Class<?> clazz) {
- return ImmutableList.copyOf(filter(
+ private static List<Field> fields(Class<?> clazz) {
+ return eagerFilter(
asList(clazz.getDeclaredFields()),
- field -> !Modifier.isStatic(field.getModifiers())));
+ field -> !Modifier.isStatic(field.getModifiers()));
}
private static Object readField(Object obj, Field field) {