Merge pull request #1 from dart-lang/make-manager-public
Provide public access to the ExtensionManager
diff --git a/lib/manager.dart b/lib/manager.dart
new file mode 100644
index 0000000..4fd6e73
--- /dev/null
+++ b/lib/manager.dart
@@ -0,0 +1,27 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library plugin.manager;
+
+import 'package:plugin/src/plugin_impl.dart';
+import 'package:plugin/plugin.dart';
+
+/**
+ * An object that manages the extension points for the host application.
+ */
+abstract class ExtensionManager {
+ /**
+ * Initialize a newly created manager.
+ */
+ factory ExtensionManager() = ExtensionManagerImpl;
+
+ /**
+ * Process each of the given [plugins] by allowing them to register extension
+ * points and extensions.
+ *
+ * An [ExtensionError] will be thrown if any of the plugins throws such an
+ * exception while registering with this manager.
+ */
+ void processPlugins(List<Plugin> plugins);
+}
diff --git a/lib/plugin.dart b/lib/plugin.dart
index 019acd2..b0176f8 100644
--- a/lib/plugin.dart
+++ b/lib/plugin.dart
@@ -85,8 +85,8 @@
}
/**
- * A contribution to the analysis server that can extend the behavior of the
- * server while also allowing other plugins to extend it's behavior.
+ * A contribution to the host application that can extend the behavior of the
+ * application while also allowing other plugins to extend it's behavior.
*
* Clients are expected to subtype this class when implementing plugins.
*/
diff --git a/lib/src/plugin_impl.dart b/lib/src/plugin_impl.dart
index 70a76e5..a65a0d3 100644
--- a/lib/src/plugin_impl.dart
+++ b/lib/src/plugin_impl.dart
@@ -6,13 +6,13 @@
import 'dart:collection';
+import 'package:plugin/manager.dart';
import 'package:plugin/plugin.dart';
/**
- * An object that manages the extension points for a single instance of the
- * analysis server.
+ * A concrete implementation of an [ExtensionManager].
*/
-class ExtensionManager {
+class ExtensionManagerImpl implements ExtensionManager {
/**
* A table mapping the id's of extension points to the corresponding
* extension points.
@@ -20,13 +20,7 @@
Map<String, ExtensionPointImpl> extensionPoints =
new HashMap<String, ExtensionPointImpl>();
- /**
- * Process each of the given [plugins] by allowing them to register extension
- * points and extensions.
- *
- * An [ExtensionError] will be thrown if any of the plugins throws such an
- * exception while registering with this manager.
- */
+ @override
void processPlugins(List<Plugin> plugins) {
for (Plugin plugin in plugins) {
plugin.registerExtensionPoints((String identifier,
diff --git a/test/plugin_impl_test.dart b/test/plugin_impl_test.dart
index d28ebb0..5d2902f 100644
--- a/test/plugin_impl_test.dart
+++ b/test/plugin_impl_test.dart
@@ -15,7 +15,7 @@
test('processPlugins', () {
TestPlugin plugin1 = new TestPlugin('plugin1');
TestPlugin plugin2 = new TestPlugin('plugin1');
- ExtensionManager manager = new ExtensionManager();
+ ExtensionManagerImpl manager = new ExtensionManagerImpl();
manager.processPlugins([plugin1, plugin2]);
expect(plugin1.extensionPointsRegistered, true);
expect(plugin1.extensionsRegistered, true);
@@ -25,7 +25,7 @@
test('registerExtension - valid', () {
Plugin plugin = new TestPlugin('plugin');
- ExtensionManager manager = new ExtensionManager();
+ ExtensionManagerImpl manager = new ExtensionManagerImpl();
ExtensionPoint point =
manager.registerExtensionPoint(plugin, 'point', null);
expect(point, isNotNull);
@@ -38,7 +38,7 @@
});
test('registerExtension - non existent', () {
- ExtensionManager manager = new ExtensionManager();
+ ExtensionManagerImpl manager = new ExtensionManagerImpl();
expect(() => manager.registerExtension('does not exist', 'extension'),
throwsA(new isInstanceOf<ExtensionError>()));
;
@@ -47,7 +47,7 @@
test('registerExtensionPoint - non-conflicting', () {
Plugin plugin1 = new TestPlugin('plugin1');
Plugin plugin2 = new TestPlugin('plugin2');
- ExtensionManager manager = new ExtensionManager();
+ ExtensionManagerImpl manager = new ExtensionManagerImpl();
expect(
manager.registerExtensionPoint(plugin1, 'point1', null), isNotNull);
expect(
@@ -60,7 +60,7 @@
test('registerExtensionPoint - conflicting - same plugin', () {
Plugin plugin1 = new TestPlugin('plugin1');
- ExtensionManager manager = new ExtensionManager();
+ ExtensionManagerImpl manager = new ExtensionManagerImpl();
expect(
manager.registerExtensionPoint(plugin1, 'point1', null), isNotNull);
expect(() => manager.registerExtensionPoint(plugin1, 'point1', null),
@@ -70,7 +70,7 @@
test('registerExtensionPoint - conflicting - different plugins', () {
Plugin plugin1 = new TestPlugin('plugin1');
Plugin plugin2 = new TestPlugin('plugin1');
- ExtensionManager manager = new ExtensionManager();
+ ExtensionManagerImpl manager = new ExtensionManagerImpl();
expect(
manager.registerExtensionPoint(plugin1, 'point1', null), isNotNull);
expect(() => manager.registerExtensionPoint(plugin2, 'point1', null),