diff options
author | twerth <twerth@google.com> | 2018-06-22 02:26:25 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-06-22 02:28:10 -0700 |
commit | 62dd5115e6abfd807e5ed7579e4bcf97fb05b6b1 (patch) | |
tree | 0dba4bfaa6c6317b1decdca50df0794f9959b920 | |
parent | 5eb75188f3b98d5ef49c58ffb624f48b852413c3 (diff) |
Add ConfiguredTargetValueAccessor.
This will be necessary for the action graph query which operates on
ConfiguredTargetValue's.
RELNOTES: None
PiperOrigin-RevId: 201657526
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/query2/ConfiguredTargetAccessor.java | 10 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/query2/ConfiguredTargetValueAccessor.java | 121 |
2 files changed, 130 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/query2/ConfiguredTargetAccessor.java b/src/main/java/com/google/devtools/build/lib/query2/ConfiguredTargetAccessor.java index 99fa621325..d629709a77 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/ConfiguredTargetAccessor.java +++ b/src/main/java/com/google/devtools/build/lib/query2/ConfiguredTargetAccessor.java @@ -29,7 +29,10 @@ import com.google.devtools.build.skyframe.WalkableGraph; import java.util.List; import java.util.Set; -/** A {@link TargetAccessor} for {@link ConfiguredTarget} objects. Incomplete. */ +/** A {@link TargetAccessor} for {@link ConfiguredTarget} objects. + * + * Incomplete; we'll implement getLabelListAttr and getVisibility when needed. + */ class ConfiguredTargetAccessor implements TargetAccessor<ConfiguredTarget> { private final WalkableGraph walkableGraph; @@ -109,6 +112,11 @@ class ConfiguredTargetAccessor implements TargetAccessor<ConfiguredTarget> { } public Target getTargetFromConfiguredTarget(ConfiguredTarget configuredTarget) { + return getTargetFromConfiguredTarget(configuredTarget, walkableGraph); + } + + public static Target getTargetFromConfiguredTarget( + ConfiguredTarget configuredTarget, WalkableGraph walkableGraph) { Target target = null; try { Label label = diff --git a/src/main/java/com/google/devtools/build/lib/query2/ConfiguredTargetValueAccessor.java b/src/main/java/com/google/devtools/build/lib/query2/ConfiguredTargetValueAccessor.java new file mode 100644 index 0000000000..db8d40e1db --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/query2/ConfiguredTargetValueAccessor.java @@ -0,0 +1,121 @@ +// Copyright 2018 The Bazel Authors. 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.query2; + +import com.google.devtools.build.lib.packages.Rule; +import com.google.devtools.build.lib.packages.Target; +import com.google.devtools.build.lib.packages.TargetUtils; +import com.google.devtools.build.lib.query2.engine.QueryEnvironment.TargetAccessor; +import com.google.devtools.build.lib.query2.engine.QueryException; +import com.google.devtools.build.lib.query2.engine.QueryExpression; +import com.google.devtools.build.lib.query2.engine.QueryVisibility; +import com.google.devtools.build.lib.skyframe.ConfiguredTargetValue; +import com.google.devtools.build.skyframe.WalkableGraph; +import java.util.List; +import java.util.Set; + +/** A {@link TargetAccessor} for {@link ConfiguredTargetValue} objects. + * + * Incomplete; we'll implement getLabelListAttr and getVisibility when needed. + */ +class ConfiguredTargetValueAccessor implements TargetAccessor<ConfiguredTargetValue> { + + private final WalkableGraph walkableGraph; + + ConfiguredTargetValueAccessor(WalkableGraph walkableGraph) { + this.walkableGraph = walkableGraph; + } + + @Override + public String getTargetKind(ConfiguredTargetValue configuredTargetValue) { + Target actualTarget = getTargetFromConfiguredTargetValue(configuredTargetValue); + return actualTarget.getTargetKind(); + } + + @Override + public String getLabel(ConfiguredTargetValue configuredTargetValue) { + return configuredTargetValue.getConfiguredTarget().getLabel().toString(); + } + + @Override + public String getPackage(ConfiguredTargetValue configuredTargetValue) { + return configuredTargetValue + .getConfiguredTarget() + .getLabel() + .getPackageIdentifier() + .getPackageFragment() + .toString(); + } + + @Override + public boolean isRule(ConfiguredTargetValue configuredTargetValue) { + Target actualTarget = getTargetFromConfiguredTargetValue(configuredTargetValue); + return actualTarget instanceof Rule; + } + + @Override + public boolean isTestRule(ConfiguredTargetValue configuredTargetValue) { + Target actualTarget = getTargetFromConfiguredTargetValue(configuredTargetValue); + return TargetUtils.isTestRule(actualTarget); + } + + @Override + public boolean isTestSuite(ConfiguredTargetValue configuredTargetValue) { + Target actualTarget = getTargetFromConfiguredTargetValue(configuredTargetValue); + return TargetUtils.isTestSuiteRule(actualTarget); + } + + @Override + public List<ConfiguredTargetValue> getLabelListAttr( + QueryExpression caller, + ConfiguredTargetValue configuredTargetValue, + String attrName, + String errorMsgPrefix) + throws QueryException, InterruptedException { + // TODO(bazel-team): implement this if needed. + throw new UnsupportedOperationException(); + } + + @Override + public List<String> getStringListAttr( + ConfiguredTargetValue configuredTargetValue, String attrName) { + Target actualTarget = getTargetFromConfiguredTargetValue(configuredTargetValue); + return TargetUtils.getStringListAttr(actualTarget, attrName); + } + + @Override + public String getStringAttr(ConfiguredTargetValue configuredTargetValue, String attrName) { + Target actualTarget = getTargetFromConfiguredTargetValue(configuredTargetValue); + return TargetUtils.getStringAttr(actualTarget, attrName); + } + + @Override + public Iterable<String> getAttrAsString( + ConfiguredTargetValue configuredTargetValue, String attrName) { + Target actualTarget = getTargetFromConfiguredTargetValue(configuredTargetValue); + return TargetUtils.getAttrAsString(actualTarget, attrName); + } + + @Override + public Set<QueryVisibility<ConfiguredTargetValue>> getVisibility(ConfiguredTargetValue from) + throws QueryException, InterruptedException { + // TODO(bazel-team): implement this if needed. + throw new UnsupportedOperationException(); + } + + private Target getTargetFromConfiguredTargetValue(ConfiguredTargetValue configuredTargetValue) { + return ConfiguredTargetAccessor.getTargetFromConfiguredTarget( + configuredTargetValue.getConfiguredTarget(), walkableGraph); + } +} |