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' |
| 9 show InternalAnalysisContext; |
8 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'; |
9 import 'package:analyzer/src/task/general.dart'; | 12 import 'package:analyzer/src/task/general.dart'; |
10 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'; |
11 import 'package:analyzer/task/model.dart'; | 15 import 'package:analyzer/task/model.dart'; |
12 import 'package:plugin/plugin.dart'; | 16 import 'package:plugin/plugin.dart'; |
13 | 17 |
14 /** | 18 /** |
15 * 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 |
16 * defined by the analysis engine. | 20 * defined by the analysis engine. |
17 */ | 21 */ |
18 class EnginePlugin implements Plugin { | 22 class EnginePlugin implements Plugin { |
19 /** | 23 /** |
20 * The simple identifier of the extension point that allows plugins to | 24 * The simple identifier of the extension point that allows plugins to |
21 * register new analysis tasks with the analysis engine. | 25 * register new analysis tasks with the analysis engine. |
22 */ | 26 */ |
23 static const String TASK_EXTENSION_POINT = 'task'; | 27 static const String TASK_EXTENSION_POINT = 'task'; |
24 | 28 |
25 /** | 29 /** |
| 30 * The simple identifier of the extension point that allows plugins to |
| 31 * register new work manager factories with the analysis engine. |
| 32 */ |
| 33 static const String WORK_MANAGER_FACTORY_EXTENSION_POINT = |
| 34 'workManagerFactory'; |
| 35 |
| 36 /** |
26 * The unique identifier of this plugin. | 37 * The unique identifier of this plugin. |
27 */ | 38 */ |
28 static const String UNIQUE_IDENTIFIER = 'analysis_engine.core'; | 39 static const String UNIQUE_IDENTIFIER = 'analysis_engine.core'; |
29 | 40 |
30 /** | 41 /** |
31 * The extension point that allows plugins to register new analysis tasks with | 42 * The extension point that allows plugins to register new analysis tasks with |
32 * the analysis engine. | 43 * the analysis engine. |
33 */ | 44 */ |
34 ExtensionPoint taskExtensionPoint; | 45 ExtensionPoint taskExtensionPoint; |
35 | 46 |
36 /** | 47 /** |
| 48 * The extension point that allows plugins to register new work manager |
| 49 * factories with the analysis engine. |
| 50 */ |
| 51 ExtensionPoint workManagerFactoryExtensionPoint; |
| 52 |
| 53 /** |
37 * Initialize a newly created plugin. | 54 * Initialize a newly created plugin. |
38 */ | 55 */ |
39 EnginePlugin(); | 56 EnginePlugin(); |
40 | 57 |
41 /** | 58 /** |
42 * Return a list containing all of the task descriptors that were contributed. | 59 * Return a list containing all of the task descriptors that were contributed. |
43 */ | 60 */ |
44 List<TaskDescriptor> get taskDescriptors => taskExtensionPoint.extensions; | 61 List<TaskDescriptor> get taskDescriptors => taskExtensionPoint.extensions; |
45 | 62 |
46 @override | 63 @override |
47 String get uniqueIdentifier => UNIQUE_IDENTIFIER; | 64 String get uniqueIdentifier => UNIQUE_IDENTIFIER; |
48 | 65 |
| 66 /** |
| 67 * Return a list containing all of the work manager factories that were |
| 68 * contributed. |
| 69 */ |
| 70 List<WorkManagerFactory> get workManagerFactories => |
| 71 workManagerFactoryExtensionPoint.extensions; |
| 72 |
49 @override | 73 @override |
50 void registerExtensionPoints(RegisterExtensionPoint registerExtensionPoint) { | 74 void registerExtensionPoints(RegisterExtensionPoint registerExtensionPoint) { |
51 taskExtensionPoint = | 75 taskExtensionPoint = |
52 registerExtensionPoint(TASK_EXTENSION_POINT, _validateTaskExtension); | 76 registerExtensionPoint(TASK_EXTENSION_POINT, _validateTaskExtension); |
| 77 workManagerFactoryExtensionPoint = registerExtensionPoint( |
| 78 WORK_MANAGER_FACTORY_EXTENSION_POINT, |
| 79 _validateWorkManagerFactoryExtension); |
53 } | 80 } |
54 | 81 |
55 @override | 82 @override |
56 void registerExtensions(RegisterExtension registerExtension) { | 83 void registerExtensions(RegisterExtension registerExtension) { |
| 84 _registerTaskExtensions(registerExtension); |
| 85 _registerWorkManagerFactoryExtensions(registerExtension); |
| 86 } |
| 87 |
| 88 void _registerTaskExtensions(RegisterExtension registerExtension) { |
57 String taskId = TASK_EXTENSION_POINT_ID; | 89 String taskId = TASK_EXTENSION_POINT_ID; |
58 // | 90 // |
59 // Register general tasks. | 91 // Register general tasks. |
60 // | 92 // |
61 registerExtension(taskId, GetContentTask.DESCRIPTOR); | 93 registerExtension(taskId, GetContentTask.DESCRIPTOR); |
62 // | 94 // |
63 // Register Dart tasks. | 95 // Register Dart tasks. |
64 // | 96 // |
65 registerExtension(taskId, BuildCompilationUnitElementTask.DESCRIPTOR); | 97 registerExtension(taskId, BuildCompilationUnitElementTask.DESCRIPTOR); |
66 registerExtension(taskId, BuildDirectiveElementsTask.DESCRIPTOR); | 98 registerExtension(taskId, BuildDirectiveElementsTask.DESCRIPTOR); |
(...skipping 23 matching lines...) Expand all Loading... |
90 registerExtension(taskId, ScanDartTask.DESCRIPTOR); | 122 registerExtension(taskId, ScanDartTask.DESCRIPTOR); |
91 registerExtension(taskId, VerifyUnitTask.DESCRIPTOR); | 123 registerExtension(taskId, VerifyUnitTask.DESCRIPTOR); |
92 // | 124 // |
93 // Register HTML tasks. | 125 // Register HTML tasks. |
94 // | 126 // |
95 registerExtension(taskId, DartScriptsTask.DESCRIPTOR); | 127 registerExtension(taskId, DartScriptsTask.DESCRIPTOR); |
96 registerExtension(taskId, HtmlErrorsTask.DESCRIPTOR); | 128 registerExtension(taskId, HtmlErrorsTask.DESCRIPTOR); |
97 registerExtension(taskId, ParseHtmlTask.DESCRIPTOR); | 129 registerExtension(taskId, ParseHtmlTask.DESCRIPTOR); |
98 } | 130 } |
99 | 131 |
| 132 void _registerWorkManagerFactoryExtensions( |
| 133 RegisterExtension registerExtension) { |
| 134 String taskId = WORK_MANAGER_EXTENSION_POINT_ID; |
| 135 registerExtension(taskId, |
| 136 (InternalAnalysisContext context) => new DartWorkManager(context)); |
| 137 registerExtension(taskId, |
| 138 (InternalAnalysisContext context) => new HtmlWorkManager(context)); |
| 139 } |
| 140 |
100 /** | 141 /** |
101 * Validate the given extension by throwing an [ExtensionError] if it is not a | 142 * Validate the given extension by throwing an [ExtensionError] if it is not a |
102 * valid domain. | 143 * valid domain. |
103 */ | 144 */ |
104 void _validateTaskExtension(Object extension) { | 145 void _validateTaskExtension(Object extension) { |
105 if (extension is! TaskDescriptor) { | 146 if (extension is! TaskDescriptor) { |
106 String id = taskExtensionPoint.uniqueIdentifier; | 147 String id = taskExtensionPoint.uniqueIdentifier; |
107 throw new ExtensionError('Extensions to $id must be a TaskDescriptor'); | 148 throw new ExtensionError('Extensions to $id must be a TaskDescriptor'); |
108 } | 149 } |
109 } | 150 } |
| 151 |
| 152 /** |
| 153 * Validate the given extension by throwing an [ExtensionError] if it is not a |
| 154 * valid domain. |
| 155 */ |
| 156 void _validateWorkManagerFactoryExtension(Object extension) { |
| 157 if (extension is! WorkManagerFactory) { |
| 158 String id = taskExtensionPoint.uniqueIdentifier; |
| 159 throw new ExtensionError( |
| 160 'Extensions to $id must be a WorkManagerFactory'); |
| 161 } |
| 162 } |
110 } | 163 } |
OLD | NEW |