diff options
author | 2015-03-05 14:47:37 +0000 | |
---|---|---|
committer | 2015-03-05 18:31:47 +0000 | |
commit | 07dba941e21619830adcbcae10c5942cf3343f26 (patch) | |
tree | c0e7b1250bf547b20398a0c3a437864b7b915383 /src/main/java/com/google | |
parent | a34d5071784ff51f68714b61f4100c35f1e4db3a (diff) |
Some cleanup changes.
--
MOS_MIGRATED_REVID=87821306
Diffstat (limited to 'src/main/java/com/google')
134 files changed, 356 insertions, 418 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionStatusReporter.java b/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionStatusReporter.java index 34aadc4a33..f88f1377c7 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionStatusReporter.java +++ b/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionStatusReporter.java @@ -146,7 +146,7 @@ public final class ActionExecutionStatusReporter { actions.add(Pair.of(entry.getValue().second, entry.getKey())); } } - if (actions.size() == 0) { + if (actions.isEmpty()) { return; } Collections.sort(actions, Pair.<Long, ActionMetadata>compareByFirst()); @@ -183,7 +183,7 @@ public final class ActionExecutionStatusReporter { long currentTime = clock.nanoTime(); // A tree is just as fast as HashSet for small data sets. - Set<String> statuses = new TreeSet<String>(); + Set<String> statuses = new TreeSet<>(); for (Map.Entry<ActionMetadata, Pair<String, Long>> entry : statusMap.entrySet()) { statuses.add(entry.getValue().first); } @@ -200,7 +200,7 @@ public final class ActionExecutionStatusReporter { public void showCurrentlyExecutingActions(String progressPercentageMessage) { // Defensive copy to ensure thread safety. Map<ActionMetadata, Pair<String, Long>> statusMap = new HashMap<>(actionStatus); - if (statusMap.size() > 0) { + if (!statusMap.isEmpty()) { eventHandler.handle( Event.progress(progressPercentageMessage + getExecutionStatusMessage(statusMap))); } @@ -213,8 +213,8 @@ public final class ActionExecutionStatusReporter { void warnAboutCurrentlyExecutingActions() { // Defensive copy to ensure thread safety. Map<ActionMetadata, Pair<String, Long>> statusMap = new HashMap<>(actionStatus); - if (statusMap.size() == 0) { - // There are no tasks in the queue so there is nothing to report. + if (statusMap.isEmpty()) { + // There are no tasks in the queue so there is nothing to report. eventHandler.handle(Event.warn("There are no active jobs - stopping the build")); return; } @@ -225,7 +225,7 @@ public final class ActionExecutionStatusReporter { iterator.remove(); } } - if (statusMap.size() > 0) { + if (!statusMap.isEmpty()) { eventHandler.handle(Event.warn(getExecutionStatusMessage(statusMap) + "\nBuild will be stopped after these tasks terminate")); } else { diff --git a/src/main/java/com/google/devtools/build/lib/actions/MapBasedActionGraph.java b/src/main/java/com/google/devtools/build/lib/actions/MapBasedActionGraph.java index 2788f2f307..d36c6afd55 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/MapBasedActionGraph.java +++ b/src/main/java/com/google/devtools/build/lib/actions/MapBasedActionGraph.java @@ -24,9 +24,8 @@ import javax.annotation.concurrent.ThreadSafe; */ @ThreadSafe public final class MapBasedActionGraph implements MutableActionGraph { - private final ConcurrentMultimapWithHeadElement<Artifact, Action> generatingActionMap = - new ConcurrentMultimapWithHeadElement<Artifact, Action>(); + new ConcurrentMultimapWithHeadElement<>(); @Override @Nullable diff --git a/src/main/java/com/google/devtools/build/lib/actions/ResourceManager.java b/src/main/java/com/google/devtools/build/lib/actions/ResourceManager.java index db6ed118f6..8e6220c143 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/ResourceManager.java +++ b/src/main/java/com/google/devtools/build/lib/actions/ResourceManager.java @@ -279,7 +279,7 @@ public class ResourceManager { */ public synchronized boolean inUse() { return usedCpu != 0.0 || usedRam != 0.0 || usedIo != 0.0 || usedLocalTestCount != 0 - || requestList.size() > 0; + || !requestList.isEmpty(); } @@ -374,7 +374,7 @@ public class ResourceManager { if (usedIo < epsilon) { usedIo = 0; } - if (requestList.size() > 0) { + if (!requestList.isEmpty()) { processWaitingThreads(); return true; } diff --git a/src/main/java/com/google/devtools/build/lib/actions/Root.java b/src/main/java/com/google/devtools/build/lib/actions/Root.java index 284b85f0a4..55619eb368 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/Root.java +++ b/src/main/java/com/google/devtools/build/lib/actions/Root.java @@ -158,6 +158,6 @@ public final class Root implements Comparable<Root>, Serializable { @Override public String toString() { - return path.toString() + (isSourceRoot() ? "[source]" : "[derived]"); + return path + (isSourceRoot() ? "[source]" : "[derived]"); } } diff --git a/src/main/java/com/google/devtools/build/lib/actions/cache/CompactPersistentActionCache.java b/src/main/java/com/google/devtools/build/lib/actions/cache/CompactPersistentActionCache.java index 24eb42ead0..a4406d7e43 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/cache/CompactPersistentActionCache.java +++ b/src/main/java/com/google/devtools/build/lib/actions/cache/CompactPersistentActionCache.java @@ -288,7 +288,7 @@ public class CompactPersistentActionCache implements ActionCache { try { content = decode(indexer, entry.getValue()).toString(); } catch (IOException e) { - content = e.toString() + "\n"; + content = e + "\n"; } builder.append("-> ").append(indexer.getStringForIndex(entry.getKey())).append("\n") .append(content).append(" packed_len = ").append(entry.getValue().length).append("\n"); @@ -302,7 +302,7 @@ public class CompactPersistentActionCache implements ActionCache { @Override public synchronized void dump(PrintStream out) { out.println("String indexer content:\n"); - out.println(indexer.toString()); + out.println(indexer); out.println("Action cache (" + map.size() + " records):\n"); for (Map.Entry<Integer, byte[]> entry: map.entrySet()) { if (entry.getKey() == VALIDATION_KEY) { continue; } @@ -310,7 +310,7 @@ public class CompactPersistentActionCache implements ActionCache { try { content = CompactPersistentActionCache.decode(indexer, entry.getValue()).toString(); } catch (IOException e) { - content = e.toString() + "\n"; + content = e + "\n"; } out.println(entry.getKey() + ", " + indexer.getStringForIndex(entry.getKey()) + ":\n" + content + "\n packed_len = " + entry.getValue().length + "\n"); diff --git a/src/main/java/com/google/devtools/build/lib/actions/cache/Digest.java b/src/main/java/com/google/devtools/build/lib/actions/cache/Digest.java index f278507ddf..5c9cc16b3c 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/cache/Digest.java +++ b/src/main/java/com/google/devtools/build/lib/actions/cache/Digest.java @@ -49,7 +49,7 @@ public class Digest { @VisibleForTesting Digest(byte[] digest) { Preconditions.checkState(digest.length == MD5_SIZE); - this.digest = Arrays.copyOf(digest, digest.length); + this.digest = digest.clone(); } /** diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java index e574978951..0650a1223d 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java @@ -106,6 +106,6 @@ public abstract class AbstractConfiguredTarget @Override public ImmutableCollection<String> getKeys() { - return ImmutableList.<String>builder().add("label").add("files").build(); + return ImmutableList.of("label", "files"); } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java index 2e4c251935..37f06c3bd4 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java @@ -137,10 +137,10 @@ public final class AnalysisUtils { */ public static <T extends TransitiveInfoProvider> void checkProvider(Class<T> clazz) { if (!clazz.isInterface()) { - Preconditions.checkArgument(Modifier.isFinal(clazz.getModifiers()), - clazz.getName() + " has to be final"); + Preconditions.checkArgument( + Modifier.isFinal(clazz.getModifiers()), "%s has to be final", clazz.getName()); Preconditions.checkArgument(clazz.isAnnotationPresent(Immutable.class), - clazz.getName() + " has to be tagged with @Immutable"); + "%s has to be tagged with @Immutable", clazz.getName()); } } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java index a84bb94c19..5bf199de5d 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java @@ -420,13 +420,8 @@ public class BuildView { try { ConfiguredTarget ct = getConfiguredTarget(label, ctg.getConfiguration()); keys.add(Preconditions.checkNotNull(ct.getProvider(ConfigMatchingProvider.class))); - } catch (NoSuchPackageException e) { - // All lookups should succeed because we should not be looking up any targets in error. - throw new IllegalStateException(e); - } catch (NoSuchTargetException e) { - // All lookups should succeed because we should not be looking up any targets in error. - throw new IllegalStateException(e); - } catch (NoSuchConfiguredTargetException e) { + } catch ( + NoSuchPackageException | NoSuchTargetException | NoSuchConfiguredTargetException e) { // All lookups should succeed because we should not be looking up any targets in error. throw new IllegalStateException(e); } @@ -781,7 +776,7 @@ public class BuildView { for (ExtraArtifactSet set : builder.build()) { boolean filterMatches = filter == null || filter.isIncluded(set.getLabel().toString()); if (filterMatches) { - Iterables.addAll(artifactsToBuild, set.getArtifacts()); + artifactsToBuild.addAll(set.getArtifacts()); } } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java index bc45ba35cd..921e4e7164 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java @@ -247,9 +247,7 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment { public void registerAction(Action... actions) { Preconditions.checkState(enabled); if (allowRegisteringActions) { - for (Action action : actions) { - this.actions.add(action); - } + Collections.addAll(this.actions, actions); } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java b/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java index 416d92e1f3..abc9c22f04 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java @@ -122,7 +122,7 @@ public final class CommandHelper { } } else { // Map all depArtifacts to the respective label using the multimaps. - Iterables.addAll(mapGet(tempLabelMap, label), files); + mapGet(tempLabelMap, label).addAll(files); } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java index d265533669..92687d6e65 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java @@ -255,7 +255,7 @@ public final class ConfiguredTargetFactory { names.add(fragment.getSimpleName()); } result.append("all of ["); - result.append(Joiner.on(",").join(names)); + Joiner.on(",").appendTo(result, names); result.append("], but these were all disabled"); return result.toString(); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java index 64cddb1b7f..b7bd55e3f3 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java @@ -148,7 +148,7 @@ public abstract class DependencyResolver { Preconditions.checkNotNull(config); visitTargetVisibility(node, outgoingEdges.get(null)); Rule rule = ((OutputFile) target).getGeneratingRule(); - outgoingEdges.get(null).add(new Dependency(rule.getLabel(), config)); + outgoingEdges.put(null, new Dependency(rule.getLabel(), config)); } else if (target instanceof InputFile) { visitTargetVisibility(node, outgoingEdges.get(null)); } else if (target instanceof EnvironmentGroup) { @@ -508,8 +508,9 @@ public abstract class DependencyResolver { Iterable<BuildConfiguration> toConfigurations = config.evaluateTransition( rule, attribute, toTarget); for (BuildConfiguration toConfiguration : toConfigurations) { - outgoingEdges.get(entry.getKey()).add(new Dependency( - label, toConfiguration, requiredAspects(aspect, attribute, toTarget))); + outgoingEdges.put( + entry.getKey(), + new Dependency(label, toConfiguration, requiredAspects(aspect, attribute, toTarget))); } } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/LocationExpander.java b/src/main/java/com/google/devtools/build/lib/analysis/LocationExpander.java index 8feb28ee14..ae70699c13 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/LocationExpander.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/LocationExpander.java @@ -110,7 +110,7 @@ public class LocationExpander { } if (attrValue.charAt(start + scannedLength) != ' ') { - result.append(attrValue.substring(restart, start + scannedLength)); + result.append(attrValue, restart, start + scannedLength); restart = start + scannedLength; continue; } @@ -149,7 +149,7 @@ public class LocationExpander { return attrValue; } - result.append(attrValue.substring(restart, start)); + result.append(attrValue, restart, start); if (multiple) { Collections.sort(paths); Joiner.on(' ').appendTo(result, paths); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/PrerequisiteArtifacts.java b/src/main/java/com/google/devtools/build/lib/analysis/PrerequisiteArtifacts.java index 60c78d5760..7594f4bbf2 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/PrerequisiteArtifacts.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/PrerequisiteArtifacts.java @@ -71,7 +71,7 @@ public final class PrerequisiteArtifacts { } private PrerequisiteArtifacts filter(Predicate<String> fileType, boolean errorsForNonMatching) { - ImmutableList.Builder<Artifact> filtered = new ImmutableList.Builder<Artifact>(); + ImmutableList.Builder<Artifact> filtered = new ImmutableList.Builder<>(); for (Artifact artifact : artifacts) { if (fileType.apply(artifact.getFilename())) { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java index 1bbcd72db7..eef371b475 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java @@ -1313,8 +1313,7 @@ public final class RuleContext extends TargetContext boolean allowedWithWarning = attribute.getAllowedRuleClassesWarningPredicate() .apply(ruleClass); reportBadPrerequisite(attribute, prerequisiteTarget.getTargetKind(), prerequisiteLabel, - "expected " + attribute.getAllowedRuleClassesPredicate().toString(), - allowedWithWarning); + "expected " + attribute.getAllowedRuleClassesPredicate(), allowedWithWarning); } } else if (prerequisiteTarget instanceof FileTarget) { if (!attribute.getAllowedFileTypesPredicate() @@ -1335,7 +1334,7 @@ public final class RuleContext extends TargetContext } else { // The file exists but has a bad extension reportBadPrerequisite(attribute, "file", prerequisiteLabel, - "expected " + attribute.getAllowedFileTypesPredicate().toString(), false); + "expected " + attribute.getAllowedFileTypesPredicate(), false); } } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java b/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java index aa7f429d61..a790e72b3e 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java @@ -108,7 +108,7 @@ public class RunfilesSupport { Preconditions.checkState(!runfiles.isEmpty()); Map<PathFragment, Artifact> symlinks = getRunfilesSymlinks(); - if (executable != null && !symlinks.values().contains(executable)) { + if (executable != null && !symlinks.containsValue(executable)) { throw new IllegalStateException("main program " + executable + " not included in runfiles"); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/WorkspaceStatusAction.java b/src/main/java/com/google/devtools/build/lib/analysis/WorkspaceStatusAction.java index 5b3bd27569..986b085f65 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/WorkspaceStatusAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/WorkspaceStatusAction.java @@ -16,7 +16,6 @@ package com.google.devtools.build.lib.analysis; import com.google.common.base.Splitter; import com.google.common.base.Supplier; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.AbstractAction; import com.google.devtools.build.lib.actions.ActionOwner; @@ -130,10 +129,10 @@ public abstract class WorkspaceStatusAction extends AbstractAction { */ public static Map<String, String> parseValues(Path file) throws IOException { HashMap<String, String> result = new HashMap<>(); - Splitter lineSplitter = Splitter.on(" ").limit(2); - for (String line : Splitter.on("\n").split( - new String(FileSystemUtils.readContentAsLatin1(file)))) { - List<String> items = ImmutableList.copyOf(lineSplitter.split(line)); + Splitter lineSplitter = Splitter.on(' ').limit(2); + for (String line : + Splitter.on('\n').split(new String(FileSystemUtils.readContentAsLatin1(file)))) { + List<String> items = lineSplitter.splitToList(line); if (items.size() != 2) { continue; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java index daac95e5ce..724b1a7d7d 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java @@ -54,7 +54,7 @@ import com.google.protobuf.GeneratedMessage.GeneratedExtension; import java.nio.charset.Charset; import java.util.ArrayList; -import java.util.Arrays; +import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -688,9 +688,7 @@ public class SpawnAction extends AbstractAction { this.executableArgs = Lists.newArrayList(); executableArgs.add("-Xverify:none"); executableArgs.addAll(jvmArgs); - for (String arg : launchArgs) { - executableArgs.add(arg); - } + Collections.addAll(executableArgs, launchArgs); inputsBuilder.add(deployJar); this.isShellCommand = false; return this; @@ -774,7 +772,7 @@ public class SpawnAction extends AbstractAction { */ public Builder addExecutableArguments(String... arguments) { Preconditions.checkState(executableArgs != null); - executableArgs.addAll(Arrays.asList(arguments)); + Collections.addAll(executableArgs, arguments); return this; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java index 5fac33d7a4..967074a9db 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java @@ -18,7 +18,6 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Function; import com.google.common.base.Joiner; import com.google.common.base.Preconditions; -import com.google.common.base.Predicates; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -1074,12 +1073,12 @@ public final class BuildConfiguration implements Serializable { private String buildMnemonic() { // See explanation at getShortName(). String platformSuffix = (options.platformSuffix != null) ? options.platformSuffix : ""; - ArrayList<String> nameParts = new ArrayList<String>(); + ArrayList<String> nameParts = new ArrayList<>(); for (Fragment fragment : fragments.values()) { nameParts.add(fragment.getOutputDirectoryName()); } nameParts.add(getCompilationMode() + platformSuffix); - return Joiner.on('-').join(Iterables.filter(nameParts, Predicates.notNull())); + return Joiner.on('-').skipNulls().join(nameParts); } /** diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java index afe408f628..8b44f65470 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java @@ -174,7 +174,7 @@ public final class BuildOptions implements Cloneable, Serializable { public String toString() { StringBuilder stringBuilder = new StringBuilder(); for (FragmentOptions options : fragmentOptionsMap.values()) { - stringBuilder.append(options.toString()); + stringBuilder.append(options); } return stringBuilder.toString(); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/DefaultsPackage.java b/src/main/java/com/google/devtools/build/lib/analysis/config/DefaultsPackage.java index 207d49aebb..7d92bcedd7 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/DefaultsPackage.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/DefaultsPackage.java @@ -99,7 +99,7 @@ public final class DefaultsPackage { } private String labelsToString(Set<Label> labels) { - StringBuffer result = new StringBuffer(); + StringBuilder result = new StringBuilder(); for (Label label : labels) { if (result.length() != 0) { result.append(", "); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/PerLabelOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/PerLabelOptions.java index 1e921e596b..66da673624 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/PerLabelOptions.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/PerLabelOptions.java @@ -61,7 +61,7 @@ public class PerLabelOptions implements Serializable { String optionsPiece = input.substring(atIndex + 1); List<String> optionsList = new ArrayList<>(); for (String option : optionsPiece.split("(?<!\\\\),")) { // Split on ',' but not on '\,' - if (option != null && !option.trim().equals("")) { + if (option != null && !option.trim().isEmpty()) { optionsList.add(option.replace("\\,", ",")); } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnderConverter.java b/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnderConverter.java index 1f7b660694..8da1fbbaa2 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnderConverter.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnderConverter.java @@ -60,7 +60,7 @@ public class RunUnderConverter implements Converter<RunUnder> { public RunUnderLabel(String input, Label runUnderLabel, List<String> runUnderList) { this.input = input; this.runUnderLabel = runUnderLabel; - this.runUnderList = new ArrayList<String>(runUnderList.subList(1, runUnderList.size())); + this.runUnderList = new ArrayList<>(runUnderList.subList(1, runUnderList.size())); } @Override public String getValue() { return input; } @@ -97,7 +97,7 @@ public class RunUnderConverter implements Converter<RunUnder> { public RunUnderCommand(String input, String runUnderCommand, List<String> runUnderList) { this.input = input; this.runUnderCommand = runUnderCommand; - this.runUnderList = new ArrayList<String>(runUnderList.subList(1, runUnderList.size())); + this.runUnderList = new ArrayList<>(runUnderList.subList(1, runUnderList.size())); } @Override public String getValue() { return input; } diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/RepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/RepositoryFunction.java index 906c38b323..632aa0d4d3 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/repository/RepositoryFunction.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/RepositoryFunction.java @@ -130,7 +130,7 @@ public abstract class RepositoryFunction implements SkyFunction { Transience.PERSISTENT); } Preconditions.checkState(ruleClassName == null || rule.getRuleClass().equals(ruleClassName), - "Got " + rule + ", was expecting a " + ruleClassName); + "Got %s, was expecting a %s", rule, ruleClassName); return rule; } diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaBuildInfoFactory.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaBuildInfoFactory.java index db33897f73..8454e5cffa 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaBuildInfoFactory.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaBuildInfoFactory.java @@ -32,9 +32,7 @@ public class BazelJavaBuildInfoFactory extends JavaBuildInfoFactory { .put("build.timestamp", "%BUILD_TIMESTAMP%") .build(); - private static final Map<String, String> NONVOLATILE_KEYS = ImmutableMap - .<String, String>builder() - .build(); + private static final Map<String, String> NONVOLATILE_KEYS = ImmutableMap.of(); private static final Map<String, String> REDACTED_KEYS = ImmutableMap .<String, String>builder() diff --git a/src/main/java/com/google/devtools/build/lib/collect/nestedset/Order.java b/src/main/java/com/google/devtools/build/lib/collect/nestedset/Order.java index 38e663311b..ec020b033b 100644 --- a/src/main/java/com/google/devtools/build/lib/collect/nestedset/Order.java +++ b/src/main/java/com/google/devtools/build/lib/collect/nestedset/Order.java @@ -30,7 +30,7 @@ public enum Order { private Order(NestedSetExpander<?> expander, NestedSetFactory factory) { this.expander = expander; this.factory = factory; - this.emptySet = new EmptyNestedSet<Object>(this); + this.emptySet = new EmptyNestedSet<>(this); } /** diff --git a/src/main/java/com/google/devtools/build/lib/graph/CollectingVisitor.java b/src/main/java/com/google/devtools/build/lib/graph/CollectingVisitor.java index caeb07ba7a..88311ecc0f 100644 --- a/src/main/java/com/google/devtools/build/lib/graph/CollectingVisitor.java +++ b/src/main/java/com/google/devtools/build/lib/graph/CollectingVisitor.java @@ -22,8 +22,7 @@ import java.util.List; * they were visited, and allows them to be accessed as a list. */ public class CollectingVisitor<T> extends AbstractGraphVisitor<T> { - - private final List<Node<T>> order = new ArrayList<Node<T>>(); + private final List<Node<T>> order = new ArrayList<>(); @Override public void visitNode(Node<T> node) { 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 37cd30eab6..66d10739a0 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 @@ -51,7 +51,7 @@ public class DFS<T> { private final boolean transpose; - private final Set<Node<T>> marked = new HashSet<Node<T>>(); + private final Set<Node<T>> marked = new HashSet<>(); /** * Constructs a DFS instance for searching over the enclosing Digraph 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 92e973a2e7..b1ff09a469 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 @@ -289,7 +289,7 @@ public final class Digraph<T> implements Cloneable { * any "root". */ public Set<Node<T>> getRoots() { - Set<Node<T>> roots = new HashSet<Node<T>>(); + Set<Node<T>> roots = new HashSet<>(); for (Node<T> node: nodes.values()) { if (!node.hasPredecessors()) { roots.add(node); @@ -302,7 +302,7 @@ public final class Digraph<T> implements Cloneable { * @return the set of leaf nodes: those with no successors. */ public Set<Node<T>> getLeaves() { - Set<Node<T>> leaves = new HashSet<Node<T>>(); + Set<Node<T>> leaves = new HashSet<>(); for (Node<T> node: nodes.values()) { if (!node.hasSuccessors()) { leaves.add(node); @@ -407,8 +407,7 @@ public final class Digraph<T> implements Cloneable { final Object WHITE = null; // i.e. not present in nodeToColor, the default. final Object GREY = new Object(); final Object BLACK = new Object(); - final Map<Node<T>, Object> nodeToColor = - new HashMap<Node<T>, Object>(); // empty => all white + final Map<Node<T>, Object> nodeToColor = new HashMap<>(); // empty => all white class CycleDetector { /* defining a class gives us lexical scope */ boolean visit(Node<T> node) { @@ -459,7 +458,7 @@ public final class Digraph<T> implements Cloneable { * one strongly-connected component of the graph. */ public Collection<Set<Node<T>>> getStronglyConnectedComponents() { - final List<Set<Node<T>>> sccs = new ArrayList<Set<Node<T>>>(); + final List<Set<Node<T>>> sccs = new ArrayList<>(); NodeSetReceiver<T> r = new NodeSetReceiver<T>() { @Override public void accept(Set<Node<T>> scc) { @@ -491,8 +490,7 @@ public final class Digraph<T> implements Cloneable { createImageUnderPartition(Collection<Set<Node<T>>> partition) { // Build mapping function: each node label is mapped to its equiv class: - Map<T, Set<Node<T>>> labelToImage = - new HashMap<T, Set<Node<T>>>(); + Map<T, Set<Node<T>>> labelToImage = new HashMap<>(); for (Set<Node<T>> set: partition) { // It's important to use immutable sets of node labels when sets are keys // in a map; see ImmutableSet class for explanation. @@ -516,8 +514,7 @@ public final class Digraph<T> implements Cloneable { */ public <IMAGE> Digraph<IMAGE> createImageUnderMapping(Map<T, IMAGE> map) { - - Digraph<IMAGE> imageGraph = new Digraph<IMAGE>(); + Digraph<IMAGE> imageGraph = new Digraph<>(); for (Node<T> fromNode: nodes.values()) { T fromLabel = fromNode.getLabel(); @@ -568,16 +565,15 @@ public final class Digraph<T> implements Cloneable { return Collections.singletonList(fromNode); } - Map<Node<T>, Node<T>> pathPredecessor = - new HashMap<Node<T>, Node<T>>(); + Map<Node<T>, Node<T>> pathPredecessor = new HashMap<>(); - Set<Node<T>> marked = new HashSet<Node<T>>(); + Set<Node<T>> marked = new HashSet<>(); - LinkedList<Node<T>> queue = new LinkedList<Node<T>>(); + LinkedList<Node<T>> queue = new LinkedList<>(); queue.addLast(fromNode); marked.add(fromNode); - while (queue.size() > 0) { + while (!queue.isEmpty()) { Node<T> u = queue.removeFirst(); for (Node<T> v: u.getSuccessors()) { if (marked.add(v)) { @@ -903,13 +899,16 @@ public final class Digraph<T> implements Cloneable { */ private class SccVisitor<T> { // Nodes already assigned to a strongly connected component. - private final Set<Node<T>> assigned = new HashSet<Node<T>>(); + private final Set<Node<T>> assigned = new HashSet<>(); + // The order each node was visited in. - private final Map<Node<T>, Integer> preorder = new HashMap<Node<T>, Integer>(); + private final Map<Node<T>, Integer> preorder = new HashMap<>(); + // Stack of all nodes visited whose SCC has not yet been determined. When an SCC is found, // that SCC is an initial segment of this stack, and is popped off. Every time a new node is // visited, it is put on this stack. - private final List<Node<T>> stack = new ArrayList<Node<T>>(); + private final List<Node<T>> stack = new ArrayList<>(); + // Stack of visited indices for the first-visited nodes in each of their known-so-far // strongly connected components. A node pushes its index on when it is visited. If any of // its successors have already been visited and are not in an already-found strongly connected @@ -922,7 +921,8 @@ public final class Digraph<T> implements Cloneable { // still the current node's index, then it was the first element visited of the current strongly // connected component. So all nodes on {@code stack} down to the current node are in its // strongly connected component. And the node's index is popped from preorderStack. - private final List<Integer> preorderStack = new ArrayList<Integer>(); + private final List<Integer> preorderStack = new ArrayList<>(); + // Index of node being visited. private int counter = 0; @@ -956,7 +956,7 @@ public final class Digraph<T> implements Cloneable { // nodes that were part of a cycle with this node. So this node is the first-visited // element in its strongly connected component, and we collect the component. preorderStack.remove(preorderStack.size() - 1); - Set<Node<T>> scc = new HashSet<Node<T>>(); + Set<Node<T>> scc = new HashSet<>(); Node<T> compNode; do { compNode = stack.remove(stack.size() - 1); diff --git a/src/main/java/com/google/devtools/build/lib/graph/Matrix.java b/src/main/java/com/google/devtools/build/lib/graph/Matrix.java index 225d3d2604..338fcac911 100644 --- a/src/main/java/com/google/devtools/build/lib/graph/Matrix.java +++ b/src/main/java/com/google/devtools/build/lib/graph/Matrix.java @@ -41,7 +41,7 @@ final class Matrix<T> { public Matrix(Set<T> labels) { this.N = labels.size(); this.values = new ArrayList<T>(N); - this.indices = new HashMap<T, Integer>(); + this.indices = new HashMap<>(); this.m = new boolean[N][N]; for (T label: labels) { 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 9db2a4c3e7..d271ca0f78 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 @@ -163,8 +163,7 @@ public final class Node<T> { int previousSize = set.size(); if (previousSize == 1) { // SingletonList -> ArrayList - Collection<Node<T>> newSet = - new ArrayList<Node<T>>(ARRAYLIST_THRESHOLD); + Collection<Node<T>> newSet = new ArrayList<>(ARRAYLIST_THRESHOLD); newSet.addAll(set); newSet.add(value); return updateField(predecessorSet, newSet); @@ -174,9 +173,8 @@ public final class Node<T> { return true; } else if (previousSize == ARRAYLIST_THRESHOLD) { // ArrayList -> HashSet - Collection<Node<T>> newSet = - new HashSet<Node<T>>(INITIAL_HASHSET_CAPACITY); - newSet.addAll(set); + Collection<Node<T>> newSet = new HashSet<>(INITIAL_HASHSET_CAPACITY); + newSet.addAll(set); newSet.add(value); return updateField(predecessorSet, newSet); } else { @@ -219,8 +217,7 @@ public final class Node<T> { } else if (previousSize == 1 + ARRAYLIST_THRESHOLD) { // -> ArrayList - Collection<Node<T>> newSet = - new ArrayList<Node<T>>(ARRAYLIST_THRESHOLD); + Collection<Node<T>> newSet = new ArrayList<>(ARRAYLIST_THRESHOLD); newSet.addAll(set); return updateField(predecessorSet, newSet); } diff --git a/src/main/java/com/google/devtools/build/lib/packages/AnalysisIssues.java b/src/main/java/com/google/devtools/build/lib/packages/AnalysisIssues.java index 22c02b50ab..c0dda812ab 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/AnalysisIssues.java +++ b/src/main/java/com/google/devtools/build/lib/packages/AnalysisIssues.java @@ -18,8 +18,8 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; import javax.annotation.Nullable; @@ -64,7 +64,7 @@ public final class AnalysisIssues extends Exception { } else { List<Object> args = new ArrayList<>(); args.add(attribute); - args.addAll(Arrays.asList(arguments)); + Collections.addAll(args, arguments); return String.format("ERROR in '%s': " + messageTemplate, args.toArray()); } } diff --git a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java index 9a8ae61a03..0616d791f6 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java +++ b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java @@ -287,8 +287,8 @@ public final class Attribute implements Comparable<Attribute> { } private Builder<TYPE> setPropertyFlag(PropertyFlag flag, String propertyName) { - Preconditions.checkState(!propertyFlags.contains(flag), - propertyName + " flag is already set"); + Preconditions.checkState( + !propertyFlags.contains(flag), "%s flag is already set", propertyName); propertyFlags.add(flag); return this; } @@ -320,8 +320,7 @@ public final class Attribute implements Comparable<Attribute> { * Only applicable for list type attributes. */ public Builder<TYPE> nonEmpty() { - Preconditions.checkNotNull(type.getListElementType(), - "attribute '" + name + "' must be a list"); + Preconditions.checkNotNull(type.getListElementType(), "attribute '%s' must be a list", name); return setPropertyFlag(PropertyFlag.NON_EMPTY, "non_empty"); } @@ -330,7 +329,7 @@ public final class Attribute implements Comparable<Attribute> { */ public Builder<TYPE> singleArtifact() { Preconditions.checkState((type == Type.LABEL) || (type == Type.LABEL_LIST), - "attribute '" + name + "' must be a label-valued type"); + "attribute '%s' must be a label-valued type", name); return setPropertyFlag(PropertyFlag.SINGLE_ARTIFACT, "single_artifact"); } @@ -358,8 +357,7 @@ public final class Attribute implements Comparable<Attribute> { * Mark the built attribute as order-independent. */ public Builder<TYPE> orderIndependent() { - Preconditions.checkNotNull(type.getListElementType(), - "attribute '" + name + "' must be a list"); + Preconditions.checkNotNull(type.getListElementType(), "attribute '%s' must be a list", name); return setPropertyFlag(PropertyFlag.ORDER_INDEPENDENT, "order-independent"); } @@ -468,7 +466,7 @@ public final class Attribute implements Comparable<Attribute> { * Returns true if a late-bound value has been set. Useful only for Skylark. */ public boolean hasLateBoundValue() { - return value != null && value instanceof LateBoundDefault; + return value instanceof LateBoundDefault; } /** @@ -1024,9 +1022,10 @@ public final class Attribute implements Comparable<Attribute> { || type == Type.LABEL || type == Type.LABEL_LIST || type == Type.NODEP_LABEL || type == Type.NODEP_LABEL_LIST, "Configuration transitions can only be specified for label or label list attributes"); - Preconditions.checkArgument(isLateBound(name) == (defaultValue instanceof LateBoundDefault), - "late bound attributes require a default value that is late bound (and vice versa): " - + name); + Preconditions.checkArgument( + isLateBound(name) == (defaultValue instanceof LateBoundDefault), + "late bound attributes require a default value that is late bound (and vice versa): %s", + name); if (isLateBound(name)) { LateBoundDefault<?> lateBoundDefault = (LateBoundDefault<?>) defaultValue; Preconditions.checkArgument((configurator == null), diff --git a/src/main/java/com/google/devtools/build/lib/packages/AttributeContainer.java b/src/main/java/com/google/devtools/build/lib/packages/AttributeContainer.java index be7584aa28..35248f2b37 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/AttributeContainer.java +++ b/src/main/java/com/google/devtools/build/lib/packages/AttributeContainer.java @@ -78,7 +78,7 @@ public class AttributeContainer { public boolean isAttributeValueExplicitlySpecified(String attributeName) { Integer idx = ruleClass.getAttributeIndex(attributeName); - return idx != null ? attributeValueExplicitlySpecified.get(idx) : false; + return idx != null && attributeValueExplicitlySpecified.get(idx); } /** diff --git a/src/main/java/com/google/devtools/build/lib/packages/EnumFilterConverter.java b/src/main/java/com/google/devtools/build/lib/packages/EnumFilterConverter.java index 31242e35fe..50ebae2d4b 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/EnumFilterConverter.java +++ b/src/main/java/com/google/devtools/build/lib/packages/EnumFilterConverter.java @@ -59,7 +59,7 @@ class EnumFilterConverter<E extends Enum<E>> implements Converter<Set<E>> { */ @Override public Set<E> convert(String input) throws OptionsParsingException { - if (input.equals("")) { + if (input.isEmpty()) { return Collections.emptySet(); } EnumSet<E> includedSet = EnumSet.noneOf(typeClass); diff --git a/src/main/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunction.java b/src/main/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunction.java index 9f72fd0460..22aee8e648 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunction.java +++ b/src/main/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunction.java @@ -361,7 +361,7 @@ public abstract class ImplicitOutputsFunction { return formatBuilder.append(PERCENT_ESCAPER.escape(template)).toString(); } - int end = template.indexOf("}", start + 2); + int end = template.indexOf('}', start + 2); if (end < 0) { return formatBuilder.append(PERCENT_ESCAPER.escape(template)).toString(); } diff --git a/src/main/java/com/google/devtools/build/lib/packages/License.java b/src/main/java/com/google/devtools/build/lib/packages/License.java index fe63c9c2e0..f4e554e2ff 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/License.java +++ b/src/main/java/com/google/devtools/build/lib/packages/License.java @@ -124,7 +124,7 @@ public final class License { Set<DistributionType> result = EnumSet.noneOf(DistributionType.class); for (String distStr : distStrings) { try { - DistributionType dist = Enum.valueOf(DistributionType.class, distStr.toUpperCase()); + DistributionType dist = DistributionType.valueOf(distStr.toUpperCase()); result.add(dist); } catch (IllegalArgumentException e) { throw new LicenseParsingException("Invalid distribution type '" + distStr + "'"); @@ -300,7 +300,7 @@ public final class License { if (exceptions.isEmpty()) { return licenseTypes.toString().toLowerCase(); } else { - return licenseTypes.toString().toLowerCase() + " with exceptions " + exceptions.toString(); + return licenseTypes.toString().toLowerCase() + " with exceptions " + exceptions; } } diff --git a/src/main/java/com/google/devtools/build/lib/packages/MakeEnvironment.java b/src/main/java/com/google/devtools/build/lib/packages/MakeEnvironment.java index 6c0d8499b1..dea6602348 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/MakeEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/packages/MakeEnvironment.java @@ -134,7 +134,7 @@ public class MakeEnvironment { } LinkedList<Binding> bindings = env.get(varname); if (bindings == null) { - bindings = new LinkedList<Binding>(); + bindings = new LinkedList<>(); env.put(varname, bindings); } // push new bindings onto head of list (=> most recent binding is diff --git a/src/main/java/com/google/devtools/build/lib/packages/NoSuchTargetException.java b/src/main/java/com/google/devtools/build/lib/packages/NoSuchTargetException.java index fa180faaa2..4e8482424a 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/NoSuchTargetException.java +++ b/src/main/java/com/google/devtools/build/lib/packages/NoSuchTargetException.java @@ -48,7 +48,7 @@ public class NoSuchTargetException extends NoSuchThingException { super(message, nspe); this.label = label; this.target = target; - this.packageLoadedSuccessfully = nspe != null ? false : true; + this.packageLoadedSuccessfully = nspe == null; } @Nullable diff --git a/src/main/java/com/google/devtools/build/lib/packages/NonconfigurableAttributeMapper.java b/src/main/java/com/google/devtools/build/lib/packages/NonconfigurableAttributeMapper.java index d54c847318..03d778bafd 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/NonconfigurableAttributeMapper.java +++ b/src/main/java/com/google/devtools/build/lib/packages/NonconfigurableAttributeMapper.java @@ -44,7 +44,7 @@ public class NonconfigurableAttributeMapper extends AbstractAttributeMapper { @Override public <T> T get(String attributeName, Type<T> type) { Preconditions.checkState(!getAttributeDefinition(attributeName).isConfigurable(), - "Attribute '" + attributeName + "' is potentially configurable - not allowed here"); + "Attribute '%s' is potentially configurable - not allowed here", attributeName); return super.get(attributeName, type); } diff --git a/src/main/java/com/google/devtools/build/lib/packages/Package.java b/src/main/java/com/google/devtools/build/lib/packages/Package.java index caf1578e65..186b9d949f 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/Package.java +++ b/src/main/java/com/google/devtools/build/lib/packages/Package.java @@ -1184,7 +1184,7 @@ public class Package implements Serializable { void setVisibilityAndLicense(InputFile inputFile, RuleVisibility visibility, License license) { String filename = inputFile.getName(); Target cacheInstance = targets.get(filename); - if (cacheInstance == null || !(cacheInstance instanceof InputFile)) { + if (!(cacheInstance instanceof InputFile)) { throw new IllegalArgumentException("Can't set visibility for nonexistent FileTarget " + filename + " in package " + pkg.getName() + "."); } diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageDeserializer.java b/src/main/java/com/google/devtools/build/lib/packages/PackageDeserializer.java index 5eca0f43c9..cd407b6a49 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/PackageDeserializer.java +++ b/src/main/java/com/google/devtools/build/lib/packages/PackageDeserializer.java @@ -73,8 +73,7 @@ public class PackageDeserializer { throws PackageDeserializationException { Object value = deserializeAttributeValue(expectedType, attrPb); return new ParsedAttributeValue( - attrPb.hasExplicitlySpecified() ? attrPb.getExplicitlySpecified() : false, - value, + attrPb.hasExplicitlySpecified() && attrPb.getExplicitlySpecified(), value, deserializeLocation(attrPb.getParseableLocation())); } diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java index 0cfdf0adef..fba39572bd 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java +++ b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java @@ -972,8 +972,8 @@ public final class PackageFactory { String error = LabelValidator.validatePackageName( packageId.getPackageFragment().getPathString()); if (error != null) { - throw new BuildFileNotFoundException(packageId.toString(), - "illegal package name: '" + packageId.toString() + "' (" + error + ")"); + throw new BuildFileNotFoundException( + packageId.toString(), "illegal package name: '" + packageId + "' (" + error + ")"); } ParserInputSource inputSource = maybeGetParserInputSource(buildFile, eventHandler); if (inputSource == null) { diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageSpecification.java b/src/main/java/com/google/devtools/build/lib/packages/PackageSpecification.java index 20524aa411..cf7ff714a4 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/PackageSpecification.java +++ b/src/main/java/com/google/devtools/build/lib/packages/PackageSpecification.java @@ -135,7 +135,7 @@ public abstract class PackageSpecification { @Override public String toString() { - return prefix.equals(new PathFragment("")) ? "..." : prefix.toString() + "/..."; + return prefix.equals(new PathFragment("")) ? "..." : prefix + "/..."; } } diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java index b7da520982..23f1c97f59 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java +++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java @@ -240,7 +240,7 @@ public final class RuleClass { @Override public void checkName(String name) { Preconditions.checkArgument( - (name.contains("$") && !TargetUtils.isTestRuleName(name)) || name.equals("")); + (name.contains("$") && !TargetUtils.isTestRuleName(name)) || name.isEmpty()); } @Override @@ -274,8 +274,9 @@ public final class RuleClass { NORMAL { @Override public void checkName(String name) { - Preconditions.checkArgument(!TargetUtils.isTestRuleName(name) - && RULE_NAME_PATTERN.matcher(name).matches(), "Invalid rule name: " + name); + Preconditions.checkArgument( + !TargetUtils.isTestRuleName(name) && RULE_NAME_PATTERN.matcher(name).matches(), + "Invalid rule name: %s", name); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/packages/TargetUtils.java b/src/main/java/com/google/devtools/build/lib/packages/TargetUtils.java index 3710eebf39..fb0cee9520 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/TargetUtils.java +++ b/src/main/java/com/google/devtools/build/lib/packages/TargetUtils.java @@ -191,7 +191,7 @@ public final class TargetUtils { * <p>In practice this is the part before the "_", if any, otherwise the entire rule class name. */ public static String getRuleLanguage(String ruleClass) { - int index = ruleClass.lastIndexOf("_"); + int index = ruleClass.lastIndexOf('_'); // Chop off "_binary" or "_test". return index != -1 ? ruleClass.substring(0, index) : ruleClass; } diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/SrcTargetUtil.java b/src/main/java/com/google/devtools/build/lib/pkgcache/SrcTargetUtil.java index 85d967e033..89969f6773 100644 --- a/src/main/java/com/google/devtools/build/lib/pkgcache/SrcTargetUtil.java +++ b/src/main/java/com/google/devtools/build/lib/pkgcache/SrcTargetUtil.java @@ -94,9 +94,7 @@ public final class SrcTargetUtil { public static List<FileTarget> getHdrTargets(EventHandler eventHandler, Rule rule, TargetProvider provider) throws NoSuchTargetException, NoSuchPackageException, InterruptedException { - ImmutableSet<String> srcAndHdrAttributes = ImmutableSet.<String>builder() - .addAll(HEADER_ATTRIBUTES) - .build(); + ImmutableSet<String> srcAndHdrAttributes = ImmutableSet.copyOf(HEADER_ATTRIBUTES); return getTargets(eventHandler, rule, srcAndHdrAttributes, Sets.newHashSet(rule), provider); } diff --git a/src/main/java/com/google/devtools/build/lib/profiler/ProfileInfo.java b/src/main/java/com/google/devtools/build/lib/profiler/ProfileInfo.java index 4ce3a9309e..8bd57a8262 100644 --- a/src/main/java/com/google/devtools/build/lib/profiler/ProfileInfo.java +++ b/src/main/java/com/google/devtools/build/lib/profiler/ProfileInfo.java @@ -92,7 +92,7 @@ public class ProfileInfo { VarInt.putVarLong(stats[i].totalTime, sink); } } - content = sink.position() > 0 ? Arrays.copyOfRange(sink.array(), 0, sink.position()) : null; + content = sink.position() > 0 ? Arrays.copyOf(sink.array(), sink.position()) : null; } boolean isEmpty() { return content == null; } @@ -308,7 +308,9 @@ public class ProfileInfo { // Created map usually will end up with thousands of entries, so we // preinitialize it to the 10000. Map<K, Task[]> taskMap = Maps.newHashMapWithExpectedSize(10000); - if (taskList.size() == 0) { return taskMap; } + if (taskList.isEmpty()) { + return taskMap; + } Task[] taskArray = taskList.toArray(new Task[taskList.size()]); Arrays.sort(taskArray, this); K key = getKey(taskArray[0]); @@ -393,7 +395,7 @@ public class ProfileInfo { * task statistic. This method is sufficient to initialize data for dumping. */ public void calculateStats() { - if (allTasksById.size() == 0) { + if (allTasksById.isEmpty()) { return; } diff --git a/src/main/java/com/google/devtools/build/lib/profiler/Profiler.java b/src/main/java/com/google/devtools/build/lib/profiler/Profiler.java index d59284880f..60b9fa254d 100644 --- a/src/main/java/com/google/devtools/build/lib/profiler/Profiler.java +++ b/src/main/java/com/google/devtools/build/lib/profiler/Profiler.java @@ -268,7 +268,7 @@ public final class Profiler { "Current task stack for thread " + Thread.currentThread().getName() + ":\n"); List<TaskData> list = get(); for (int i = list.size() - 1; i >= 0; i--) { - builder.append(list.get(i).toString()); + builder.append(list.get(i)); builder.append("\n"); } return builder.toString(); @@ -337,7 +337,7 @@ public final class Profiler { this.size = size; for (int i = 0; i < SHARDS; i++) { - priorityQueues[i] = new PriorityQueue<SlowTask>(size + 1); + priorityQueues[i] = new PriorityQueue<>(size + 1); } } @@ -692,7 +692,7 @@ public final class Profiler { */ private void logTask(long startTime, long duration, ProfilerTask type, Object object) { Preconditions.checkNotNull(object); - Preconditions.checkState(startTime > 0, "startTime was " + startTime); + Preconditions.checkState(startTime > 0, "startTime was %s", startTime); if (duration < 0) { // See note in Clock#nanoTime, which is used by Profiler#nanoTimeMaybe. duration = 0; diff --git a/src/main/java/com/google/devtools/build/lib/query2/LabelVisitor.java b/src/main/java/com/google/devtools/build/lib/query2/LabelVisitor.java index b72e3aac52..15534e60e8 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/LabelVisitor.java +++ b/src/main/java/com/google/devtools/build/lib/query2/LabelVisitor.java @@ -281,9 +281,7 @@ final class LabelVisitor { this.maxDepth = maxDepth; this.errorObserver = new TargetEdgeErrorObserver(); ImmutableList.Builder<TargetEdgeObserver> builder = ImmutableList.builder(); - for (TargetEdgeObserver observer : observers) { - builder.add(observer); - } + builder.add(observers); builder.add(errorObserver); this.observers = builder.build(); this.keepGoing = keepGoing; diff --git a/src/main/java/com/google/devtools/build/lib/query2/output/GraphOutputFormatter.java b/src/main/java/com/google/devtools/build/lib/query2/output/GraphOutputFormatter.java index 5ded5e2266..c51fc81e90 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/output/GraphOutputFormatter.java +++ b/src/main/java/com/google/devtools/build/lib/query2/output/GraphOutputFormatter.java @@ -91,7 +91,7 @@ class GraphOutputFormatter extends OutputFormatter { public String serialize(Node<Set<Node<Target>>> node) { int actualLimit = graphNodeStringLimit - RESERVED_LABEL_CHARS; boolean firstItem = true; - StringBuffer buf = new StringBuffer(); + StringBuilder buf = new StringBuilder(); int count = 0; for (Node<Target> eqNode : node.getLabel()) { String labelString = eqNode.getLabel().getLabel().toString(); diff --git a/src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java b/src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java index e7cd9083cc..7ce4c94716 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java +++ b/src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java @@ -284,9 +284,9 @@ public abstract class OutputFormatter implements Serializable { } private void outputRule(Rule rule, PrintStream out) { - out.println(String.format("# %s", rule.getLocation())); - out.println(String.format("%s(", rule.getRuleClass())); - out.println(String.format(" name = \"%s\",", rule.getName())); + out.printf("# %s%n", rule.getLocation()); + out.printf("%s(%n", rule.getRuleClass()); + out.printf(" name = \"%s\",%n", rule.getName()); for (Attribute attr : rule.getAttributes()) { Pair<Iterable<Object>, AttributeValueSource> values = getAttributeValues(rule, attr); @@ -297,7 +297,7 @@ public abstract class OutputFormatter implements Serializable { continue; // Don't print default values. } Object value = Iterables.getOnlyElement(values.first); - out.print(String.format(" %s = ", attr.getName())); + out.printf(" %s = ", attr.getName()); if (value instanceof Label) { value = value.toString(); } else if (value instanceof List<?> && EvalUtils.isImmutable(value)) { @@ -307,7 +307,7 @@ public abstract class OutputFormatter implements Serializable { EvalUtils.prettyPrintValue(value, out); out.println(","); } - out.println(String.format(")\n")); + out.printf(")\n%n"); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/query2/output/XmlOutputFormatter.java b/src/main/java/com/google/devtools/build/lib/query2/output/XmlOutputFormatter.java index c01c90e465..287ad0b923 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/output/XmlOutputFormatter.java +++ b/src/main/java/com/google/devtools/build/lib/query2/output/XmlOutputFormatter.java @@ -184,7 +184,7 @@ class XmlOutputFormatter extends OutputFormatter implements OutputFormatter.Unor elem.setAttribute("name", target.getLabel().toString()); String location = target.getLocation().print(); if (!xmlLineNumbers) { - int firstColon = location.indexOf(":"); + int firstColon = location.indexOf(':'); if (firstColon != -1) { location = location.substring(0, firstColon); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java index 885fe8a88f..c2034ab36d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java +++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java @@ -387,7 +387,7 @@ public final class SkylarkRuleContext { @SkylarkCallable(doc = "Splits a shell command to a list of tokens.", hidden = true) public List<String> tokenize(String optionString) throws FuncallException { - List<String> options = new ArrayList<String>(); + List<String> options = new ArrayList<>(); try { ShellUtils.tokenize(options, optionString); } catch (TokenizationException e) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java index fa74a3ac55..50864716ad 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java @@ -317,9 +317,9 @@ public abstract class CcLibrary implements RuleConfiguredTargetFactory { } } else { if (!linkstaticAttribute && appearsToHaveNoObjectFiles(ruleContext.attributes())) { - Artifact element = ccCompilationOutputs.getObjectFiles(false).isEmpty() - ? ccCompilationOutputs.getObjectFiles(true).get(0) - : ccCompilationOutputs.getObjectFiles(false).get(0); + Artifact element = Iterables.getFirst( + ccCompilationOutputs.getObjectFiles(false), + ccCompilationOutputs.getObjectFiles(true).get(0)); ruleContext.attributeWarning("srcs", "this library appears at first glance to have no object files, " + "but on closer inspection it does have something to link, e.g. " diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java index a32d7710d1..25d01b989b 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java @@ -33,6 +33,7 @@ import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -839,12 +840,7 @@ public class CcToolchainFeatures implements Serializable { * @return whether a currently enabled feature implies the given feature. */ private boolean isImpliedByEnabledFeature(Feature feature) { - for (Feature implies : impliedBy.get(feature)) { - if (enabled.contains(implies)) { - return true; - } - } - return false; + return !Collections.disjoint(impliedBy.get(feature), enabled); } /** diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeParser.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeParser.java index 0b60b453ae..a164663063 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeParser.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeParser.java @@ -87,7 +87,7 @@ public class IncludeParser implements SkyValue { * are provided */ public Rule(String type, String pattern, String findRoot, String findFilter) { - this(type, pattern, findRoot.replace("\\", "$"), Pattern.compile(findFilter)); + this(type, pattern, findRoot.replace('\\', '$'), Pattern.compile(findFilter)); Preconditions.checkArgument((this.type == Type.PATH) || (this.type == Type.FILE)); } @@ -365,7 +365,7 @@ public class IncludeParser implements SkyValue { @Override public String toString() { - return kind.toString() + ":" + pathFragment.getPathString(); + return kind + ":" + pathFragment.getPathString(); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeScanner.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeScanner.java index 9c00efd64a..65d89b9861 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeScanner.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeScanner.java @@ -105,9 +105,7 @@ public interface IncludeScanner { List<PathFragment> quoteIncludeDirs = scannable.getQuoteIncludeDirs(); List<String> cmdlineIncludes = scannable.getCmdlineIncludes(); - for (PathFragment pathFragment : scannable.getSystemIncludeDirs()) { - includeDirs.add(pathFragment); - } + includeDirs.addAll(scannable.getSystemIncludeDirs()); // Add the system include paths to the list of include paths. for (PathFragment pathFragment : action.getBuiltInIncludeDirectories()) { @@ -149,7 +147,6 @@ public interface IncludeScanner { // Collect inputs and output List<Artifact> inputs = new ArrayList<>(); - IncludeProblems includeProblems = new IncludeProblems(); for (Artifact included : includes) { if (FileSystemUtils.startsWithAny(included.getPath(), absoluteBuiltInIncludeDirs)) { // Skip include files found in absolute include directories. This currently only applies diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInputs.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInputs.java index 24120ce44f..63503caa0a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInputs.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInputs.java @@ -83,7 +83,7 @@ public abstract class LinkerInputs { @Override public String toString() { - return "SimpleLinkerInput(" + artifact.toString() + ")"; + return "SimpleLinkerInput(" + artifact + ")"; } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/extra/ActionListener.java b/src/main/java/com/google/devtools/build/lib/rules/extra/ActionListener.java index f3b302f13e..d653c9ac63 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/extra/ActionListener.java +++ b/src/main/java/com/google/devtools/build/lib/rules/extra/ActionListener.java @@ -76,7 +76,7 @@ public final class ActionListener implements RuleConfiguredTargetFactory { extraActions.add(spec); } } - if (extraActions.size() == 0) { + if (extraActions.isEmpty()) { ruleContext.attributeWarning("extra_actions", "No extra_action is specified for this version of blaze."); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/extra/ExtraActionSpec.java b/src/main/java/com/google/devtools/build/lib/rules/extra/ExtraActionSpec.java index 38e4a4b9dd..8b52ccfdc0 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/extra/ExtraActionSpec.java +++ b/src/main/java/com/google/devtools/build/lib/rules/extra/ExtraActionSpec.java @@ -95,7 +95,7 @@ public final class ExtraActionSpec implements TransitiveInfoProvider { owner, outputTemplate)); } // extra_action has no output, we need to create some dummy output to keep the build up-to-date. - if (extraActionOutputs.size() == 0) { + if (extraActionOutputs.isEmpty()) { createDummyOutput = true; extraActionOutputs.add(getExtraActionOutputArtifact(owningRule, actionToShadow, owner, "$(ACTION_ID).dummy")); diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/GenericBuildInfoPropertiesTranslator.java b/src/main/java/com/google/devtools/build/lib/rules/java/GenericBuildInfoPropertiesTranslator.java index df6a325437..edbe79bde5 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/GenericBuildInfoPropertiesTranslator.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/GenericBuildInfoPropertiesTranslator.java @@ -60,7 +60,7 @@ public class GenericBuildInfoPropertiesTranslator implements private String translateValue(String valueDescription, Map<String, String> buildInfo) { String[] split = valueDescription.split("%"); - StringBuffer result = new StringBuffer(); + StringBuilder result = new StringBuilder(); boolean isInsideKey = false; for (String key : split) { if (isInsideKey) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java index 442b85bcf9..5a9239d2e1 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java @@ -82,7 +82,7 @@ public abstract class JavaBuildInfoFactory implements BuildInfoFactory { createVolatileTranslator(), true, false); - List<Action> actions = new ArrayList<Action>(3); + List<Action> actions = new ArrayList<>(3); actions.add(redactedInfo); actions.add(nonvolatileInfo); actions.add(volatileInfo); diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java index 006a5df5eb..74627f3b0a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java @@ -750,7 +750,7 @@ public class JavaCompileAction extends AbstractAction { // aggregation code below should go away. List<String> jcopts = new ArrayList<>(javacOpts); JavaConfiguration javaConfiguration = configuration.getFragment(JavaConfiguration.class); - if (javaConfiguration.getJavaWarns().size() > 0) { + if (!javaConfiguration.getJavaWarns().isEmpty()) { jcopts.add("-Xlint:" + Joiner.on(',').join(javaConfiguration.getJavaWarns())); } if (!bootclasspathEntries.isEmpty()) { @@ -950,12 +950,12 @@ public class JavaCompileAction extends AbstractAction { * Accumulates the given jar artifacts as being provided by direct dependencies. */ public Builder addDirectJars(Collection<Artifact> directJars) { - Iterables.addAll(this.directJars, directJars); + this.directJars.addAll(directJars); return this; } public Builder addCompileTimeDependencyArtifacts(Collection<Artifact> dependencyArtifacts) { - Iterables.addAll(this.compileTimeDependencyArtifacts, dependencyArtifacts); + this.compileTimeDependencyArtifacts.addAll(dependencyArtifacts); return this; } diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/InstrumentedFilesCollector.java b/src/main/java/com/google/devtools/build/lib/rules/test/InstrumentedFilesCollector.java index e62a3b86af..2860751a18 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/test/InstrumentedFilesCollector.java +++ b/src/main/java/com/google/devtools/build/lib/rules/test/InstrumentedFilesCollector.java @@ -15,7 +15,6 @@ package com.google.devtools.build.lib.rules.test; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; import com.google.devtools.build.lib.actions.Action; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.AnalysisEnvironment; @@ -203,7 +202,7 @@ public final class InstrumentedFilesCollector { for (String attr : getSourceAttributes()) { if (ruleContext.getRule().isAttrDefined(attr, Type.LABEL_LIST) || ruleContext.getRule().isAttrDefined(attr, Type.LABEL)) { - Iterables.addAll(prerequisites, ruleContext.getPrerequisites(attr, Mode.DONT_CHECK)); + prerequisites.addAll(ruleContext.getPrerequisites(attr, Mode.DONT_CHECK)); } } return prerequisites; diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/TestLogHelper.java b/src/main/java/com/google/devtools/build/lib/rules/test/TestLogHelper.java index 462c24ce6c..4690af6924 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/test/TestLogHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/test/TestLogHelper.java @@ -66,11 +66,8 @@ public class TestLogHelper { ByteStreams.copy(input, filteringOutputStream); if (!filteringOutputStream.foundHeader()) { - InputStream inputAgain = testOutput.getInputStream(); - try { + try (InputStream inputAgain = testOutput.getInputStream()) { ByteStreams.copy(inputAgain, out); - } finally { - inputAgain.close(); } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/TestStrategy.java b/src/main/java/com/google/devtools/build/lib/rules/test/TestStrategy.java index 4905e15293..103ba62624 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/test/TestStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/rules/test/TestStrategy.java @@ -375,11 +375,8 @@ public abstract class TestStrategy implements TestActionContext { Thread.currentThread().interrupt(); } if (!headerFilter.foundHeader()) { - InputStream input = testLogPath.getInputStream(); - try { + try (InputStream input = testLogPath.getInputStream()) { ByteStreams.copy(input, outErr.getOutputStream()); - } finally { - input.close(); } } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/TestXmlOutputParser.java b/src/main/java/com/google/devtools/build/lib/rules/test/TestXmlOutputParser.java index 8d660ec467..b911004edf 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/test/TestXmlOutputParser.java +++ b/src/main/java/com/google/devtools/build/lib/rules/test/TestXmlOutputParser.java @@ -230,24 +230,29 @@ class TestXmlOutputParser { // they can be too big to fit in the memory. We add failure and error // elements to the output without a message, so that there is a // difference between passed and failed test cases. - if (childElementName.equals("testsuite")) { - builder.addChild(parseTestSuite(parser, childElementName)); - } else if (childElementName.equals("testcase")) { - builder.addChild(parseTestCase(parser)); - } else if (childElementName.equals("failure")) { - failures += 1; - skipCompleteElement(parser); - } else if (childElementName.equals("error")) { - errors += 1; - skipCompleteElement(parser); - } else if (childElementName.equals("testdecorator")) { - builder.addChild(parseTestDecorator(parser)); - } else { - - // Unknown element encountered. Since the schema of the input file - // is a bit hazy, just skip it and go merrily on our way. Ignorance - // is bliss. - skipCompleteElement(parser); + switch (childElementName) { + case "testsuite": + builder.addChild(parseTestSuite(parser, childElementName)); + break; + case "testcase": + builder.addChild(parseTestCase(parser)); + break; + case "failure": + failures += 1; + skipCompleteElement(parser); + break; + case "error": + errors += 1; + skipCompleteElement(parser); + break; + case "testdecorator": + builder.addChild(parseTestDecorator(parser)); + break; + default: + // Unknown element encountered. Since the schema of the input file + // is a bit hazy, just skip it and go merrily on our way. Ignorance + // is bliss. + skipCompleteElement(parser); } break; @@ -296,20 +301,28 @@ class TestXmlOutputParser { String name = parser.getAttributeLocalName(i).intern(); String value = parser.getAttributeValue(i); - if (name.equals("name")) { - builder.setName(value); - } else if (name.equals("classname")) { - builder.setClassName(value); - } else if (name.equals("time")) { - builder.setRunDurationMillis(parseTime(value)); - } else if (name.equals("result")) { - builder.setResult(value); - } else if (name.equals("status")) { - if (value.equals("notrun")) { - builder.setRun(false); - } else if (value.equals("run")) { - builder.setRun(true); - } + switch (name) { + case "name": + builder.setName(value); + break; + case "classname": + builder.setClassName(value); + break; + case "time": + builder.setRunDurationMillis(parseTime(value)); + break; + case "result": + builder.setResult(value); + break; + case "status": + if (value.equals("notrun")) { + builder.setRun(false); + } else if (value.equals("run")) { + builder.setRun(true); + } + break; + default: + // fall through } } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/FancyTerminalEventHandler.java b/src/main/java/com/google/devtools/build/lib/runtime/FancyTerminalEventHandler.java index e55ad2f244..9b9b48a0b5 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/FancyTerminalEventHandler.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/FancyTerminalEventHandler.java @@ -253,7 +253,7 @@ public class FancyTerminalEventHandler extends BlazeCommandEventHandler { terminal.textRed(); terminal.textBold(); } - terminal.writeString(event.getKind().toString() + ": "); + terminal.writeString(event.getKind() + ": "); if (useColor) { terminal.resetTerminal(); } @@ -281,7 +281,7 @@ public class FancyTerminalEventHandler extends BlazeCommandEventHandler { if (useColor) { terminal.textGreen(); } - terminal.writeString(event.getKind().toString() + ": "); + terminal.writeString(event.getKind() + ": "); terminal.resetTerminal(); writeTimestampAndLocation(event); terminal.writeString(event.getMessage()); diff --git a/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java b/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java index 75c7fe2e75..3e4405e995 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java @@ -189,7 +189,7 @@ public class TestSummary implements Comparable<TestSummary> { allCases.put(detail.getClassName() + "." + detail.getName(), detail); } - summary.failedTestCases = new ArrayList<TestCase>(allCases.values()); + summary.failedTestCases = new ArrayList<>(allCases.values()); return this; } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/TestSummaryPrinter.java b/src/main/java/com/google/devtools/build/lib/runtime/TestSummaryPrinter.java index 91c1488054..7ddabbcd48 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/TestSummaryPrinter.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/TestSummaryPrinter.java @@ -231,8 +231,8 @@ public class TestSummaryPrinter { double sumOfSquares = 0.0; for (Long l : summary.getTestTimes()) { long value = l.longValue(); - min = value < min ? value : min; - max = value > max ? value : max; + min = Math.min(value, min); + max = Math.max(value, max); sum += value; sumOfSquares += ((double) value) * (double) value; } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/CleanCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/CleanCommand.java index 178872ce27..5be4f9009a 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/CleanCommand.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/CleanCommand.java @@ -89,8 +89,8 @@ public final class CleanCommand implements BlazeCommand { cleanOptions.expunge_async = cleanOptions.cleanStyle.equals("expunge_async"); cleanOptions.expunge = cleanOptions.cleanStyle.equals("expunge"); - if (cleanOptions.expunge == false && cleanOptions.expunge_async == false && - !cleanOptions.cleanStyle.isEmpty()) { + if (!cleanOptions.expunge && !cleanOptions.expunge_async + && !cleanOptions.cleanStyle.isEmpty()) { runtime.getReporter().handle(Event.error( null, "Invalid clean_style value '" + cleanOptions.cleanStyle + "'")); return ExitCode.COMMAND_LINE_ERROR; @@ -110,10 +110,7 @@ public final class CleanCommand implements BlazeCommand { } catch (IOException e) { runtime.getReporter().handle(Event.error(e.getMessage())); return ExitCode.LOCAL_ENVIRONMENTAL_ERROR; - } catch (CommandException e) { - runtime.getReporter().handle(Event.error(e.getMessage())); - return ExitCode.RUN_FAILURE; - } catch (ExecException e) { + } catch (CommandException | ExecException e) { runtime.getReporter().handle(Event.error(e.getMessage())); return ExitCode.RUN_FAILURE; } catch (InterruptedException e) { diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java index 6333c79e31..2d0e720b17 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java @@ -424,7 +424,7 @@ public class InfoCommand implements BlazeCommand { } ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); PrintWriter writer = new PrintWriter(outputStream); - writer.print(value.toString() + "\n"); + writer.print(value + "\n"); writer.flush(); return outputStream.toByteArray(); } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/ProfileCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/ProfileCommand.java index 7b91dc7fa3..08cb072a9b 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/ProfileCommand.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/ProfileCommand.java @@ -17,6 +17,7 @@ import com.google.common.base.Function; import com.google.common.base.Functions; import com.google.common.base.Preconditions; import com.google.common.collect.Maps; +import com.google.common.collect.Multimaps; import com.google.common.collect.Ordering; import com.google.common.collect.TreeMultimap; import com.google.devtools.build.lib.actions.MiddlemanAction; @@ -54,6 +55,7 @@ import java.io.PrintStream; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.EnumMap; import java.util.EnumSet; import java.util.List; @@ -195,7 +197,7 @@ public final class ProfileCommand implements BlazeCommand { for (ProfilePhaseStatistics stat : statistics) { String title = stat.getTitle(); - if (!title.equals("")) { + if (!title.isEmpty()) { out.println("\n=== " + title.toUpperCase() + " ===\n"); } out.print(stat.getStatistics()); @@ -350,8 +352,7 @@ public final class ProfileCommand implements BlazeCommand { } private void printCriticalPath(String title, PrintStream out, CriticalPathEntry path) { - out.println(String.format("\n%s (%s):", title, - TimeUtilities.prettyTime(path.cumulativeDuration))); + out.printf("\n%s (%s):%n", title, TimeUtilities.prettyTime(path.cumulativeDuration)); boolean lightCriticalPath = isLightCriticalPath(path); out.println(lightCriticalPath ? @@ -376,29 +377,26 @@ public final class ProfileCommand implements BlazeCommand { } else { String desc = path.task.getDescription().replace(':', ' '); if (lightCriticalPath) { - out.println(String.format("%6d %11s %8s %s", path.task.id, - TimeUtilities.prettyTime(path.duration), - prettyPercentage(path.duration, totalPathTime), - desc)); + out.printf("%6d %11s %8s %s%n", path.task.id, TimeUtilities.prettyTime(path.duration), + prettyPercentage(path.duration, totalPathTime), desc); } else { - out.println(String.format("%6d %11s %8s %8s %s", path.task.id, + out.printf("%6d %11s %8s %8s %s%n", path.task.id, TimeUtilities.prettyTime(path.duration), prettyPercentage(path.duration, totalPathTime), - prettyPercentage(path.getCriticalTime(), totalPathTime), desc)); + prettyPercentage(path.getCriticalTime(), totalPathTime), desc); } } } if (middlemanCount > 0) { if (lightCriticalPath) { - out.println(String.format(" %11s %8s [%d middleman actions]", + out.printf(" %11s %8s [%d middleman actions]%n", TimeUtilities.prettyTime(middlemanDuration), - prettyPercentage(middlemanDuration, totalPathTime), - middlemanCount)); + prettyPercentage(middlemanDuration, totalPathTime), middlemanCount); } else { - out.println(String.format(" %11s %8s %8s [%d middleman actions]", + out.printf(" %11s %8s %8s [%d middleman actions]%n", TimeUtilities.prettyTime(middlemanDuration), prettyPercentage(middlemanDuration, totalPathTime), - prettyPercentage(middlemanCritTime, totalPathTime), middlemanCount)); + prettyPercentage(middlemanCritTime, totalPathTime), middlemanCount); } } } @@ -434,12 +432,12 @@ public final class ProfileCommand implements BlazeCommand { if (stats.count > 0 && stats.totalTime > 0) { if (headerNeeded) { out.println("\nTotal time (across all threads) spent on:"); - out.println(String.format("%18s %8s %8s %11s", "Type", "Total", "Count", "Average")); + out.printf("%18s %8s %8s %11s%n", "Type", "Total", "Count", "Average"); headerNeeded = false; } - out.println(String.format("%18s %8s %8d %11s", type.toString(), + out.printf("%18s %8s %8d %11s%n", type.toString(), prettyPercentage(stats.totalTime, totalDuration), stats.count, - TimeUtilities.prettyTime(stats.totalTime / stats.count))); + TimeUtilities.prettyTime(stats.totalTime / stats.count)); } } } @@ -496,9 +494,7 @@ public final class ProfileCommand implements BlazeCommand { TreeMultimap<Stat, String> sortedStats = TreeMultimap.create(Ordering.natural().reverse(), Ordering.natural()); - for (Map.Entry<String, Stat> stat : statsForType.entrySet()) { - sortedStats.put(stat.getValue(), stat.getKey()); - } + Multimaps.invertFrom(Multimaps.forMap(statsForType), sortedStats); int numPrinted = 0; for (Map.Entry<Stat, String> stat : sortedStats.entries()) { @@ -548,9 +544,7 @@ public final class ProfileCommand implements BlazeCommand { */ private EnumSet<ProfilerTask> getTypeFilter(ProfilerTask... tasks) { EnumSet<ProfilerTask> filter = EnumSet.of(ProfilerTask.ACTION_LOCK, ProfilerTask.WAIT); - for (ProfilerTask task : tasks) { - filter.add(task); - } + Collections.addAll(filter, tasks); return filter; } @@ -611,7 +605,7 @@ public final class ProfileCommand implements BlazeCommand { out.printf(TWO_COLUMN_FORMAT, "Total time finalizing build", TimeUtilities.prettyTime(info.getPhaseDuration(finishPhase))); } - out.println(""); + out.println(); out.printf(TWO_COLUMN_FORMAT, "Action dependency map creation", TimeUtilities.prettyTime(graphTime)); out.printf(TWO_COLUMN_FORMAT, "Actual execution time", diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/ProjectFileSupport.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/ProjectFileSupport.java index 2e5faf6ca8..bec0deb5d1 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/ProjectFileSupport.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/ProjectFileSupport.java @@ -48,7 +48,7 @@ public final class ProjectFileSupport { String command) throws AbruptExitException { List<String> targets = optionsParser.getResidue(); ProjectFile.Provider projectFileProvider = runtime.getProjectFileProvider(); - if (projectFileProvider != null && targets.size() > 0 + if (projectFileProvider != null && !targets.isEmpty() && targets.get(0).startsWith(PROJECT_FILE_PREFIX)) { if (targets.size() > 1) { throw new AbruptExitException("Cannot handle more than one +<file> argument yet", @@ -84,7 +84,7 @@ public final class ProjectFileSupport { */ public static List<String> getTargets(BlazeRuntime runtime, OptionsProvider options) { List<String> targets = options.getResidue(); - if (runtime.getProjectFileProvider() != null && targets.size() > 0 + if (runtime.getProjectFileProvider() != null && !targets.isEmpty() && targets.get(0).startsWith(PROJECT_FILE_PREFIX)) { return targets.subList(1, targets.size()); } diff --git a/src/main/java/com/google/devtools/build/lib/server/RPCService.java b/src/main/java/com/google/devtools/build/lib/server/RPCService.java index 379e83ce2f..3aa20d4396 100644 --- a/src/main/java/com/google/devtools/build/lib/server/RPCService.java +++ b/src/main/java/com/google/devtools/build/lib/server/RPCService.java @@ -14,6 +14,7 @@ package com.google.devtools.build.lib.server; +import com.google.common.collect.Iterables; import com.google.devtools.build.lib.util.io.OutErr; import java.util.List; @@ -59,7 +60,7 @@ public final class RPCService { if (isShutdown) { throw new IllegalStateException("Received request after shutdown."); } - String command = request.isEmpty() ? "" : request.get(0); + String command = Iterables.getFirst(request, ""); if (appCommand != null && command.equals("blaze")) { // an application request int result = appCommand.exec(request.subList(1, request.size()), outErr, firstContactTime); if (appCommand.shutdown()) { // an application shutdown request diff --git a/src/main/java/com/google/devtools/build/lib/server/ServerResponse.java b/src/main/java/com/google/devtools/build/lib/server/ServerResponse.java index e5ab9300f7..f222564fc2 100644 --- a/src/main/java/com/google/devtools/build/lib/server/ServerResponse.java +++ b/src/main/java/com/google/devtools/build/lib/server/ServerResponse.java @@ -95,12 +95,14 @@ final class ServerResponse { if (errorMessage.length() == 0) { return Integer.toString(exitStatus) + '\n'; } - return errorMessage + '\n' + Integer.toString(exitStatus) + '\n'; + return errorMessage + '\n' + exitStatus + '\n'; } @Override public boolean equals(Object other) { - if (other == null || !(other instanceof ServerResponse)) return false; + if (!(other instanceof ServerResponse)) { + return false; + } ServerResponse otherResponse = (ServerResponse) other; return exitStatus == otherResponse.exitStatus && errorMessage.equals(otherResponse.errorMessage); diff --git a/src/main/java/com/google/devtools/build/lib/shell/Command.java b/src/main/java/com/google/devtools/build/lib/shell/Command.java index 70c5f8a1a6..364373dcb5 100644 --- a/src/main/java/com/google/devtools/build/lib/shell/Command.java +++ b/src/main/java/com/google/devtools/build/lib/shell/Command.java @@ -876,7 +876,7 @@ public final class Command { message.append(']'); } message.append("; environment: "); - message.append(processBuilder.environment().toString()); + message.append(processBuilder.environment()); final File workingDirectory = processBuilder.directory(); message.append("; working dir: "); message.append(workingDirectory == null ? diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AbstractLabelCycleReporter.java b/src/main/java/com/google/devtools/build/lib/skyframe/AbstractLabelCycleReporter.java index 797f15867e..444ae94703 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/AbstractLabelCycleReporter.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/AbstractLabelCycleReporter.java @@ -82,9 +82,9 @@ abstract class AbstractLabelCycleReporter implements CyclesReporter.SingleCycleR Label label = getLabel(cycleValue); Target target = getTargetForLabel(label); - eventHandler.handle( - Event.error(target.getLocation(), "in " + target.getTargetKind() + " " + label - + ": " + cycleMessage.toString())); + eventHandler.handle(Event.error( + target.getLocation(), + "in " + target.getTargetKind() + " " + label + ": " + cycleMessage)); } return true; diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionArtifactCycleReporter.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionArtifactCycleReporter.java index 3105539e2f..022e63fece 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionArtifactCycleReporter.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionArtifactCycleReporter.java @@ -52,7 +52,7 @@ public class ActionArtifactCycleReporter extends AbstractLabelCycleReporter { return "action: " + ((Action) arg).getMnemonic(); } else if (arg instanceof LabelAndConfiguration && skyFunctionName == SkyFunctions.TARGET_COMPLETION) { - return "configured target: " + ((LabelAndConfiguration) arg).getLabel().toString(); + return "configured target: " + ((LabelAndConfiguration) arg).getLabel(); } throw new IllegalStateException( "Argument is not Action, TargetCompletion, or OwnedArtifact: " + arg); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java index ea744c1c0a..88d1e61d4b 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java @@ -85,7 +85,7 @@ public class ConfiguredTargetKey extends ActionLookupValue.ActionLookupKey { return "null"; } return (configuration != null && configuration.isHostConfiguration()) - ? (label.toString() + " (host)") : label.toString(); + ? (label + " (host)") : label.toString(); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunction.java index 58cb67df7b..1c5ec091a8 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunction.java @@ -29,8 +29,8 @@ public class ContainingPackageLookupFunction implements SkyFunction { @Override public SkyValue compute(SkyKey skyKey, Environment env) { PackageIdentifier dir = (PackageIdentifier) skyKey.argument(); - PackageLookupValue pkgLookupValue = null; - pkgLookupValue = (PackageLookupValue) env.getValue(PackageLookupValue.key(dir)); + PackageLookupValue pkgLookupValue = + (PackageLookupValue) env.getValue(PackageLookupValue.key(dir)); if (pkgLookupValue == null) { return null; } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/GlobFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/GlobFunction.java index a1fdcb2b40..d1ee81cb07 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/GlobFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/GlobFunction.java @@ -74,7 +74,7 @@ final class GlobFunction implements SkyFunction { String pattern = glob.getPattern(); // Split off the first path component of the pattern. - int slashPos = pattern.indexOf("/"); + int slashPos = pattern.indexOf('/'); String patternHead; String patternTail; if (slashPos == -1) { diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/LocalDiffAwareness.java b/src/main/java/com/google/devtools/build/lib/skyframe/LocalDiffAwareness.java index 861f89ac4b..43d2556315 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/LocalDiffAwareness.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/LocalDiffAwareness.java @@ -188,9 +188,9 @@ public class LocalDiffAwareness implements DiffAwareness { /** Returns the changed files caught by the watch service. */ private Set<Path> collectChanges() throws BrokenDiffAwarenessException, IOException { - Set<Path> createdFilesAndDirectories = new HashSet<Path>(); - Set<Path> deletedOrModifiedFilesAndDirectories = new HashSet<Path>(); - Set<Path> deletedTrackedDirectories = new HashSet<Path>(); + Set<Path> createdFilesAndDirectories = new HashSet<>(); + Set<Path> deletedOrModifiedFilesAndDirectories = new HashSet<>(); + Set<Path> deletedTrackedDirectories = new HashSet<>(); WatchKey watchKey; while ((watchKey = watchService.poll()) != null) { @@ -267,7 +267,7 @@ public class LocalDiffAwareness implements DiffAwareness { throw new IOException("Root directory " + watchRootPath + " became inaccessible."); } - Set<Path> changedPaths = new HashSet<Path>(); + Set<Path> changedPaths = new HashSet<>(); for (Path path : createdFilesAndDirectories) { if (Files.isDirectory(path, LinkOption.NOFOLLOW_LINKS)) { // This is a new directory, so changes to it since its creation have not been watched. @@ -287,7 +287,7 @@ public class LocalDiffAwareness implements DiffAwareness { * paths). */ private Set<Path> registerSubDirectoriesAndReturnContents(Path rootDir) throws IOException { - Set<Path> visitedAbsolutePaths = new HashSet<Path>(); + Set<Path> visitedAbsolutePaths = new HashSet<>(); // Note that this does not follow symlinks. Files.walkFileTree(rootDir, new WatcherFileVisitor(visitedAbsolutePaths)); return visitedAbsolutePaths; diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java index 16798105b9..31991c4156 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java @@ -378,7 +378,7 @@ public class PackageFunction implements SkyFunction { packageLookupValue.getErrorMsg()), Transience.PERSISTENT); default: // We should never get here. - Preconditions.checkState(false); + throw new IllegalStateException(); } } @@ -578,8 +578,7 @@ public class PackageFunction implements SkyFunction { private void transitiveClosureOfLabels( ImmutableList<SkylarkFileDependency> immediateDeps, Set<Label> transitiveClosure) { for (SkylarkFileDependency dep : immediateDeps) { - if (!transitiveClosure.contains(dep.getLabel())) { - transitiveClosure.add(dep.getLabel()); + if (transitiveClosure.add(dep.getLabel())) { transitiveClosureOfLabels(dep.getDependencies(), transitiveClosure); } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java index ae4ee55bff..f800d367c5 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java @@ -152,10 +152,7 @@ class PackageLookupFunction implements SkyFunction { } } catch (NoSuchPackageException e) { throw new PackageLookupFunctionException(e, Transience.PERSISTENT); - } catch (IOException e) { - throw new PackageLookupFunctionException(new BuildFileContainsErrorsException( - PackageFunction.EXTERNAL_PACKAGE_NAME, e.getMessage()), Transience.PERSISTENT); - } catch (EvalException e) { + } catch (IOException | EvalException e) { throw new PackageLookupFunctionException(new BuildFileContainsErrorsException( PackageFunction.EXTERNAL_PACKAGE_NAME, e.getMessage()), Transience.PERSISTENT); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitor.java index 2844cc0dc2..1abec5d635 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitor.java @@ -14,7 +14,7 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.base.Preconditions; -import com.google.common.base.Predicate; +import com.google.common.base.Predicates; import com.google.common.collect.HashMultimap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; @@ -109,9 +109,8 @@ final class SkyframeLabelVisitor implements TransitivePackageLoader { Label topLevelLabel = (Label) key.argument(); if (!Iterables.isEmpty(errorInfo.getCycleInfo())) { skyframeCyclesReporter.get().reportCycles(errorInfo.getCycleInfo(), key, eventHandler); - for (Label rootCause : getRootCausesOfCycles(topLevelLabel, errorInfo.getCycleInfo())) { - rootCauses.put(topLevelLabel, rootCause); - } + rootCauses.putAll( + topLevelLabel, getRootCausesOfCycles(topLevelLabel, errorInfo.getCycleInfo())); } if (isDirectErrorFromTopLevelLabel(topLevelLabel, labelsToVisit, errorInfo)) { // Unlike top-level targets, which have already gone through target parsing, @@ -131,9 +130,7 @@ final class SkyframeLabelVisitor implements TransitivePackageLoader { SkyKey topLevelTransitiveTargetKey = TransitiveTargetValue.key(topLevelLabel); TransitiveTargetValue topLevelTransitiveTargetValue = result.get(topLevelTransitiveTargetKey); if (topLevelTransitiveTargetValue.getTransitiveRootCauses() != null) { - for (Label rootCause : topLevelTransitiveTargetValue.getTransitiveRootCauses()) { - rootCauses.put(topLevelLabel, rootCause); - } + rootCauses.putAll(topLevelLabel, topLevelTransitiveTargetValue.getTransitiveRootCauses()); warnAboutLoadingFailure(topLevelLabel, eventHandler); } } @@ -251,12 +248,6 @@ final class SkyframeLabelVisitor implements TransitivePackageLoader { @Override public Multimap<Label, Label> getRootCauses(final Collection<Label> targetsToLoad) { Preconditions.checkState(lastBuildKeepGoing); - return Multimaps.filterKeys(rootCauses, - new Predicate<Label>() { - @Override - public boolean apply(Label label) { - return targetsToLoad.contains(label); - } - }); + return Multimaps.filterKeys(rootCauses, Predicates.in(targetsToLoad)); } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkModuleCycleReporter.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkModuleCycleReporter.java index a0f37a9d4a..7fd1b60fb9 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkModuleCycleReporter.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkModuleCycleReporter.java @@ -40,7 +40,7 @@ public class SkylarkModuleCycleReporter implements CyclesReporter.SingleCycleRep public boolean maybeReportCycle(SkyKey topLevelKey, CycleInfo cycleInfo, boolean alreadyReported, EventHandler eventHandler) { ImmutableList<SkyKey> pathToCycle = cycleInfo.getPathToCycle(); - if (pathToCycle.size() == 0) { + if (pathToCycle.isEmpty()) { return false; } SkyKey lastPathElement = cycleInfo.getPathToCycle().get(pathToCycle.size() - 1); @@ -49,9 +49,10 @@ public class SkylarkModuleCycleReporter implements CyclesReporter.SingleCycleRep } else if (Iterables.all(cycleInfo.getCycle(), IS_SKYLARK_MODULE_SKY_KEY) // The last element of the path to the cycle has to be a PackageFunction. && IS_PACKAGE_SKY_KEY.apply(lastPathElement)) { - StringBuilder cycleMessage = new StringBuilder() - .append(((PackageIdentifier) lastPathElement.argument()).toString() + "/BUILD: ") - .append("cycle in referenced extension files: "); + StringBuilder cycleMessage = + new StringBuilder() + .append(((PackageIdentifier) lastPathElement.argument()) + "/BUILD: ") + .append("cycle in referenced extension files: "); AbstractLabelCycleReporter.printCycle(cycleInfo.getCycle(), cycleMessage, new Function<SkyKey, String>() { diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java index 417cfca06e..339e4313cf 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java @@ -196,15 +196,11 @@ public class TransitiveTargetFunction implements SkyFunction { } private static void visitTargetVisibility(Target target, Set<Label> labels) { - for (Label label : target.getVisibility().getDependencyLabels()) { - labels.add(label); - } + labels.addAll(target.getVisibility().getDependencyLabels()); } private static void visitPackageGroup(PackageGroup packageGroup, Set<Label> labels) { - for (final Label include : packageGroup.getIncludes()) { - labels.add(include); - } + labels.addAll(packageGroup.getIncludes()); } /** diff --git a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneContextConsumer.java b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneContextConsumer.java index 2011327d3f..82c9f68a2f 100644 --- a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneContextConsumer.java +++ b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneContextConsumer.java @@ -39,8 +39,7 @@ public class StandaloneContextConsumer implements ActionContextConsumer { @Override public Map<Class<? extends ActionContext>, String> getActionContexts() { - Builder<Class<? extends ActionContext>, String> actionContexts = - new ImmutableMap.Builder<Class<? extends ActionContext>, String>(); + Builder<Class<? extends ActionContext>, String> actionContexts = new ImmutableMap.Builder<>(); actionContexts.put(SpawnActionContext.class, "standalone"); diff --git a/src/main/java/com/google/devtools/build/lib/syntax/AbstractFunction.java b/src/main/java/com/google/devtools/build/lib/syntax/AbstractFunction.java index b7e3b84a1e..7ed6d078b0 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/AbstractFunction.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/AbstractFunction.java @@ -56,7 +56,7 @@ public abstract class AbstractFunction implements Function { @Override public Object call(List<Object> args, Map<String, Object> kwargs, FuncallExpression ast, Environment env) throws EvalException, InterruptedException { - if (args.size() != 1 || kwargs.size() != 0) { + if (args.size() != 1 || !kwargs.isEmpty()) { throw new EvalException(ast.getLocation(), "Invalid number of arguments (expected 0)"); } return call(args.get(0), ast, env); diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Argument.java b/src/main/java/com/google/devtools/build/lib/syntax/Argument.java index 86370e6a9e..0f530265c3 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/Argument.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/Argument.java @@ -103,7 +103,7 @@ public abstract class Argument extends ASTNode { } @Override public String toString() { - return name + " = " + String.valueOf(value); + return name + " = " + value; } } @@ -119,7 +119,7 @@ public abstract class Argument extends ASTNode { } @Override public String toString() { - return "*" + String.valueOf(value); + return "*" + value; } } @@ -135,7 +135,7 @@ public abstract class Argument extends ASTNode { } @Override public String toString() { - return "**" + String.valueOf(value); + return "**" + value; } } diff --git a/src/main/java/com/google/devtools/build/lib/syntax/AssignmentStatement.java b/src/main/java/com/google/devtools/build/lib/syntax/AssignmentStatement.java index 556fe2e15b..0bb584701a 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/AssignmentStatement.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/AssignmentStatement.java @@ -61,7 +61,7 @@ public final class AssignmentStatement extends Statement { Ident ident = (Ident) lvalue; Object result = expression.eval(env); - Preconditions.checkNotNull(result, "result of " + expression + " is null"); + Preconditions.checkNotNull(result, "result of %s is null", expression); if (env.isSkylarkEnabled()) { // The variable may have been referenced successfully if a global variable diff --git a/src/main/java/com/google/devtools/build/lib/syntax/BuildFileAST.java b/src/main/java/com/google/devtools/build/lib/syntax/BuildFileAST.java index 6c85ab121b..0645cb3983 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/BuildFileAST.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/BuildFileAST.java @@ -62,7 +62,7 @@ public class BuildFileAST extends ASTNode { this.containsErrors = result.containsErrors; this.contentHashCode = contentHashCode; this.imports = fetchImports(this.stmts); - if (result.statements.size() > 0) { + if (!result.statements.isEmpty()) { setLocation(lexer.createLocation( result.statements.get(0).getLocation().getStartOffset(), result.statements.get(result.statements.size() - 1).getLocation().getEndOffset())); diff --git a/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java b/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java index 6c064e44b8..65f75e92fd 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java @@ -81,7 +81,7 @@ public final class DotExpression extends Expression { } else { try { List<MethodDescriptor> methods = FuncallExpression.getMethods(objValue.getClass(), name, 0); - if (methods != null && methods.size() > 0) { + if (methods != null && !methods.isEmpty()) { MethodDescriptor method = Iterables.getOnlyElement(methods); if (method.getAnnotation().structField()) { result = FuncallExpression.callMethod( diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Environment.java b/src/main/java/com/google/devtools/build/lib/syntax/Environment.java index 19f1f3bdd4..456007f9ba 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/Environment.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/Environment.java @@ -253,7 +253,7 @@ public class Environment { out.append("}"); if (parent != null) { out.append("=>"); - out.append(parent.toString()); + out.append(parent); } return out.toString(); } diff --git a/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java b/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java index 5d44265578..f5dd75368b 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java @@ -72,11 +72,7 @@ public abstract class EvalUtils { public static boolean isTuple(Class<?> c) { Preconditions.checkState(List.class.isAssignableFrom(c)); - if (ImmutableList.class.isAssignableFrom(c)) { - return true; - } else { - return false; - } + return ImmutableList.class.isAssignableFrom(c); } /** @@ -418,7 +414,7 @@ public abstract class EvalUtils { * prettyPrintValue(Object, Appendable). */ public static String prettyPrintValue(Object o) { - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); prettyPrintValue(o, buffer); return buffer.toString(); } @@ -440,7 +436,7 @@ public abstract class EvalUtils { * Print value 'o' to a string. Convenience overloading of printValue(Object, Appendable). */ public static String printValue(Object o) { - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); printValue(o, buffer); return buffer.toString(); } diff --git a/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java b/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java index fc228227c5..76bb5593f1 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java @@ -422,7 +422,7 @@ public final class FuncallExpression extends Expression { Environment env, Function function) throws EvalException, InterruptedException { ArgConversion conversion = getArgConversion(function); - ImmutableList.Builder<String> duplicates = new ImmutableList.Builder<String>(); + ImmutableList.Builder<String> duplicates = new ImmutableList.Builder<>(); // Iterate over the arguments. We assume all positional arguments come before any keyword // or star arguments, because the argument list was already validated by // Argument#validateFuncallArguments, as called by the Parser, @@ -465,7 +465,7 @@ public final class FuncallExpression extends Expression { @Override Object eval(Environment env) throws EvalException, InterruptedException { - ImmutableList.Builder<Object> posargs = new ImmutableList.Builder<Object>(); + ImmutableList.Builder<Object> posargs = new ImmutableList.Builder<>(); // We copy this into an ImmutableMap in the end, but we can't use an ImmutableMap.Builder, or // we'd still have to have a HashMap on the side for the sake of properly handling duplicates. Map<String, Object> kwargs = new HashMap<>(); diff --git a/src/main/java/com/google/devtools/build/lib/syntax/FunctionDefStatement.java b/src/main/java/com/google/devtools/build/lib/syntax/FunctionDefStatement.java index f06829ac23..28639bc878 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/FunctionDefStatement.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/FunctionDefStatement.java @@ -52,7 +52,7 @@ public class FunctionDefStatement extends Statement { ArrayList<SkylarkType> types = null; if (defaultExpressions != null) { - defaultValues = new ArrayList<Object>(defaultExpressions.size()); + defaultValues = new ArrayList<>(defaultExpressions.size()); for (Expression expr : defaultExpressions) { defaultValues.add(expr.eval(env)); } diff --git a/src/main/java/com/google/devtools/build/lib/syntax/IfStatement.java b/src/main/java/com/google/devtools/build/lib/syntax/IfStatement.java index 7607e4a4d4..3ac98171dd 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/IfStatement.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/IfStatement.java @@ -80,7 +80,7 @@ public final class IfStatement extends Statement { * ThenBlocks has to have at least one element. */ IfStatement(List<ConditionalStatements> thenBlocks, List<Statement> elseBlock) { - Preconditions.checkArgument(thenBlocks.size() > 0); + Preconditions.checkArgument(!thenBlocks.isEmpty()); this.thenBlocks = ImmutableList.copyOf(thenBlocks); this.elseBlock = ImmutableList.copyOf(elseBlock); } diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java b/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java index 4c0c9b980d..b49fb1ec52 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java @@ -756,8 +756,7 @@ public final class Lexer { } // Like Python, always end with a NEWLINE token, even if no '\n' in input: - if (tokens.size() == 0 - || tokens.get(tokens.size() - 1).kind != TokenKind.NEWLINE) { + if (tokens.isEmpty() || tokens.get(tokens.size() - 1).kind != TokenKind.NEWLINE) { addToken(new Token(TokenKind.NEWLINE, pos - 1, pos)); } diff --git a/src/main/java/com/google/devtools/build/lib/syntax/ListComprehension.java b/src/main/java/com/google/devtools/build/lib/syntax/ListComprehension.java index c48fe64319..3153e8c38d 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/ListComprehension.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/ListComprehension.java @@ -35,12 +35,12 @@ public final class ListComprehension extends Expression { */ public ListComprehension(Expression elementExpression) { this.elementExpression = elementExpression; - lists = new ArrayList<Map.Entry<Ident, Expression>>(); + lists = new ArrayList<>(); } @Override Object eval(Environment env) throws EvalException, InterruptedException { - if (lists.size() == 0) { + if (lists.isEmpty()) { return convert(new ArrayList<>(), env); } diff --git a/src/main/java/com/google/devtools/build/lib/syntax/ListLiteral.java b/src/main/java/com/google/devtools/build/lib/syntax/ListLiteral.java index fc43c2fbcd..4d1a838e6c 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/ListLiteral.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/ListLiteral.java @@ -85,7 +85,7 @@ public final class ListLiteral extends Expression { @Override public String toString() { - StringBuffer sb = new StringBuffer(); + StringBuilder sb = new StringBuilder(); sb.append(startChar(kind)); String sep = ""; for (Expression e : exprs) { diff --git a/src/main/java/com/google/devtools/build/lib/syntax/MixedModeFunction.java b/src/main/java/com/google/devtools/build/lib/syntax/MixedModeFunction.java index 31f2d2d083..024833120d 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/MixedModeFunction.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/MixedModeFunction.java @@ -129,7 +129,7 @@ public abstract class MixedModeFunction extends AbstractFunction { // ast is null when called from Java (as there's no Skylark call site). Location loc = ast == null ? location : ast.getLocation(); - if (onlyNamedArguments && args.size() > 0) { + if (onlyNamedArguments && !args.isEmpty()) { throw new EvalException(loc, getSignature() + " does not accept positional arguments"); } @@ -227,7 +227,7 @@ public abstract class MixedModeFunction extends AbstractFunction { * Render this object in the form of an equivalent Python function signature. */ public String getSignature() { - StringBuffer sb = new StringBuffer(); + StringBuilder sb = new StringBuilder(); sb.append(getName()).append('('); int ii = 0; int len = parameters.size(); diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Parameter.java b/src/main/java/com/google/devtools/build/lib/syntax/Parameter.java index 14267d86de..b1e198b36f 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/Parameter.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/Parameter.java @@ -111,7 +111,7 @@ public abstract class Parameter<V, T> extends Argument { @Override public String toString() { - return name.toString() + "=" + String.valueOf(defaultValue); + return name + "=" + defaultValue; } } @@ -138,7 +138,7 @@ public abstract class Parameter<V, T> extends Argument { if (name == null) { return "*"; } else { - return "*" + name.toString(); + return "*" + name; } } } @@ -159,7 +159,7 @@ public abstract class Parameter<V, T> extends Argument { @Override public String toString() { - return "**" + name.toString(); + return "**" + name; } } diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkEnvironment.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkEnvironment.java index 7e6f4140a4..f84c6ee664 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkEnvironment.java @@ -225,12 +225,8 @@ public class SkylarkEnvironment extends Environment { } } } - for (String symbol : objectsToRemove) { - disabledVariables.add(symbol); - } - for (Class<?> moduleClass : modulesToRemove) { - disabledNameSpaces.add(moduleClass); - } + disabledVariables.addAll(objectsToRemove); + disabledNameSpaces.addAll(modulesToRemove); } public void handleEvent(Event event) { diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkFunction.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkFunction.java index 6a1aadf78c..80d8c40ef4 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkFunction.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkFunction.java @@ -54,8 +54,8 @@ public abstract class SkylarkFunction extends AbstractFunction { */ public void configure(SkylarkBuiltin annotation) { Preconditions.checkState(!configured); - Preconditions.checkArgument(getName().equals(annotation.name()), - getName() + " != " + annotation.name()); + Preconditions.checkArgument( + getName().equals(annotation.name()), "%s != %s", getName(), annotation.name()); mandatoryParamNum = 0; ImmutableList.Builder<String> paramListBuilder = ImmutableList.builder(); ImmutableMap.Builder<String, SkylarkBuiltin.Param> paramTypeBuilder = ImmutableMap.builder(); @@ -97,12 +97,11 @@ public abstract class SkylarkFunction extends AbstractFunction { FuncallExpression ast, Environment env) throws EvalException, InterruptedException { - - Preconditions.checkState(configured, "Function " + getName() + " was not configured"); + Preconditions.checkState(configured, "Function %s was not configured", getName()); try { ImmutableMap.Builder<String, Object> arguments = new ImmutableMap.Builder<>(); if (objectType != null && !FuncallExpression.isNamespace(objectType)) { - args = new ArrayList<Object>(args); // args immutable, get a mutable copy. + args = new ArrayList<>(args); // args immutable, get a mutable copy. arguments.put("self", args.remove(0)); } @@ -156,7 +155,7 @@ public abstract class SkylarkFunction extends AbstractFunction { private void checkTypeAndAddArg(String paramName, Object value, ImmutableMap.Builder<String, Object> arguments, Location loc) throws EvalException { SkylarkBuiltin.Param param = parameterTypes.get(paramName); - if (param.callbackEnabled() && Function.class.isAssignableFrom(value.getClass())) { + if (param.callbackEnabled() && value instanceof Function) { // If we pass a function as an argument we trust the Function implementation with the type // check. It's OK since the function needs to be called manually anyway. arguments.put(paramName, value); @@ -255,9 +254,7 @@ public abstract class SkylarkFunction extends AbstractFunction { public static <KEY_TYPE, VALUE_TYPE> ImmutableMap<KEY_TYPE, VALUE_TYPE> toMap( Iterable<Map.Entry<KEY_TYPE, VALUE_TYPE>> obj) { ImmutableMap.Builder<KEY_TYPE, VALUE_TYPE> builder = ImmutableMap.builder(); - for (Map.Entry<KEY_TYPE, VALUE_TYPE> entry : obj) { - builder.put(entry.getKey(), entry.getValue()); - } + builder.putAll(obj); return builder.build(); } diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java index 5ba7f4d3cc..d946454c36 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java @@ -98,7 +98,7 @@ public final class SkylarkNestedSet implements Iterable<Object> { this.contentType = Preconditions.checkNotNull(contentType, "type cannot be null"); // Initializing the real nested set - NestedSetBuilder<Object> builder = new NestedSetBuilder<Object>(order); + NestedSetBuilder<Object> builder = new NestedSetBuilder<>(order); builder.addAll(items); try { for (NestedSet<Object> nestedSet : transitiveItems) { diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkType.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkType.java index f6cde1241a..d259898c37 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkType.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkType.java @@ -369,7 +369,7 @@ public abstract class SkylarkType { return argType; } @Override public String toString() { - return genericType.toString() + " of " + argType.toString() + "s"; + return genericType + " of " + argType + "s"; } private static Interner<Combination> combinationInterner = @@ -549,7 +549,7 @@ public abstract class SkylarkType { public boolean contains(Object value) { // This returns true a bit too much, but it looks - return Function.class.isAssignableFrom(value.getClass()); + return value instanceof Function; } public static SkylarkFunctionType of(String name) { diff --git a/src/main/java/com/google/devtools/build/lib/syntax/StringLiteral.java b/src/main/java/com/google/devtools/build/lib/syntax/StringLiteral.java index 98d5045800..2193f36c44 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/StringLiteral.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/StringLiteral.java @@ -27,11 +27,7 @@ public final class StringLiteral extends Literal<String> { @Override public String toString() { - return new StringBuilder() - .append(quoteChar) - .append(value.replace(Character.toString(quoteChar), "\\" + quoteChar)) - .append(quoteChar) - .toString(); + return quoteChar + value.replace(Character.toString(quoteChar), "\\" + quoteChar) + quoteChar; } @Override diff --git a/src/main/java/com/google/devtools/build/lib/util/CommandBuilder.java b/src/main/java/com/google/devtools/build/lib/util/CommandBuilder.java index 372802de7d..ae25c4f8dc 100644 --- a/src/main/java/com/google/devtools/build/lib/util/CommandBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/util/CommandBuilder.java @@ -167,7 +167,7 @@ public final class CommandBuilder { public Command build() { Preconditions.checkState(system != OS.UNKNOWN, "Unidentified operating system"); Preconditions.checkNotNull(workingDir, "Working directory must be set"); - Preconditions.checkState(argv.size() > 0, "At least one argument is expected"); + Preconditions.checkState(!argv.isEmpty(), "At least one argument is expected"); return new Command( system == OS.WINDOWS ? transformArgvForWindows() : transformArgvForLinux(), diff --git a/src/main/java/com/google/devtools/build/lib/util/CompactStringIndexer.java b/src/main/java/com/google/devtools/build/lib/util/CompactStringIndexer.java index 698758dba6..84e3c518df 100644 --- a/src/main/java/com/google/devtools/build/lib/util/CompactStringIndexer.java +++ b/src/main/java/com/google/devtools/build/lib/util/CompactStringIndexer.java @@ -333,7 +333,7 @@ public class CompactStringIndexer extends AbstractIndexer { contentOffset = VarInt.getVarInt(content, contentOffset, intHolder); // key length int skyKeyLen = intHolder[0]; int remainingKeyLen = key.length - offset; - int minKeyLen = remainingKeyLen > skyKeyLen ? skyKeyLen : remainingKeyLen; + int minKeyLen = Math.min(skyKeyLen, remainingKeyLen); // Compare given key/offset content with the node key. Skip first key byte for recursive // calls - this byte is equal to the byte in the jump entry and was already compared. @@ -536,7 +536,7 @@ public class CompactStringIndexer extends AbstractIndexer { public synchronized String toString() { StringBuilder builder = new StringBuilder(); builder.append("size = ").append(nodes.size()).append("\n"); - if (nodes.size() > 0) { + if (!nodes.isEmpty()) { int contentSize = dumpContent(builder, rootId, 0, new boolean[nodes.size()]); builder.append("contentSize = ").append(contentSize).append("\n"); } diff --git a/src/main/java/com/google/devtools/build/lib/util/OptionsUtils.java b/src/main/java/com/google/devtools/build/lib/util/OptionsUtils.java index 11bf94f547..0ccc868519 100644 --- a/src/main/java/com/google/devtools/build/lib/util/OptionsUtils.java +++ b/src/main/java/com/google/devtools/build/lib/util/OptionsUtils.java @@ -35,7 +35,7 @@ public final class OptionsUtils { * shell-escaped. */ public static String asShellEscapedString(Iterable<UnparsedOptionValueDescription> optionsList) { - StringBuffer result = new StringBuffer(); + StringBuilder result = new StringBuilder(); for (UnparsedOptionValueDescription option : optionsList) { if (option.isHidden()) { continue; @@ -139,7 +139,7 @@ public final class OptionsUtils { public List<PathFragment> convert(String input) { List<PathFragment> list = new ArrayList<>(); for (String piece : input.split(":")) { - if (!piece.equals("")) { + if (!piece.isEmpty()) { list.add(new PathFragment(piece)); } } diff --git a/src/main/java/com/google/devtools/build/lib/util/Pair.java b/src/main/java/com/google/devtools/build/lib/util/Pair.java index a377c3c20f..dd48d2b5e6 100644 --- a/src/main/java/com/google/devtools/build/lib/util/Pair.java +++ b/src/main/java/com/google/devtools/build/lib/util/Pair.java @@ -29,7 +29,7 @@ public final class Pair<A, B> { * Creates a new pair containing the given elements in order. */ public static <A, B> Pair<A, B> of(@Nullable A first, @Nullable B second) { - return new Pair<A, B>(first, second); + return new Pair<>(first, second); } /** diff --git a/src/main/java/com/google/devtools/build/lib/util/PersistentMap.java b/src/main/java/com/google/devtools/build/lib/util/PersistentMap.java index 7fd4b6d912..123d1cf365 100644 --- a/src/main/java/com/google/devtools/build/lib/util/PersistentMap.java +++ b/src/main/java/com/google/devtools/build/lib/util/PersistentMap.java @@ -368,9 +368,9 @@ public abstract class PersistentMap<K, V> extends ForwardingMap<K, V> { * @throws IOException */ private void saveEntries(Map<K, V> map, Path mapFile) throws IOException { - DataOutputStream out = createMapFile(mapFile); - writeEntries(out, map); - out.close(); + try (DataOutputStream out = createMapFile(mapFile)) { + writeEntries(out, map); + } } /** @@ -436,7 +436,7 @@ public abstract class PersistentMap<K, V> extends ForwardingMap<K, V> { private boolean hasEntries(DataInputStream in, boolean failFast) throws IOException { if (in.available() <= 0) { return false; - } else if (!(in.readUnsignedByte() == ENTRY_MAGIC)) { + } else if (in.readUnsignedByte() != ENTRY_MAGIC) { if (failFast) { throw new IOException("Corrupted entry separator"); } else { diff --git a/src/main/java/com/google/devtools/build/lib/util/ProcMeminfoParser.java b/src/main/java/com/google/devtools/build/lib/util/ProcMeminfoParser.java index 44c1112d61..57cc5fe85f 100644 --- a/src/main/java/com/google/devtools/build/lib/util/ProcMeminfoParser.java +++ b/src/main/java/com/google/devtools/build/lib/util/ProcMeminfoParser.java @@ -47,7 +47,7 @@ public class ProcMeminfoParser { List<String> lines = Files.readLines(new File(fileName), Charset.defaultCharset()); ImmutableMap.Builder<String, Long> builder = ImmutableMap.builder(); for (String line : lines) { - int colon = line.indexOf(":"); + int colon = line.indexOf(':'); String keyword = line.substring(0, colon); String valString = line.substring(colon + 1); try { diff --git a/src/main/java/com/google/devtools/build/lib/util/RegexFilter.java b/src/main/java/com/google/devtools/build/lib/util/RegexFilter.java index d7c6834ad5..46aace35cf 100644 --- a/src/main/java/com/google/devtools/build/lib/util/RegexFilter.java +++ b/src/main/java/com/google/devtools/build/lib/util/RegexFilter.java @@ -95,7 +95,7 @@ public class RegexFilter implements Serializable { * Converts list of regex expressions into one compiled regex expression. */ private static Pattern convertRegexListToPattern(List<String> regexList) { - if (regexList.size() == 0) { + if (regexList.isEmpty()) { return null; } // Wrap each individual regex in the independent group, combine them using '|' and diff --git a/src/main/java/com/google/devtools/build/lib/util/ResourceUsage.java b/src/main/java/com/google/devtools/build/lib/util/ResourceUsage.java index 55807f2395..868bf7cdb5 100644 --- a/src/main/java/com/google/devtools/build/lib/util/ResourceUsage.java +++ b/src/main/java/com/google/devtools/build/lib/util/ResourceUsage.java @@ -213,9 +213,7 @@ public final class ResourceUsage { long token13 = Long.parseLong(stat.next()); long token14 = Long.parseLong(stat.next()); return new long[] { token13, token14 }; - } catch (NumberFormatException e) { - return new long[2]; - } catch (IOException e) { + } catch (NumberFormatException | IOException e) { return new long[2]; } } diff --git a/src/main/java/com/google/devtools/build/lib/util/StringUtil.java b/src/main/java/com/google/devtools/build/lib/util/StringUtil.java index 40f7ec14e1..b24742c2cb 100644 --- a/src/main/java/com/google/devtools/build/lib/util/StringUtil.java +++ b/src/main/java/com/google/devtools/build/lib/util/StringUtil.java @@ -80,7 +80,7 @@ public class StringUtil { if (in == null) { return result; } - for (String val : Splitter.on(" ").omitEmptyStrings().split(in)) { + for (String val : Splitter.on(' ').omitEmptyStrings().split(in)) { // Note that splitter returns a substring(), effectively // retaining the entire "in" String. Make an explicit copy here // to avoid that memory pitfall. Further, because there may be diff --git a/src/main/java/com/google/devtools/build/lib/util/StringUtilities.java b/src/main/java/com/google/devtools/build/lib/util/StringUtilities.java index 9ac1d35696..62b2afd5e9 100644 --- a/src/main/java/com/google/devtools/build/lib/util/StringUtilities.java +++ b/src/main/java/com/google/devtools/build/lib/util/StringUtilities.java @@ -114,7 +114,7 @@ public class StringUtilities { int index = 0; while ((index = input.indexOf(literal, start)) >= 0) { - result.append(input.substring(start, index)); + result.append(input, start, index); result.append(replacement); start = index + literalLength; } diff --git a/src/main/java/com/google/devtools/build/lib/vfs/FileSystem.java b/src/main/java/com/google/devtools/build/lib/vfs/FileSystem.java index 9d4160981c..87658ca4c1 100644 --- a/src/main/java/com/google/devtools/build/lib/vfs/FileSystem.java +++ b/src/main/java/com/google/devtools/build/lib/vfs/FileSystem.java @@ -288,7 +288,7 @@ public abstract class FileSystem { } if (linkTarget.isAbsolute()) { dir = rootPath; } for (String name : linkTarget.segments()) { - if (name.equals(".") || name.equals("")) { + if (name.equals(".") || name.isEmpty()) { // no-op } else if (name.equals("..")) { Path parent = dir.getParentDirectory(); diff --git a/src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java b/src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java index bc55032623..c3d7787cd1 100644 --- a/src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java +++ b/src/main/java/com/google/devtools/build/lib/vfs/FileSystemUtils.java @@ -276,7 +276,7 @@ public class FileSystemUtils { * ("libfoo", "-src") ==> "libfoo-src" */ private static String appendWithoutExtension(String name, String toAppend) { - int dotIndex = name.lastIndexOf("."); + int dotIndex = name.lastIndexOf('.'); if (dotIndex > 0) { String baseName = name.substring(0, dotIndex); String extension = name.substring(dotIndex); diff --git a/src/main/java/com/google/devtools/build/lib/vfs/Path.java b/src/main/java/com/google/devtools/build/lib/vfs/Path.java index de222fe0dc..dd1602420f 100644 --- a/src/main/java/com/google/devtools/build/lib/vfs/Path.java +++ b/src/main/java/com/google/devtools/build/lib/vfs/Path.java @@ -221,7 +221,7 @@ public class Path implements Comparable<Path>, Serializable { synchronized(this) { if (children == null) { // 66% of Paths have size == 1, 80% <= 2 - children = new IdentityHashMap<String, Reference<Path>>(1); + children = new IdentityHashMap<>(1); } Reference<Path> childRef = children.get(childName); Path child; @@ -550,7 +550,7 @@ public class Path implements Comparable<Path>, Serializable { * @precondition segment contains no slashes. */ private Path getCanonicalPath(String segment) { - if (segment.equals(".") || segment.equals("")) { + if (segment.equals(".") || segment.isEmpty()) { return this; // that's a noop } else if (segment.equals("..")) { // root's parent is root, when canonicalising: diff --git a/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java b/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java index 8336dc49da..7587a122df 100644 --- a/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java +++ b/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java @@ -309,19 +309,22 @@ public final class PathFragment implements Comparable<PathFragment>, Serializabl int segmentCount = 0; for (String segment : segments) { - if (segment.equals(".")) { - // Just discard it - } else if (segment.equals("..")) { - if (segmentCount > 0 && !scratchSegments[segmentCount - 1].equals("..")) { - // Remove the last segment, if there is one and it is not "..". This - // means that the resulting PathFragment can still contain ".." - // segments at the beginning. - segmentCount--; - } else { + switch (segment) { + case ".": + // Just discard it + break; + case "..": + if (segmentCount > 0 && !scratchSegments[segmentCount - 1].equals("..")) { + // Remove the last segment, if there is one and it is not "..". This + // means that the resulting PathFragment can still contain ".." + // segments at the beginning. + segmentCount--; + } else { + scratchSegments[segmentCount++] = segment; + } + break; + default: scratchSegments[segmentCount++] = segment; - } - } else { - scratchSegments[segmentCount++] = segment; } } @@ -374,8 +377,7 @@ public final class PathFragment implements Comparable<PathFragment>, Serializabl public PathFragment getChild(String baseName) { FileSystemUtils.checkBaseName(baseName); baseName = StringCanonicalizer.intern(baseName); - String[] newSegments = new String[segments.length + 1]; - System.arraycopy(segments, 0, newSegments, 0, segments.length); + String[] newSegments = Arrays.copyOf(segments, segments.length + 1); newSegments[newSegments.length - 1] = baseName; return new PathFragment(driveLetter, isAbsolute, newSegments); } diff --git a/src/main/java/com/google/devtools/build/lib/vfs/ReadonlyFileSystem.java b/src/main/java/com/google/devtools/build/lib/vfs/ReadonlyFileSystem.java index fc668db87a..2b275f61bc 100644 --- a/src/main/java/com/google/devtools/build/lib/vfs/ReadonlyFileSystem.java +++ b/src/main/java/com/google/devtools/build/lib/vfs/ReadonlyFileSystem.java @@ -40,7 +40,7 @@ public abstract class ReadonlyFileSystem extends FileSystem { protected IOException modificationException() { String longname = this.getClass().getName(); - String shortname = longname.substring(longname.lastIndexOf(".") + 1); + String shortname = longname.substring(longname.lastIndexOf('.') + 1); return new IOException( shortname + " does not support mutating operations"); } diff --git a/src/main/java/com/google/devtools/build/lib/vfs/RootedPath.java b/src/main/java/com/google/devtools/build/lib/vfs/RootedPath.java index c753aa6e1d..d382f169bf 100644 --- a/src/main/java/com/google/devtools/build/lib/vfs/RootedPath.java +++ b/src/main/java/com/google/devtools/build/lib/vfs/RootedPath.java @@ -111,6 +111,6 @@ public class RootedPath implements Serializable { @Override public String toString() { - return "[" + root.toString() + "]/[" + relativePath.toString() + "]"; + return "[" + root + "]/[" + relativePath + "]"; } } diff --git a/src/main/java/com/google/devtools/build/lib/vfs/UnionFileSystem.java b/src/main/java/com/google/devtools/build/lib/vfs/UnionFileSystem.java index b349b53513..d2d9c00096 100644 --- a/src/main/java/com/google/devtools/build/lib/vfs/UnionFileSystem.java +++ b/src/main/java/com/google/devtools/build/lib/vfs/UnionFileSystem.java @@ -88,7 +88,7 @@ public class UnionFileSystem extends FileSystem { "please use the rootFileSystem argument instead."); this.readOnly = readOnly; - this.pathDelegate = new StringTrie<FileSystem>(); + this.pathDelegate = new StringTrie<>(); for (Map.Entry<PathFragment, FileSystem> prefix : prefixMapping.entrySet()) { FileSystem delegate = prefix.getValue(); diff --git a/src/main/java/com/google/devtools/build/lib/vfs/UnixGlob.java b/src/main/java/com/google/devtools/build/lib/vfs/UnixGlob.java index d512abcd25..441571ef3d 100644 --- a/src/main/java/com/google/devtools/build/lib/vfs/UnixGlob.java +++ b/src/main/java/com/google/devtools/build/lib/vfs/UnixGlob.java @@ -33,7 +33,6 @@ import com.google.devtools.build.lib.profiler.ProfilerTask; import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -135,8 +134,7 @@ public final class UnixGlob { } private static boolean excludedOnMatch(Path path, List<String[]> excludePatterns, - int idx, Cache<String, Pattern> cache, - Predicate<Path> dirPred) { + int idx, Cache<String, Pattern> cache) { for (String[] excludePattern : excludePatterns) { String text = path.getBaseName(); if (idx == excludePattern.length @@ -300,9 +298,9 @@ public final class UnixGlob { return path.statNullable(symlinks); } }; - + public static final AtomicReference<FilesystemCalls> DEFAULT_SYSCALLS_REF = - new AtomicReference<FilesystemCalls>(DEFAULT_SYSCALLS); + new AtomicReference<>(DEFAULT_SYSCALLS); public static Builder forPath(Path path) { return new Builder(path); @@ -350,9 +348,7 @@ public final class UnixGlob { * <p>For a description of the syntax of the patterns, see {@link UnixGlob}. */ public Builder addPatterns(String... patterns) { - for (String pattern : patterns) { - this.patterns.add(pattern); - } + Collections.addAll(this.patterns, patterns); return this; } @@ -382,7 +378,7 @@ public final class UnixGlob { * <p>For a description of the syntax of the patterns, see {@link UnixGlob}. */ public Builder addExcludes(String... excludes) { - this.excludes.addAll(Arrays.asList(excludes)); + Collections.addAll(this.excludes, excludes); return this; } @@ -708,7 +704,7 @@ public final class UnixGlob { if (idx == patternParts.length) { // Base case. if (!(excludeDirectories && baseIsDir) && - !excludedOnMatch(base, excludePatterns, excludeIdx, cache, dirPred)) { + !excludedOnMatch(base, excludePatterns, excludeIdx, cache)) { results.add(base); } @@ -774,7 +770,7 @@ public final class UnixGlob { } else { // Instead of using an async call, just repeat the base case above. if (idx + 1 == patternParts.length && - !excludedOnMatch(child, relevantExcludes, excludeIdx + 1, cache, dirPred)) { + !excludedOnMatch(child, relevantExcludes, excludeIdx + 1, cache)) { results.add(child); } } diff --git a/src/main/java/com/google/devtools/build/lib/webstatusserver/IndexPageHandler.java b/src/main/java/com/google/devtools/build/lib/webstatusserver/IndexPageHandler.java index c9eb3ed85b..acab0be927 100644 --- a/src/main/java/com/google/devtools/build/lib/webstatusserver/IndexPageHandler.java +++ b/src/main/java/com/google/devtools/build/lib/webstatusserver/IndexPageHandler.java @@ -25,10 +25,10 @@ import com.sun.net.httpserver.HttpServer; import java.io.IOException; import java.io.OutputStream; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; - /** * Handlers for displaying the index page of server. * @@ -73,9 +73,9 @@ public class IndexPageHandler { } String serializedResponse = response.toString(); exchange.sendResponseHeaders(200, serializedResponse.length()); - OutputStream os = exchange.getResponseBody(); - os.write(serializedResponse.getBytes()); - os.close(); + try (OutputStream os = exchange.getResponseBody()) { + os.write(serializedResponse.getBytes(StandardCharsets.UTF_8)); + } } } } diff --git a/src/main/java/com/google/devtools/build/lib/webstatusserver/StaticResourceHandler.java b/src/main/java/com/google/devtools/build/lib/webstatusserver/StaticResourceHandler.java index cd9eb5f845..1789bbf52a 100644 --- a/src/main/java/com/google/devtools/build/lib/webstatusserver/StaticResourceHandler.java +++ b/src/main/java/com/google/devtools/build/lib/webstatusserver/StaticResourceHandler.java @@ -26,6 +26,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.URL; +import java.nio.charset.StandardCharsets; import java.util.List; /** @@ -64,9 +65,9 @@ public class StaticResourceHandler implements HttpHandler { public void handle(HttpExchange exchange) throws IOException { exchange.getResponseHeaders().put("Content-Type", contentType); exchange.sendResponseHeaders(httpCode, response.length()); - OutputStream os = exchange.getResponseBody(); - os.write(response.getBytes()); - os.close(); + try (OutputStream os = exchange.getResponseBody()) { + os.write(response.getBytes(StandardCharsets.UTF_8)); + } } public static InputStream loadFromAbsolutePath(Class<?> loadingClass, String path) diff --git a/src/main/java/com/google/devtools/build/lib/webstatusserver/TestStatusHandler.java b/src/main/java/com/google/devtools/build/lib/webstatusserver/TestStatusHandler.java index 41cb06d029..3d1357eab2 100644 --- a/src/main/java/com/google/devtools/build/lib/webstatusserver/TestStatusHandler.java +++ b/src/main/java/com/google/devtools/build/lib/webstatusserver/TestStatusHandler.java @@ -29,6 +29,7 @@ import com.sun.net.httpserver.HttpServer; import java.io.IOException; import java.io.OutputStream; import java.lang.reflect.Type; +import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.Map.Entry; @@ -85,9 +86,9 @@ class TestStatusHandler { String serializedResponse = response.toString(); exchange.sendResponseHeaders(200, serializedResponse.length()); - OutputStream os = exchange.getResponseBody(); - os.write(serializedResponse.getBytes()); - os.close(); + try (OutputStream os = exchange.getResponseBody()) { + os.write(serializedResponse.getBytes(StandardCharsets.UTF_8)); + } } } @@ -112,9 +113,9 @@ class TestStatusHandler { String serializedResponse = response.toString(); exchange.sendResponseHeaders(200, serializedResponse.length()); - OutputStream os = exchange.getResponseBody(); - os.write(serializedResponse.getBytes()); - os.close(); + try (OutputStream os = exchange.getResponseBody()) { + os.write(serializedResponse.getBytes(StandardCharsets.UTF_8)); + } } } diff --git a/src/main/java/com/google/devtools/build/lib/webstatusserver/WebStatusBuildLog.java b/src/main/java/com/google/devtools/build/lib/webstatusserver/WebStatusBuildLog.java index 86eed8835e..69c07e0b0f 100644 --- a/src/main/java/com/google/devtools/build/lib/webstatusserver/WebStatusBuildLog.java +++ b/src/main/java/com/google/devtools/build/lib/webstatusserver/WebStatusBuildLog.java @@ -47,8 +47,8 @@ public class WebStatusBuildLog { private boolean complete = false; private static final Logger LOG = Logger.getLogger(WebStatusEventCollector.class.getCanonicalName()); - private Map<String, JsonElement> commandInfo = new HashMap<String, JsonElement>(); - private Map<String, JsonObject> testCases = new HashMap<String, JsonObject>(); + private Map<String, JsonElement> commandInfo = new HashMap<>(); + private Map<String, JsonObject> testCases = new HashMap<>(); private long startTime; private ImmutableList<String> targetList; private UUID commandId; diff --git a/src/main/java/com/google/devtools/build/lib/webstatusserver/WebStatusServerModule.java b/src/main/java/com/google/devtools/build/lib/webstatusserver/WebStatusServerModule.java index 13d4c8be91..507eaa590f 100644 --- a/src/main/java/com/google/devtools/build/lib/webstatusserver/WebStatusServerModule.java +++ b/src/main/java/com/google/devtools/build/lib/webstatusserver/WebStatusServerModule.java @@ -33,6 +33,7 @@ import com.sun.net.httpserver.HttpServer; import java.io.IOException; import java.io.OutputStream; import java.net.InetSocketAddress; +import java.nio.charset.StandardCharsets; import java.util.LinkedList; import java.util.UUID; import java.util.logging.Logger; @@ -146,9 +147,9 @@ public class WebStatusServerModule extends BlazeModule { public void handle(HttpExchange exchange) throws IOException { exchange.getResponseHeaders().put("Content-Type", ImmutableList.of("text/plain")); exchange.sendResponseHeaders(200, response.length()); - OutputStream os = exchange.getResponseBody(); - os.write(response.getBytes()); - os.close(); + try (OutputStream os = exchange.getResponseBody()) { + os.write(response.getBytes(StandardCharsets.UTF_8)); + } } } |