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 analyzer.src.plugin.engine_plugin; | 5 library analyzer.src.plugin.engine_plugin; |
6 | 6 |
7 import 'package:analyzer/plugin/task.dart'; | 7 import 'package:analyzer/plugin/task.dart'; |
8 import 'package:analyzer/src/generated/engine.dart' | 8 import 'package:analyzer/src/generated/engine.dart' |
9 show InternalAnalysisContext; | 9 show InternalAnalysisContext; |
10 import 'package:analyzer/src/task/dart.dart'; | 10 import 'package:analyzer/src/task/dart.dart'; |
11 import 'package:analyzer/src/task/dart_work_manager.dart'; | 11 import 'package:analyzer/src/task/dart_work_manager.dart'; |
12 import 'package:analyzer/src/task/general.dart'; | 12 import 'package:analyzer/src/task/general.dart'; |
13 import 'package:analyzer/src/task/html.dart'; | 13 import 'package:analyzer/src/task/html.dart'; |
14 import 'package:analyzer/src/task/html_work_manager.dart'; | 14 import 'package:analyzer/src/task/html_work_manager.dart'; |
15 import 'package:analyzer/task/model.dart'; | 15 import 'package:analyzer/task/model.dart'; |
16 import 'package:plugin/plugin.dart'; | 16 import 'package:plugin/plugin.dart'; |
17 | 17 |
18 /** | 18 /** |
19 * A plugin that defines the extension points and extensions that are inherently | 19 * A plugin that defines the extension points and extensions that are inherently |
20 * defined by the analysis engine. | 20 * defined by the analysis engine. |
21 */ | 21 */ |
22 class EnginePlugin implements Plugin { | 22 class EnginePlugin implements Plugin { |
23 /** | 23 /** |
24 * The simple identifier of the extension point that allows plugins to | 24 * The simple identifier of the extension point that allows plugins to |
| 25 * register new analysis error results to compute for a Dart source. |
| 26 */ |
| 27 static const String DART_ERRORS_FOR_SOURCE_EXTENSION_POINT = |
| 28 'dartErrorsForSource'; |
| 29 |
| 30 /** |
| 31 * The simple identifier of the extension point that allows plugins to |
| 32 * register new analysis error results to compute for a Dart library |
| 33 * specific unit. |
| 34 */ |
| 35 static const String DART_ERRORS_FOR_UNIT_EXTENSION_POINT = |
| 36 'dartErrorsForUnit'; |
| 37 |
| 38 /** |
| 39 * The simple identifier of the extension point that allows plugins to |
25 * register new analysis tasks with the analysis engine. | 40 * register new analysis tasks with the analysis engine. |
26 */ | 41 */ |
27 static const String TASK_EXTENSION_POINT = 'task'; | 42 static const String TASK_EXTENSION_POINT = 'task'; |
28 | 43 |
29 /** | 44 /** |
30 * The simple identifier of the extension point that allows plugins to | 45 * The simple identifier of the extension point that allows plugins to |
31 * register new work manager factories with the analysis engine. | 46 * register new work manager factories with the analysis engine. |
32 */ | 47 */ |
33 static const String WORK_MANAGER_FACTORY_EXTENSION_POINT = | 48 static const String WORK_MANAGER_FACTORY_EXTENSION_POINT = |
34 'workManagerFactory'; | 49 'workManagerFactory'; |
35 | 50 |
36 /** | 51 /** |
37 * The unique identifier of this plugin. | 52 * The unique identifier of this plugin. |
38 */ | 53 */ |
39 static const String UNIQUE_IDENTIFIER = 'analysis_engine.core'; | 54 static const String UNIQUE_IDENTIFIER = 'analysis_engine.core'; |
40 | 55 |
41 /** | 56 /** |
| 57 * The extension point that allows plugins to register new analysis error |
| 58 * results for a Dart source. |
| 59 */ |
| 60 ExtensionPoint dartErrorsForSourceExtensionPoint; |
| 61 |
| 62 /** |
| 63 * The extension point that allows plugins to register new analysis error |
| 64 * results for a Dart library specific unit. |
| 65 */ |
| 66 ExtensionPoint dartErrorsForUnitExtensionPoint; |
| 67 |
| 68 /** |
42 * The extension point that allows plugins to register new analysis tasks with | 69 * The extension point that allows plugins to register new analysis tasks with |
43 * the analysis engine. | 70 * the analysis engine. |
44 */ | 71 */ |
45 ExtensionPoint taskExtensionPoint; | 72 ExtensionPoint taskExtensionPoint; |
46 | 73 |
47 /** | 74 /** |
48 * The extension point that allows plugins to register new work manager | 75 * The extension point that allows plugins to register new work manager |
49 * factories with the analysis engine. | 76 * factories with the analysis engine. |
50 */ | 77 */ |
51 ExtensionPoint workManagerFactoryExtensionPoint; | 78 ExtensionPoint workManagerFactoryExtensionPoint; |
52 | 79 |
53 /** | 80 /** |
54 * Initialize a newly created plugin. | 81 * Initialize a newly created plugin. |
55 */ | 82 */ |
56 EnginePlugin(); | 83 EnginePlugin(); |
57 | 84 |
58 /** | 85 /** |
| 86 * Return a list containing all of the contributed analysis error result |
| 87 * descriptors for Dart sources. |
| 88 */ |
| 89 List<TaskDescriptor> get dartErrorsForSource => |
| 90 dartErrorsForSourceExtensionPoint.extensions; |
| 91 |
| 92 /** |
| 93 * Return a list containing all of the contributed analysis error result |
| 94 * descriptors for Dart library specific units. |
| 95 */ |
| 96 List<TaskDescriptor> get dartErrorsForUnit => |
| 97 dartErrorsForUnitExtensionPoint.extensions; |
| 98 |
| 99 /** |
59 * Return a list containing all of the task descriptors that were contributed. | 100 * Return a list containing all of the task descriptors that were contributed. |
60 */ | 101 */ |
61 List<TaskDescriptor> get taskDescriptors => taskExtensionPoint.extensions; | 102 List<TaskDescriptor> get taskDescriptors => taskExtensionPoint.extensions; |
62 | 103 |
63 @override | 104 @override |
64 String get uniqueIdentifier => UNIQUE_IDENTIFIER; | 105 String get uniqueIdentifier => UNIQUE_IDENTIFIER; |
65 | 106 |
66 /** | 107 /** |
67 * Return a list containing all of the work manager factories that were | 108 * Return a list containing all of the work manager factories that were |
68 * contributed. | 109 * contributed. |
69 */ | 110 */ |
70 List<WorkManagerFactory> get workManagerFactories => | 111 List<WorkManagerFactory> get workManagerFactories => |
71 workManagerFactoryExtensionPoint.extensions; | 112 workManagerFactoryExtensionPoint.extensions; |
72 | 113 |
73 @override | 114 @override |
74 void registerExtensionPoints(RegisterExtensionPoint registerExtensionPoint) { | 115 void registerExtensionPoints(RegisterExtensionPoint registerExtensionPoint) { |
| 116 dartErrorsForSourceExtensionPoint = registerExtensionPoint( |
| 117 DART_ERRORS_FOR_SOURCE_EXTENSION_POINT, _validateResultDescriptor); |
| 118 dartErrorsForUnitExtensionPoint = registerExtensionPoint( |
| 119 DART_ERRORS_FOR_UNIT_EXTENSION_POINT, _validateResultDescriptor); |
75 taskExtensionPoint = | 120 taskExtensionPoint = |
76 registerExtensionPoint(TASK_EXTENSION_POINT, _validateTaskExtension); | 121 registerExtensionPoint(TASK_EXTENSION_POINT, _validateTaskExtension); |
77 workManagerFactoryExtensionPoint = registerExtensionPoint( | 122 workManagerFactoryExtensionPoint = registerExtensionPoint( |
78 WORK_MANAGER_FACTORY_EXTENSION_POINT, | 123 WORK_MANAGER_FACTORY_EXTENSION_POINT, |
79 _validateWorkManagerFactoryExtension); | 124 _validateWorkManagerFactoryExtension); |
80 } | 125 } |
81 | 126 |
82 @override | 127 @override |
83 void registerExtensions(RegisterExtension registerExtension) { | 128 void registerExtensions(RegisterExtension registerExtension) { |
84 _registerTaskExtensions(registerExtension); | 129 _registerTaskExtensions(registerExtension); |
85 _registerWorkManagerFactoryExtensions(registerExtension); | 130 _registerWorkManagerFactoryExtensions(registerExtension); |
| 131 _registerDartErrorsForSource(registerExtension); |
| 132 _registerDartErrorsForUnit(registerExtension); |
| 133 } |
| 134 |
| 135 void _registerDartErrorsForSource(RegisterExtension registerExtension) { |
| 136 String id = DART_ERRORS_FOR_SOURCE_EXTENSION_POINT_ID; |
| 137 registerExtension(id, BUILD_DIRECTIVES_ERRORS); |
| 138 registerExtension(id, BUILD_LIBRARY_ERRORS); |
| 139 registerExtension(id, PARSE_ERRORS); |
| 140 registerExtension(id, SCAN_ERRORS); |
| 141 } |
| 142 |
| 143 void _registerDartErrorsForUnit(RegisterExtension registerExtension) { |
| 144 String id = DART_ERRORS_FOR_UNIT_EXTENSION_POINT_ID; |
| 145 registerExtension(id, LIBRARY_UNIT_ERRORS); |
86 } | 146 } |
87 | 147 |
88 void _registerTaskExtensions(RegisterExtension registerExtension) { | 148 void _registerTaskExtensions(RegisterExtension registerExtension) { |
89 String taskId = TASK_EXTENSION_POINT_ID; | 149 String taskId = TASK_EXTENSION_POINT_ID; |
90 // | 150 // |
91 // Register general tasks. | 151 // Register general tasks. |
92 // | 152 // |
93 registerExtension(taskId, GetContentTask.DESCRIPTOR); | 153 registerExtension(taskId, GetContentTask.DESCRIPTOR); |
94 // | 154 // |
95 // Register Dart tasks. | 155 // Register Dart tasks. |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 void _registerWorkManagerFactoryExtensions( | 198 void _registerWorkManagerFactoryExtensions( |
139 RegisterExtension registerExtension) { | 199 RegisterExtension registerExtension) { |
140 String taskId = WORK_MANAGER_EXTENSION_POINT_ID; | 200 String taskId = WORK_MANAGER_EXTENSION_POINT_ID; |
141 registerExtension(taskId, | 201 registerExtension(taskId, |
142 (InternalAnalysisContext context) => new DartWorkManager(context)); | 202 (InternalAnalysisContext context) => new DartWorkManager(context)); |
143 registerExtension(taskId, | 203 registerExtension(taskId, |
144 (InternalAnalysisContext context) => new HtmlWorkManager(context)); | 204 (InternalAnalysisContext context) => new HtmlWorkManager(context)); |
145 } | 205 } |
146 | 206 |
147 /** | 207 /** |
148 * Validate the given extension by throwing an [ExtensionError] if it is not a | 208 * Validate the given extension by throwing an [ExtensionError] if it is not |
149 * valid domain. | 209 * a [ResultDescriptor]. |
| 210 */ |
| 211 void _validateResultDescriptor(Object extension) { |
| 212 if (extension is! ResultDescriptor) { |
| 213 String id = taskExtensionPoint.uniqueIdentifier; |
| 214 throw new ExtensionError('Extensions to $id must be a ResultDescriptor'); |
| 215 } |
| 216 } |
| 217 |
| 218 /** |
| 219 * Validate the given extension by throwing an [ExtensionError] if it is not |
| 220 * a [TaskDescriptor]. |
150 */ | 221 */ |
151 void _validateTaskExtension(Object extension) { | 222 void _validateTaskExtension(Object extension) { |
152 if (extension is! TaskDescriptor) { | 223 if (extension is! TaskDescriptor) { |
153 String id = taskExtensionPoint.uniqueIdentifier; | 224 String id = taskExtensionPoint.uniqueIdentifier; |
154 throw new ExtensionError('Extensions to $id must be a TaskDescriptor'); | 225 throw new ExtensionError('Extensions to $id must be a TaskDescriptor'); |
155 } | 226 } |
156 } | 227 } |
157 | 228 |
158 /** | 229 /** |
159 * Validate the given extension by throwing an [ExtensionError] if it is not a | 230 * Validate the given extension by throwing an [ExtensionError] if it is not |
160 * valid domain. | 231 * a [WorkManagerFactory]. |
161 */ | 232 */ |
162 void _validateWorkManagerFactoryExtension(Object extension) { | 233 void _validateWorkManagerFactoryExtension(Object extension) { |
163 if (extension is! WorkManagerFactory) { | 234 if (extension is! WorkManagerFactory) { |
164 String id = taskExtensionPoint.uniqueIdentifier; | 235 String id = taskExtensionPoint.uniqueIdentifier; |
165 throw new ExtensionError( | 236 throw new ExtensionError( |
166 'Extensions to $id must be a WorkManagerFactory'); | 237 'Extensions to $id must be a WorkManagerFactory'); |
167 } | 238 } |
168 } | 239 } |
169 } | 240 } |
OLD | NEW |