OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library domain.analysis; | 5 library domain.analysis; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:core' hide Resource; | 8 import 'dart:core' hide Resource; |
9 | 9 |
10 import 'package:analysis_server/plugin/analysis/analysis_domain.dart'; | 10 import 'package:analysis_server/plugin/analysis/analysis_domain.dart'; |
11 import 'package:analysis_server/src/analysis_server.dart'; | 11 import 'package:analysis_server/src/analysis_server.dart'; |
12 import 'package:analysis_server/src/computer/computer_hover.dart'; | 12 import 'package:analysis_server/src/computer/computer_hover.dart'; |
13 import 'package:analysis_server/src/constants.dart'; | 13 import 'package:analysis_server/src/constants.dart'; |
14 import 'package:analysis_server/src/context_manager.dart'; | 14 import 'package:analysis_server/src/context_manager.dart'; |
15 import 'package:analysis_server/src/domains/analysis/navigation.dart'; | 15 import 'package:analysis_server/src/domains/analysis/navigation.dart'; |
16 import 'package:analysis_server/src/operation/operation_analysis.dart' | 16 import 'package:analysis_server/src/operation/operation_analysis.dart' |
17 show | 17 show |
18 NavigationOperation, | 18 NavigationOperation, |
19 OccurrencesOperation, | 19 OccurrencesOperation, |
20 sendAnalysisNotificationNavigation; | 20 sendAnalysisNotificationNavigation; |
21 import 'package:analysis_server/src/protocol/protocol_internal.dart'; | 21 import 'package:analysis_server/src/protocol/protocol_internal.dart'; |
22 import 'package:analysis_server/src/protocol_server.dart'; | 22 import 'package:analysis_server/src/protocol_server.dart'; |
23 import 'package:analysis_server/src/services/dependencies/library_dependencies.d
art'; | 23 import 'package:analysis_server/src/services/dependencies/library_dependencies.d
art'; |
| 24 import 'package:analysis_server/src/services/dependencies/reachable_source_colle
ctor.dart'; |
24 import 'package:analyzer/file_system/file_system.dart'; | 25 import 'package:analyzer/file_system/file_system.dart'; |
25 import 'package:analyzer/src/generated/ast.dart'; | 26 import 'package:analyzer/src/generated/ast.dart'; |
26 import 'package:analyzer/src/generated/element.dart'; | 27 import 'package:analyzer/src/generated/element.dart'; |
27 import 'package:analyzer/src/generated/engine.dart' as engine; | 28 import 'package:analyzer/src/generated/engine.dart' as engine; |
28 import 'package:analyzer/src/generated/java_engine.dart' show CaughtException; | 29 import 'package:analyzer/src/generated/java_engine.dart' show CaughtException; |
29 import 'package:analyzer/src/generated/source.dart'; | 30 import 'package:analyzer/src/generated/source.dart'; |
30 import 'package:analyzer/task/model.dart' show ResultDescriptor; | 31 import 'package:analyzer/task/model.dart' show ResultDescriptor; |
31 | 32 |
32 /** | 33 /** |
33 * Instances of the class [AnalysisDomainHandler] implement a [RequestHandler] | 34 * Instances of the class [AnalysisDomainHandler] implement a [RequestHandler] |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 if (response != Response.DELAYED_RESPONSE) { | 158 if (response != Response.DELAYED_RESPONSE) { |
158 server.sendResponse(response); | 159 server.sendResponse(response); |
159 } | 160 } |
160 break; | 161 break; |
161 } | 162 } |
162 }); | 163 }); |
163 // delay response | 164 // delay response |
164 return Response.DELAYED_RESPONSE; | 165 return Response.DELAYED_RESPONSE; |
165 } | 166 } |
166 | 167 |
| 168 /** |
| 169 * Implement the `analysis.getReachableSources` request. |
| 170 */ |
| 171 Response getReachableSources(Request request) { |
| 172 AnalysisGetReachableSourcesParams params = |
| 173 new AnalysisGetReachableSourcesParams.fromRequest(request); |
| 174 ContextSourcePair pair = server.getContextSourcePair(params.file); |
| 175 if (pair.context == null || pair.source == null) { |
| 176 return new Response.getReachableSourcesInvalidFile(request); |
| 177 } |
| 178 Map<String, List<String>> sources = new ReachableSourceCollector( |
| 179 pair.source, pair.context).collectSources(); |
| 180 return new AnalysisGetReachableSourcesResult(sources) |
| 181 .toResponse(request.id); |
| 182 } |
| 183 |
167 @override | 184 @override |
168 Response handleRequest(Request request) { | 185 Response handleRequest(Request request) { |
169 try { | 186 try { |
170 String requestName = request.method; | 187 String requestName = request.method; |
171 if (requestName == ANALYSIS_GET_ERRORS) { | 188 if (requestName == ANALYSIS_GET_ERRORS) { |
172 return getErrors(request); | 189 return getErrors(request); |
173 } else if (requestName == ANALYSIS_GET_HOVER) { | 190 } else if (requestName == ANALYSIS_GET_HOVER) { |
174 return getHover(request); | 191 return getHover(request); |
175 } else if (requestName == ANALYSIS_GET_LIBRARY_DEPENDENCIES) { | 192 } else if (requestName == ANALYSIS_GET_LIBRARY_DEPENDENCIES) { |
176 return getLibraryDependencies(request); | 193 return getLibraryDependencies(request); |
177 } else if (requestName == ANALYSIS_GET_NAVIGATION) { | 194 } else if (requestName == ANALYSIS_GET_NAVIGATION) { |
178 return getNavigation(request); | 195 return getNavigation(request); |
| 196 } else if (requestName == ANALYSIS_GET_REACHABLE_SOURCES) { |
| 197 return getReachableSources(request); |
179 } else if (requestName == ANALYSIS_REANALYZE) { | 198 } else if (requestName == ANALYSIS_REANALYZE) { |
180 return reanalyze(request); | 199 return reanalyze(request); |
181 } else if (requestName == ANALYSIS_SET_ANALYSIS_ROOTS) { | 200 } else if (requestName == ANALYSIS_SET_ANALYSIS_ROOTS) { |
182 return setAnalysisRoots(request); | 201 return setAnalysisRoots(request); |
183 } else if (requestName == ANALYSIS_SET_GENERAL_SUBSCRIPTIONS) { | 202 } else if (requestName == ANALYSIS_SET_GENERAL_SUBSCRIPTIONS) { |
184 return setGeneralSubscriptions(request); | 203 return setGeneralSubscriptions(request); |
185 } else if (requestName == ANALYSIS_SET_PRIORITY_FILES) { | 204 } else if (requestName == ANALYSIS_SET_PRIORITY_FILES) { |
186 return setPriorityFiles(request); | 205 return setPriorityFiles(request); |
187 } else if (requestName == ANALYSIS_SET_SUBSCRIPTIONS) { | 206 } else if (requestName == ANALYSIS_SET_SUBSCRIPTIONS) { |
188 return setSubscriptions(request); | 207 return setSubscriptions(request); |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 context.onResultComputed(descriptor).listen((result) { | 386 context.onResultComputed(descriptor).listen((result) { |
368 StreamController<engine.ComputedResult> controller = | 387 StreamController<engine.ComputedResult> controller = |
369 controllers[result.descriptor]; | 388 controllers[result.descriptor]; |
370 if (controller != null) { | 389 if (controller != null) { |
371 controller.add(result); | 390 controller.add(result); |
372 } | 391 } |
373 }); | 392 }); |
374 } | 393 } |
375 } | 394 } |
376 } | 395 } |
OLD | NEW |