[ 
https://issues.apache.org/jira/browse/OAK-10685?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Julian Reschke updated OAK-10685:
---------------------------------
    Description: 
{noformat}
for i in oak*/src/main ; do ( cd $i ; grep -h "import.*guava.*;"  -R $(find . 
-name "*.java")) ; done | sort | uniq -c | sort -n
{noformat}

currently yields

{noformat}
      1 import org.apache.jackrabbit.guava.common.base.CaseFormat;
      1 import org.apache.jackrabbit.guava.common.base.CharMatcher;
      1 import org.apache.jackrabbit.guava.common.collect.ClassToInstanceMap;
      1 import org.apache.jackrabbit.guava.common.collect.HashBiMap;
      1 import org.apache.jackrabbit.guava.common.collect.ImmutableListMultimap;
      1 import 
org.apache.jackrabbit.guava.common.collect.MutableClassToInstanceMap;
      1 import org.apache.jackrabbit.guava.common.escape.Escapers;
      1 import org.apache.jackrabbit.guava.common.graph.SuccessorsFunction;
      1 import org.apache.jackrabbit.guava.common.graph.Traverser;
      1 import org.apache.jackrabbit.guava.common.hash.Funnel;
      1 import org.apache.jackrabbit.guava.common.hash.Funnels;
      1 import org.apache.jackrabbit.guava.common.hash.HashCode;
      1 import org.apache.jackrabbit.guava.common.hash.PrimitiveSink;
      1 import org.apache.jackrabbit.guava.common.primitives.Chars;
      1 import org.apache.jackrabbit.guava.common.primitives.UnsignedBytes;
      1 import 
org.apache.jackrabbit.guava.common.util.concurrent.AbstractListeningExecutorService;
      1 import 
org.apache.jackrabbit.guava.common.util.concurrent.FutureCallback;
      1 import static 
org.apache.jackrabbit.guava.common.base.Preconditions.checkPositionIndex;
      1 import static 
org.apache.jackrabbit.guava.common.base.Predicates.alwaysTrue;
      1 import static org.apache.jackrabbit.guava.common.base.Predicates.isNull;
      1 import static 
org.apache.jackrabbit.guava.common.base.StandardSystemProperty.JAVA_IO_TMPDIR;
      1 import static 
org.apache.jackrabbit.guava.common.base.Strings.nullToEmpty;
      1 import static org.apache.jackrabbit.guava.common.base.Strings.repeat;
      1 import static 
org.apache.jackrabbit.guava.common.base.Throwables.getStackTraceAsString;
      1 import static 
org.apache.jackrabbit.guava.common.cache.CacheBuilder.newBuilder;
      1 import static 
org.apache.jackrabbit.guava.common.cache.RemovalCause.COLLECTED;
      1 import static 
org.apache.jackrabbit.guava.common.cache.RemovalCause.EXPIRED;
      1 import static 
org.apache.jackrabbit.guava.common.cache.RemovalCause.SIZE;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Collections2.transform;
      1 import static 
org.apache.jackrabbit.guava.common.collect.ImmutableMap.copyOf;
      1 import static org.apache.jackrabbit.guava.common.collect.Iterables.all;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.cycle;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.elementsEqual;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.limit;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.mergeSorted;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Iterators.partition;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Iterators.peekingIterator;
      1 import static org.apache.jackrabbit.guava.common.collect.Iterators.size;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Lists.newArrayListWithExpectedSize;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Lists.newCopyOnWriteArrayList;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Queues.newArrayBlockingQueue;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Queues.newArrayDeque;
      1 import static org.apache.jackrabbit.guava.common.collect.Sets.filter;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Sets.intersection;
      1 import static 
org.apache.jackrabbit.guava.common.escape.Escapers.builder;
      1 import static org.apache.jackrabbit.guava.common.io.ByteStreams.read;
      1 import static 
org.apache.jackrabbit.guava.common.io.FileWriteMode.APPEND;
      1 import static org.apache.jackrabbit.guava.common.io.Files.asByteSink;
      1 import static 
org.apache.jackrabbit.guava.common.math.DoubleMath.fuzzyCompare;
      1 import static 
org.apache.jackrabbit.guava.common.math.DoubleMath.fuzzyEquals;
      1 import static 
org.apache.jackrabbit.guava.common.util.concurrent.Atomics.newReference;
      2 import org.apache.jackrabbit.guava.common.annotations.VisibleForTesting;
      2 import org.apache.jackrabbit.guava.common.base.Throwables;
      2 import org.apache.jackrabbit.guava.common.cache.AbstractCache;
      2 import org.apache.jackrabbit.guava.common.collect.HashMultimap;
      2 import org.apache.jackrabbit.guava.common.collect.LinkedListMultimap;
      2 import org.apache.jackrabbit.guava.common.hash.BloomFilter;
      2 import org.apache.jackrabbit.guava.common.hash.Hasher;
      2 import org.apache.jackrabbit.guava.common.io.BaseEncoding;
      2 import org.apache.jackrabbit.guava.common.util.concurrent.Futures;
      2 import 
org.apache.jackrabbit.guava.common.util.concurrent.ListenableFutureTask;
      2 import org.apache.jackrabbit.guava.common.util.concurrent.Monitor.Guard;
      2 import org.apache.jackrabbit.guava.common.util.concurrent.Striped;
      2 import static org.apache.jackrabbit.guava.common.base.Objects.equal;
      2 import static 
org.apache.jackrabbit.guava.common.base.Stopwatch.createStarted;
      2 import static 
org.apache.jackrabbit.guava.common.base.Strings.isNullOrEmpty;
      2 import static 
org.apache.jackrabbit.guava.common.base.Suppliers.ofInstance;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.isEmpty;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Iterators.concat;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Iterators.singletonIterator;
      2 import static org.apache.jackrabbit.guava.common.collect.Lists.reverse;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Maps.filterValues;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Maps.immutableEntry;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Maps.newHashMapWithExpectedSize;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Queues.newConcurrentLinkedQueue;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Sets.difference;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Sets.newConcurrentHashSet;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Sets.newHashSetWithExpectedSize;
      2 import static org.apache.jackrabbit.guava.common.io.Closeables.close;
      2 import static org.apache.jackrabbit.guava.common.io.Files.move;
      2 import static org.apache.jackrabbit.guava.common.io.Files.newWriter;
      3 import org.apache.jackrabbit.guava.common.base.Optional;
      3 import org.apache.jackrabbit.guava.common.base.Ticker;
      3 import org.apache.jackrabbit.guava.common.cache.LoadingCache;
      3 import org.apache.jackrabbit.guava.common.cache.RemovalListener;
      3 import org.apache.jackrabbit.guava.common.cache.RemovalNotification;
      3 import org.apache.jackrabbit.guava.common.collect.Collections2;
      3 import org.apache.jackrabbit.guava.common.collect.EvictingQueue;
      3 import org.apache.jackrabbit.guava.common.collect.ObjectArrays;
      3 import org.apache.jackrabbit.guava.common.util.concurrent.AtomicDouble;
      3 import 
org.apache.jackrabbit.guava.common.util.concurrent.ListenableFuture;
      3 import 
org.apache.jackrabbit.guava.common.util.concurrent.ListeningExecutorService;
      3 import org.apache.jackrabbit.guava.common.util.concurrent.Monitor;
      3 import 
org.apache.jackrabbit.guava.common.util.concurrent.SettableFuture;
      3 import static 
org.apache.jackrabbit.guava.common.base.StandardSystemProperty.FILE_SEPARATOR;
      3 import static 
org.apache.jackrabbit.guava.common.base.StandardSystemProperty.LINE_SEPARATOR;
      3 import static 
org.apache.jackrabbit.guava.common.collect.ImmutableList.of;
      3 import static 
org.apache.jackrabbit.guava.common.collect.ImmutableSet.copyOf;
      3 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.partition;
      3 import static org.apache.jackrabbit.guava.common.collect.Iterables.size;
      3 import static 
org.apache.jackrabbit.guava.common.collect.Iterators.filter;
      3 import static 
org.apache.jackrabbit.guava.common.collect.Maps.newTreeMap;
      3 import static org.apache.jackrabbit.guava.common.collect.Sets.union;
      4 import org.apache.jackrabbit.guava.common.collect.Ordering;
      4 import org.apache.jackrabbit.guava.common.io.CountingInputStream;
      4 import org.apache.jackrabbit.guava.common.primitives.Longs;
      4 import 
org.apache.jackrabbit.guava.common.util.concurrent.ThreadFactoryBuilder;
      4 import static 
org.apache.jackrabbit.guava.common.collect.Lists.newLinkedList;
      4 import static 
org.apache.jackrabbit.guava.common.collect.Maps.filterKeys;
      4 import static 
org.apache.jackrabbit.guava.common.collect.Sets.newIdentityHashSet;
      5 import org.apache.jackrabbit.guava.common.base.MoreObjects;
      5 import org.apache.jackrabbit.guava.common.base.Suppliers;
      5 import org.apache.jackrabbit.guava.common.cache.CacheLoader;
      5 import org.apache.jackrabbit.guava.common.cache.RemovalCause;
      5 import org.apache.jackrabbit.guava.common.collect.ComparisonChain;
      5 import org.apache.jackrabbit.guava.common.collect.Multimap;
      5 import org.apache.jackrabbit.guava.common.collect.TreeTraverser;
      5 import org.apache.jackrabbit.guava.common.hash.Hashing;
      5 import static org.apache.jackrabbit.guava.common.base.Predicates.not;
      5 import static 
org.apache.jackrabbit.guava.common.collect.ImmutableList.copyOf;
      5 import static org.apache.jackrabbit.guava.common.collect.Iterables.any;
      5 import static 
org.apache.jackrabbit.guava.common.collect.Lists.partition;
      5 import static 
org.apache.jackrabbit.guava.common.collect.Maps.newLinkedHashMap;
      5 import static 
org.apache.jackrabbit.guava.common.collect.Sets.newTreeSet;
      6 import org.apache.jackrabbit.guava.common.collect.PeekingIterator;
      6 import org.apache.jackrabbit.guava.common.io.ByteSource;
      6 import 
org.apache.jackrabbit.guava.common.util.concurrent.UncheckedExecutionException;
      6 import static org.apache.jackrabbit.guava.common.base.Suppliers.memoize;
      7 import org.apache.jackrabbit.guava.common.base.StandardSystemProperty;
      7 import org.apache.jackrabbit.guava.common.primitives.Ints;
      7 import static 
org.apache.jackrabbit.guava.common.base.Preconditions.checkPositionIndexes;
      7 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.addAll;
      7 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.concat;
      7 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.contains;
      8 import org.apache.jackrabbit.guava.common.collect.ArrayListMultimap;
      8 import org.apache.jackrabbit.guava.common.collect.ListMultimap;
      8 import org.apache.jackrabbit.guava.common.collect.Queues;
      8 import org.apache.jackrabbit.guava.common.util.concurrent.MoreExecutors;
      8 import static org.apache.jackrabbit.guava.common.base.Predicates.in;
      8 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.toArray;
      9 import org.apache.jackrabbit.guava.common.cache.CacheBuilder;
      9 import org.apache.jackrabbit.guava.common.cache.CacheStats;
      9 import static 
org.apache.jackrabbit.guava.common.base.MoreObjects.toStringHelper;
      9 import static 
org.apache.jackrabbit.guava.common.collect.Iterators.transform;
      9 import static 
org.apache.jackrabbit.guava.common.collect.Maps.newConcurrentMap;
     10 import static 
org.apache.jackrabbit.guava.common.base.Preconditions.checkElementIndex;
     10 import static 
org.apache.jackrabbit.guava.common.base.Predicates.notNull;
     11 import org.apache.jackrabbit.guava.common.io.ByteStreams;
     11 import org.apache.jackrabbit.guava.common.io.Closeables;
     11 import static 
org.apache.jackrabbit.guava.common.collect.Sets.newLinkedHashSet;
     12 import org.apache.jackrabbit.guava.common.collect.FluentIterable;
     13 import org.apache.jackrabbit.guava.common.cache.Weigher;
     14 import static org.apache.jackrabbit.guava.common.base.Charsets.UTF_8;
     15 import org.apache.jackrabbit.guava.common.base.Splitter;
     15 import static 
org.apache.jackrabbit.guava.common.collect.ImmutableSet.of;
     16 import org.apache.jackrabbit.guava.common.base.Preconditions;
     18 import org.apache.jackrabbit.guava.common.base.Predicates;
     18 import org.apache.jackrabbit.guava.common.cache.Cache;
     20 import org.apache.jackrabbit.guava.common.io.Files;
     23 import static 
org.apache.jackrabbit.guava.common.collect.Lists.newArrayListWithCapacity;
     24 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.filter;
     28 import org.apache.jackrabbit.guava.common.base.Supplier;
     29 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.transform;
     30 import org.apache.jackrabbit.guava.common.base.Objects;
     31 import org.apache.jackrabbit.guava.common.base.Joiner;
     31 import org.apache.jackrabbit.guava.common.collect.AbstractIterator;
     34 import org.apache.jackrabbit.guava.common.base.Charsets;
     36 import static 
org.apache.jackrabbit.guava.common.collect.Maps.newHashMap;
     51 import static 
org.apache.jackrabbit.guava.common.collect.Sets.newHashSet;
     55 import org.apache.jackrabbit.guava.common.base.Strings;
     58 import org.apache.jackrabbit.guava.common.collect.Iterators;
     63 import org.apache.jackrabbit.guava.common.collect.ImmutableMap;
     64 import static 
org.apache.jackrabbit.guava.common.collect.Lists.newArrayList;
     65 import org.apache.jackrabbit.guava.common.base.Predicate;
     76 import org.apache.jackrabbit.guava.common.base.Stopwatch;
     76 import org.apache.jackrabbit.guava.common.io.Closer;
     77 import org.apache.jackrabbit.guava.common.collect.ImmutableList;
     80 import org.apache.jackrabbit.guava.common.collect.ImmutableSet;
     85 import org.apache.jackrabbit.guava.common.base.Function;
     85 import org.apache.jackrabbit.guava.common.collect.Sets;
     91 import org.apache.jackrabbit.guava.common.collect.Maps;
     91 import static 
org.apache.jackrabbit.guava.common.base.Preconditions.checkState;
    117 import org.apache.jackrabbit.guava.common.collect.Iterables;
    122 import static 
org.apache.jackrabbit.guava.common.base.Preconditions.checkArgument;
    128 import org.apache.jackrabbit.guava.common.collect.Lists;
    346 import static 
org.apache.jackrabbit.guava.common.base.Preconditions.checkNotNull;
{noformat}

For now, we should try to reduce the number of usages where a simple 
JDK/apache-commons equivalent is available.

Here's a script to count imports per sub project:

{noformat}
for i in *; do [ -d $i ] && (cnt=$(grep -R ".*import.*guava.*" $i | wc -l); 
echo $cnt $i); done | sort -n
{noformat}

Finding unused dependencies:

{noformat}
for i in *; do [ -d $i ] && (cnt=$(grep -R ".*import.*guava.*" $i | wc -l); 
echo $cnt $i); done | sort -n | fgrep -v 0 | while read a b; do echo ; echo $b; 
echo; fgrep shaded-guava $b/pom.xml; done
{noformat}

Example script for finding incorrectly sorted imports (here for: pio.Closer):

{noformat}
for i in $(find . -name "*.java"); do fgrep --silent "pio.Closer" $i &&  ( grep 
"import.*org\.apache\.jackrabbit\.oak.*" $i > before ; sort before > after ; 
(diff -C5 before after || ( echo $i ; echo)) ; rm before after); done
{noformat}


  was:
{noformat}
for i in oak*/src/main ; do ( cd $i ; grep -h "import.*guava.*;"  -R $(find . 
-name "*.java")) ; done | sort | uniq -c | sort -n
{noformat}

currently yields

{noformat}
      1 import org.apache.jackrabbit.guava.common.base.CaseFormat;
      1 import org.apache.jackrabbit.guava.common.base.CharMatcher;
      1 import org.apache.jackrabbit.guava.common.collect.ClassToInstanceMap;
      1 import org.apache.jackrabbit.guava.common.collect.HashBiMap;
      1 import org.apache.jackrabbit.guava.common.collect.ImmutableListMultimap;
      1 import 
org.apache.jackrabbit.guava.common.collect.MutableClassToInstanceMap;
      1 import org.apache.jackrabbit.guava.common.escape.Escapers;
      1 import org.apache.jackrabbit.guava.common.graph.SuccessorsFunction;
      1 import org.apache.jackrabbit.guava.common.graph.Traverser;
      1 import org.apache.jackrabbit.guava.common.hash.Funnel;
      1 import org.apache.jackrabbit.guava.common.hash.Funnels;
      1 import org.apache.jackrabbit.guava.common.hash.HashCode;
      1 import org.apache.jackrabbit.guava.common.hash.PrimitiveSink;
      1 import org.apache.jackrabbit.guava.common.primitives.Chars;
      1 import org.apache.jackrabbit.guava.common.primitives.UnsignedBytes;
      1 import 
org.apache.jackrabbit.guava.common.util.concurrent.AbstractListeningExecutorService;
      1 import 
org.apache.jackrabbit.guava.common.util.concurrent.FutureCallback;
      1 import static 
org.apache.jackrabbit.guava.common.base.Preconditions.checkPositionIndex;
      1 import static 
org.apache.jackrabbit.guava.common.base.Predicates.alwaysTrue;
      1 import static org.apache.jackrabbit.guava.common.base.Predicates.isNull;
      1 import static 
org.apache.jackrabbit.guava.common.base.StandardSystemProperty.JAVA_IO_TMPDIR;
      1 import static 
org.apache.jackrabbit.guava.common.base.Strings.nullToEmpty;
      1 import static org.apache.jackrabbit.guava.common.base.Strings.repeat;
      1 import static 
org.apache.jackrabbit.guava.common.base.Throwables.getStackTraceAsString;
      1 import static 
org.apache.jackrabbit.guava.common.cache.CacheBuilder.newBuilder;
      1 import static 
org.apache.jackrabbit.guava.common.cache.RemovalCause.COLLECTED;
      1 import static 
org.apache.jackrabbit.guava.common.cache.RemovalCause.EXPIRED;
      1 import static 
org.apache.jackrabbit.guava.common.cache.RemovalCause.SIZE;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Collections2.transform;
      1 import static 
org.apache.jackrabbit.guava.common.collect.ImmutableMap.copyOf;
      1 import static org.apache.jackrabbit.guava.common.collect.Iterables.all;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.cycle;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.elementsEqual;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.limit;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.mergeSorted;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Iterators.partition;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Iterators.peekingIterator;
      1 import static org.apache.jackrabbit.guava.common.collect.Iterators.size;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Lists.newArrayListWithExpectedSize;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Lists.newCopyOnWriteArrayList;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Queues.newArrayBlockingQueue;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Queues.newArrayDeque;
      1 import static org.apache.jackrabbit.guava.common.collect.Sets.filter;
      1 import static 
org.apache.jackrabbit.guava.common.collect.Sets.intersection;
      1 import static 
org.apache.jackrabbit.guava.common.escape.Escapers.builder;
      1 import static org.apache.jackrabbit.guava.common.io.ByteStreams.read;
      1 import static 
org.apache.jackrabbit.guava.common.io.FileWriteMode.APPEND;
      1 import static org.apache.jackrabbit.guava.common.io.Files.asByteSink;
      1 import static 
org.apache.jackrabbit.guava.common.math.DoubleMath.fuzzyCompare;
      1 import static 
org.apache.jackrabbit.guava.common.math.DoubleMath.fuzzyEquals;
      1 import static 
org.apache.jackrabbit.guava.common.util.concurrent.Atomics.newReference;
      2 import org.apache.jackrabbit.guava.common.annotations.VisibleForTesting;
      2 import org.apache.jackrabbit.guava.common.base.Throwables;
      2 import org.apache.jackrabbit.guava.common.cache.AbstractCache;
      2 import org.apache.jackrabbit.guava.common.collect.HashMultimap;
      2 import org.apache.jackrabbit.guava.common.collect.LinkedListMultimap;
      2 import org.apache.jackrabbit.guava.common.hash.BloomFilter;
      2 import org.apache.jackrabbit.guava.common.hash.Hasher;
      2 import org.apache.jackrabbit.guava.common.io.BaseEncoding;
      2 import org.apache.jackrabbit.guava.common.util.concurrent.Futures;
      2 import 
org.apache.jackrabbit.guava.common.util.concurrent.ListenableFutureTask;
      2 import org.apache.jackrabbit.guava.common.util.concurrent.Monitor.Guard;
      2 import org.apache.jackrabbit.guava.common.util.concurrent.Striped;
      2 import static org.apache.jackrabbit.guava.common.base.Objects.equal;
      2 import static 
org.apache.jackrabbit.guava.common.base.Stopwatch.createStarted;
      2 import static 
org.apache.jackrabbit.guava.common.base.Strings.isNullOrEmpty;
      2 import static 
org.apache.jackrabbit.guava.common.base.Suppliers.ofInstance;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.isEmpty;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Iterators.concat;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Iterators.singletonIterator;
      2 import static org.apache.jackrabbit.guava.common.collect.Lists.reverse;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Maps.filterValues;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Maps.immutableEntry;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Maps.newHashMapWithExpectedSize;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Queues.newConcurrentLinkedQueue;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Sets.difference;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Sets.newConcurrentHashSet;
      2 import static 
org.apache.jackrabbit.guava.common.collect.Sets.newHashSetWithExpectedSize;
      2 import static org.apache.jackrabbit.guava.common.io.Closeables.close;
      2 import static org.apache.jackrabbit.guava.common.io.Files.move;
      2 import static org.apache.jackrabbit.guava.common.io.Files.newWriter;
      3 import org.apache.jackrabbit.guava.common.base.Optional;
      3 import org.apache.jackrabbit.guava.common.base.Ticker;
      3 import org.apache.jackrabbit.guava.common.cache.LoadingCache;
      3 import org.apache.jackrabbit.guava.common.cache.RemovalListener;
      3 import org.apache.jackrabbit.guava.common.cache.RemovalNotification;
      3 import org.apache.jackrabbit.guava.common.collect.Collections2;
      3 import org.apache.jackrabbit.guava.common.collect.EvictingQueue;
      3 import org.apache.jackrabbit.guava.common.collect.ObjectArrays;
      3 import org.apache.jackrabbit.guava.common.util.concurrent.AtomicDouble;
      3 import 
org.apache.jackrabbit.guava.common.util.concurrent.ListenableFuture;
      3 import 
org.apache.jackrabbit.guava.common.util.concurrent.ListeningExecutorService;
      3 import org.apache.jackrabbit.guava.common.util.concurrent.Monitor;
      3 import 
org.apache.jackrabbit.guava.common.util.concurrent.SettableFuture;
      3 import static 
org.apache.jackrabbit.guava.common.base.StandardSystemProperty.FILE_SEPARATOR;
      3 import static 
org.apache.jackrabbit.guava.common.base.StandardSystemProperty.LINE_SEPARATOR;
      3 import static 
org.apache.jackrabbit.guava.common.collect.ImmutableList.of;
      3 import static 
org.apache.jackrabbit.guava.common.collect.ImmutableSet.copyOf;
      3 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.partition;
      3 import static org.apache.jackrabbit.guava.common.collect.Iterables.size;
      3 import static 
org.apache.jackrabbit.guava.common.collect.Iterators.filter;
      3 import static 
org.apache.jackrabbit.guava.common.collect.Maps.newTreeMap;
      3 import static org.apache.jackrabbit.guava.common.collect.Sets.union;
      4 import org.apache.jackrabbit.guava.common.collect.Ordering;
      4 import org.apache.jackrabbit.guava.common.io.CountingInputStream;
      4 import org.apache.jackrabbit.guava.common.primitives.Longs;
      4 import 
org.apache.jackrabbit.guava.common.util.concurrent.ThreadFactoryBuilder;
      4 import static 
org.apache.jackrabbit.guava.common.collect.Lists.newLinkedList;
      4 import static 
org.apache.jackrabbit.guava.common.collect.Maps.filterKeys;
      4 import static 
org.apache.jackrabbit.guava.common.collect.Sets.newIdentityHashSet;
      5 import org.apache.jackrabbit.guava.common.base.MoreObjects;
      5 import org.apache.jackrabbit.guava.common.base.Suppliers;
      5 import org.apache.jackrabbit.guava.common.cache.CacheLoader;
      5 import org.apache.jackrabbit.guava.common.cache.RemovalCause;
      5 import org.apache.jackrabbit.guava.common.collect.ComparisonChain;
      5 import org.apache.jackrabbit.guava.common.collect.Multimap;
      5 import org.apache.jackrabbit.guava.common.collect.TreeTraverser;
      5 import org.apache.jackrabbit.guava.common.hash.Hashing;
      5 import static org.apache.jackrabbit.guava.common.base.Predicates.not;
      5 import static 
org.apache.jackrabbit.guava.common.collect.ImmutableList.copyOf;
      5 import static org.apache.jackrabbit.guava.common.collect.Iterables.any;
      5 import static 
org.apache.jackrabbit.guava.common.collect.Lists.partition;
      5 import static 
org.apache.jackrabbit.guava.common.collect.Maps.newLinkedHashMap;
      5 import static 
org.apache.jackrabbit.guava.common.collect.Sets.newTreeSet;
      6 import org.apache.jackrabbit.guava.common.collect.PeekingIterator;
      6 import org.apache.jackrabbit.guava.common.io.ByteSource;
      6 import 
org.apache.jackrabbit.guava.common.util.concurrent.UncheckedExecutionException;
      6 import static org.apache.jackrabbit.guava.common.base.Suppliers.memoize;
      7 import org.apache.jackrabbit.guava.common.base.StandardSystemProperty;
      7 import org.apache.jackrabbit.guava.common.primitives.Ints;
      7 import static 
org.apache.jackrabbit.guava.common.base.Preconditions.checkPositionIndexes;
      7 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.addAll;
      7 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.concat;
      7 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.contains;
      8 import org.apache.jackrabbit.guava.common.collect.ArrayListMultimap;
      8 import org.apache.jackrabbit.guava.common.collect.ListMultimap;
      8 import org.apache.jackrabbit.guava.common.collect.Queues;
      8 import org.apache.jackrabbit.guava.common.util.concurrent.MoreExecutors;
      8 import static org.apache.jackrabbit.guava.common.base.Predicates.in;
      8 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.toArray;
      9 import org.apache.jackrabbit.guava.common.cache.CacheBuilder;
      9 import org.apache.jackrabbit.guava.common.cache.CacheStats;
      9 import static 
org.apache.jackrabbit.guava.common.base.MoreObjects.toStringHelper;
      9 import static 
org.apache.jackrabbit.guava.common.collect.Iterators.transform;
      9 import static 
org.apache.jackrabbit.guava.common.collect.Maps.newConcurrentMap;
     10 import static 
org.apache.jackrabbit.guava.common.base.Preconditions.checkElementIndex;
     10 import static 
org.apache.jackrabbit.guava.common.base.Predicates.notNull;
     11 import org.apache.jackrabbit.guava.common.io.ByteStreams;
     11 import org.apache.jackrabbit.guava.common.io.Closeables;
     11 import static 
org.apache.jackrabbit.guava.common.collect.Sets.newLinkedHashSet;
     12 import org.apache.jackrabbit.guava.common.collect.FluentIterable;
     13 import org.apache.jackrabbit.guava.common.cache.Weigher;
     14 import static org.apache.jackrabbit.guava.common.base.Charsets.UTF_8;
     15 import org.apache.jackrabbit.guava.common.base.Splitter;
     15 import static 
org.apache.jackrabbit.guava.common.collect.ImmutableSet.of;
     16 import org.apache.jackrabbit.guava.common.base.Preconditions;
     18 import org.apache.jackrabbit.guava.common.base.Predicates;
     18 import org.apache.jackrabbit.guava.common.cache.Cache;
     20 import org.apache.jackrabbit.guava.common.io.Files;
     23 import static 
org.apache.jackrabbit.guava.common.collect.Lists.newArrayListWithCapacity;
     24 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.filter;
     28 import org.apache.jackrabbit.guava.common.base.Supplier;
     29 import static 
org.apache.jackrabbit.guava.common.collect.Iterables.transform;
     30 import org.apache.jackrabbit.guava.common.base.Objects;
     31 import org.apache.jackrabbit.guava.common.base.Joiner;
     31 import org.apache.jackrabbit.guava.common.collect.AbstractIterator;
     34 import org.apache.jackrabbit.guava.common.base.Charsets;
     36 import static 
org.apache.jackrabbit.guava.common.collect.Maps.newHashMap;
     51 import static 
org.apache.jackrabbit.guava.common.collect.Sets.newHashSet;
     55 import org.apache.jackrabbit.guava.common.base.Strings;
     58 import org.apache.jackrabbit.guava.common.collect.Iterators;
     63 import org.apache.jackrabbit.guava.common.collect.ImmutableMap;
     64 import static 
org.apache.jackrabbit.guava.common.collect.Lists.newArrayList;
     65 import org.apache.jackrabbit.guava.common.base.Predicate;
     76 import org.apache.jackrabbit.guava.common.base.Stopwatch;
     76 import org.apache.jackrabbit.guava.common.io.Closer;
     77 import org.apache.jackrabbit.guava.common.collect.ImmutableList;
     80 import org.apache.jackrabbit.guava.common.collect.ImmutableSet;
     85 import org.apache.jackrabbit.guava.common.base.Function;
     85 import org.apache.jackrabbit.guava.common.collect.Sets;
     91 import org.apache.jackrabbit.guava.common.collect.Maps;
     91 import static 
org.apache.jackrabbit.guava.common.base.Preconditions.checkState;
    117 import org.apache.jackrabbit.guava.common.collect.Iterables;
    122 import static 
org.apache.jackrabbit.guava.common.base.Preconditions.checkArgument;
    128 import org.apache.jackrabbit.guava.common.collect.Lists;
    346 import static 
org.apache.jackrabbit.guava.common.base.Preconditions.checkNotNull;
{noformat}

For now, we should try to reduce the number of usages where a simple 
JDK/apache-commons equivalent is available.

Here's a script to count imports per sub project:

{noformat}
for i in *; do [ -d $i ] && (cnt=$(grep -R ".*import.*guava.*" $i | wc -l); 
echo $cnt $i); done | sort -n
{noformat}

Finding unused dependencies:

{noformat}
for i in *; do [ -d $i ] && (cnt=$(grep -R ".*import.*guava.*" $i | wc -l); 
echo $cnt $i); done | sort -n | fgrep -v 0 | while read a b; do echo ; echo $b; 
echo; fgrep guava $b/pom.xml; done
{noformat}

Example script for finding incorrectly sorted imports (here for: pio.Closer):

{noformat}
for i in $(find . -name "*.java"); do fgrep --silent "pio.Closer" $i &&  ( grep 
"import.*org\.apache\.jackrabbit\.oak.*" $i > before ; sort before > after ; 
(diff -C5 before after || ( echo $i ; echo)) ; rm before after); done
{noformat}



> reduce overall usage of (shaded) Guava
> --------------------------------------
>
>                 Key: OAK-10685
>                 URL: https://issues.apache.org/jira/browse/OAK-10685
>             Project: Jackrabbit Oak
>          Issue Type: Task
>            Reporter: Julian Reschke
>            Assignee: Julian Reschke
>            Priority: Major
>
> {noformat}
> for i in oak*/src/main ; do ( cd $i ; grep -h "import.*guava.*;"  -R $(find . 
> -name "*.java")) ; done | sort | uniq -c | sort -n
> {noformat}
> currently yields
> {noformat}
>       1 import org.apache.jackrabbit.guava.common.base.CaseFormat;
>       1 import org.apache.jackrabbit.guava.common.base.CharMatcher;
>       1 import org.apache.jackrabbit.guava.common.collect.ClassToInstanceMap;
>       1 import org.apache.jackrabbit.guava.common.collect.HashBiMap;
>       1 import 
> org.apache.jackrabbit.guava.common.collect.ImmutableListMultimap;
>       1 import 
> org.apache.jackrabbit.guava.common.collect.MutableClassToInstanceMap;
>       1 import org.apache.jackrabbit.guava.common.escape.Escapers;
>       1 import org.apache.jackrabbit.guava.common.graph.SuccessorsFunction;
>       1 import org.apache.jackrabbit.guava.common.graph.Traverser;
>       1 import org.apache.jackrabbit.guava.common.hash.Funnel;
>       1 import org.apache.jackrabbit.guava.common.hash.Funnels;
>       1 import org.apache.jackrabbit.guava.common.hash.HashCode;
>       1 import org.apache.jackrabbit.guava.common.hash.PrimitiveSink;
>       1 import org.apache.jackrabbit.guava.common.primitives.Chars;
>       1 import org.apache.jackrabbit.guava.common.primitives.UnsignedBytes;
>       1 import 
> org.apache.jackrabbit.guava.common.util.concurrent.AbstractListeningExecutorService;
>       1 import 
> org.apache.jackrabbit.guava.common.util.concurrent.FutureCallback;
>       1 import static 
> org.apache.jackrabbit.guava.common.base.Preconditions.checkPositionIndex;
>       1 import static 
> org.apache.jackrabbit.guava.common.base.Predicates.alwaysTrue;
>       1 import static 
> org.apache.jackrabbit.guava.common.base.Predicates.isNull;
>       1 import static 
> org.apache.jackrabbit.guava.common.base.StandardSystemProperty.JAVA_IO_TMPDIR;
>       1 import static 
> org.apache.jackrabbit.guava.common.base.Strings.nullToEmpty;
>       1 import static org.apache.jackrabbit.guava.common.base.Strings.repeat;
>       1 import static 
> org.apache.jackrabbit.guava.common.base.Throwables.getStackTraceAsString;
>       1 import static 
> org.apache.jackrabbit.guava.common.cache.CacheBuilder.newBuilder;
>       1 import static 
> org.apache.jackrabbit.guava.common.cache.RemovalCause.COLLECTED;
>       1 import static 
> org.apache.jackrabbit.guava.common.cache.RemovalCause.EXPIRED;
>       1 import static 
> org.apache.jackrabbit.guava.common.cache.RemovalCause.SIZE;
>       1 import static 
> org.apache.jackrabbit.guava.common.collect.Collections2.transform;
>       1 import static 
> org.apache.jackrabbit.guava.common.collect.ImmutableMap.copyOf;
>       1 import static 
> org.apache.jackrabbit.guava.common.collect.Iterables.all;
>       1 import static 
> org.apache.jackrabbit.guava.common.collect.Iterables.cycle;
>       1 import static 
> org.apache.jackrabbit.guava.common.collect.Iterables.elementsEqual;
>       1 import static 
> org.apache.jackrabbit.guava.common.collect.Iterables.limit;
>       1 import static 
> org.apache.jackrabbit.guava.common.collect.Iterables.mergeSorted;
>       1 import static 
> org.apache.jackrabbit.guava.common.collect.Iterators.partition;
>       1 import static 
> org.apache.jackrabbit.guava.common.collect.Iterators.peekingIterator;
>       1 import static 
> org.apache.jackrabbit.guava.common.collect.Iterators.size;
>       1 import static 
> org.apache.jackrabbit.guava.common.collect.Lists.newArrayListWithExpectedSize;
>       1 import static 
> org.apache.jackrabbit.guava.common.collect.Lists.newCopyOnWriteArrayList;
>       1 import static 
> org.apache.jackrabbit.guava.common.collect.Queues.newArrayBlockingQueue;
>       1 import static 
> org.apache.jackrabbit.guava.common.collect.Queues.newArrayDeque;
>       1 import static org.apache.jackrabbit.guava.common.collect.Sets.filter;
>       1 import static 
> org.apache.jackrabbit.guava.common.collect.Sets.intersection;
>       1 import static 
> org.apache.jackrabbit.guava.common.escape.Escapers.builder;
>       1 import static org.apache.jackrabbit.guava.common.io.ByteStreams.read;
>       1 import static 
> org.apache.jackrabbit.guava.common.io.FileWriteMode.APPEND;
>       1 import static org.apache.jackrabbit.guava.common.io.Files.asByteSink;
>       1 import static 
> org.apache.jackrabbit.guava.common.math.DoubleMath.fuzzyCompare;
>       1 import static 
> org.apache.jackrabbit.guava.common.math.DoubleMath.fuzzyEquals;
>       1 import static 
> org.apache.jackrabbit.guava.common.util.concurrent.Atomics.newReference;
>       2 import 
> org.apache.jackrabbit.guava.common.annotations.VisibleForTesting;
>       2 import org.apache.jackrabbit.guava.common.base.Throwables;
>       2 import org.apache.jackrabbit.guava.common.cache.AbstractCache;
>       2 import org.apache.jackrabbit.guava.common.collect.HashMultimap;
>       2 import org.apache.jackrabbit.guava.common.collect.LinkedListMultimap;
>       2 import org.apache.jackrabbit.guava.common.hash.BloomFilter;
>       2 import org.apache.jackrabbit.guava.common.hash.Hasher;
>       2 import org.apache.jackrabbit.guava.common.io.BaseEncoding;
>       2 import org.apache.jackrabbit.guava.common.util.concurrent.Futures;
>       2 import 
> org.apache.jackrabbit.guava.common.util.concurrent.ListenableFutureTask;
>       2 import 
> org.apache.jackrabbit.guava.common.util.concurrent.Monitor.Guard;
>       2 import org.apache.jackrabbit.guava.common.util.concurrent.Striped;
>       2 import static org.apache.jackrabbit.guava.common.base.Objects.equal;
>       2 import static 
> org.apache.jackrabbit.guava.common.base.Stopwatch.createStarted;
>       2 import static 
> org.apache.jackrabbit.guava.common.base.Strings.isNullOrEmpty;
>       2 import static 
> org.apache.jackrabbit.guava.common.base.Suppliers.ofInstance;
>       2 import static 
> org.apache.jackrabbit.guava.common.collect.Iterables.isEmpty;
>       2 import static 
> org.apache.jackrabbit.guava.common.collect.Iterators.concat;
>       2 import static 
> org.apache.jackrabbit.guava.common.collect.Iterators.singletonIterator;
>       2 import static 
> org.apache.jackrabbit.guava.common.collect.Lists.reverse;
>       2 import static 
> org.apache.jackrabbit.guava.common.collect.Maps.filterValues;
>       2 import static 
> org.apache.jackrabbit.guava.common.collect.Maps.immutableEntry;
>       2 import static 
> org.apache.jackrabbit.guava.common.collect.Maps.newHashMapWithExpectedSize;
>       2 import static 
> org.apache.jackrabbit.guava.common.collect.Queues.newConcurrentLinkedQueue;
>       2 import static 
> org.apache.jackrabbit.guava.common.collect.Sets.difference;
>       2 import static 
> org.apache.jackrabbit.guava.common.collect.Sets.newConcurrentHashSet;
>       2 import static 
> org.apache.jackrabbit.guava.common.collect.Sets.newHashSetWithExpectedSize;
>       2 import static org.apache.jackrabbit.guava.common.io.Closeables.close;
>       2 import static org.apache.jackrabbit.guava.common.io.Files.move;
>       2 import static org.apache.jackrabbit.guava.common.io.Files.newWriter;
>       3 import org.apache.jackrabbit.guava.common.base.Optional;
>       3 import org.apache.jackrabbit.guava.common.base.Ticker;
>       3 import org.apache.jackrabbit.guava.common.cache.LoadingCache;
>       3 import org.apache.jackrabbit.guava.common.cache.RemovalListener;
>       3 import org.apache.jackrabbit.guava.common.cache.RemovalNotification;
>       3 import org.apache.jackrabbit.guava.common.collect.Collections2;
>       3 import org.apache.jackrabbit.guava.common.collect.EvictingQueue;
>       3 import org.apache.jackrabbit.guava.common.collect.ObjectArrays;
>       3 import 
> org.apache.jackrabbit.guava.common.util.concurrent.AtomicDouble;
>       3 import 
> org.apache.jackrabbit.guava.common.util.concurrent.ListenableFuture;
>       3 import 
> org.apache.jackrabbit.guava.common.util.concurrent.ListeningExecutorService;
>       3 import org.apache.jackrabbit.guava.common.util.concurrent.Monitor;
>       3 import 
> org.apache.jackrabbit.guava.common.util.concurrent.SettableFuture;
>       3 import static 
> org.apache.jackrabbit.guava.common.base.StandardSystemProperty.FILE_SEPARATOR;
>       3 import static 
> org.apache.jackrabbit.guava.common.base.StandardSystemProperty.LINE_SEPARATOR;
>       3 import static 
> org.apache.jackrabbit.guava.common.collect.ImmutableList.of;
>       3 import static 
> org.apache.jackrabbit.guava.common.collect.ImmutableSet.copyOf;
>       3 import static 
> org.apache.jackrabbit.guava.common.collect.Iterables.partition;
>       3 import static 
> org.apache.jackrabbit.guava.common.collect.Iterables.size;
>       3 import static 
> org.apache.jackrabbit.guava.common.collect.Iterators.filter;
>       3 import static 
> org.apache.jackrabbit.guava.common.collect.Maps.newTreeMap;
>       3 import static org.apache.jackrabbit.guava.common.collect.Sets.union;
>       4 import org.apache.jackrabbit.guava.common.collect.Ordering;
>       4 import org.apache.jackrabbit.guava.common.io.CountingInputStream;
>       4 import org.apache.jackrabbit.guava.common.primitives.Longs;
>       4 import 
> org.apache.jackrabbit.guava.common.util.concurrent.ThreadFactoryBuilder;
>       4 import static 
> org.apache.jackrabbit.guava.common.collect.Lists.newLinkedList;
>       4 import static 
> org.apache.jackrabbit.guava.common.collect.Maps.filterKeys;
>       4 import static 
> org.apache.jackrabbit.guava.common.collect.Sets.newIdentityHashSet;
>       5 import org.apache.jackrabbit.guava.common.base.MoreObjects;
>       5 import org.apache.jackrabbit.guava.common.base.Suppliers;
>       5 import org.apache.jackrabbit.guava.common.cache.CacheLoader;
>       5 import org.apache.jackrabbit.guava.common.cache.RemovalCause;
>       5 import org.apache.jackrabbit.guava.common.collect.ComparisonChain;
>       5 import org.apache.jackrabbit.guava.common.collect.Multimap;
>       5 import org.apache.jackrabbit.guava.common.collect.TreeTraverser;
>       5 import org.apache.jackrabbit.guava.common.hash.Hashing;
>       5 import static org.apache.jackrabbit.guava.common.base.Predicates.not;
>       5 import static 
> org.apache.jackrabbit.guava.common.collect.ImmutableList.copyOf;
>       5 import static 
> org.apache.jackrabbit.guava.common.collect.Iterables.any;
>       5 import static 
> org.apache.jackrabbit.guava.common.collect.Lists.partition;
>       5 import static 
> org.apache.jackrabbit.guava.common.collect.Maps.newLinkedHashMap;
>       5 import static 
> org.apache.jackrabbit.guava.common.collect.Sets.newTreeSet;
>       6 import org.apache.jackrabbit.guava.common.collect.PeekingIterator;
>       6 import org.apache.jackrabbit.guava.common.io.ByteSource;
>       6 import 
> org.apache.jackrabbit.guava.common.util.concurrent.UncheckedExecutionException;
>       6 import static 
> org.apache.jackrabbit.guava.common.base.Suppliers.memoize;
>       7 import org.apache.jackrabbit.guava.common.base.StandardSystemProperty;
>       7 import org.apache.jackrabbit.guava.common.primitives.Ints;
>       7 import static 
> org.apache.jackrabbit.guava.common.base.Preconditions.checkPositionIndexes;
>       7 import static 
> org.apache.jackrabbit.guava.common.collect.Iterables.addAll;
>       7 import static 
> org.apache.jackrabbit.guava.common.collect.Iterables.concat;
>       7 import static 
> org.apache.jackrabbit.guava.common.collect.Iterables.contains;
>       8 import org.apache.jackrabbit.guava.common.collect.ArrayListMultimap;
>       8 import org.apache.jackrabbit.guava.common.collect.ListMultimap;
>       8 import org.apache.jackrabbit.guava.common.collect.Queues;
>       8 import 
> org.apache.jackrabbit.guava.common.util.concurrent.MoreExecutors;
>       8 import static org.apache.jackrabbit.guava.common.base.Predicates.in;
>       8 import static 
> org.apache.jackrabbit.guava.common.collect.Iterables.toArray;
>       9 import org.apache.jackrabbit.guava.common.cache.CacheBuilder;
>       9 import org.apache.jackrabbit.guava.common.cache.CacheStats;
>       9 import static 
> org.apache.jackrabbit.guava.common.base.MoreObjects.toStringHelper;
>       9 import static 
> org.apache.jackrabbit.guava.common.collect.Iterators.transform;
>       9 import static 
> org.apache.jackrabbit.guava.common.collect.Maps.newConcurrentMap;
>      10 import static 
> org.apache.jackrabbit.guava.common.base.Preconditions.checkElementIndex;
>      10 import static 
> org.apache.jackrabbit.guava.common.base.Predicates.notNull;
>      11 import org.apache.jackrabbit.guava.common.io.ByteStreams;
>      11 import org.apache.jackrabbit.guava.common.io.Closeables;
>      11 import static 
> org.apache.jackrabbit.guava.common.collect.Sets.newLinkedHashSet;
>      12 import org.apache.jackrabbit.guava.common.collect.FluentIterable;
>      13 import org.apache.jackrabbit.guava.common.cache.Weigher;
>      14 import static org.apache.jackrabbit.guava.common.base.Charsets.UTF_8;
>      15 import org.apache.jackrabbit.guava.common.base.Splitter;
>      15 import static 
> org.apache.jackrabbit.guava.common.collect.ImmutableSet.of;
>      16 import org.apache.jackrabbit.guava.common.base.Preconditions;
>      18 import org.apache.jackrabbit.guava.common.base.Predicates;
>      18 import org.apache.jackrabbit.guava.common.cache.Cache;
>      20 import org.apache.jackrabbit.guava.common.io.Files;
>      23 import static 
> org.apache.jackrabbit.guava.common.collect.Lists.newArrayListWithCapacity;
>      24 import static 
> org.apache.jackrabbit.guava.common.collect.Iterables.filter;
>      28 import org.apache.jackrabbit.guava.common.base.Supplier;
>      29 import static 
> org.apache.jackrabbit.guava.common.collect.Iterables.transform;
>      30 import org.apache.jackrabbit.guava.common.base.Objects;
>      31 import org.apache.jackrabbit.guava.common.base.Joiner;
>      31 import org.apache.jackrabbit.guava.common.collect.AbstractIterator;
>      34 import org.apache.jackrabbit.guava.common.base.Charsets;
>      36 import static 
> org.apache.jackrabbit.guava.common.collect.Maps.newHashMap;
>      51 import static 
> org.apache.jackrabbit.guava.common.collect.Sets.newHashSet;
>      55 import org.apache.jackrabbit.guava.common.base.Strings;
>      58 import org.apache.jackrabbit.guava.common.collect.Iterators;
>      63 import org.apache.jackrabbit.guava.common.collect.ImmutableMap;
>      64 import static 
> org.apache.jackrabbit.guava.common.collect.Lists.newArrayList;
>      65 import org.apache.jackrabbit.guava.common.base.Predicate;
>      76 import org.apache.jackrabbit.guava.common.base.Stopwatch;
>      76 import org.apache.jackrabbit.guava.common.io.Closer;
>      77 import org.apache.jackrabbit.guava.common.collect.ImmutableList;
>      80 import org.apache.jackrabbit.guava.common.collect.ImmutableSet;
>      85 import org.apache.jackrabbit.guava.common.base.Function;
>      85 import org.apache.jackrabbit.guava.common.collect.Sets;
>      91 import org.apache.jackrabbit.guava.common.collect.Maps;
>      91 import static 
> org.apache.jackrabbit.guava.common.base.Preconditions.checkState;
>     117 import org.apache.jackrabbit.guava.common.collect.Iterables;
>     122 import static 
> org.apache.jackrabbit.guava.common.base.Preconditions.checkArgument;
>     128 import org.apache.jackrabbit.guava.common.collect.Lists;
>     346 import static 
> org.apache.jackrabbit.guava.common.base.Preconditions.checkNotNull;
> {noformat}
> For now, we should try to reduce the number of usages where a simple 
> JDK/apache-commons equivalent is available.
> Here's a script to count imports per sub project:
> {noformat}
> for i in *; do [ -d $i ] && (cnt=$(grep -R ".*import.*guava.*" $i | wc -l); 
> echo $cnt $i); done | sort -n
> {noformat}
> Finding unused dependencies:
> {noformat}
> for i in *; do [ -d $i ] && (cnt=$(grep -R ".*import.*guava.*" $i | wc -l); 
> echo $cnt $i); done | sort -n | fgrep -v 0 | while read a b; do echo ; echo 
> $b; echo; fgrep shaded-guava $b/pom.xml; done
> {noformat}
> Example script for finding incorrectly sorted imports (here for: pio.Closer):
> {noformat}
> for i in $(find . -name "*.java"); do fgrep --silent "pio.Closer" $i &&  ( 
> grep "import.*org\.apache\.jackrabbit\.oak.*" $i > before ; sort before > 
> after ; (diff -C5 before after || ( echo $i ; echo)) ; rm before after); done
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to