示例#1
0
        public static void CheckForPotentiallyMisconfiguredComponents(this IWindsorContainer container)
        {
            var host        = (IDiagnosticsHost)container.Kernel.GetSubSystem(SubSystemConstants.DiagnosticsKey);
            var diagnostics = host.GetDiagnostic <IPotentiallyMisconfiguredComponentsDiagnostic>();

            var handlers = diagnostics.Inspect();

            if (!handlers.Any())
            {
                return;
            }

            var message   = new StringBuilder();
            var inspector = new DependencyInspector(message);

            foreach (IExposeDependencyInfo handler in handlers.Where(h => h.ComponentModel.Implementation.Assembly.FullName.StartsWith("Options.")))
            {
                handler.ObtainDependencyDetails(inspector);
            }

            if (message.Length > 0)
            {
                var ex = new System.Configuration.ConfigurationErrorsException(message.ToString());
                logger.Error("Castle Configuarion Error. Message : {0}\r\nStackTrace {1}", ex.Message, ex.StackTrace);
                throw ex;
            }
        }
        public bool ConfigurationIsValid(Type type, out string details)
        {
            if (!container.Kernel.HasComponent(type))
            {
                var sb = new StringBuilder();
                sb.AppendLine();
                sb.AppendFormat("'{0}' not registered.", type.FullName);
                sb.AppendLine();

                details = sb.ToString();
                return(false);
            }

            var host        = (IDiagnosticsHost)container.Kernel.GetSubSystem(SubSystemConstants.DiagnosticsKey);
            var diagnostics = host.GetDiagnostic <IPotentiallyMisconfiguredComponentsDiagnostic>();

            var handlers = diagnostics.Inspect().Where(x => x.Supports(type)).ToArray();

            if (handlers.Any())
            {
                var message   = new StringBuilder();
                var inspector = new DependencyInspector(message);

                foreach (IExposeDependencyInfo handler in handlers)
                {
                    handler.ObtainDependencyDetails(inspector);
                }

                details = message.ToString();
                return(false);
            }

            details = string.Empty;
            return(true);
        }
        protected void CheckPotentiallyMisconfiguredComponentsCore()
        {
            var handlers  = GetPotentiallyMisconfiguredComponents(WindsorContainer);
            var message   = new StringBuilder();
            var inspector = new DependencyInspector(message);

            foreach (var handler in handlers)
            {
                ((IExposeDependencyInfo)handler).ObtainDependencyDetails(inspector);
            }
            Approvals.Verify(message.ToString());
        }
        private string GetStatusDetails(IExposeDependencyInfo info)
        {
            var message = new StringBuilder("Some dependencies of this component could not be statically resolved.");

            if (info == null)
            {
                return(message.ToString());
            }
            var inspector = new DependencyInspector(message);

            info.ObtainDependencyDetails(inspector);

            return(inspector.Message);
        }
示例#5
0
        public static string Diagnose(IWindsorContainer container)
        {
            IHandler[] potentiallyMisconfiguredHandlers = Diagnostics.GetPotentiallyMisconfigured(container);

            StringBuilder       diagnosisReportBuilder = new StringBuilder();
            DependencyInspector diagnosisInspector     = new DependencyInspector(diagnosisReportBuilder);

            bool isAnyPotentiallyMisconfiguredHandler = false;

            foreach (IHandler handler in potentiallyMisconfiguredHandlers)
            {
                isAnyPotentiallyMisconfiguredHandler = true;

                IExposeDependencyInfo potentiallyMisconfiguredHandler = (IExposeDependencyInfo)handler;
                potentiallyMisconfiguredHandler.ObtainDependencyDetails(diagnosisInspector);
            }

            return(isAnyPotentiallyMisconfiguredHandler ? diagnosisReportBuilder.ToString() : null);
        }
示例#6
0
        public static void CheckForPotentiallyMisconfiguredComponents(IWindsorContainer container)
        {
            var host        = (IDiagnosticsHost)container.Kernel.GetSubSystem(SubSystemConstants.DiagnosticsKey);
            var diagnostics = host.GetDiagnostic <IPotentiallyMisconfiguredComponentsDiagnostic>();

            var handlers = diagnostics.Inspect();

            if (handlers.Any())
            {
                var message   = new StringBuilder();
                var inspector = new DependencyInspector(message);

                foreach (IExposeDependencyInfo handler in handlers)
                {
                    handler.ObtainDependencyDetails(inspector);
                }

                throw new Exception(message.ToString());
            }
        }
示例#7
0
        public static void AssertIsValid(this IWindsorContainer container)
        {
            var host        = (IDiagnosticsHost)container.Kernel.GetSubSystem(SubSystemConstants.DiagnosticsKey);
            var diagnostics = host.GetDiagnostic <IPotentiallyMisconfiguredComponentsDiagnostic>();

            var handlers = diagnostics.Inspect();

            if (handlers.Any())
            {
                var message   = new StringBuilder();
                var inspector = new DependencyInspector(message);

                // ReSharper disable once PossibleInvalidCastExceptionInForeachLoop
                foreach (IExposeDependencyInfo handler in handlers)
                {
                    handler.ObtainDependencyDetails(inspector);
                }

                throw new MisconfiguredComponentException(message.ToString());
            }
        }
        private static void CheckForPotentiallyMisconfiguredComponents(IDiagnosticsHost host)
        {
            var diagnostics = host.GetDiagnostic <IPotentiallyMisconfiguredComponentsDiagnostic>();

            var handlers = diagnostics.Inspect();

            if (!handlers.Any())
            {
                return;
            }

            var message   = new StringBuilder();
            var inspector = new DependencyInspector(message);

            foreach (var handler in handlers)
            {
                ((IExposeDependencyInfo)handler).ObtainDependencyDetails(inspector);
            }

            throw new MisconfiguredComponentException(message.ToString());
        }
示例#9
0
        protected void CheckCastleRegisterComponent()
        {
            var host        = (IDiagnosticsHost)container.Kernel.GetSubSystem(SubSystemConstants.DiagnosticsKey);
            var diagnostics = host.GetDiagnostic <IPotentiallyMisconfiguredComponentsDiagnostic>();

            var handlers = diagnostics.Inspect();

            if (handlers.Any())
            {
                var message   = new StringBuilder();
                var inspector = new DependencyInspector(message);

                foreach (IExposeDependencyInfo handler in handlers)
                {
                    handler.ObtainDependencyDetails(inspector);
                }


                Console.WriteLine(message.ToString());
            }
        }
        /// <summary>
        /// Checks if there's any misconfigured components in Castle. This helps
        /// detect any type of configuration problems before run-time.
        /// </summary>
        /// <param name="kernel">The Castle kernel that we want to check.</param>
        /// <returns>A List of misconfigured element information as string.</returns>
        public static IEnumerable <string> CheckForPotentiallyMisconfiguredComponents(this IKernel kernel)
        {
            var host        = (IDiagnosticsHost)kernel.GetSubSystem(SubSystemConstants.DiagnosticsKey);
            var diagnostics = host.GetDiagnostic <IPotentiallyMisconfiguredComponentsDiagnostic>();

            var handlers = diagnostics.Inspect();

            if (!handlers.Any())
            {
                yield break;
            }

            foreach (var handlerRaw in handlers)
            {
                var handler   = (IExposeDependencyInfo)handlerRaw;
                var message   = new StringBuilder();
                var inspector = new DependencyInspector(message);
                handler.ObtainDependencyDetails(inspector);

                yield return(message.ToString());
            }
        }
示例#11
0
        private static void CheckForPotentiallyMisconfiguredComponents(IWindsorContainer container)
        {
            var host        = (IDiagnosticsHost)container.Kernel.GetSubSystem(SubSystemConstants.DiagnosticsKey);
            var diagnostics = host.GetDiagnostic <IPotentiallyMisconfiguredComponentsDiagnostic>();

            var handlers = diagnostics.Inspect();

            if (!handlers.Any())
            {
                return;
            }
            var message   = new StringBuilder();
            var inspector = new DependencyInspector(message);

            foreach (var handler1 in handlers)
            {
                var handler = (IExposeDependencyInfo)handler1;
                handler.ObtainDependencyDetails(inspector);
            }
            var logger = container.Resolve <ILogger>();

            logger.Debug($"Dependancy errors:\n{message}");
        }
        public bool ConfigurationIsValid(out string details)
        {
            var host        = (IDiagnosticsHost)container.Kernel.GetSubSystem(SubSystemConstants.DiagnosticsKey);
            var diagnostics = host.GetDiagnostic <IPotentiallyMisconfiguredComponentsDiagnostic>();

            var handlers = diagnostics.Inspect();

            if (handlers.Any())
            {
                var message   = new StringBuilder();
                var inspector = new DependencyInspector(message);

                foreach (IExposeDependencyInfo handler in handlers)
                {
                    handler.ObtainDependencyDetails(inspector);
                }

                details = message.ToString();
                return(false);
            }

            details = string.Empty;
            return(true);
        }