5656 *
5757 * <p>Incomplete; we'll implement getVisibility when needed.
5858 */
59- public class ConfiguredTargetAccessor implements TargetAccessor <ConfiguredTarget > {
59+ public class ConfiguredTargetAccessor implements TargetAccessor <KeyedConfiguredTarget > {
6060
6161 private final WalkableGraph walkableGraph ;
6262 private final ConfiguredTargetQueryEnvironment queryEnvironment ;
@@ -68,62 +68,58 @@ public ConfiguredTargetAccessor(
6868 }
6969
7070 @ Override
71- public String getTargetKind (ConfiguredTarget target ) {
72- Target actualTarget = getTargetFromConfiguredTarget (target );
71+ public String getTargetKind (KeyedConfiguredTarget target ) {
72+ Target actualTarget = getTarget (target );
7373 return actualTarget .getTargetKind ();
7474 }
7575
7676 @ Override
77- public String getLabel (ConfiguredTarget target ) {
77+ public String getLabel (KeyedConfiguredTarget target ) {
7878 return target .getLabel ().toString ();
7979 }
8080
8181 @ Override
82- public String getPackage (ConfiguredTarget target ) {
82+ public String getPackage (KeyedConfiguredTarget target ) {
8383 return target .getLabel ().getPackageIdentifier ().getPackageFragment ().toString ();
8484 }
8585
8686 @ Override
87- public boolean isRule (ConfiguredTarget target ) {
88- Target actualTarget = getTargetFromConfiguredTarget (target );
87+ public boolean isRule (KeyedConfiguredTarget target ) {
88+ Target actualTarget = getTarget (target );
8989 return actualTarget instanceof Rule ;
9090 }
9191
9292 @ Override
93- public boolean isTestRule (ConfiguredTarget target ) {
94- Target actualTarget = getTargetFromConfiguredTarget (target );
93+ public boolean isTestRule (KeyedConfiguredTarget target ) {
94+ Target actualTarget = getTarget (target );
9595 return TargetUtils .isTestRule (actualTarget );
9696 }
9797
9898 @ Override
99- public boolean isTestSuite (ConfiguredTarget target ) {
100- Target actualTarget = getTargetFromConfiguredTarget (target );
99+ public boolean isTestSuite (KeyedConfiguredTarget target ) {
100+ Target actualTarget = getTarget (target );
101101 return TargetUtils .isTestSuiteRule (actualTarget );
102102 }
103103
104104 @ Override
105- public List <ConfiguredTarget > getPrerequisites (
105+ public List <KeyedConfiguredTarget > getPrerequisites (
106106 QueryExpression caller ,
107- ConfiguredTarget configuredTarget ,
107+ KeyedConfiguredTarget keyedConfiguredTarget ,
108108 String attrName ,
109109 String errorMsgPrefix )
110110 throws QueryException , InterruptedException {
111- ConfiguredTarget actualConfiguredTarget = configuredTarget .getActual ();
111+ // Process aliases.
112+ KeyedConfiguredTarget actual = keyedConfiguredTarget .getActual ();
112113
113114 Preconditions .checkArgument (
114- isRule (actualConfiguredTarget ),
115- "%s %s is not a rule configured target" ,
116- errorMsgPrefix ,
117- getLabel (actualConfiguredTarget ));
115+ isRule (actual ), "%s %s is not a rule configured target" , errorMsgPrefix , getLabel (actual ));
118116
119- Multimap <Label , ConfiguredTarget > depsByLabel =
117+ Multimap <Label , KeyedConfiguredTarget > depsByLabel =
120118 Multimaps .index (
121- queryEnvironment .getFwdDeps (ImmutableList .of (actualConfiguredTarget )),
122- ConfiguredTarget ::getLabel );
119+ queryEnvironment .getFwdDeps (ImmutableList .of (actual )), kct -> kct .getLabel ());
123120
124- Rule rule = (Rule ) getTargetFromConfiguredTarget (actualConfiguredTarget );
125- ImmutableMap <Label , ConfigMatchingProvider > configConditions =
126- actualConfiguredTarget .getConfigConditions ();
121+ Rule rule = (Rule ) getTarget (actual );
122+ ImmutableMap <Label , ConfigMatchingProvider > configConditions = actual .getConfigConditions ();
127123 ConfiguredAttributeMapper attributeMapper =
128124 ConfiguredAttributeMapper .of (rule , configConditions );
129125 if (!attributeMapper .has (attrName )) {
@@ -134,42 +130,42 @@ public List<ConfiguredTarget> getPrerequisites(
134130 errorMsgPrefix , rule .getRuleClass (), attrName ),
135131 ConfigurableQuery .Code .ATTRIBUTE_MISSING );
136132 }
137- ImmutableList .Builder <ConfiguredTarget > toReturn = ImmutableList .builder ();
133+ ImmutableList .Builder <KeyedConfiguredTarget > toReturn = ImmutableList .builder ();
138134 attributeMapper .visitLabels (attributeMapper .getAttributeDefinition (attrName )).stream ()
139135 .forEach (depEdge -> toReturn .addAll (depsByLabel .get (depEdge .getLabel ())));
140136 return toReturn .build ();
141137 }
142138
143139 @ Override
144- public List <String > getStringListAttr (ConfiguredTarget target , String attrName ) {
145- Target actualTarget = getTargetFromConfiguredTarget (target );
140+ public List <String > getStringListAttr (KeyedConfiguredTarget target , String attrName ) {
141+ Target actualTarget = getTarget (target );
146142 return TargetUtils .getStringListAttr (actualTarget , attrName );
147143 }
148144
149145 @ Override
150- public String getStringAttr (ConfiguredTarget target , String attrName ) {
151- Target actualTarget = getTargetFromConfiguredTarget (target );
146+ public String getStringAttr (KeyedConfiguredTarget target , String attrName ) {
147+ Target actualTarget = getTarget (target );
152148 return TargetUtils .getStringAttr (actualTarget , attrName );
153149 }
154150
155151 @ Override
156- public Iterable <String > getAttrAsString (ConfiguredTarget target , String attrName ) {
157- Target actualTarget = getTargetFromConfiguredTarget (target );
152+ public Iterable <String > getAttrAsString (KeyedConfiguredTarget target , String attrName ) {
153+ Target actualTarget = getTarget (target );
158154 return TargetUtils .getAttrAsString (actualTarget , attrName );
159155 }
160156
161157 @ Override
162- public ImmutableSet <QueryVisibility <ConfiguredTarget >> getVisibility (
163- QueryExpression caller , ConfiguredTarget from ) throws QueryException {
158+ public ImmutableSet <QueryVisibility <KeyedConfiguredTarget >> getVisibility (
159+ QueryExpression caller , KeyedConfiguredTarget from ) throws QueryException {
164160 // TODO(bazel-team): implement this if needed.
165161 throw new QueryException (
166162 "visible() is not supported on configured targets" ,
167163 ConfigurableQuery .Code .VISIBLE_FUNCTION_NOT_SUPPORTED );
168164 }
169165
170- public Target getTargetFromConfiguredTarget ( ConfiguredTarget configuredTarget ) {
166+ public Target getTarget ( KeyedConfiguredTarget keyedConfiguredTarget ) {
171167 // Dereference any aliases that might be present.
172- Label label = configuredTarget .getOriginalLabel ();
168+ Label label = keyedConfiguredTarget . getConfiguredTarget () .getOriginalLabel ();
173169 try {
174170 return queryEnvironment .getTarget (label );
175171 } catch (InterruptedException e ) {
@@ -180,14 +176,18 @@ public Target getTargetFromConfiguredTarget(ConfiguredTarget configuredTarget) {
180176 }
181177
182178 /** Returns the rule that generates the given output file. */
183- public RuleConfiguredTarget getGeneratingConfiguredTarget (OutputFileConfiguredTarget oct )
179+ RuleConfiguredTarget getGeneratingConfiguredTarget (KeyedConfiguredTarget kct )
184180 throws InterruptedException {
181+ Preconditions .checkArgument (kct .getConfiguredTarget () instanceof OutputFileConfiguredTarget );
185182 return (RuleConfiguredTarget )
186183 ((ConfiguredTargetValue )
187184 walkableGraph .getValue (
188185 ConfiguredTargetKey .builder ()
189- .setLabel (oct .getGeneratingRule ().getLabel ())
190- .setConfiguration (queryEnvironment .getConfiguration (oct ))
186+ .setLabel (
187+ ((OutputFileConfiguredTarget ) kct .getConfiguredTarget ())
188+ .getGeneratingRule ()
189+ .getLabel ())
190+ .setConfiguration (queryEnvironment .getConfiguration (kct ))
191191 .build ()))
192192 .getConfiguredTarget ();
193193 }
0 commit comments