Skip to content

Commit 00b103f

Browse files
authored
OAK-11801 : removed Guava's fluent iterable with Apache's (#2408)
1 parent f19e242 commit 00b103f

File tree

17 files changed

+94
-57
lines changed

17 files changed

+94
-57
lines changed

oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/SharedDataStoreUtils.java

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,15 @@
1919
import java.util.Arrays;
2020
import java.util.Collections;
2121
import java.util.Comparator;
22+
import java.util.LinkedHashMap;
2223
import java.util.List;
2324
import java.util.Set;
2425
import java.util.stream.Collectors;
2526

26-
import org.apache.jackrabbit.guava.common.collect.FluentIterable;
27+
import org.apache.commons.collections4.FluentIterable;
2728
import org.apache.jackrabbit.core.data.DataRecord;
2829
import org.apache.jackrabbit.oak.commons.collections.SetUtils;
30+
import org.apache.jackrabbit.oak.commons.collections.StreamUtils;
2931
import org.apache.jackrabbit.oak.plugins.blob.SharedDataStore;
3032
import org.apache.jackrabbit.oak.spi.blob.BlobStore;
3133

@@ -63,10 +65,24 @@ public static DataRecord getEarliestRecord(List<DataRecord> recs) {
6365
*/
6466
public static Set<String> refsNotAvailableFromRepos(List<DataRecord> repos,
6567
List<DataRecord> refs) {
66-
return SetUtils.difference(FluentIterable.from(repos)
67-
.uniqueIndex(input -> SharedStoreRecordType.REPOSITORY.getIdFromName(input.getIdentifier().toString())).keySet(),
68-
FluentIterable.from(refs)
69-
.index(input -> SharedStoreRecordType.REFERENCES.getIdFromName(input.getIdentifier().toString())).keySet());
68+
return SetUtils.difference(
69+
StreamUtils.toStream(
70+
FluentIterable.of(repos)).collect(
71+
Collectors.toMap(
72+
input -> SharedStoreRecordType.REPOSITORY.getIdFromName(input.getIdentifier().toString()),
73+
e -> e,
74+
(oldValue, newValue) -> {
75+
throw new IllegalArgumentException("Duplicate key found: " + SharedStoreRecordType.REPOSITORY.getIdFromName(newValue.getIdentifier().toString()));
76+
},
77+
LinkedHashMap::new))
78+
.keySet(),
79+
StreamUtils.toStream(
80+
FluentIterable.of(refs)).collect(
81+
Collectors.groupingBy(
82+
input -> SharedStoreRecordType.REFERENCES.getIdFromName(input.getIdentifier().toString()),
83+
LinkedHashMap::new,
84+
Collectors.toList()))
85+
.keySet());
7086
}
7187

7288
/**

oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,14 @@
3232
import java.util.LinkedList;
3333
import java.util.List;
3434
import java.util.Map;
35+
import java.util.Objects;
3536
import java.util.Set;
3637
import java.util.concurrent.atomic.AtomicBoolean;
3738
import java.util.concurrent.atomic.AtomicReference;
3839
import java.util.function.Predicate;
3940

41+
import org.apache.commons.collections4.FluentIterable;
4042
import org.apache.jackrabbit.guava.common.collect.AbstractIterator;
41-
import org.apache.jackrabbit.guava.common.collect.FluentIterable;
4243
import org.apache.jackrabbit.oak.api.PropertyValue;
4344
import org.apache.jackrabbit.oak.api.Type;
4445
import org.apache.jackrabbit.oak.commons.PathUtils;
@@ -1610,13 +1611,13 @@ private static Iterator<FulltextResultRow> mergePropertyIndexResult(IndexPlan pl
16101611
FluentIterable<String> paths;
16111612
if (pir != null) {
16121613
Iterable<String> queryResult = lookup.query(plan.getFilter(), pir.propertyName, pir.pr);
1613-
paths = FluentIterable.from(queryResult)
1614+
paths = FluentIterable.of(queryResult)
16141615
.transform(path -> pr.isPathTransformed() ? pr.transformPath(path) : path)
1615-
.filter(x -> x != null);
1616+
.filter(Objects::nonNull);
16161617
} else {
16171618
Validate.checkState(pr.evaluateSyncNodeTypeRestriction()); //Either of property or nodetype should not be null
16181619
Filter filter = plan.getFilter();
1619-
paths = FluentIterable.from(IterableUtils.chainedIterable(
1620+
paths = FluentIterable.of(IterableUtils.chainedIterable(
16201621
lookup.query(filter, JCR_PRIMARYTYPE, newName(filter.getPrimaryTypes())),
16211622
lookup.query(filter, JCR_MIXINTYPES, newName(filter.getMixinTypes()))));
16221623
}

oak-run-commons/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,10 @@
123123
<groupId>commons-io</groupId>
124124
<artifactId>commons-io</artifactId>
125125
</dependency>
126+
<dependency>
127+
<groupId>org.apache.commons</groupId>
128+
<artifactId>commons-collections4</artifactId>
129+
</dependency>
126130
<dependency>
127131
<groupId>org.apache.felix</groupId>
128132
<artifactId>org.apache.felix.configadmin</artifactId>

oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/NodeStateEntryTraverser.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
package org.apache.jackrabbit.oak.index.indexer.document;
2121

22-
import org.apache.jackrabbit.guava.common.collect.FluentIterable;
22+
import org.apache.commons.collections4.FluentIterable;
2323
import org.apache.jackrabbit.oak.commons.collections.IterableUtils;
2424
import org.apache.jackrabbit.oak.commons.pio.Closer;
2525
import org.apache.jackrabbit.oak.plugins.document.Collection;
@@ -94,9 +94,8 @@ public void close() throws IOException {
9494

9595
@SuppressWarnings("Guava")
9696
private Iterable<NodeStateEntry> getIncludedDocs() {
97-
return FluentIterable.from(getDocsFilteredByPath())
98-
.filter(doc -> includeDoc(doc))
99-
.transformAndConcat(doc -> getEntries(doc));
97+
return IterableUtils.chainedIterable(
98+
FluentIterable.of(getDocsFilteredByPath()).filter(this::includeDoc).transform(this::getEntries));
10099
}
101100

102101
private boolean includeDoc(NodeDocument doc) {

oak-run-commons/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentTraverser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import com.mongodb.BasicDBObject;
2323
import com.mongodb.ReadPreference;
2424
import com.mongodb.client.MongoCollection;
25-
import org.apache.jackrabbit.guava.common.collect.FluentIterable;
25+
import org.apache.commons.collections4.FluentIterable;
2626
import org.apache.jackrabbit.oak.commons.conditions.Validate;
2727
import org.apache.jackrabbit.oak.plugins.document.Collection;
2828
import org.apache.jackrabbit.oak.plugins.document.Document;
@@ -73,7 +73,7 @@ public <T extends Document> CloseableIterable<T> getAllDocuments(Collection<T> c
7373
cursor = closeableCursor;
7474

7575
@SuppressWarnings("Guava")
76-
Iterable<T> result = FluentIterable.from(cursor)
76+
Iterable<T> result = FluentIterable.of(cursor)
7777
.filter(o -> filter.test((String) o.get(Document.ID)))
7878
.transform(o -> {
7979
T doc = mongoStore.convertFromDBObject(collection, o);

oak-run/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,10 @@
336336
<groupId>org.apache.commons</groupId>
337337
<artifactId>commons-lang3</artifactId>
338338
</dependency>
339+
<dependency>
340+
<groupId>org.apache.commons</groupId>
341+
<artifactId>commons-collections4</artifactId>
342+
</dependency>
339343
<dependency>
340344
<groupId>org.apache.commons</groupId>
341345
<artifactId>commons-text</artifactId>

oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/tika/BinaryResourceProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919

2020
package org.apache.jackrabbit.oak.plugins.tika;
2121

22-
import java.io.IOException;
22+
import org.apache.commons.collections4.FluentIterable;
2323

24-
import org.apache.jackrabbit.guava.common.collect.FluentIterable;
24+
import java.io.IOException;
2525

2626
/**
2727
* Provides an iterator for binaries present under given path

oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/tika/CSVFileBinaryResourceProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import java.nio.charset.StandardCharsets;
2525
import java.util.function.Function;
2626

27-
import org.apache.jackrabbit.guava.common.collect.FluentIterable;
27+
import org.apache.commons.collections4.FluentIterable;
2828
import org.apache.commons.csv.CSVFormat;
2929
import org.apache.commons.csv.CSVParser;
3030
import org.apache.commons.csv.CSVRecord;
@@ -72,7 +72,7 @@ public CSVFileBinaryResourceProvider(File dataFile, @Nullable BlobStore blobStor
7272
public FluentIterable<BinaryResource> getBinaries(final String path) throws IOException {
7373
CSVParser parser = CSVParser.parse(dataFile, StandardCharsets.UTF_8, FORMAT);
7474
closer.register(parser);
75-
return FluentIterable.from(parser)
75+
return FluentIterable.of(parser)
7676
.transform(new RecordTransformer()::apply)
7777
.filter(input -> input != null && PathUtils.isAncestor(path, input.getPath()));
7878
}

oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/tika/CSVFileGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import java.io.IOException;
2626
import java.nio.charset.StandardCharsets;
2727

28-
import org.apache.jackrabbit.guava.common.collect.FluentIterable;
28+
import org.apache.commons.collections4.FluentIterable;
2929
import org.apache.commons.csv.CSVPrinter;
3030
import org.apache.jackrabbit.oak.commons.pio.Closer;
3131
import org.slf4j.Logger;

oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/tika/NodeStoreBinaryResourceProvider.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
*/
1919
package org.apache.jackrabbit.oak.plugins.tika;
2020

21-
import org.apache.jackrabbit.guava.common.collect.FluentIterable;
21+
import org.apache.commons.collections4.FluentIterable;
2222
import org.apache.jackrabbit.guava.common.collect.TreeTraverser;
2323
import org.apache.jackrabbit.JcrConstants;
2424
import org.apache.jackrabbit.oak.api.Blob;
@@ -34,6 +34,7 @@
3434
import static org.apache.jackrabbit.oak.plugins.tree.factories.TreeFactory.createReadOnlyTree;
3535
import static org.apache.jackrabbit.oak.spi.state.NodeStateUtils.getNode;
3636

37+
import java.util.Objects;
3738
import java.util.function.Function;
3839

3940
class NodeStoreBinaryResourceProvider implements BinaryResourceProvider {
@@ -47,10 +48,12 @@ public NodeStoreBinaryResourceProvider(NodeStore nodeStore, BlobStore blobStore)
4748
}
4849

4950
public FluentIterable<BinaryResource> getBinaries(String path) {
50-
return new OakTreeTraverser()
51+
// had to convert Guava's FluentIterable to Apache Commons Collections FluentIterable
52+
// TODO once we remove preOrderTraversal() of Guava, we can use Apache FluentIterable directly
53+
return FluentIterable.of(new OakTreeTraverser()
5154
.preOrderTraversal(createReadOnlyTree(getNode(nodeStore.getRoot(), path)))
5255
.transform(new TreeToBinarySource()::apply)
53-
.filter(x -> x != null);
56+
.filter(Objects::nonNull));
5457
}
5558

5659
private class TreeToBinarySource implements Function<Tree, BinaryResource> {

0 commit comments

Comments
 (0)