public void RuntimePluginLoaderBase_PluginLoader_FactoryReturnsPluginLoader_Test()
        {
            // Arrange
            _MockPluginPaths.Setup(m => m.Paths).Returns(_Paths);
            var loader        = CreateInstance2Loader();
            var expectedPaths = new List <string>
            {
                $@"c:\my\path\{loader.PluginSubFolder}",
                $@"c:\some\other\path\{loader.PluginSubFolder}"
            };
            var          mockPluginCacheFactory = _MockRepository.Create <IPluginCacheFactory <Org> >();
            IPluginPaths actualPluginPaths      = null;

            _MockPluginLoaderFactory.Setup(m => m.Create(It.IsAny <PluginPaths>()))
            .Returns((IPluginPaths pluginPaths) =>
            {
                actualPluginPaths = pluginPaths;
                return(new PluginLoader <Org>(pluginPaths, mockPluginCacheFactory.Object));
            });

            // Act
            var actual = loader.PluginLoader;

            // Assert
            Assert.IsNotNull(actual);
            CollectionAssert.AreEqual(expectedPaths, actualPluginPaths.Paths.ToList());
            _MockRepository.VerifyAll();
        }
Esempio n. 2
0
 public static PluginLoader <T> Create(string appName,
                                       IPluginPaths paths                     = null,
                                       IAppDomain appDomain                   = null,
                                       IPluginLoaderSettings settings         = null,
                                       ITypeLoader <T> typeLoader             = null,
                                       IAssemblyCache assemblyDictionary      = null,
                                       IAssemblyNameReader assemblyNameReader = null,
                                       IAssemblyLoader assemblyLoader         = null,
                                       IWaiter waiter = null,
                                       IPluginDependencyResolverObjectCreator pluginDependencyResolverObjectCreator = null,
                                       IPluginDependencyResolverCacheFactory pluginDependencyResolverCacheFactory   = null,
                                       IPluginCacheFactory <T> pluginCacheFactory = null,
                                       IPluginLoaderLogger logger = null)
 {
     logger             = logger ?? PluginLoaderLogger.Factory(new AppSettings());
     appDomain          = appDomain ?? new AppDomainWrapper(AppDomain.CurrentDomain, logger);
     paths              = paths ?? new AppPluginPaths(appName, null, appDomain, logger);
     settings           = settings ?? PluginLoaderSettings.Default;
     typeLoader         = typeLoader ?? new TypeLoader <T>(settings, logger);
     assemblyNameReader = assemblyNameReader ?? new AssemblyNameReader();
     assemblyDictionary = assemblyDictionary ?? new AssemblyCache(appDomain, assemblyNameReader, logger);
     assemblyLoader     = assemblyLoader ?? new AssemblyLoader(appDomain, settings, assemblyDictionary, assemblyNameReader, logger);
     waiter             = waiter ?? new Waiter(logger);
     pluginDependencyResolverObjectCreator = pluginDependencyResolverObjectCreator ?? new PluginDependencyResolverObjectCreator(appDomain, settings, assemblyLoader, waiter, new AssemblyResolveCache(), logger);
     pluginDependencyResolverCacheFactory  = pluginDependencyResolverCacheFactory ?? new PluginDependencyResolverCacheFactory(pluginDependencyResolverObjectCreator, logger);
     pluginCacheFactory = pluginCacheFactory ?? new PluginCacheFactory <T>(typeLoader, pluginDependencyResolverCacheFactory, assemblyLoader, logger);
     return(new PluginLoader <T>(paths, pluginCacheFactory));
 }
Esempio n. 3
0
 public TestRuntimePluginLoader(IAppDomain appDomain,
                                IPluginLoaderSettings settings,
                                IPluginLoaderFactory <IOrganization> pluginLoaderFactory,
                                IPluginObjectCreator <IOrganization> pluginObjectCreator,
                                IPluginPaths pluginPaths,
                                IPluginLoaderLogger logger)
     : base(appDomain, settings, pluginLoaderFactory, pluginObjectCreator, pluginPaths, logger)
 {
 }
Esempio n. 4
0
 public CavemanHammerRuntimePluginLoader(IAppDomain appDomain,
                                         IPluginLoaderSettings settings,
                                         IPluginLoaderFactory <ICaveManTool <Hammer> > pluginLoaderFactory,
                                         IPluginObjectCreator <ICaveManTool <Hammer> > pluginObjectCreator,
                                         IPluginPaths pluginPaths   = null,
                                         IPluginLoaderLogger logger = null)
     : base(appDomain, settings, pluginLoaderFactory, pluginObjectCreator, pluginPaths, logger)
 {
 }
 public RuntimePluginLoaderBase(IAppDomain appDomain,
                                IPluginLoaderSettings settings,
                                IPluginLoaderFactory <T> pluginLoaderFactory,
                                IPluginObjectCreator <T> pluginObjectCreator,
                                IPluginPaths pluginPaths                = null,
                                IPluginLoaderLogger logger              = null,
                                bool disconnectResolverOnPluginLoad     = false,
                                bool disconnectResolverOnPluginTypeLoad = false)
 {
     _AppDomain           = appDomain ?? throw new ArgumentNullException(nameof(appDomain));
     _Settings            = settings ?? throw new ArgumentNullException(nameof(settings));
     _PluginLoaderFactory = pluginLoaderFactory ?? throw new ArgumentNullException(nameof(pluginLoaderFactory));
     _PluginObjectCreator = pluginObjectCreator ?? throw new ArgumentNullException(nameof(pluginObjectCreator));
     pluginPaths          = pluginPaths ?? new AppPluginPaths(_Settings.AppName, GetDefaultPluginDirectory(), _AppDomain, _Logger);
     _PluginPaths         = string.IsNullOrWhiteSpace(PluginSubFolder)
                  ? pluginPaths
                  : new PluginPaths {
         Paths = pluginPaths.Paths.Select(p => Path.Combine(p, PluginSubFolder))
     };
     _Logger = logger;
     _DisconnectResolverOnPluginLoad     = disconnectResolverOnPluginLoad;
     _DisconnectResolverOnPluginTypeLoad = disconnectResolverOnPluginTypeLoad;
 }
Esempio n. 6
0
 public IPluginLoader <T> Create(IPluginPaths pluginPaths)
 {
     return(new PluginLoader <T>(pluginPaths, _PluginCacheFactory));
 }
Esempio n. 7
0
 public PluginLoader(IPluginPaths paths,
                     IPluginCacheFactory <T> pluginCacheFactory)
 {
     Paths = paths ?? throw new ArgumentNullException(nameof(paths));
     _PluginCacheFactory = pluginCacheFactory ?? throw new ArgumentNullException(nameof(pluginCacheFactory));
 }