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'; |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 /** | 168 /** |
169 * Implement the `analysis.getReachableSources` request. | 169 * Implement the `analysis.getReachableSources` request. |
170 */ | 170 */ |
171 Response getReachableSources(Request request) { | 171 Response getReachableSources(Request request) { |
172 AnalysisGetReachableSourcesParams params = | 172 AnalysisGetReachableSourcesParams params = |
173 new AnalysisGetReachableSourcesParams.fromRequest(request); | 173 new AnalysisGetReachableSourcesParams.fromRequest(request); |
174 ContextSourcePair pair = server.getContextSourcePair(params.file); | 174 ContextSourcePair pair = server.getContextSourcePair(params.file); |
175 if (pair.context == null || pair.source == null) { | 175 if (pair.context == null || pair.source == null) { |
176 return new Response.getReachableSourcesInvalidFile(request); | 176 return new Response.getReachableSourcesInvalidFile(request); |
177 } | 177 } |
178 Map<String, List<String>> sources = new ReachableSourceCollector( | 178 Map<String, List<String>> sources = |
179 pair.source, pair.context).collectSources(); | 179 new ReachableSourceCollector(pair.source, pair.context) |
| 180 .collectSources(); |
180 return new AnalysisGetReachableSourcesResult(sources) | 181 return new AnalysisGetReachableSourcesResult(sources) |
181 .toResponse(request.id); | 182 .toResponse(request.id); |
182 } | 183 } |
183 | 184 |
184 @override | 185 @override |
185 Response handleRequest(Request request) { | 186 Response handleRequest(Request request) { |
186 try { | 187 try { |
187 String requestName = request.method; | 188 String requestName = request.method; |
188 if (requestName == ANALYSIS_GET_ERRORS) { | 189 if (requestName == ANALYSIS_GET_ERRORS) { |
189 return getErrors(request); | 190 return getErrors(request); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 server.reanalyze(rootResources); | 239 server.reanalyze(rootResources); |
239 } | 240 } |
240 return new AnalysisReanalyzeResult().toResponse(request.id); | 241 return new AnalysisReanalyzeResult().toResponse(request.id); |
241 } | 242 } |
242 | 243 |
243 /** | 244 /** |
244 * Implement the 'analysis.setAnalysisRoots' request. | 245 * Implement the 'analysis.setAnalysisRoots' request. |
245 */ | 246 */ |
246 Response setAnalysisRoots(Request request) { | 247 Response setAnalysisRoots(Request request) { |
247 var params = new AnalysisSetAnalysisRootsParams.fromRequest(request); | 248 var params = new AnalysisSetAnalysisRootsParams.fromRequest(request); |
| 249 List<String> includedPathList = params.included; |
| 250 List<String> excludedPathList = params.excluded; |
| 251 // validate |
| 252 for (String path in includedPathList) { |
| 253 if (!server.isValidFilePath(path)) { |
| 254 return new Response.invalidFilePathFormat(request, path); |
| 255 } |
| 256 } |
| 257 for (String path in excludedPathList) { |
| 258 if (!server.isValidFilePath(path)) { |
| 259 return new Response.invalidFilePathFormat(request, path); |
| 260 } |
| 261 } |
248 // continue in server | 262 // continue in server |
249 server.setAnalysisRoots(request.id, params.included, params.excluded, | 263 server.setAnalysisRoots(request.id, includedPathList, excludedPathList, |
250 params.packageRoots == null ? {} : params.packageRoots); | 264 params.packageRoots ?? <String, String>{}); |
251 return new AnalysisSetAnalysisRootsResult().toResponse(request.id); | 265 return new AnalysisSetAnalysisRootsResult().toResponse(request.id); |
252 } | 266 } |
253 | 267 |
254 /** | 268 /** |
255 * Implement the 'analysis.setGeneralSubscriptions' request. | 269 * Implement the 'analysis.setGeneralSubscriptions' request. |
256 */ | 270 */ |
257 Response setGeneralSubscriptions(Request request) { | 271 Response setGeneralSubscriptions(Request request) { |
258 AnalysisSetGeneralSubscriptionsParams params = | 272 AnalysisSetGeneralSubscriptionsParams params = |
259 new AnalysisSetGeneralSubscriptionsParams.fromRequest(request); | 273 new AnalysisSetGeneralSubscriptionsParams.fromRequest(request); |
260 server.setGeneralAnalysisSubscriptions(params.subscriptions); | 274 server.setGeneralAnalysisSubscriptions(params.subscriptions); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
340 } | 354 } |
341 } | 355 } |
342 } | 356 } |
343 | 357 |
344 /** | 358 /** |
345 * An implementation of [AnalysisDomain] for [AnalysisServer]. | 359 * An implementation of [AnalysisDomain] for [AnalysisServer]. |
346 */ | 360 */ |
347 class AnalysisDomainImpl implements AnalysisDomain { | 361 class AnalysisDomainImpl implements AnalysisDomain { |
348 final AnalysisServer server; | 362 final AnalysisServer server; |
349 | 363 |
350 final Map<ResultDescriptor, | 364 final Map<ResultDescriptor, StreamController<engine.ComputedResult>> |
351 StreamController<engine.ComputedResult>> controllers = | 365 controllers = |
352 <ResultDescriptor, StreamController<engine.ComputedResult>>{}; | 366 <ResultDescriptor, StreamController<engine.ComputedResult>>{}; |
353 | 367 |
354 AnalysisDomainImpl(this.server) { | 368 AnalysisDomainImpl(this.server) { |
355 server.onContextsChanged.listen((ContextsChangedEvent event) { | 369 server.onContextsChanged.listen((ContextsChangedEvent event) { |
356 event.added.forEach(_subscribeForContext); | 370 event.added.forEach(_subscribeForContext); |
357 }); | 371 }); |
358 } | 372 } |
359 | 373 |
360 @override | 374 @override |
361 Stream<engine.ComputedResult> onResultComputed(ResultDescriptor descriptor) { | 375 Stream<engine.ComputedResult> onResultComputed(ResultDescriptor descriptor) { |
(...skipping 24 matching lines...) Expand all Loading... |
386 context.onResultComputed(descriptor).listen((result) { | 400 context.onResultComputed(descriptor).listen((result) { |
387 StreamController<engine.ComputedResult> controller = | 401 StreamController<engine.ComputedResult> controller = |
388 controllers[result.descriptor]; | 402 controllers[result.descriptor]; |
389 if (controller != null) { | 403 if (controller != null) { |
390 controller.add(result); | 404 controller.add(result); |
391 } | 405 } |
392 }); | 406 }); |
393 } | 407 } |
394 } | 408 } |
395 } | 409 } |
OLD | NEW |