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); }
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); }
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()); } }
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()); }
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()); } }
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); }