Beispiel #1
0
        static void Main()
        {
            using (ContainerAccessor.RegisterComponents())
                using (var mutex = CreateApplicationSpecificMutex())
                {
                    Bootstrapper.BootstrapApplication();
                    ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;

                    Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);
                    AppDomain.CurrentDomain.UnhandledException +=
                        (sender, e) => LogManager.GetLogger("errorLog").Error((Exception)e.ExceptionObject);

                    CompileDefinitions();
                    ContainerAccessor.Resolve <IComicStore>().InitializeComicCache();

                    var mainForm = new MainForm();
                    //the synchronization context only becomes available after creating the form
                    SynchronizationContext = SynchronizationContext.Current;
                    //the DownloadSupervisor needs the SynchronizationContext, so I resolve it only after initializing the context
                    mainForm.Presenter = ContainerAccessor.Resolve <IMainPresenter>();

                    ContainerAccessor.Resolve <ITrayIconController>().DisplayIcon();
                    Application.Run(mainForm);

                    GC.KeepAlive(mutex);
                }
        }
Beispiel #2
0
 public App()
     : this(
         ContainerAccessor.Resolve <ISession>(),
         ContainerAccessor.Resolve <IQueryHelper <Transaction> >(),
         ContainerAccessor.Resolve <IQueryHelper <Donator> >())
 {
 }
Beispiel #3
0
        protected IEnumerable <object> InvokeExpression(string expressionName, object argument, Context context)
        {
            canceler.ThrowIfCancellationRequested();

            var expression = ContainerAccessor.Resolve <IExpression>(expressionName);

            return(expression.Invoke(argument, context));
        }
Beispiel #4
0
        public ContextBuilder <T> WithSecurity()
        {
            var securityService = ContainerAccessor.Resolve <ISecurityService>();

            this.context = new AuthorizedEntitiesOnlyContext(context, securityService);

            return(this);
        }
        public static void Main()
        {
            ContainerAccessor.Container().RegisterInstance(SessionManager.GetInstance(ContainerAccessor.Container()));
            ContainerAccessor.Container().RegisterInstance <IQueryHelper <Transaction> >(new QueryHelper <Transaction>());
            ContainerAccessor.Container().RegisterInstance <IQueryHelper <Donator> >(new QueryHelper <Donator>());

            var application = new App();

            application.Start();
        }
Beispiel #6
0
        public void Should_invoke_the_registered_visit_expression()
        {
            var expression = (CountingVisitExpression)ContainerAccessor.Resolve <IExpression>("visit");

            var assembly = Compile("visit.boo");

            var visit = (Definition)assembly.CreateInstance("_visit");

            visit.Run();

            Assert.True(0 < expression.ExecutionCount);
        }
Beispiel #7
0
        public void Should_invoke_the_same_expression_each_time()
        {
            var expression = (CountingVisitExpression)ContainerAccessor.Resolve <IExpression>("visit");

            var assembly = Compile("visit.boo");

            var visit = (Definition)assembly.CreateInstance("_visit");

            visit.Run();

            Assert.Equal(3, expression.ExecutionCount);
        }
        public void Should_invoke_the_associated_expression()
        {
            var assembly = CompileReferencingTests("custom_keywords.boo");

            var definition = (Definition)assembly.CreateInstance("_custom_keywords");

            definition.ComicInstance = new Core.ComicManagement.Comic();
            definition.Run();

            var foo = (FooExpression)ContainerAccessor.Resolve <IExpression>("foo");

            Assert.True(foo.TimesInvoked > 1);
        }
Beispiel #9
0
        public ContextBuilder <T> WithAuditableEntity()
        {
            if (!typeof(T).IsSubclassOf(typeof(AuditableEntity)))
            {
                return(this);
            }

            var securityService = ContainerAccessor.Resolve <ISecurityService>();

            this.context = new AuditableEntityContext(context, securityService);

            return(this);
        }
        public void Should_pass_the_context_to_the_expression()
        {
            var assembly = CompileReferencingTests("custom_keywords.boo");

            var definition = (Definition)assembly.CreateInstance("_custom_keywords");

            definition.ComicInstance = new Core.ComicManagement.Comic();
            definition.Run();

            var foo = (FooExpression)ContainerAccessor.Resolve <IExpression>("foo");

            Assert.NotNull(foo.Context);
        }
        public void Should_pass_the_argument_to_the_expression()
        {
            var assembly = CompileReferencingTests("custom_keywords.boo");

            var definition = (Definition)assembly.CreateInstance("_custom_keywords");

            definition.ComicInstance = new Core.ComicManagement.Comic();
            definition.Run();

            var bar = (BarExpression)ContainerAccessor.Resolve <IExpression>("bar");

            Assert.Equal("baz", bar.Argument);
        }
Beispiel #12
0
        public void Run()
        {
            canceler.AllowResuming();

            var context = new Context(Id, Comic, ComicInstance.CurrentPage ?? new Uri(StartAt));

            try
            {
                RunImpl(context);

                ContainerAccessor.Resolve <IAppController>().Raise(new DownloadFinished(context.ComicId));
            }
            catch (OperationCanceledException)
            {
            }
        }
Beispiel #13
0
        public static bool IsCurrentUserAuthorized <T>(params Permissions[] requiredPermissions) where T : Entity
        {
            var securityService = ContainerAccessor.Resolve <ISecurityService>();

            var aUser = securityService.GetCurrentUserPrincipal();

            if (aUser == null)
            {
                return(false);
            }

            foreach (var permission in requiredPermissions)
            {
                if (!securityService.IsAuthorized <T>(aUser.UserId, aUser.CompanyId, permission))
                {
                    return(false);
                }
            }

            return(true);
        }
Beispiel #14
0
        private static void CompileDefinitions()
        {
            var definitionStore            = ContainerAccessor.Resolve <IDefinitionStore>();
            var compilationErrorController = ContainerAccessor.Resolve <ICompilationErrorController>();

            do
            {
                try
                {
                    definitionStore.InitializeDefinitionCache();
                    return;
                }
                catch (CompilationException ex)
                {
                    var shouldRetry = compilationErrorController.DisplayError(ex);
                    if (!shouldRetry)
                    {
                        Environment.Exit(1);
                    }
                }
            }while (true);
        }
Beispiel #15
0
 public SecurityRepository()
     : base(ContainerAccessor.Resolve <IDBContext>())
 {
 }
 static When_expanding_meta_methods()
 {
     ContainerAccessor.RegisterComponents(new CustomKeywordModule());
 }
Beispiel #17
0
        /// <summary>
        /// Used by the setup kit to determine if the app is running or not.
        /// </summary>
        private static Mutex CreateApplicationSpecificMutex()
        {
            var appSettings = ContainerAccessor.Resolve <IAppSettings>();

            return(new Mutex(true, appSettings.ApplicationGuid.ToString()));
        }
Beispiel #18
0
 public QueryHelper() : this(ContainerAccessor.Resolve <ISession>())
 {
 }
Beispiel #19
0
 public ContextBuilder()
 {
     this.context = ContainerAccessor.Resolve <IDBContext>();
 }
Beispiel #20
0
        public static void SaveChanges()
        {
            var context = ContainerAccessor.Resolve <IDBContext>();

            context.SaveChanges();
        }
Beispiel #21
0
        public static ITransaction BeginTransaction()
        {
            var context = ContainerAccessor.Resolve <IDBContext>();

            return(context.BeginTransaction());
        }
Beispiel #22
0
 static Visit()
 {
     ContainerAccessor.RegisterComponents(new TestModule());
 }