OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 analysis_server.src.plugin.server_plugin; | 5 library analysis_server.src.plugin.server_plugin; |
6 | 6 |
7 import 'package:analysis_server/analysis/analysis_domain.dart'; | 7 import 'package:analysis_server/analysis/analysis_domain.dart'; |
8 import 'package:analysis_server/analysis/index/index_core.dart'; | 8 import 'package:analysis_server/analysis/index/index_core.dart'; |
9 import 'package:analysis_server/analysis/navigation/navigation_core.dart'; | 9 import 'package:analysis_server/analysis/navigation_core.dart'; |
| 10 import 'package:analysis_server/analysis/occurrences_core.dart'; |
10 import 'package:analysis_server/completion/completion_core.dart'; | 11 import 'package:analysis_server/completion/completion_core.dart'; |
11 import 'package:analysis_server/edit/assist/assist_core.dart'; | 12 import 'package:analysis_server/edit/assist/assist_core.dart'; |
12 import 'package:analysis_server/edit/fix/fix_core.dart'; | 13 import 'package:analysis_server/edit/fix/fix_core.dart'; |
13 import 'package:analysis_server/plugin/analyzed_files.dart'; | 14 import 'package:analysis_server/plugin/analyzed_files.dart'; |
14 import 'package:analysis_server/plugin/assist.dart'; | 15 import 'package:analysis_server/plugin/assist.dart'; |
15 import 'package:analysis_server/plugin/fix.dart'; | 16 import 'package:analysis_server/plugin/fix.dart'; |
16 import 'package:analysis_server/plugin/navigation.dart'; | 17 import 'package:analysis_server/plugin/navigation.dart'; |
| 18 import 'package:analysis_server/plugin/occurrences.dart'; |
17 import 'package:analysis_server/src/analysis_server.dart'; | 19 import 'package:analysis_server/src/analysis_server.dart'; |
18 import 'package:analysis_server/src/domain_analysis.dart'; | 20 import 'package:analysis_server/src/domain_analysis.dart'; |
19 import 'package:analysis_server/src/domain_completion.dart'; | 21 import 'package:analysis_server/src/domain_completion.dart'; |
20 import 'package:analysis_server/src/domain_execution.dart'; | 22 import 'package:analysis_server/src/domain_execution.dart'; |
21 import 'package:analysis_server/src/domain_server.dart'; | 23 import 'package:analysis_server/src/domain_server.dart'; |
22 import 'package:analysis_server/src/domains/analysis/navigation_dart.dart'; | 24 import 'package:analysis_server/src/domains/analysis/navigation_dart.dart'; |
| 25 import 'package:analysis_server/src/domains/analysis/occurrences_dart.dart'; |
23 import 'package:analysis_server/src/edit/edit_domain.dart'; | 26 import 'package:analysis_server/src/edit/edit_domain.dart'; |
24 import 'package:analysis_server/src/protocol.dart'; | 27 import 'package:analysis_server/src/protocol.dart'; |
25 import 'package:analysis_server/src/search/search_domain.dart'; | 28 import 'package:analysis_server/src/search/search_domain.dart'; |
26 import 'package:analysis_server/src/services/correction/assist_internal.dart'; | 29 import 'package:analysis_server/src/services/correction/assist_internal.dart'; |
27 import 'package:analysis_server/src/services/correction/fix_internal.dart'; | 30 import 'package:analysis_server/src/services/correction/fix_internal.dart'; |
28 import 'package:analyzer/file_system/file_system.dart'; | 31 import 'package:analyzer/file_system/file_system.dart'; |
29 import 'package:analyzer/src/generated/engine.dart'; | 32 import 'package:analyzer/src/generated/engine.dart'; |
30 import 'package:plugin/plugin.dart'; | 33 import 'package:plugin/plugin.dart'; |
31 | 34 |
32 /** | 35 /** |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 | 82 |
80 /** | 83 /** |
81 * The simple identifier of the extension point that allows plugins to | 84 * The simple identifier of the extension point that allows plugins to |
82 * register navigation contributors. | 85 * register navigation contributors. |
83 */ | 86 */ |
84 static const String NAVIGATION_CONTRIBUTOR_EXTENSION_POINT = | 87 static const String NAVIGATION_CONTRIBUTOR_EXTENSION_POINT = |
85 'navigationContributor'; | 88 'navigationContributor'; |
86 | 89 |
87 /** | 90 /** |
88 * The simple identifier of the extension point that allows plugins to | 91 * The simple identifier of the extension point that allows plugins to |
| 92 * register element occurrences. |
| 93 */ |
| 94 static const String OCCURRENCES_CONTRIBUTOR_EXTENSION_POINT = |
| 95 'occurrencesContributor'; |
| 96 |
| 97 /** |
| 98 * The simple identifier of the extension point that allows plugins to |
89 * register analysis result listeners. | 99 * register analysis result listeners. |
90 */ | 100 */ |
91 static const String SET_ANALISYS_DOMAIN_EXTENSION_POINT = 'setAnalysisDomain'; | 101 static const String SET_ANALISYS_DOMAIN_EXTENSION_POINT = 'setAnalysisDomain'; |
92 | 102 |
93 /** | 103 /** |
94 * The unique identifier of this plugin. | 104 * The unique identifier of this plugin. |
95 */ | 105 */ |
96 static const String UNIQUE_IDENTIFIER = 'analysis_server.core'; | 106 static const String UNIQUE_IDENTIFIER = 'analysis_server.core'; |
97 | 107 |
98 /** | 108 /** |
(...skipping 24 matching lines...) Expand all Loading... |
123 * the server. | 133 * the server. |
124 */ | 134 */ |
125 ExtensionPoint fixContributorExtensionPoint; | 135 ExtensionPoint fixContributorExtensionPoint; |
126 | 136 |
127 /** | 137 /** |
128 * The extension point that allows plugins to register index contributors. | 138 * The extension point that allows plugins to register index contributors. |
129 */ | 139 */ |
130 ExtensionPoint indexContributorExtensionPoint; | 140 ExtensionPoint indexContributorExtensionPoint; |
131 | 141 |
132 /** | 142 /** |
133 * The extension point that allows plugins to register navigation contributors
. | 143 * The extension point that allows plugins to register navigation |
| 144 * contributors. |
134 */ | 145 */ |
135 ExtensionPoint navigationContributorExtensionPoint; | 146 ExtensionPoint navigationContributorExtensionPoint; |
136 | 147 |
137 /** | 148 /** |
| 149 * The extension point that allows plugins to register occurrences |
| 150 * contributors. |
| 151 */ |
| 152 ExtensionPoint occurrencesContributorExtensionPoint; |
| 153 |
| 154 /** |
138 * The extension point that allows plugins to get access to the `analysis` | 155 * The extension point that allows plugins to get access to the `analysis` |
139 * domain. | 156 * domain. |
140 */ | 157 */ |
141 ExtensionPoint setAnalysisDomainExtensionPoint; | 158 ExtensionPoint setAnalysisDomainExtensionPoint; |
142 | 159 |
143 /** | 160 /** |
144 * Initialize a newly created plugin. | 161 * Initialize a newly created plugin. |
145 */ | 162 */ |
146 ServerPlugin(); | 163 ServerPlugin(); |
147 | 164 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 indexContributorExtensionPoint.extensions; | 197 indexContributorExtensionPoint.extensions; |
181 | 198 |
182 /** | 199 /** |
183 * Return a list containing all of the navigation contributors that were | 200 * Return a list containing all of the navigation contributors that were |
184 * contributed. | 201 * contributed. |
185 */ | 202 */ |
186 List<NavigationContributor> get navigationContributors => | 203 List<NavigationContributor> get navigationContributors => |
187 navigationContributorExtensionPoint.extensions; | 204 navigationContributorExtensionPoint.extensions; |
188 | 205 |
189 /** | 206 /** |
| 207 * Return a list containing all of the occurrences contributors that were |
| 208 * contributed. |
| 209 */ |
| 210 List<OccurrencesContributor> get occurrencesContributors => |
| 211 occurrencesContributorExtensionPoint.extensions; |
| 212 |
| 213 /** |
190 * Return a list containing all of the receivers of the `analysis` domain | 214 * Return a list containing all of the receivers of the `analysis` domain |
191 * instance. | 215 * instance. |
192 */ | 216 */ |
193 List<SetAnalysisDomain> get setAnalysisDomainFunctions => | 217 List<SetAnalysisDomain> get setAnalysisDomainFunctions => |
194 setAnalysisDomainExtensionPoint.extensions; | 218 setAnalysisDomainExtensionPoint.extensions; |
195 | 219 |
196 @override | 220 @override |
197 String get uniqueIdentifier => UNIQUE_IDENTIFIER; | 221 String get uniqueIdentifier => UNIQUE_IDENTIFIER; |
198 | 222 |
199 /** | 223 /** |
(...skipping 24 matching lines...) Expand all Loading... |
224 _validateCompletionContributorExtension); | 248 _validateCompletionContributorExtension); |
225 domainExtensionPoint = registerExtensionPoint( | 249 domainExtensionPoint = registerExtensionPoint( |
226 DOMAIN_EXTENSION_POINT, _validateDomainExtension); | 250 DOMAIN_EXTENSION_POINT, _validateDomainExtension); |
227 fixContributorExtensionPoint = registerExtensionPoint( | 251 fixContributorExtensionPoint = registerExtensionPoint( |
228 FIX_CONTRIBUTOR_EXTENSION_POINT, _validateFixContributorExtension); | 252 FIX_CONTRIBUTOR_EXTENSION_POINT, _validateFixContributorExtension); |
229 indexContributorExtensionPoint = registerExtensionPoint( | 253 indexContributorExtensionPoint = registerExtensionPoint( |
230 INDEX_CONTRIBUTOR_EXTENSION_POINT, _validateIndexContributorExtension); | 254 INDEX_CONTRIBUTOR_EXTENSION_POINT, _validateIndexContributorExtension); |
231 navigationContributorExtensionPoint = registerExtensionPoint( | 255 navigationContributorExtensionPoint = registerExtensionPoint( |
232 NAVIGATION_CONTRIBUTOR_EXTENSION_POINT, | 256 NAVIGATION_CONTRIBUTOR_EXTENSION_POINT, |
233 _validateNavigationContributorExtension); | 257 _validateNavigationContributorExtension); |
| 258 occurrencesContributorExtensionPoint = registerExtensionPoint( |
| 259 OCCURRENCES_CONTRIBUTOR_EXTENSION_POINT, |
| 260 _validateOccurrencesContributorExtension); |
234 } | 261 } |
235 | 262 |
236 @override | 263 @override |
237 void registerExtensions(RegisterExtension registerExtension) { | 264 void registerExtensions(RegisterExtension registerExtension) { |
238 // | 265 // |
239 // Register analyze file functions. | 266 // Register analyze file functions. |
240 // | 267 // |
241 registerExtension( | 268 registerExtension( |
242 ANALYZE_FILE_EXTENSION_POINT_ID, | 269 ANALYZE_FILE_EXTENSION_POINT_ID, |
243 (File file) => AnalysisEngine.isDartFileName(file.path) || | 270 (File file) => AnalysisEngine.isDartFileName(file.path) || |
244 AnalysisEngine.isHtmlFileName(file.path)); | 271 AnalysisEngine.isHtmlFileName(file.path)); |
245 // | 272 // |
246 // Register assist contributors. | 273 // Register assist contributors. |
247 // | 274 // |
248 registerExtension( | 275 registerExtension( |
249 ASSIST_CONTRIBUTOR_EXTENSION_POINT_ID, new DefaultAssistContributor()); | 276 ASSIST_CONTRIBUTOR_EXTENSION_POINT_ID, new DefaultAssistContributor()); |
250 // | 277 // |
251 // Register completion contributors. | 278 // Register completion contributors. |
252 // | 279 // |
253 // TODO(brianwilkerson) Register the completion contributors. | 280 // TODO(brianwilkerson) Register the completion contributors. |
254 // registerExtension(COMPLETION_CONTRIBUTOR_EXTENSION_POINT_ID, ???); | 281 // registerExtension(COMPLETION_CONTRIBUTOR_EXTENSION_POINT_ID, ???); |
255 // | 282 // |
256 // Register navigation contributors. | 283 // Register analysis contributors. |
257 // | 284 // |
258 registerExtension(NAVIGATION_CONTRIBUTOR_EXTENSION_POINT_ID, | 285 registerExtension(NAVIGATION_CONTRIBUTOR_EXTENSION_POINT_ID, |
259 new DartNavigationComputer()); | 286 new DartNavigationComputer()); |
| 287 registerExtension(OCCURRENCES_CONTRIBUTOR_EXTENSION_POINT_ID, |
| 288 new DartOccurrencesComputer()); |
260 // | 289 // |
261 // Register domains. | 290 // Register domains. |
262 // | 291 // |
263 String domainId = Plugin.join(UNIQUE_IDENTIFIER, DOMAIN_EXTENSION_POINT); | 292 String domainId = Plugin.join(UNIQUE_IDENTIFIER, DOMAIN_EXTENSION_POINT); |
264 registerExtension( | 293 registerExtension( |
265 domainId, (AnalysisServer server) => new ServerDomainHandler(server)); | 294 domainId, (AnalysisServer server) => new ServerDomainHandler(server)); |
266 registerExtension( | 295 registerExtension( |
267 domainId, (AnalysisServer server) => new AnalysisDomainHandler(server)); | 296 domainId, (AnalysisServer server) => new AnalysisDomainHandler(server)); |
268 registerExtension( | 297 registerExtension( |
269 domainId, (AnalysisServer server) => new EditDomainHandler(server)); | 298 domainId, (AnalysisServer server) => new EditDomainHandler(server)); |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
362 void _validateNavigationContributorExtension(Object extension) { | 391 void _validateNavigationContributorExtension(Object extension) { |
363 if (extension is! NavigationContributor) { | 392 if (extension is! NavigationContributor) { |
364 String id = navigationContributorExtensionPoint.uniqueIdentifier; | 393 String id = navigationContributorExtensionPoint.uniqueIdentifier; |
365 throw new ExtensionError( | 394 throw new ExtensionError( |
366 'Extensions to $id must be an NavigationContributor'); | 395 'Extensions to $id must be an NavigationContributor'); |
367 } | 396 } |
368 } | 397 } |
369 | 398 |
370 /** | 399 /** |
371 * Validate the given extension by throwing an [ExtensionError] if it is not a | 400 * Validate the given extension by throwing an [ExtensionError] if it is not a |
| 401 * valid occurrences contributor. |
| 402 */ |
| 403 void _validateOccurrencesContributorExtension(Object extension) { |
| 404 if (extension is! OccurrencesContributor) { |
| 405 String id = occurrencesContributorExtensionPoint.uniqueIdentifier; |
| 406 throw new ExtensionError( |
| 407 'Extensions to $id must be an OccurrencesContributor'); |
| 408 } |
| 409 } |
| 410 |
| 411 /** |
| 412 * Validate the given extension by throwing an [ExtensionError] if it is not a |
372 * valid analysis domain receiver. | 413 * valid analysis domain receiver. |
373 */ | 414 */ |
374 void _validateSetAnalysisDomainFunction(Object extension) { | 415 void _validateSetAnalysisDomainFunction(Object extension) { |
375 if (extension is! SetAnalysisDomain) { | 416 if (extension is! SetAnalysisDomain) { |
376 String id = setAnalysisDomainExtensionPoint.uniqueIdentifier; | 417 String id = setAnalysisDomainExtensionPoint.uniqueIdentifier; |
377 throw new ExtensionError( | 418 throw new ExtensionError( |
378 'Extensions to $id must be a SetAnalysisDomain function'); | 419 'Extensions to $id must be a SetAnalysisDomain function'); |
379 } | 420 } |
380 } | 421 } |
381 } | 422 } |
OLD | NEW |