// Copyright 2014 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.actions; import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.syntax.Label; /** * The owner of an action is responsible for reporting conflicts in the action * graph (two actions attempting to generate the same artifact). * * Typically an action's owner is the RuleConfiguredTarget instance responsible * for creating it, but to avoid coupling between the view and actions * packages, the RuleConfiguredTarget is hidden behind this interface, which * exposes only the error reporting functionality. */ public interface ActionOwner { /** * Returns the location of this ActionOwner, if any; null otherwise. */ Location getLocation(); /** * Returns the label for this ActionOwner, if any; null otherwise. */ Label getLabel(); /** * Returns the name of the configuration of the action owner. */ String getConfigurationName(); /** * Returns the configuration's mnemonic. */ String getConfigurationMnemonic(); /** * Returns the short cache key for the configuration of the action owner. * *

Special action owners that are not targets can return any string here as long as it is * constant. If the configuration is null, this should return "null". * *

These requirements exist so that {@link ActionOwner} instances are consistent with * {@code BuildView.ActionOwnerIdentity(ConfiguredTargetValue)}. */ String getConfigurationShortCacheKey(); /** * Returns the target kind (rule class name) for this ActionOwner, if any; null otherwise. */ String getTargetKind(); /** * Returns additional information that should be displayed in progress messages, or {@code null} * if nothing should be added. */ String getAdditionalProgressInfo(); }