internal void BindEditedPlugin(PluginDiscoverer discoverer) { _sourcePlugin = discoverer.FindPlugin(_source); }
public Merger(PluginDiscoverer discoverer) { _discoverer = discoverer; _hasBeenDiscovered = new HashSet <DiscoveredInfo>(); _newAssemblies = new List <PluginAssemblyInfo>(); _changedAssemblies = new List <PluginAssemblyInfo>(); _deletedAssemblies = new List <PluginAssemblyInfo>(); _newPlugins = new List <PluginInfo>(); _changedPlugins = new List <PluginInfo>(); _deletedPlugins = new List <PluginInfo>(); _newEditors = new List <PluginConfigAccessorInfo>(); _changedEditors = new List <PluginConfigAccessorInfo>(); _deletedEditors = new List <PluginConfigAccessorInfo>(); _newOldPlugins = new List <PluginInfo>(); _deletedOldPlugins = new List <PluginInfo>(); _newMissingAssemblies = new List <string>(); _deletedMissingAssemblies = new List <string>(); _newServices = new List <ServiceInfo>(); _changedServices = new List <ServiceInfo>(); _deletedServices = new List <ServiceInfo>(); NewAssemblies = new ReadOnlyListOnIList <PluginAssemblyInfo>(_newAssemblies); ChangedAssemblies = new ReadOnlyListOnIList <PluginAssemblyInfo>(_changedAssemblies); DeletedAssemblies = new ReadOnlyListOnIList <PluginAssemblyInfo>(_deletedAssemblies); NewPlugins = new ReadOnlyListOnIList <PluginInfo>(_newPlugins); ChangedPlugins = new ReadOnlyListOnIList <PluginInfo>(_changedPlugins); DeletedPlugins = new ReadOnlyListOnIList <PluginInfo>(_deletedPlugins); NewEditors = new ReadOnlyListOnIList <PluginConfigAccessorInfo>(_newEditors); ChangedEditors = new ReadOnlyListOnIList <PluginConfigAccessorInfo>(_changedEditors); DeletedEditors = new ReadOnlyListOnIList <PluginConfigAccessorInfo>(_deletedEditors); NewServices = new ReadOnlyListOnIList <ServiceInfo>(_newServices); ChangedServices = new ReadOnlyListOnIList <ServiceInfo>(_changedServices); DeletedServices = new ReadOnlyListOnIList <ServiceInfo>(_deletedServices); NewOldPlugins = new ReadOnlyListOnIList <PluginInfo>(_newOldPlugins); DeletedOldPlugins = new ReadOnlyListOnIList <PluginInfo>(_deletedOldPlugins); NewAssemblies = new ReadOnlyListOnIList <PluginAssemblyInfo>(_newAssemblies); ChangedAssemblies = new ReadOnlyListOnIList <PluginAssemblyInfo>(_changedAssemblies); DeletedAssemblies = new ReadOnlyListOnIList <PluginAssemblyInfo>(_deletedAssemblies); NewPlugins = new ReadOnlyListOnIList <PluginInfo>(_newPlugins); ChangedPlugins = new ReadOnlyListOnIList <PluginInfo>(_changedPlugins); DeletedPlugins = new ReadOnlyListOnIList <PluginInfo>(_deletedPlugins); NewEditors = new ReadOnlyListOnIList <PluginConfigAccessorInfo>(_newEditors); ChangedEditors = new ReadOnlyListOnIList <PluginConfigAccessorInfo>(_changedEditors); DeletedEditors = new ReadOnlyListOnIList <PluginConfigAccessorInfo>(_deletedEditors); NewServices = new ReadOnlyListOnIList <ServiceInfo>(_newServices); ChangedServices = new ReadOnlyListOnIList <ServiceInfo>(_changedServices); DeletedServices = new ReadOnlyListOnIList <ServiceInfo>(_deletedServices); NewOldPlugins = new ReadOnlyListOnIList <PluginInfo>(_newOldPlugins); DeletedOldPlugins = new ReadOnlyListOnIList <PluginInfo>(_deletedOldPlugins); NewMissingAssemblies = new ReadOnlyListOnIList <string>(_newMissingAssemblies); DeletedMissingAssemblies = new ReadOnlyListOnIList <string>(_deletedMissingAssemblies); _dicAssemblies = new Dictionary <string, PluginAssemblyInfo>(); foreach (PluginAssemblyInfo item in _discoverer._allAssemblies) { _dicAssemblies.Add(item.AssemblyFileName, item); } _dicEditors = new Dictionary <EditorKey, PluginConfigAccessorInfo>(); _dicPlugins = new Dictionary <KeyValuePair <Guid, Version>, PluginInfo>(); foreach (PluginInfo item in _discoverer._allPlugins) { foreach (PluginConfigAccessorInfo editor in item.EditorsInfo) { _dicEditors.Add(new EditorKey(editor.Plugin.PluginId, editor.Source), editor); } _dicPlugins.Add(new KeyValuePair <Guid, Version>(item.PluginId, item.Version), item); } foreach (PluginInfo item in _discoverer._oldPlugins) { foreach (PluginConfigAccessorInfo editor in item.EditorsInfo) { _dicEditors.Add(new EditorKey(editor.Plugin.PluginId, editor.Source), editor); } _dicPlugins.Add(new KeyValuePair <Guid, Version>(item.PluginId, item.Version), item); } _dicServices = new Dictionary <string, ServiceInfo>(); Debug.Assert(_discoverer._allServices.Intersect(_discoverer._notFoundServices).Count() == _discoverer._notFoundServices.Count, "Not found services are includes into the all services collection."); foreach (ServiceInfo service in _discoverer._allServices) { _dicServices.Add(service.AssemblyQualifiedName, service); } }
internal PluginConfigAccessorInfo(PluginDiscoverer discoverer) : base(discoverer) { }
internal PluginAssemblyInfo(PluginDiscoverer discoverer) : base(discoverer) { _pluginsCollection = new List <PluginInfo>(); _servicesCollection = new List <ServiceInfo>(); }
protected DiscoveredInfo(PluginDiscoverer discoverer) { _discoverer = discoverer; _version = _discoverer.CurrentVersion; }
public void TestRediscoverOneAssembly() { DiscoverDoneEventArgs lastDiscoverEventArgs = null; PluginDiscoverer Discoverer = new CK.Plugin.Discoverer.PluginDiscoverer(); Discoverer.DiscoverDone += (sender, e) => lastDiscoverEventArgs = e; TestBase.CopyPluginToTestDir("ServiceA.dll"); Discoverer.Discover(TestBase.TestFolderDir, true); Assert.That(Discoverer.AllAssemblies.Count, Is.EqualTo(1)); Assert.That(Discoverer.AllPlugins.Count, Is.EqualTo(1)); // Test methods, events and properties info (ServiceA.dll): { var events = Discoverer.Services.First().EventsInfoCollection; var methods = Discoverer.Services.First().MethodsInfoCollection; var properties = Discoverer.Services.First().PropertiesInfoCollection; Assert.That(events.Count, Is.EqualTo(1)); Assert.That(methods.Count, Is.EqualTo(2)); Assert.That(properties.Count, Is.EqualTo(1)); Assert.That(events.First().Name, Is.EqualTo("HasStarted")); Assert.That(methods.First().Name, Is.EqualTo("Add")); Assert.That(methods.First().Parameters.Count, Is.EqualTo(2)); Assert.That(methods.First().Parameters.First().ParameterName, Is.EqualTo("a")); Assert.That(methods.First().Parameters.Last().ParameterName, Is.EqualTo("b")); Assert.That(methods.First().ReturnType, Is.EqualTo("System.Int32")); Assert.That(properties.First().Name, Is.EqualTo("HasBeenStarted")); Assert.That(properties.First().PropertyType, Is.EqualTo("System.Boolean")); } // We add the new one: it has the same assembly name but not the same content (Plugin01 is kept as-is // but the ServiceA.2 contains another plugin. // ==> Two "identical" assemblies are now available. TestBase.CopyPluginToTestDir(@"ServiceA.2\ServiceA.dll"); Discoverer.Discover(TestBase.TestFolderDir, true); Assert.That(Discoverer.AllAssemblies.Count, Is.EqualTo(2)); Assert.That(Discoverer.AllAssemblies.Single(a => a.AssemblyFileName.Contains("ServiceA.2")).HasError, Is.True, "The 2nd assembly is on error: the other one has been discovered first."); Discoverer.Discover(TestBase.TestFolderDir, true); Assert.That(lastDiscoverEventArgs.ChangeCount, Is.EqualTo(0), "Discovering twice an assembly error (no bug, no change)."); // We remove the first one, and we discover again. TestBase.RemovePluginFromTestDir(@"ServiceA.dll"); Discoverer.Discover(TestBase.TestFolderDir, true); Assert.That(lastDiscoverEventArgs.ChangeCount, Is.GreaterThan(0), "There are changes."); Assert.That(Discoverer.AllAssemblies.Count, Is.EqualTo(1), "The first assembly has been deleted."); Assert.That(lastDiscoverEventArgs.DeletedAssemblies.Count, Is.EqualTo(1), "...that's what I said."); Assert.That(Discoverer.AllPlugins.Count, Is.EqualTo(2), "ServiceA.2/ServiceA.dll contains 2 plugins."); Assert.That(lastDiscoverEventArgs.NewPlugins.Count, Is.EqualTo(1), "Plugin01 (same id) exists in both assembly."); //Test methods, events and properties info : { var events = Discoverer.Services.First().EventsInfoCollection; var methods = Discoverer.Services.First().MethodsInfoCollection; var properties = Discoverer.Services.First().PropertiesInfoCollection; Assert.That(events.Count, Is.EqualTo(1)); Assert.That(methods.Count, Is.EqualTo(1)); Assert.That(properties.Count, Is.EqualTo(1)); Assert.That(events.First().Name, Is.EqualTo("DifferentHasStarted")); Assert.That(methods.First().Name, Is.EqualTo("Add")); Assert.That(methods.First().Parameters.Count, Is.EqualTo(2)); Assert.That(methods.First().Parameters.First().ParameterName, Is.EqualTo("a")); Assert.That(methods.First().Parameters.Last().ParameterName, Is.EqualTo("b")); Assert.That(methods.First().Parameters.First().ParameterType, Is.EqualTo("System.Double")); Assert.That(methods.First().Parameters.Last().ParameterType, Is.EqualTo("System.Int32")); Assert.That(methods.First().ReturnType, Is.EqualTo("System.Int32")); Assert.That(properties.First().Name, Is.EqualTo("HasBeenStarted")); Assert.That(properties.First().PropertyType, Is.EqualTo("System.Boolean")); } }
internal ServiceReferenceInfo(PluginDiscoverer discoverer) : base(discoverer) { }
internal PluginInfo( PluginDiscoverer discoverer ) : base( discoverer ) { }