diff options
author | Marian Lobur <loburm@google.com> | 2015-06-26 16:03:14 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2015-06-29 16:37:42 +0000 |
commit | be3171e9624ce8ab23a3a9d799d86196f6194f81 (patch) | |
tree | 7a257bcb0384b121ce6ec24328cf712902d35731 /src/main/java/com/google/devtools/build/lib/skyframe/BuildTargetPatternsResultBuilder.java | |
parent | 8a84dd98b8fcdf71494e058e8bc36ed8ae1b6ec8 (diff) |
Refactoring of SkyframeTargetPatternEvaluator. Now instead of making separate calls to skyframeExecutor for each target patterns, all of them are computed in one call.
--
MOS_MIGRATED_REVID=96973513
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/BuildTargetPatternsResultBuilder.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/BuildTargetPatternsResultBuilder.java | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildTargetPatternsResultBuilder.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildTargetPatternsResultBuilder.java new file mode 100644 index 0000000000..11301b5254 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildTargetPatternsResultBuilder.java @@ -0,0 +1,49 @@ +// Copyright 2015 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package com.google.devtools.build.lib.skyframe; + +import com.google.common.base.Predicates; +import com.google.common.collect.Iterables; +import com.google.devtools.build.lib.cmdline.ResolvedTargets; +import com.google.devtools.build.lib.cmdline.TargetParsingException; +import com.google.devtools.build.lib.packages.Target; +import com.google.devtools.build.lib.syntax.Label; + +/** + * Evaluates set of build targets based on list of target patterns. + */ +class BuildTargetPatternsResultBuilder extends TargetPatternsResultBuilder { + private ResolvedTargets.Builder<Label> resolvedLabelsBuilder = ResolvedTargets.builder(); + + @Override + void addLabelsOfNegativePattern(ResolvedTargets<Label> labels) { + resolvedLabelsBuilder.filter(Predicates.not(Predicates.in(labels.getTargets()))); + } + + @Override + void addLabelsOfPositivePattern(ResolvedTargets<Label> labels) { + resolvedLabelsBuilder.merge(labels); + } + + @Override + protected Iterable<Label> getLabels() { + ResolvedTargets<Label> resolvedLabels = resolvedLabelsBuilder.build(); + return Iterables.concat(resolvedLabels.getTargets(), resolvedLabels.getFilteredTargets()); + } + + @Override + ResolvedTargets.Builder<Target> buildInternal() throws TargetParsingException { + return transformLabelsIntoTargets(resolvedLabelsBuilder.build()); + } +} |