コード例 #1
0
        public void TestParseWhere2()
        {
            var result = DependencyBuilder.TryParsingDependentFields("location_id=#location");

            Assert.AreEqual(1, result.Count);
            Assert.IsTrue(result.Contains("location"));
        }
コード例 #2
0
        public App()
        {
            var host = Host
                       .CreateDefaultBuilder()
                       .ConfigureServices(services =>
            {
                services.UseMicrosoftDependencyResolver();
                var resolver = Locator.CurrentMutable;
                resolver.InitializeSplat();
                resolver.InitializeReactiveUI();


                DependencyBuilder.GetServices(services);
            })
                       .ConfigureLogging(loggingBuilder =>
            {
                loggingBuilder.AddSplat();
            })
                       .UseEnvironment(Environments.Development)
                       .Build();

            AssemblyHelper
            .GetSolutionAssemblies()
            .ToList()
            .ForEach(Locator.CurrentMutable.RegisterViewsForViewModels);

            // https://stackoverflow.com/questions/431940/how-to-set-default-wpf-window-style-in-app-xaml
            FrameworkElement.StyleProperty.OverrideMetadata(typeof(Window), new FrameworkPropertyMetadata
            {
                DefaultValue = Application.Current.FindResource(typeof(Window))
            });
        }
コード例 #3
0
        public void Disabling_Collection_Observation_Should_Suppress_Event()
        {
            //clear existing dependency and let the garbage collector take care of it
            //(works thanks to weak event listeners). If we didn't change listener remained active
            dependency = null;
            GC.Collect();
            GC.WaitForPendingFinalizers();

            //create settings and disable observations
            DependencyNodeSettings <ObservableCollection <Student> > settings;

            settings = new DependencyNodeSettings <ObservableCollection <Student> >(() => course.Students);
            settings.ChangeHandler          = OnDependencyChanged;
            settings.ObserveSubValueChanges = false;

            dependency = DependencyBuilder.CreateDependency(settings);

            //add student to collection
            course.Students.Add(TestUtil.CreateTestStudent());
            Assert.AreEqual(0, eventCounter);

            //remove student from collection
            course.Students.Remove(course.Students[7]);
            Assert.AreEqual(0, eventCounter);
        }
コード例 #4
0
 private static void RegisterServiceDependencies(DependencyBuilder builder)
 {
     builder.Register<IAuthorizationManager, ServiceAuthorizationManager>(InstanceLifetime.Singleton)
            .Register<IStreamCompressor, RestStreamCompressor>(InstanceLifetime.Singleton)
            .ScanAssemblies(new[] { "RestTestContracts", "RestTestServices" }, t => t.Name.EndsWith("Service"))
            .AllowPropertyInjection(t => t.GetProperty("Context") != null || t.GetProperty("Request") != null);
 }
コード例 #5
0
 private static void Setup(string[] args)
 {
     // Build dependency container
     DependencyBuilder.Build().BeginLifetimeScope();
     DependencyBuilder.Container.Resolve <ISettingsBuilder>().BuildSettings(args);
     Logger = DependencyBuilder.Container.Resolve <ILogger>();
     Logger.Log("Built dependencies", LogEventLevel.Information);
 }
コード例 #6
0
        public void Get_Disposed()
        {
            var dependencyService = new DependencyBuilder().Build();

            dependencyService.Dispose();

            Assert.Throws <ObjectDisposedException>(() => dependencyService.Get <IFirst>());
        }
コード例 #7
0
        public void TestParseWhere()
        {
            var result = DependencyBuilder.TryParsingDependentFields("field1=#field1 and field2=#field2");

            Assert.AreEqual(2, result.Count);
            Assert.IsTrue(result.Contains("field1"));
            Assert.IsTrue(result.Contains("field2"));
        }
コード例 #8
0
        public void Get_ByType_Disposed()
        {
            var dependencyService = new DependencyBuilder().Build().CreateScope();

            dependencyService.Dispose();

            Assert.Throws <ObjectDisposedException>(() => dependencyService.Get(typeof(IFirst)));
        }
コード例 #9
0
        /// <summary>
        /// Runs just after the page has completed initializing injecting
        /// any dependencies the page's controls may have.
        /// </summary>
        private void PageInitComplete(object sender, EventArgs e)
        {
            Page page = (Page)sender;

            foreach (Control pageControl in GetControlTree(page))
            {
                DependencyBuilder.BuildUp(pageControl);
            }
        }
コード例 #10
0
        public void Get_Fail_SingletonRequiresNotRegistered()
        {
            var dependencyService =
                new DependencyBuilder()
                .AddSingleton <IFirst, First.RequiresSecond>()
                .Build();

            Assert.Throws <InvalidOperationException>(() => dependencyService.Get <IFirst>());
        }
コード例 #11
0
        public void Get_Fail_ScopedRequiresFirst()
        {
            var dependencyService =
                new DependencyBuilder()
                .AddScoped <IFirst, First.RequiresFirst>()
                .Build().CreateScope();

            Assert.Throws <InvalidOperationException>(() => dependencyService.Get <IFirst>());
        }
コード例 #12
0
        private E <string> Run(ParameterData setup)
        {
            var configResult = ConfRoot.OpenOrCreate(configFilePath);

            if (!configResult.Ok)
            {
                return("Could not create config");
            }
            ConfRoot config = configResult.Value;

            Config.Deprecated.UpgradeScript.CheckAndUpgrade(config);
            ConfigUpgrade2.Upgrade(config.Configs.BotsPath.Value);
            config.Save();

            var builder = new DependencyBuilder(injector);

            builder.AddModule(this);
            builder.AddModule(config);
            builder.AddModule(injector);
            builder.AddModule(config.Db);
            builder.RequestModule <SystemMonitor>();
            builder.RequestModule <DbStore>();
            builder.AddModule(config.Plugins);
            builder.RequestModule <PluginManager>();
            builder.AddModule(config.Web);
            builder.AddModule(config.Web.Interface);
            builder.AddModule(config.Web.Api);
            builder.RequestModule <WebServer>();
            builder.AddModule(config.Rights);
            builder.RequestModule <RightsManager>();
            builder.RequestModule <BotManager>();
            builder.RequestModule <TokenManager>();
            builder.RequestModule <CommandManager>();
            builder.AddModule(config.Factories);
            builder.RequestModule <SpotifyApi>();
            builder.RequestModule <ResourceResolver>();
            builder.RequestModule <Stats>();
            builder.AddModule(config.Tools.Librespot);

            if (!builder.Build())
            {
                Log.Error("Missing core module dependency");
                return("Could not load all core modules");
            }

            YoutubeDlHelper.DataObj = config.Tools.YoutubeDl;

            builder.GetModule <SystemMonitor>().StartTimedSnapshots();
            builder.GetModule <CommandManager>().RegisterCollection(MainCommands.Bag);
            builder.GetModule <RightsManager>().CreateConfigIfNotExists(setup.Interactive);
            builder.GetModule <BotManager>().RunBots(setup.Interactive);
            builder.GetModule <WebServer>().StartWebServer();
            builder.GetModule <Stats>().StartTimer(setup.SendStats);

            return(R.Ok);
        }
コード例 #13
0
        public void Get_Fail_TransientRequiresScoped()
        {
            var dependencyService =
                new DependencyBuilder()
                .AddTransient <IFirst, First.RequiresSecond>()
                .AddScoped <ISecond, Second.RequiresNone>()
                .Build();

            Assert.Throws <InvalidOperationException>(() => dependencyService.Get <IFirst>());
        }
コード例 #14
0
ファイル: Core.cs プロジェクト: yakMM/TS3AudioBot
        public async Task Run(ParameterData setup)
        {
            scheduler.VerifyOwnThread();

            AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionHandler;
            TaskScheduler.UnobservedTaskException      += UnobservedTaskExceptionHandler;
            Console.CancelKeyPress += ConsoleInterruptHandler;

            var config = ConfRoot.OpenOrCreate(configFilePath);

            if (config is null)
            {
                throw new Exception("Could not create config");
            }
            ConfigUpgrade2.Upgrade(config.Configs.BotsPath.Value);
            config.Save();

            var builder = new DependencyBuilder(injector);

            injector.AddModule(this);
            injector.AddModule(scheduler);
            injector.AddModule(injector);
            injector.AddModule(config);
            injector.AddModule(config.Db);
            injector.AddModule(config.Plugins);
            injector.AddModule(config.Web);
            injector.AddModule(config.Web.Interface);
            injector.AddModule(config.Web.Api);
            injector.AddModule(config.Rights);
            injector.AddModule(config.Factories);
            builder.RequestModule <SystemMonitor>();
            builder.RequestModule <DbStore>();
            builder.RequestModule <PluginManager>();
            builder.RequestModule <WebServer>();
            builder.RequestModule <RightsManager>();
            builder.RequestModule <BotManager>();
            builder.RequestModule <TokenManager>();
            builder.RequestModule <CommandManager>();
            builder.RequestModule <ResourceResolver>();
            builder.RequestModule <Stats>();

            if (!builder.Build())
            {
                throw new Exception("Could not load all core modules");
            }

            Upgrader.PerformUpgrades(injector);
            YoutubeDlHelper.DataObj = config.Tools.YoutubeDl;

            injector.GetModuleOrThrow <CommandManager>().RegisterCollection(MainCommands.Bag);
            injector.GetModuleOrThrow <RightsManager>().CreateConfigIfNotExists(setup.Interactive);
            injector.GetModuleOrThrow <WebServer>().StartWebServer();
            injector.GetModuleOrThrow <Stats>().StartTimer(setup.SendStats);
            await injector.GetModuleOrThrow <BotManager>().RunBots(setup.Interactive);
        }
コード例 #15
0
ファイル: Core.cs プロジェクト: xThunderbolt/TS3AudioBot
        private E <string> Run(bool interactive = false)
        {
            var configResult = ConfRoot.OpenOrCreate(configFilePath);

            if (!configResult.Ok)
            {
                return("Could not create config");
            }
            ConfRoot config = configResult.Value;

            Config.Deprecated.UpgradeScript.CheckAndUpgrade(config);
            ConfigUpgrade2.Upgrade(config.Configs.BotsPath.Value);
            config.Save();

            var builder = new DependencyBuilder(injector);

            builder.AddModule(this);
            builder.AddModule(config);
            builder.AddModule(injector);
            builder.AddModule(config.Db);
            builder.RequestModule <SystemMonitor>();
            builder.RequestModule <DbStore>();
            builder.AddModule(config.Plugins);
            builder.RequestModule <PluginManager>();
            builder.AddModule(config.Web);
            builder.AddModule(config.Web.Interface);
            builder.AddModule(config.Web.Api);
            builder.RequestModule <WebServer>();
            builder.AddModule(config.Rights);
            builder.RequestModule <RightsManager>();
            builder.RequestModule <BotManager>();
            builder.RequestModule <TokenManager>();
            builder.RequestModule <CommandManager>();
            builder.AddModule(config.Factories);
            // TODO fix interaction: rfm needs to be in the same injector as the commandsystem, otherwise duplicate error
            // Also TODO find solution to move commandsystem to bot, without breaking api
            builder.RequestModule <ResourceFactory>();

            if (!builder.Build())
            {
                Log.Error("Missing core module dependency");
                return("Could not load all core modules");
            }

            YoutubeDlHelper.DataObj = config.Tools.YoutubeDl;

            builder.GetModule <SystemMonitor>().StartTimedSnapshots();
            builder.GetModule <CommandManager>().RegisterCollection(MainCommands.Bag);
            builder.GetModule <RightsManager>().CreateConfigIfNotExists(interactive);
            builder.GetModule <BotManager>().RunBots(interactive);
            builder.GetModule <WebServer>().StartWebServer();

            return(R.Ok);
        }
コード例 #16
0
        public void Create_AutoDetect()
        {
            var dependencyService = new DependencyBuilder().EnableServiceAutoDetection(GetType().Assembly).Build().CreateScope();
            var service           = dependencyService.Create <First.RequiresUniqueSecond>();

            Assert.NotNull(service);
            var first = Assert.IsType <First.RequiresUniqueSecond>(service);

            Assert.NotNull(first.UniqueSecond);
            Assert.IsType <Second.RequiresNone>(first.UniqueSecond);
        }
コード例 #17
0
        public void Get_Success_ScopedIgnoresSecond()
        {
            var dependencyService =
                new DependencyBuilder()
                .AddScoped <IFirst, First.IgnoreSecond>()
                .Build().CreateScope();

            var service = dependencyService.Get <IFirst>();

            Assert.NotNull(service);
            Assert.IsType <First.IgnoreSecond>(service);
        }
コード例 #18
0
        public void Get_Success_ScopedAutoDetected()
        {
            var dependencyService =
                new DependencyBuilder()
                .EnableServiceAutoDetection(GetType().Assembly)
                .Build().CreateScope();

            var service = dependencyService.Get <IUniqueFirst>();

            Assert.NotNull(service);
            Assert.IsType <First.RequiresNone>(service);
        }
コード例 #19
0
        public void Observing_Nullable_Types_Should_Work()
        {
            var basket = new { Course = c };

            DependencyBuilder.CreateDependency(() => basket.Course.IsFull, OnCourseChanged);

            c.IsFull = true;
            c.IsFull = null;
            c.IsFull = false;
            c.IsFull = true;

            Assert.AreEqual(4, changeCounter);
        }
コード例 #20
0
        public void Create_Standard()
        {
            var dependencyService =
                new DependencyBuilder()
                .AddScoped <ISecond, Second.RequiresNone>()
                .Build().CreateScope();

            var service = dependencyService.Create <First.RequiresSecond>();

            Assert.NotNull(service);
            var first = Assert.IsType <First.RequiresSecond>(service);

            Assert.NotNull(first.Second);
            Assert.IsType <Second.RequiresNone>(first.Second);
        }
コード例 #21
0
        public DataExporter(string serverName, string databaseName, string configServerName, string configDatabaseName)
        {
            ServerName             = serverName;
            DatabaseName           = databaseName;
            PrimaryKeyConstraints  = DataReader.GetPrimaryKeyConstraintsFromDatabase(ServerName, DatabaseName);
            ForeignKeyConstraints  = DataReader.GetForeignKeyConstraintsFromDatabase(ServerName, DatabaseName);
            SoftConstraints        = DataReader.GetSoftConstraintsFromDatabase(configServerName, configDatabaseName);
            IgnoredDependencyLists = DataReader.GetIgnoredDependenciesFromDatabase(configServerName, configDatabaseName);
            List <ForeignKeyConstraint> allDependencies = new List <ForeignKeyConstraint>(ForeignKeyConstraints);

            allDependencies.AddRange(SoftConstraints);
            DependencyBuilder dependencyBuilder = new DependencyBuilder();

            DependencyGraph = dependencyBuilder.BuildDependency(allDependencies);
        }
        public void Sub_Property_Tracking_Can_Be_Disabled_Through_Settings()
        {
            //create settings class
            var settings = new DependencyNodeSettings <IAddress>(() => Student.School.Address);

            //configure settings to ignore sub item changes
            settings.ObserveSubValueChanges = false;

            //dispose old dependency in order to get rid of event listener!
            addressDependency.Dispose();
            addressDependency = DependencyBuilder.CreateDependency(settings);

            //does not cause a change event:
            Student.School.Address.City = "Ethon";
            Assert.AreEqual(0, changeCounter);
        }
コード例 #23
0
        protected void Application_Start()
        {
            GlobalConfiguration.Configure(WebApiConfig.Register);

            var container = DependencyBuilder.Build();

            GlobalConfiguration.Configuration.Formatters.Clear();

            var jsonFormatter = new JsonMediaTypeFormatter();

            jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
            GlobalConfiguration.Configuration.Formatters.Add(jsonFormatter);

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
            GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
        }
コード例 #24
0
        public void Get_Success_SingletonRequiresSingletonAutoDetected()
        {
            var dependencyService =
                new DependencyBuilder()
                .EnableServiceAutoDetection(GetType().Assembly)
                .AddSingleton <IFirst, First.RequiresUniqueSecond>()
                .Build();

            var service = dependencyService.Get <IFirst>();

            Assert.NotNull(service);
            var first = Assert.IsType <First.RequiresUniqueSecond>(service);

            Assert.NotNull(first.UniqueSecond);
            Assert.IsType <Second.RequiresNone>(first.UniqueSecond);
        }
コード例 #25
0
        public void Get_Success_SingletonRequiresTransientFunction()
        {
            var dependencyService =
                new DependencyBuilder()
                .AddSingleton <IFirst, First.RequiresSecond>()
                .AddTransient <ISecond>(x => new Second.RequiresNone())
                .Build();

            var service = dependencyService.Get <IFirst>();

            Assert.NotNull(service);
            var first = Assert.IsType <First.RequiresSecond>(service);

            Assert.NotNull(first.Second);
            Assert.IsType <Second.RequiresNone>(first.Second);
        }
コード例 #26
0
        public void Get_Success_SingletonRequiresSingletonInstance()
        {
            var dependencyService =
                new DependencyBuilder()
                .AddSingleton <IFirst, First.RequiresSecond>()
                .AddSingleton <ISecond>(new Second.RequiresNone())
                .Build();

            var service = dependencyService.Get <IFirst>();

            Assert.NotNull(service);
            var second = Assert.IsType <First.RequiresSecond>(service);

            Assert.NotNull(second.Second);
            Assert.IsType <Second.RequiresNone>(second.Second);
        }
コード例 #27
0
        public void Get_Success_ScopedRequiresSingleton()
        {
            var dependencyService =
                new DependencyBuilder()
                .AddScoped <IFirst, First.RequiresSecond>()
                .AddSingleton <ISecond, Second.RequiresNone>()
                .Build().CreateScope();

            var service = dependencyService.Get <IFirst>();

            Assert.NotNull(service);
            var first = Assert.IsType <First.RequiresSecond>(service);

            Assert.NotNull(first.Second);
            Assert.IsType <Second.RequiresNone>(first.Second);
        }
コード例 #28
0
        public void Dispose_Success_DisposableSingleton()
        {
            var dependencyService =
                new DependencyBuilder()
                .EnableServiceAutoDetection(GetType().Assembly)
                .AddSingleton <IFirst, First.RequiresNone>()
                .Build();

            var service = dependencyService.Get <IFirst>();

            Assert.NotNull(service);
            var first = Assert.IsType <First.RequiresNone>(service);

            dependencyService.Dispose();

            Assert.True(first.IsDisposed);
        }
コード例 #29
0
        /// <summary>
        /// Runs just before page processing, injecting any dependencies the
        /// page may have.
        /// </summary>
        private void PreRequestHandlerExecute(object sender, EventArgs e)
        {
            IHttpHandler handler = HttpContext.Current.Handler;

            if (!PageUsesInjection(handler))
            {
                return;
            }

            Page page = handler as Page;

            if (page != null)
            {
                page.InitComplete += PageInitComplete;
            }
            DependencyBuilder.BuildUp(handler);
        }
コード例 #30
0
        public void Dispose_Success_DisposableScoped_SuppressesExceptions()
        {
            var dependencyService =
                new DependencyBuilder()
                .EnableServiceAutoDetection(GetType().Assembly)
                .AddScoped <IFirst, First.RequiresNone>()
                .Build().CreateScope();

            var service = dependencyService.Get <IFirst>();

            Assert.NotNull(service);
            var first = Assert.IsType <First.RequiresNone>(service);

            first.Dispose();

            dependencyService.Dispose();
        }
コード例 #31
0
        public void Get_Success_TransientRequiresScoped()
        {
            var dependencyService =
                new DependencyBuilder()
                .EnableServiceAutoDetection(GetType().Assembly)
                .AddTransient <IFirst, First.RequiresSecond>()
                .AddScoped <ISecond, Second.RequiresNone>()
                .Build().CreateScope();

            var service = dependencyService.Get <IFirst>();

            Assert.NotNull(service);
            var first = Assert.IsType <First.RequiresSecond>(service);

            Assert.NotNull(first.Second);
            Assert.IsType <Second.RequiresNone>(first.Second);
        }
コード例 #32
0
ファイル: Rest.cs プロジェクト: dstarosta/GitProjects
        private RestOptions InitializeWithBuilder(Action<DependencyBuilder> builder, bool mockContext)
        {
            if (builder == null)
            {
                throw new ArgumentNullException("builder");
            }

            var container = new TinyIoCContainer();
            var dependencyBuilder = new DependencyBuilder(container);

            builder(dependencyBuilder);
            RegisterDependencies(container, mockContext, dependencyBuilder.IsRegistered);

            return Initialize(new DefaultServiceLocator(container, dependencyBuilder.PropertyInjectionPredicate));
        }
コード例 #33
0
ファイル: RestConfig.cs プロジェクト: dstarosta/GitProjects
 private static void RegisterServiceDependencies(DependencyBuilder builder)
 {
     builder.Register<IUrlRewriter, LegacyUrlRewriter>(InstanceLifetime.Singleton)
            .ScanAssemblies(typeof(Global).Assembly);
 }