Polishing
- Use Java 8 idioms more consistently.
- Use newer Guava idioms more consistently.
- Apply some IntelliJ IDEA refactoring suggestions.
- Other changes made for readability and/or brevity.
Closes #3462.
PiperOrigin-RevId: 164700946
diff --git a/src/main/java/com/google/devtools/build/lib/graph/DFS.java b/src/main/java/com/google/devtools/build/lib/graph/DFS.java
index 9cf947e..1428060 100644
--- a/src/main/java/com/google/devtools/build/lib/graph/DFS.java
+++ b/src/main/java/com/google/devtools/build/lib/graph/DFS.java
@@ -15,8 +15,9 @@
package com.google.devtools.build.lib.graph;
import static java.util.Comparator.comparing;
+import static java.util.stream.Collectors.toCollection;
-import com.google.common.collect.Ordering;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
@@ -68,11 +69,7 @@
this.order = order;
this.transpose = transpose;
- if (edgeOrder == null) {
- this.edgeOrder = null;
- } else {
- this.edgeOrder = comparing(Node::getLabel, edgeOrder::compare);
- }
+ this.edgeOrder = (edgeOrder == null) ? null : comparing(Node::getLabel, edgeOrder::compare);
}
public DFS(Order order, boolean transpose) {
@@ -98,7 +95,8 @@
Collection<Node<T>> edgeTargets = transpose
? node.getPredecessors() : node.getSuccessors();
if (edgeOrder != null) {
- List<Node<T>> mutableNodeList = Ordering.from(edgeOrder).sortedCopy(edgeTargets);
+ List<Node<T>> mutableNodeList =
+ edgeTargets.stream().sorted(edgeOrder).collect(toCollection(ArrayList::new));
edgeTargets = mutableNodeList;
}
diff --git a/src/main/java/com/google/devtools/build/lib/graph/Digraph.java b/src/main/java/com/google/devtools/build/lib/graph/Digraph.java
index 3384263..2cb3287 100644
--- a/src/main/java/com/google/devtools/build/lib/graph/Digraph.java
+++ b/src/main/java/com/google/devtools/build/lib/graph/Digraph.java
@@ -17,9 +17,9 @@
import static java.util.Comparator.comparing;
import static java.util.Comparator.comparingLong;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Maps;
-import com.google.common.collect.Ordering;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -266,17 +266,9 @@
return that;
}
- /**
- * Returns a deterministic immutable view of the nodes of this graph.
- */
+ /** Returns a deterministic immutable copy of the nodes of this graph. */
public Collection<Node<T>> getNodes(final Comparator<? super T> comparator) {
- Ordering<Node<T>> ordering = new Ordering<Node<T>>() {
- @Override
- public int compare(Node<T> o1, Node<T> o2) {
- return comparator.compare(o1.getLabel(), o2.getLabel());
- }
- };
- return ordering.immutableSortedCopy(nodes.values());
+ return ImmutableList.sortedCopyOf(comparing(Node::getLabel, comparator), nodes.values());
}
/**
@@ -385,8 +377,7 @@
if (label == null) {
throw new NullPointerException();
}
- Node<T> n = nodes.computeIfAbsent(label, k -> new Node<T>(k, nextHashCode++));
- return n;
+ return nodes.computeIfAbsent(label, k -> new Node<>(k, nextHashCode++));
}
/******************************************************************
@@ -463,13 +454,8 @@
*/
public Collection<Set<Node<T>>> getStronglyConnectedComponents() {
final List<Set<Node<T>>> sccs = new ArrayList<>();
- NodeSetReceiver<T> r = new NodeSetReceiver<T>() {
- @Override
- public void accept(Set<Node<T>> scc) {
- sccs.add(scc);
- }
- };
- SccVisitor<T> v = new SccVisitor<T>();
+ NodeSetReceiver<T> r = sccs::add;
+ SccVisitor<T> v = new SccVisitor<>();
for (Node<T> node : nodes.values()) {
v.visit(r, node);
}
@@ -598,7 +584,7 @@
* list.
*/
public static <X> List<X> getPathToTreeNode(Map<X, X> tree, X node) {
- List<X> path = new ArrayList<X>();
+ List<X> path = new ArrayList<>();
while (node != null) {
path.add(node);
node = tree.get(node); // get parent
@@ -641,8 +627,8 @@
* @return The nodes of the graph, in a topological order
*/
public List<Node<T>> getTopologicalOrder(Comparator<? super T> edgeOrder) {
- CollectingVisitor<T> visitor = new CollectingVisitor<T>();
- DFS<T> visitation = new DFS<T>(DFS.Order.POSTORDER, edgeOrder, false);
+ CollectingVisitor<T> visitor = new CollectingVisitor<>();
+ DFS<T> visitation = new DFS<>(DFS.Order.POSTORDER, edgeOrder, false);
visitor.beginVisit();
for (Node<T> node : getNodes(edgeOrder)) {
visitation.visit(node, visitor);
@@ -658,7 +644,7 @@
* Returns the nodes of an acyclic graph in post-order.
*/
public List<Node<T>> getPostorder() {
- CollectingVisitor<T> collectingVisitor = new CollectingVisitor<T>();
+ CollectingVisitor<T> collectingVisitor = new CollectingVisitor<>();
visitPostorder(collectingVisitor);
return collectingVisitor.getVisitedNodes();
}
@@ -679,7 +665,7 @@
// This method is intentionally not static, to permit future expansion.
DFS<T> dfs = new DFS<T>(DFS.Order.PREORDER, false);
for (Node<T> n : startNodes) {
- dfs.visit(n, new AbstractGraphVisitor<T>());
+ dfs.visit(n, new AbstractGraphVisitor<>());
}
return dfs.getMarked();
}
@@ -700,7 +686,7 @@
// This method is intentionally not static, to permit future expansion.
DFS<T> dfs = new DFS<T>(DFS.Order.PREORDER, true);
for (Node<T> n : startNodes) {
- dfs.visit(n, new AbstractGraphVisitor<T>());
+ dfs.visit(n, new AbstractGraphVisitor<>());
}
return dfs.getMarked();
}
@@ -873,6 +859,7 @@
}
}
+ @FunctionalInterface
private interface NodeSetReceiver<T> {
void accept(Set<Node<T>> nodes);
}
@@ -1025,7 +1012,7 @@
DFS.Order order,
boolean transpose,
Iterable<Node<T>> startNodes) {
- DFS<T> visitation = new DFS<T>(order, transpose);
+ DFS<T> visitation = new DFS<>(order, transpose);
visitor.beginVisit();
for (Node<T> node: startNodes) {
visitation.visit(node, visitor);
@@ -1045,12 +1032,9 @@
*/
private static <T> Collection<Node<T>> maybeOrderCollection(
Collection<Node<T>> unordered, @Nullable final Comparator<? super T> comparator) {
- if (comparator == null) {
- return unordered;
- }
- List<Node<T>> result = new ArrayList<>(unordered);
- Collections.sort(result, makeNodeComparator(comparator));
- return result;
+ return comparator == null
+ ? unordered
+ : ImmutableList.sortedCopyOf(makeNodeComparator(comparator), unordered);
}
private void visitNodesBeforeEdges(
diff --git a/src/main/java/com/google/devtools/build/lib/graph/LabelSerializer.java b/src/main/java/com/google/devtools/build/lib/graph/LabelSerializer.java
index b64360b..6554560 100644
--- a/src/main/java/com/google/devtools/build/lib/graph/LabelSerializer.java
+++ b/src/main/java/com/google/devtools/build/lib/graph/LabelSerializer.java
@@ -15,10 +15,8 @@
package com.google.devtools.build.lib.graph;
-/**
- * <p> An interface for specifying a user-defined serialization of graph node
- * labels as strings. </p>
- */
+/** An interface for specifying a user-defined serialization of graph node labels as strings. */
+@FunctionalInterface
public interface LabelSerializer<T> {
/**
diff --git a/src/main/java/com/google/devtools/build/lib/graph/Node.java b/src/main/java/com/google/devtools/build/lib/graph/Node.java
index 87f05d7..5079ed4 100644
--- a/src/main/java/com/google/devtools/build/lib/graph/Node.java
+++ b/src/main/java/com/google/devtools/build/lib/graph/Node.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.graph;
import com.google.common.collect.Sets;
-
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -86,11 +85,7 @@
* Returns a duplicate-free collection of the nodes that this node links to.
*/
public Collection<Node<T>> getSuccessors() {
- if (succs == null) {
- return Collections.emptyList();
- } else {
- return Collections.unmodifiableCollection(succs);
- }
+ return succs == null ? Collections.emptyList() : Collections.unmodifiableCollection(succs);
}
/**
@@ -122,11 +117,7 @@
* this node.
*/
public Collection<Node<T>> getPredecessors() {
- if (preds == null) {
- return Collections.emptyList();
- } else {
- return Collections.unmodifiableCollection(preds);
- }
+ return preds == null ? Collections.emptyList() : Collections.unmodifiableCollection(preds);
}
/**
diff --git a/src/main/java/com/google/devtools/common/options/ArgsPreProcessor.java b/src/main/java/com/google/devtools/common/options/ArgsPreProcessor.java
index 516ff1f..00e8033 100644
--- a/src/main/java/com/google/devtools/common/options/ArgsPreProcessor.java
+++ b/src/main/java/com/google/devtools/common/options/ArgsPreProcessor.java
@@ -16,6 +16,7 @@
import java.util.List;
/** Defines a preprocessing service for the "args" string list that is executed before parsing. */
+@FunctionalInterface
interface ArgsPreProcessor {
List<String> preProcess(List<String> args) throws OptionsParsingException;
}
diff --git a/src/main/java/com/google/devtools/common/options/CommandNameCache.java b/src/main/java/com/google/devtools/common/options/CommandNameCache.java
index 13c85b7..622efff 100644
--- a/src/main/java/com/google/devtools/common/options/CommandNameCache.java
+++ b/src/main/java/com/google/devtools/common/options/CommandNameCache.java
@@ -16,6 +16,7 @@
import com.google.common.collect.ImmutableSet;
/** Cache mapping a command to the names of all commands it inherits from, including itself. */
+@FunctionalInterface
public interface CommandNameCache {
/** Class that exists only to expose a static instance variable that can be set and retrieved. */
class CommandNameCacheInstance implements CommandNameCache {
diff --git a/src/main/java/com/google/devtools/common/options/Converters.java b/src/main/java/com/google/devtools/common/options/Converters.java
index aacc64b..cf26e71 100644
--- a/src/main/java/com/google/devtools/common/options/Converters.java
+++ b/src/main/java/com/google/devtools/common/options/Converters.java
@@ -275,9 +275,7 @@
@Override
public List<String> convert(String input) {
- return input.equals("")
- ? ImmutableList.<String>of()
- : ImmutableList.copyOf(splitter.split(input));
+ return input.isEmpty() ? ImmutableList.of() : ImmutableList.copyOf(splitter.split(input));
}
@Override
@@ -311,9 +309,7 @@
try {
int level = Integer.parseInt(input);
return LEVELS[level];
- } catch (NumberFormatException e) {
- throw new OptionsParsingException("Not a log level: " + input);
- } catch (ArrayIndexOutOfBoundsException e) {
+ } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {
throw new OptionsParsingException("Not a log level: " + input);
}
}
diff --git a/src/main/java/com/google/devtools/common/options/ExpansionFunction.java b/src/main/java/com/google/devtools/common/options/ExpansionFunction.java
index 1031125..09119b2 100644
--- a/src/main/java/com/google/devtools/common/options/ExpansionFunction.java
+++ b/src/main/java/com/google/devtools/common/options/ExpansionFunction.java
@@ -19,6 +19,7 @@
* A function from an option parser's static setup (what flags it knows about) to a list of
* expansion Strings to use for one of its options.
*/
+@FunctionalInterface
public interface ExpansionFunction {
/**
diff --git a/src/main/java/com/google/devtools/common/options/InvocationPolicyEnforcer.java b/src/main/java/com/google/devtools/common/options/InvocationPolicyEnforcer.java
index 9d8c13a..a66d93e 100644
--- a/src/main/java/com/google/devtools/common/options/InvocationPolicyEnforcer.java
+++ b/src/main/java/com/google/devtools/common/options/InvocationPolicyEnforcer.java
@@ -19,7 +19,6 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Multimap;
-import com.google.common.collect.Sets;
import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.AllowValues;
import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.DisallowValues;
import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.FlagPolicy;
@@ -30,9 +29,9 @@
import com.google.devtools.common.options.OptionsParser.OptionDescription;
import com.google.devtools.common.options.OptionsParser.OptionValueDescription;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -197,7 +196,7 @@
ImmutableSet<String> commandAndParentCommands =
command == null
- ? ImmutableSet.<String>of()
+ ? ImmutableSet.of()
: CommandNameCache.CommandNameCacheInstance.INSTANCE.get(command);
// Expand all policies to transfer policies on expansion flags to policies on the child flags.
@@ -242,8 +241,7 @@
String expansionFlagName = expansionPolicy.getFlagName();
- ImmutableList.Builder<OptionValueDescription> resultsBuilder =
- ImmutableList.<OptionValueDescription>builder();
+ ImmutableList.Builder<OptionValueDescription> resultsBuilder = ImmutableList.builder();
switch (expansionPolicy.getOperationCase()) {
case SET_VALUE:
{
@@ -307,7 +305,7 @@
ImmutableList<OptionValueDescription> expansions =
getExpansionsFromFlagPolicy(originalPolicy, originalOptionDescription, parser);
- ImmutableList.Builder<OptionValueDescription> subflagBuilder = new ImmutableList.Builder<>();
+ ImmutableList.Builder<OptionValueDescription> subflagBuilder = ImmutableList.builder();
ImmutableList<OptionValueDescription> subflags =
subflagBuilder
.addAll(originalOptionDescription.getImplicitRequirements())
@@ -640,7 +638,7 @@
// of string comparison. For example, "--foo=0", "--foo=false", "--nofoo", and "-f-"
// (if the option has an abbreviation) are all equal for boolean flags. Plus converters
// can be arbitrarily complex.
- Set<Object> convertedPolicyValues = Sets.newHashSet();
+ Set<Object> convertedPolicyValues = new HashSet<>();
for (String value : policyValues) {
Object convertedValue = optionDescription.getConverter().convert(value);
// Some converters return lists, and if the flag is a repeatable flag, the items in the
@@ -807,7 +805,7 @@
parser.parseWithSourceFunction(
OptionPriority.INVOCATION_POLICY,
INVOCATION_POLICY_SOURCE,
- Arrays.asList(String.format("--%s=%s", flagName, flagValue)));
+ ImmutableList.of(String.format("--%s=%s", flagName, flagValue)));
}
}
diff --git a/src/main/java/com/google/devtools/common/options/Options.java b/src/main/java/com/google/devtools/common/options/Options.java
index 88cf5f8..c52e395 100644
--- a/src/main/java/com/google/devtools/common/options/Options.java
+++ b/src/main/java/com/google/devtools/common/options/Options.java
@@ -52,8 +52,7 @@
OptionsParser parser = OptionsParser.newOptionsParser(optionsClass);
parser.parse(OptionPriority.COMMAND_LINE, null, Arrays.asList(args));
List<String> remainingArgs = parser.getResidue();
- return new Options<O>(parser.getOptions(optionsClass),
- remainingArgs.toArray(new String[0]));
+ return new Options<>(parser.getOptions(optionsClass), remainingArgs.toArray(new String[0]));
}
/**
diff --git a/src/main/java/com/google/devtools/common/options/OptionsData.java b/src/main/java/com/google/devtools/common/options/OptionsData.java
index 48f47ff..c5fd9a9 100644
--- a/src/main/java/com/google/devtools/common/options/OptionsData.java
+++ b/src/main/java/com/google/devtools/common/options/OptionsData.java
@@ -125,8 +125,7 @@
IsolatedOptionsData isolatedData = IsolatedOptionsData.from(classes);
// All that's left is to compute expansions.
- ImmutableMap.Builder<Field, ExpansionData> expansionDataBuilder =
- ImmutableMap.<Field, ExpansionData>builder();
+ ImmutableMap.Builder<Field, ExpansionData> expansionDataBuilder = ImmutableMap.builder();
for (Map.Entry<String, Field> entry : isolatedData.getAllNamedFields()) {
Field field = entry.getValue();
Option annotation = field.getAnnotation(Option.class);
@@ -154,7 +153,7 @@
throw new AssertionError(e);
}
- ImmutableList<String> staticExpansion = null;
+ ImmutableList<String> staticExpansion;
try {
staticExpansion = instance.getExpansion(new ExpansionContext(isolatedData, field, null));
Preconditions.checkState(
diff --git a/src/main/java/com/google/devtools/common/options/OptionsParser.java b/src/main/java/com/google/devtools/common/options/OptionsParser.java
index b507785..d4779fe 100644
--- a/src/main/java/com/google/devtools/common/options/OptionsParser.java
+++ b/src/main/java/com/google/devtools/common/options/OptionsParser.java
@@ -14,9 +14,12 @@
package com.google.devtools.common.options;
+import static java.util.Comparator.comparing;
+
import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ListMultimap;
import com.google.common.escape.Escaper;
import java.lang.reflect.Constructor;
@@ -25,8 +28,6 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
@@ -133,7 +134,7 @@
*/
static OptionsData getOptionsDataInternal(Class<? extends OptionsBase> optionsClass)
throws ConstructionException {
- return getOptionsDataInternal(ImmutableList.<Class<? extends OptionsBase>>of(optionsClass));
+ return getOptionsDataInternal(ImmutableList.of(optionsClass));
}
/**
@@ -157,8 +158,7 @@
public static OptionsParser newOptionsParser(
Iterable<? extends Class<? extends OptionsBase>> optionsClasses)
throws ConstructionException {
- return newOptionsParser(
- getOptionsDataInternal(ImmutableList.<Class<? extends OptionsBase>>copyOf(optionsClasses)));
+ return newOptionsParser(getOptionsDataInternal(ImmutableList.copyOf(optionsClasses)));
}
/**
@@ -212,8 +212,7 @@
public void parseAndExitUponError(OptionPriority priority, String source, String[] args) {
for (String arg : args) {
if (arg.equals("--help")) {
- System.out.println(describeOptions(Collections.<String, String>emptyMap(),
- HelpVerbosity.LONG));
+ System.out.println(describeOptions(ImmutableMap.of(), HelpVerbosity.LONG));
System.exit(0);
}
}
@@ -540,7 +539,7 @@
for (Class<? extends OptionsBase> optionsClass : data.getOptionsClasses()) {
allFields.addAll(data.getFieldsForClass(optionsClass));
}
- Collections.sort(allFields, OptionsUsage.BY_CATEGORY);
+ allFields.sort(OptionsUsage.BY_CATEGORY);
String prevCategory = null;
for (Field optionField : allFields) {
@@ -583,7 +582,7 @@
for (Class<? extends OptionsBase> optionsClass : data.getOptionsClasses()) {
allFields.addAll(data.getFieldsForClass(optionsClass));
}
- Collections.sort(allFields, OptionsUsage.BY_CATEGORY);
+ allFields.sort(OptionsUsage.BY_CATEGORY);
String prevCategory = null;
for (Field optionField : allFields) {
@@ -621,26 +620,17 @@
OptionsData data = impl.getOptionsData();
StringBuilder desc = new StringBuilder();
- // List all options
- List<Field> allFields = new ArrayList<>();
- for (Class<? extends OptionsBase> optionsClass : data.getOptionsClasses()) {
- allFields.addAll(data.getFieldsForClass(optionsClass));
- }
- // Sort field for deterministic ordering
- Collections.sort(allFields, new Comparator<Field>() {
- @Override
- public int compare(Field f1, Field f2) {
- String name1 = f1.getAnnotation(Option.class).name();
- String name2 = f2.getAnnotation(Option.class).name();
- return name1.compareTo(name2);
- }
- });
- for (Field optionField : allFields) {
- Option option = optionField.getAnnotation(Option.class);
- if (option.documentationCategory() != OptionDocumentationCategory.UNDOCUMENTED) {
- OptionsUsage.getCompletion(optionField, desc);
- }
- }
+ data.getOptionsClasses()
+ // List all options
+ .stream()
+ .flatMap(optionsClass -> data.getFieldsForClass(optionsClass).stream())
+ // Sort field for deterministic ordering
+ .sorted(comparing(optionField -> optionField.getAnnotation(Option.class).name()))
+ .filter(
+ optionField ->
+ optionField.getAnnotation(Option.class).documentationCategory()
+ != OptionDocumentationCategory.UNDOCUMENTED)
+ .forEach(optionField -> OptionsUsage.getCompletion(optionField, desc));
return desc.toString();
}
@@ -744,8 +734,7 @@
*/
public OptionValueDescription clearValue(String optionName)
throws OptionsParsingException {
- OptionValueDescription clearedValue = impl.clearValue(optionName);
- return clearedValue;
+ return impl.clearValue(optionName);
}
@Override
diff --git a/src/main/java/com/google/devtools/common/options/OptionsParserImpl.java b/src/main/java/com/google/devtools/common/options/OptionsParserImpl.java
index d49d5c4..5ebd4a5 100644
--- a/src/main/java/com/google/devtools/common/options/OptionsParserImpl.java
+++ b/src/main/java/com/google/devtools/common/options/OptionsParserImpl.java
@@ -14,15 +14,15 @@
package com.google.devtools.common.options;
+import static java.util.Comparator.comparing;
+import static java.util.stream.Collectors.toCollection;
+
import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
-import com.google.common.base.Predicate;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
import com.google.common.collect.Iterators;
import com.google.common.collect.LinkedHashMultimap;
-import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
import com.google.devtools.common.options.OptionsParser.OptionDescription;
import com.google.devtools.common.options.OptionsParser.OptionValueDescription;
@@ -31,8 +31,6 @@
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
@@ -121,74 +119,50 @@
* Implements {@link OptionsParser#asListOfUnparsedOptions()}.
*/
List<UnparsedOptionValueDescription> asListOfUnparsedOptions() {
- List<UnparsedOptionValueDescription> result = Lists.newArrayList(unparsedValues);
- // It is vital that this sort is stable so that options on the same priority are not reordered.
- Collections.sort(result, new Comparator<UnparsedOptionValueDescription>() {
- @Override
- public int compare(UnparsedOptionValueDescription o1,
- UnparsedOptionValueDescription o2) {
- return o1.getPriority().compareTo(o2.getPriority());
- }
- });
- return result;
+ return unparsedValues
+ .stream()
+ // It is vital that this sort is stable so that options on the same priority are not
+ // reordered.
+ .sorted(comparing(UnparsedOptionValueDescription::getPriority))
+ .collect(toCollection(ArrayList::new));
}
/**
* Implements {@link OptionsParser#asListOfExplicitOptions()}.
*/
List<UnparsedOptionValueDescription> asListOfExplicitOptions() {
- List<UnparsedOptionValueDescription> result = Lists.newArrayList(Iterables.filter(
- unparsedValues,
- new Predicate<UnparsedOptionValueDescription>() {
- @Override
- public boolean apply(UnparsedOptionValueDescription input) {
- return input.isExplicit();
- }
- }));
- // It is vital that this sort is stable so that options on the same priority are not reordered.
- Collections.sort(result, new Comparator<UnparsedOptionValueDescription>() {
- @Override
- public int compare(UnparsedOptionValueDescription o1,
- UnparsedOptionValueDescription o2) {
- return o1.getPriority().compareTo(o2.getPriority());
- }
- });
- return result;
+ return unparsedValues
+ .stream()
+ .filter(UnparsedOptionValueDescription::isExplicit)
+ // It is vital that this sort is stable so that options on the same priority are not
+ // reordered.
+ .sorted(comparing(UnparsedOptionValueDescription::getPriority))
+ .collect(toCollection(ArrayList::new));
}
/**
* Implements {@link OptionsParser#canonicalize}.
*/
List<String> asCanonicalizedList() {
-
- List<UnparsedOptionValueDescription> processed = Lists.newArrayList(
- canonicalizeValues.values());
- // Sort implicit requirement options to the end, keeping their existing order, and sort the
- // other options alphabetically.
- Collections.sort(processed, new Comparator<UnparsedOptionValueDescription>() {
- @Override
- public int compare(UnparsedOptionValueDescription o1, UnparsedOptionValueDescription o2) {
- if (o1.isImplicitRequirement()) {
- return o2.isImplicitRequirement() ? 0 : 1;
- }
- if (o2.isImplicitRequirement()) {
- return -1;
- }
- return o1.getName().compareTo(o2.getName());
- }
- });
-
- List<String> result = new ArrayList<>();
- for (UnparsedOptionValueDescription value : processed) {
-
- // Ignore expansion options.
- if (value.isExpansion()) {
- continue;
- }
-
- result.add("--" + value.getName() + "=" + value.getUnparsedValue());
- }
- return result;
+ return canonicalizeValues
+ .values()
+ .stream()
+ // Sort implicit requirement options to the end, keeping their existing order, and sort
+ // the other options alphabetically.
+ .sorted(
+ (v1, v2) -> {
+ if (v1.isImplicitRequirement()) {
+ return v2.isImplicitRequirement() ? 0 : 1;
+ }
+ if (v2.isImplicitRequirement()) {
+ return -1;
+ }
+ return v1.getName().compareTo(v2.getName());
+ })
+ // Ignore expansion options.
+ .filter(value -> !value.isExpansion())
+ .map(value -> "--" + value.getName() + "=" + value.getUnparsedValue())
+ .collect(toCollection(ArrayList::new));
}
/**
diff --git a/src/main/java/com/google/devtools/common/options/OptionsUsage.java b/src/main/java/com/google/devtools/common/options/OptionsUsage.java
index 5f7c48a..6971e27 100644
--- a/src/main/java/com/google/devtools/common/options/OptionsUsage.java
+++ b/src/main/java/com/google/devtools/common/options/OptionsUsage.java
@@ -21,7 +21,6 @@
import java.lang.reflect.Field;
import java.text.BreakIterator;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.annotation.Nullable;
@@ -43,7 +42,7 @@
static void getUsage(Class<? extends OptionsBase> optionsClass, StringBuilder usage) {
OptionsData data = OptionsParser.getOptionsDataInternal(optionsClass);
List<Field> optionFields = new ArrayList<>(data.getFieldsForClass(optionsClass));
- Collections.sort(optionFields, BY_NAME);
+ optionFields.sort(BY_NAME);
for (Field optionField : optionFields) {
getUsage(optionField, usage, OptionsParser.HelpVerbosity.LONG, null);
}
@@ -119,7 +118,7 @@
String flagName = getFlagName(optionField);
String typeDescription = getTypeDescription(optionField);
Option annotation = optionField.getAnnotation(Option.class);
- usage.append(" --" + flagName);
+ usage.append(" --").append(flagName);
if (helpVerbosity == OptionsParser.HelpVerbosity.SHORT) { // just the name
usage.append('\n');
return;
@@ -128,7 +127,7 @@
usage.append(" [-").append(annotation.abbrev()).append(']');
}
if (!typeDescription.equals("")) {
- usage.append(" (" + typeDescription + "; ");
+ usage.append(" (").append(typeDescription).append("; ");
if (annotation.allowMultiple()) {
usage.append("may be used multiple times");
} else {
@@ -137,7 +136,7 @@
if (OptionsParserImpl.isSpecialNullDefault(defaultValueString, optionField)) {
usage.append("default: see description");
} else {
- usage.append("default: \"" + defaultValueString + "\"");
+ usage.append("default: \"").append(defaultValueString).append("\"");
}
}
usage.append(")");
diff --git a/src/main/java/com/google/devtools/common/options/ParamsFilePreProcessor.java b/src/main/java/com/google/devtools/common/options/ParamsFilePreProcessor.java
index bd1c5a9..30b67ed 100644
--- a/src/main/java/com/google/devtools/common/options/ParamsFilePreProcessor.java
+++ b/src/main/java/com/google/devtools/common/options/ParamsFilePreProcessor.java
@@ -152,11 +152,7 @@
}
// check to see if the current position is escaped
- if (lastChar == '\\') {
- escaped = true;
- } else {
- escaped = false;
- }
+ escaped = (lastChar == '\\');
if (!escaped && current == '\'') {
singleQuoteStart = singleQuoteStart == -1 ? readerPosition : -1;
diff --git a/src/main/java/com/google/devtools/common/options/testing/ConverterTester.java b/src/main/java/com/google/devtools/common/options/testing/ConverterTester.java
index 7d0b8d3..86f87f3 100644
--- a/src/main/java/com/google/devtools/common/options/testing/ConverterTester.java
+++ b/src/main/java/com/google/devtools/common/options/testing/ConverterTester.java
@@ -88,7 +88,7 @@
* @see EqualsTester#addEqualityGroup
*/
public ConverterTester addEqualityGroup(String... inputs) {
- ImmutableList.Builder<WrappedItem> wrapped = new ImmutableList.Builder<>();
+ ImmutableList.Builder<WrappedItem> wrapped = ImmutableList.builder();
ImmutableList<String> inputList = ImmutableList.copyOf(inputs);
inputLists.add(inputList);
for (String input : inputList) {
diff --git a/src/main/java/com/google/devtools/common/options/testing/ConverterTesterMap.java b/src/main/java/com/google/devtools/common/options/testing/ConverterTesterMap.java
index afa0231..cf028b9 100644
--- a/src/main/java/com/google/devtools/common/options/testing/ConverterTesterMap.java
+++ b/src/main/java/com/google/devtools/common/options/testing/ConverterTesterMap.java
@@ -44,7 +44,7 @@
private final ImmutableMap.Builder<Class<? extends Converter<?>>, ConverterTester> delegate;
public Builder() {
- this.delegate = new ImmutableMap.Builder<>();
+ this.delegate = ImmutableMap.builder();
}
/**
@@ -71,9 +71,7 @@
* permitted; duplicates will cause {@link #build} to fail.
*/
public Builder addAll(Iterable<ConverterTester> items) {
- for (ConverterTester item : items) {
- add(item);
- }
+ items.forEach(this::add);
return this;
}
diff --git a/src/main/java/com/google/devtools/common/options/testing/OptionsTester.java b/src/main/java/com/google/devtools/common/options/testing/OptionsTester.java
index fa58462..9ecfdc5 100644
--- a/src/main/java/com/google/devtools/common/options/testing/OptionsTester.java
+++ b/src/main/java/com/google/devtools/common/options/testing/OptionsTester.java
@@ -38,7 +38,7 @@
}
private static ImmutableList<Field> getAllFields(Class<? extends OptionsBase> optionsClass) {
- ImmutableList.Builder<Field> builder = new ImmutableList.Builder<>();
+ ImmutableList.Builder<Field> builder = ImmutableList.builder();
Class<? extends OptionsBase> current = optionsClass;
while (!OptionsBase.class.equals(current)) {
builder.add(current.getDeclaredFields());
@@ -103,7 +103,7 @@
*/
public OptionsTester testAllDefaultValuesTestedBy(ConverterTesterMap testers) {
ImmutableListMultimap.Builder<Class<? extends Converter<?>>, Field> converterClassesBuilder =
- new ImmutableListMultimap.Builder<>();
+ ImmutableListMultimap.builder();
for (Field field : getAllFields(optionsClass)) {
Option option = field.getAnnotation(Option.class);
if (option != null && !Converter.class.equals(option.converter())) {
diff --git a/src/main/java/com/google/devtools/skylark/Skylark.java b/src/main/java/com/google/devtools/skylark/Skylark.java
index 9f1181e..3e4d77e 100644
--- a/src/main/java/com/google/devtools/skylark/Skylark.java
+++ b/src/main/java/com/google/devtools/skylark/Skylark.java
@@ -105,7 +105,7 @@
System.err.println(e.print());
return 1;
} catch (Exception e) {
- System.err.println(e);
+ e.printStackTrace(System.err);
return 1;
}
}