Exemplo n.º 1
0
        internal static IController TrySetActionInvoker(this IController iController, IGlimpseLogger logger)
        {
            var controller = iController as Controller;
            if (controller == null)
            {
                //TODO: Add Logging
                return iController;
            }

            var actionInvoker = controller.ActionInvoker;

            if (actionInvoker.CanSupportDynamicProxy(logger))
            {
                var proxyConfig = new Dictionary<string, IInterceptor>
                                      {
                                          {"GetFilters", new GetFiltersInterceptor()},
                                          {"InvokeActionResult", new InvokeActionResultInterceptor()},
                                          {"InvokeActionMethod",new InvokeActionMethodInterceptor()}
                                      };

                var proxyGenerator = new ProxyGenerator();
                var proxyGenOptions = new ProxyGenerationOptions(new SimpleProxyGenerationHook(logger, proxyConfig.Keys.ToArray())) { Selector = new SimpleInterceptorSelector(proxyConfig) };
                var newInvoker = (ControllerActionInvoker)proxyGenerator.CreateClassProxy(actionInvoker.GetType(), proxyGenOptions, proxyConfig.Values.ToArray());
                controller.ActionInvoker = newInvoker;
            }

            return controller;
        }
Exemplo n.º 2
0
 public NH(IGlimpseFactory factory)
 {
     _logger = factory.CreateLogger();
     _nhibernateInfoProvider   = new NHibernateInfoProvider();
     _profileDbDriverFactory   = new GlimpseProfileDbDriverFactory();
     _profileDbDriverActivator = new GlimpseProfileDbDriverActivator();
 }
Exemplo n.º 3
0
        public WrapDbDriver(IGlimpseLogger logger, INHibernateInfoProvider nhibernateInfoProvider, IGlimpseProfileDbDriverFactory profileDbDriverFactory, IGlimpseProfileDbDriverActivator profileDbDriverActivator)
        {
            if (logger == null)
            {
                throw new ArgumentNullException("logger");
            }

            if (nhibernateInfoProvider == null)
            {
                throw new ArgumentNullException("nhibernateInfoProvider");
            }

            if (profileDbDriverFactory == null)
            {
                throw new ArgumentNullException("profileDbDriverFactory");
            }

            if (profileDbDriverActivator == null)
            {
                throw new ArgumentNullException("profileDbDriverActivator");
            }

            _logger = logger;
            _nhibernateInfoProvider   = nhibernateInfoProvider;
            _profileDbDriverFactory   = profileDbDriverFactory;
            _profileDbDriverActivator = profileDbDriverActivator;
        }
        internal static bool CanSupportDynamicProxy(this IActionInvoker actionInvoker, IGlimpseLogger logger)
        {
            if (actionInvoker is ControllerActionInvoker)//TODO: What changes for AsyncControllerActionInvoker?
            {
                //Make sure there is a parameterless constructor and the type is not sealed
                var actionInvokerType = actionInvoker.GetType();
                var proxy = actionInvoker as IProxyTargetAccessor;
                var defaultConstructor = actionInvokerType.GetConstructor(new Type[] { });

                var result = (!actionInvokerType.IsSealed &&
                        defaultConstructor != null &&
                        proxy == null);

                if (!result)
                {
                    //TODO: Add logging
                }

                return result;
            }

            //logger.Warn(actionInvoker.GetType() + " is not a System.Web.Mvc.ControllerActionInvoker.");
            //TODO add logging warnings.Add(new NotAControllerActionInvokerWarning(actionInvoker));
            return false;
        }
Exemplo n.º 5
0
 public NH(IGlimpseFactory factory)
 {
     _logger = factory.CreateLogger();
     _nhibernateInfoProvider = new NHibernateInfoProvider();
     _profileDbDriverFactory = new GlimpseProfileDbDriverFactory();
     _profileDbDriverActivator = new GlimpseProfileDbDriverActivator();
 }
Exemplo n.º 6
0
        internal AdoPipelineInitiator(IGlimpseLogger logger)
        {
            Logger = logger;

            //Note order of execution is important.
            Providers = new List<IWrapperInjectorProvider>
                            {
                                new WrapDbProviderFactories(Logger),
                                new WrapDbConnectionFactories(Logger),
                                new WrapCachedMetadata(Logger)
                            };
        }
Exemplo n.º 7
0
        internal AdoPipelineInitiator(IGlimpseLogger logger)
        {
            Logger = logger;

            try
            {
                DbProviderFactories.GetFactory("Anything");
            }
            catch (ArgumentException ex)
            {
                Logger.Info("Expected DbProviderFactories exception due too the way the API works.", ex);
            }
        }
Exemplo n.º 8
0
        public GlimpseSerializer(IGlimpseFactory factory)
        {
            Logger = factory.CreateLogger();

            Settings = new JsonSerializerSettings {
                ContractResolver = new GlimpseContractResolver()
            };
            Settings.Error += (obj, args) =>
            {
                Logger.Warn("Serializer error", args.ErrorContext.Error);
                args.ErrorContext.Handled = true;
            };

            Settings.Converters.Add(new JavaScriptDateTimeConverter());

            DefaultFormatting = Formatting.None;
        }
        internal static bool CanSupportDynamicProxy(this IModelBinder modelBinder, IGlimpseLogger logger)
        {
            if (modelBinder is DefaultModelBinder)
            {
                //Make sure there is a parameterless constructor and the type is not sealed
                var modelBinderType = modelBinder.GetType();
                var proxy = modelBinder as IProxyTargetAccessor;
                var defaultConstructor = modelBinderType.GetConstructor(new Type[] { });

                var result = (!modelBinderType.IsSealed &&
                        defaultConstructor != null &&
                        proxy == null);

                if (!result)
                    logger.Warn("Cannot create proxy of " + modelBinder.GetType() +". Object must have a parameterless constructor, cannot be sealed, and cannot already be a proxy object.");

                return result;
            }

            logger.Warn(modelBinder.GetType() + " is not a System.Web.Mvc.DefaultModelBinder.");
            return false;
        }
Exemplo n.º 10
0
        internal static bool CanSupportDynamicProxy(this IModelBinder modelBinder, IGlimpseLogger logger)
        {
            if (modelBinder is DefaultModelBinder)
            {
                //Make sure there is a parameterless constructor and the type is not sealed
                var modelBinderType    = modelBinder.GetType();
                var proxy              = modelBinder as IProxyTargetAccessor;
                var defaultConstructor = modelBinderType.GetConstructor(new Type[] { });

                var result = (!modelBinderType.IsSealed &&
                              defaultConstructor != null &&
                              proxy == null);

                if (!result)
                {
                    logger.Warn("Cannot create proxy of " + modelBinder.GetType() + ". Object must have a parameterless constructor, cannot be sealed, and cannot already be a proxy object.");
                }

                return(result);
            }

            logger.Warn(modelBinder.GetType() + " is not a System.Web.Mvc.DefaultModelBinder.");
            return(false);
        }
 public ActionInvokerProxyGenerationHook(IGlimpseLogger logger)
 {
     Logger = logger;
 }
Exemplo n.º 12
0
 public GlimpseControllerFactory(IControllerFactory controllerFactory, IGlimpseLogger logger)
 {
     ControllerFactory = controllerFactory;
     Logger = logger;
 }
Exemplo n.º 13
0
Arquivo: NH.cs Projeto: nagor/Glimpse
 public NH(IGlimpseFactory factory)
 {
     Logger = factory.CreateLogger();
 }
Exemplo n.º 14
0
 public GlimpseDependencyResolver(IDependencyResolver dependencyResolver, IGlimpseLogger logger)
 {
     DependencyResolver = dependencyResolver;
     Logger = logger;
 }
Exemplo n.º 15
0
 public GlimpsePipelineInitiator(IGlimpseLogger logger)
 {
     Logger = logger;
 }
Exemplo n.º 16
0
 public GlimpseRequestValidator(IEnumerable <IGlimpseValidator> validators, IGlimpseFactory factory)
 {
     Validators = validators;
     Logger     = factory.CreateLogger();
 }
Exemplo n.º 17
0
 public WrapDbConnectionFactories(IGlimpseLogger logger)
 {
     Logger = logger;
 }
Exemplo n.º 18
0
 public WrapDbDriver(IGlimpseLogger logger)
 {
     Logger = logger;
 }
Exemplo n.º 19
0
 public WrapCachedMetadata(IGlimpseLogger logger)
 {
     Logger = logger;
 }
Exemplo n.º 20
0
 public SimpleProxyGenerationHook(IGlimpseLogger logger, string[] methods)
 {
     Logger  = logger;
     Methods = methods;
 }
Exemplo n.º 21
0
        internal static bool CanSupportDynamicProxy(this IActionInvoker actionInvoker, IGlimpseLogger logger)
        {
            if (actionInvoker is ControllerActionInvoker)//TODO: What changes for AsyncControllerActionInvoker?
            {
                //Make sure there is a parameterless constructor and the type is not sealed
                var actionInvokerType  = actionInvoker.GetType();
                var proxy              = actionInvoker as IProxyTargetAccessor;
                var defaultConstructor = actionInvokerType.GetConstructor(new Type[] { });

                var result = (!actionInvokerType.IsSealed &&
                              defaultConstructor != null &&
                              proxy == null);

                if (!result)
                {
                    //TODO: Add logging
                }

                return(result);
            }

            //logger.Warn(actionInvoker.GetType() + " is not a System.Web.Mvc.ControllerActionInvoker.");
            //TODO add logging warnings.Add(new NotAControllerActionInvokerWarning(actionInvoker));
            return(false);
        }
Exemplo n.º 22
0
 public CreateControllerInterceptor(IGlimpseLogger logger)
 {
     Logger = logger;
 }
Exemplo n.º 23
0
 public WrapDbConnectionFactories(IGlimpseLogger logger)
 {
     Logger = logger;
 }
Exemplo n.º 24
0
        internal static bool CanSupportDynamicProxy(this IControllerFactory controllerFactory, IGlimpseLogger logger)
        {
            //Make sure there is a parameterless constructor and the type is not sealed
            var controllerFactoryType = controllerFactory.GetType();
            var proxy = controllerFactory as IProxyTargetAccessor;
            var defaultConstructor = controllerFactoryType.GetConstructor(new Type[] { });

            var result = (!controllerFactoryType.IsSealed &&
                          defaultConstructor != null &&
                          proxy == null);

            if (!result)
            {
                //TODO: Add logging
            }

            return(result);
        }
Exemplo n.º 25
0
        internal static IController TrySetActionInvoker(this IController iController, IGlimpseLogger logger)
        {
            var controller = iController as Controller;

            if (controller == null)
            {
                //TODO: Add Logging
                return(iController);
            }

            var actionInvoker = controller.ActionInvoker;

            if (actionInvoker.CanSupportDynamicProxy(logger))
            {
                var proxyConfig = new Dictionary <string, IInterceptor>
                {
                    { "GetFilters", new GetFiltersInterceptor() },
                    { "InvokeActionResult", new InvokeActionResultInterceptor() },
                    { "InvokeActionMethod", new InvokeActionMethodInterceptor() }
                };

                var proxyGenerator  = new ProxyGenerator();
                var proxyGenOptions = new ProxyGenerationOptions(new SimpleProxyGenerationHook(logger, proxyConfig.Keys.ToArray()))
                {
                    Selector = new SimpleInterceptorSelector(proxyConfig)
                };
                var newInvoker = (ControllerActionInvoker)proxyGenerator.CreateClassProxy(actionInvoker.GetType(), proxyGenOptions, proxyConfig.Values.ToArray());
                controller.ActionInvoker = newInvoker;
            }

            return(controller);
        }
Exemplo n.º 26
0
 public WrapDbDriver(IGlimpseLogger logger)
 {
     Logger = logger;
 }
Exemplo n.º 27
0
 public SimpleProxyGenerationHook(IGlimpseLogger logger, string[] methods)
 {
     Logger = logger;
     Methods = methods;
 }
Exemplo n.º 28
0
        internal static IControllerFactory Proxy(this IControllerFactory iControllerFactory, IGlimpseLogger logger)
        {
            if (iControllerFactory.CanSupportDynamicProxy(logger))
            {
                var proxyConfig = new Dictionary <string, IInterceptor>
                {
                    { "CreateController", new CreateControllerInterceptor(logger) }
                };

                var proxyGenerator  = new ProxyGenerator();
                var proxyGenOptions = new ProxyGenerationOptions(new SimpleProxyGenerationHook(logger, proxyConfig.Keys.ToArray()))
                {
                    Selector = new SimpleInterceptorSelector(proxyConfig)
                };
                var newInvoker = (IControllerFactory)proxyGenerator.CreateClassProxy(iControllerFactory.GetType(), proxyGenOptions, proxyConfig.Values.ToArray());

                return(newInvoker);
            }

            logger.Warn("Unable to proxy {0}", iControllerFactory.GetType());

            return(iControllerFactory);



            //if (iControllerFactory is GlimpseControllerFactory) return iControllerFactory;

            //return new GlimpseControllerFactory(iControllerFactory, logger);
        }
Exemplo n.º 29
0
 public GlimpseDependencyResolver(IDependencyResolver dependencyResolver, IGlimpseLogger logger)
 {
     DependencyResolver = dependencyResolver;
     Logger             = logger;
 }
Exemplo n.º 30
0
 public GlimpseBinderProvider(IModelBinderProvider binderProvider, IGlimpseLogger logger)
 {
     BinderProvider = binderProvider;
     Logger         = logger;
 }
Exemplo n.º 31
0
        internal static IModelBinder CreateDynamicProxy(this IModelBinder modelBinder, IGlimpseLogger logger)
        {
            var proxyConfig = new Dictionary <string, IInterceptor>
            {
                { "BindModel", new BindModelInterceptor() },
                { "BindProperty", new BindPropertyInterceptor() },
                { "CreateModel", new CreateModelInterceptor() },
            };

            var proxyGenerator  = new ProxyGenerator();
            var proxyGenOptions = new ProxyGenerationOptions(new SimpleProxyGenerationHook(logger, proxyConfig.Keys.ToArray()))
            {
                Selector = new SimpleInterceptorSelector(proxyConfig)
            };

            return((IModelBinder)proxyGenerator.CreateClassProxy(modelBinder.GetType(), proxyGenOptions, proxyConfig.Values.ToArray()));
        }
Exemplo n.º 32
0
 public WrapDbProviderFactories(IGlimpseLogger logger)
 {
     Logger = logger;
 }
Exemplo n.º 33
0
 public GlimpseBinderProvider(IModelBinderProvider binderProvider, IGlimpseLogger logger)
 {
     BinderProvider = binderProvider;
     Logger = logger;
 }
Exemplo n.º 34
0
 public Execution(IGlimpseFactory factory)
 {
     Logger = factory.CreateLogger();
 }
Exemplo n.º 35
0
 public GlimpsePipelineInitiator(IGlimpseLogger logger)
 {
     Logger = logger;
 }
Exemplo n.º 36
0
 public Binders(IGlimpseFactory factory)
 {
     Logger = factory.CreateLogger();
 }
Exemplo n.º 37
0
 public WrapDbProviderFactories(IGlimpseLogger logger)
 {
     Logger = logger;
 }
Exemplo n.º 38
0
        internal static IControllerFactory Wrap(this IControllerFactory iControllerFactory, IGlimpseLogger logger)
        {
            if (iControllerFactory is GlimpseControllerFactory) return iControllerFactory;

            return new GlimpseControllerFactory(iControllerFactory, logger);
        }
Exemplo n.º 39
0
 public WrapCachedMetadata(IGlimpseLogger logger)
 {
     Logger = logger;
 }
Exemplo n.º 40
0
 public SQL(IGlimpseFactory factory)
 {
     Logger    = factory.CreateLogger();
     Sanitizer = new CommandSanitizer();
 }