public void TestInitialize()
        {
            windsorContainer = new WindsorContainer()
                               .AddFacility <WcfFacility>(f => f.CloseTimeout = TimeSpan.Zero)
                               .Register(
                Component.For <ServiceHostListener>(),
                Component.For <LoggingInterceptor>(),
                Component.For <CallCountServiceBehavior>(),
                Component.For <UnitOfworkEndPointBehavior>(),
                Component.For <NetDataContractFormatBehavior>(),
                Component.For <IOperations>().ImplementedBy <Operations>()
                .Named("Operations")
                .Interceptors(InterceptorReference.ForType <LoggingInterceptor>()).Anywhere
                .DependsOn(new { number = 42 })
                .AsWcfService(new DefaultServiceModel().AddEndpoints(
                                  WcfEndpoint.BoundTo(new NetTcpBinding {
                PortSharingEnabled = true
            })
                                  .At("net.tcp://localhost/Operations")
                                  )
                              )
                );

            LoggingInterceptor.Calls.Clear();
            CallCountServiceBehavior.CallCount = 0;

            client = ChannelFactory <IOperations> .CreateChannel(
                new NetTcpBinding { PortSharingEnabled = true }, new EndpointAddress("net.tcp://localhost/Operations"));
        }
Пример #2
0
        public void SetUp()
        {
            windsorContainer = new WindsorContainer()
                               .AddFacility <WcfFacility>(f => f.CloseTimeout = TimeSpan.Zero)
                               .Register(
                Component.For <ServiceHostListener>(),
                Component.For <CollectingInterceptor>(),
                Component.For <UnitOfworkEndPointBehavior>(),
                Component.For <NetDataContractFormatBehavior>(),
                Component.For <IOne>().ImplementedBy <One>().LifeStyle.PerWcfSession()
                .Interceptors(InterceptorReference.ForType <CollectingInterceptor>()).Anywhere,
                Component.For <ITwo>().ImplementedBy <Two>().LifestylePerWcfSession()
                .Interceptors(InterceptorReference.ForType <CollectingInterceptor>()).Anywhere,
                Component.For <IServiceWithSession>().ImplementedBy <ServiceWithSession>().LifeStyle.Transient
                .Named("Operations")
                .AsWcfService(new DefaultServiceModel().AddEndpoints(
                                  WcfEndpoint.BoundTo(new NetTcpBinding {
                PortSharingEnabled = true
            })
                                  .At("net.tcp://localhost/Operations")
                                  )
                              )
                );

            client = CreateClient();
        }
 public void ProcessModel(IKernel kernel, ComponentModel model)
 {
     if (model.Services.Any(s => s == typeof(IEventAppService)))
     {
         model.Interceptors.Add(InterceptorReference.ForType <MongoEventInterceptor>());
     }
 }
        public void Register(IKernelInternal kernel)
        {
            // 1. Interceptor Registration
            kernel.Register(
                Component.For <LoggingInterceptor>()
                .ImplementedBy <LoggingInterceptor>());

            // Another Interceptor registration.
            //kernel.Register(
            //    Component.For<AnotherInterceptor>()
            //        .ImplementedBy<AnotherInterceptor>());

            // 2. Interceptor attached with Example Class.
            kernel.Register(
                Component.For <IExample>()
                .ImplementedBy <Example>()
                .Interceptors(InterceptorReference.ForType <LoggingInterceptor>()).Anywhere);

            // Mutiple Interceptors for the same class can be registered with one line as below.
            //kernel.Register(
            //     Component.For<IExample>()
            //                .ImplementedBy<Example>()
            //                .Interceptors(new InterceptorReference[] {
            //                                InterceptorReference.ForType<LoggingInterceptor>(),
            //                                InterceptorReference.ForType<AnotherInterceptor>()
            //     }).Anywhere);
        }
 public void ProcessModel(IKernel kernel, ComponentModel model)
 {
     if (model.Services.Any(s => s == typeof(IServiceDependency)))
     {
         model.Interceptors.Add(InterceptorReference.ForType <UoWInterceptor>());
     }
 }
Пример #6
0
        static void Main(string[] args)
        {
            IWindsorContainer container = new WindsorContainer();

            container.Register(Component.For(typeof(WcfProxyInterceptor <IService1>)));

            container.Register(Component.For(typeof(IFoo)).ImplementedBy(typeof(Foo)));
            container.Register(Component.For(typeof(IBar)).ImplementedBy(typeof(Bar)));

            container.Register(Component.For <IService1>().Interceptors(InterceptorReference.ForType <WcfProxyInterceptor <IService1> >()).Anywhere);


            var test = (IFoo)container.Resolve(typeof(IFoo));

            test.Do();
            test.Do();
            test.Do();
            test.Do();
            test.Do();

            var testBar = (IBar)container.Resolve(typeof(IBar));

            testBar.Do();

            Console.ReadLine();
        }
Пример #7
0
        public void Setup()
        {
            var supplier = TestSupplier.CreateNaked(session);

            supplier.CreateSampleCore(session);
            client  = TestClient.CreateNaked(session);
            address = client.CreateAddress();
            user    = client.Users.First();
            session.Save(address);
            ServiceContext.GetUserName = () => user.Login;

            var container = new WindsorContainer();

            container.AddComponent("RepositoryInterceptor", typeof(RepositoryInterceptor));
            container.AddComponent("OfferRepository", typeof(IOfferRepository), typeof(OfferRepository));
            container.AddComponent("Repository", typeof(IRepository <>), typeof(Repository <>));
            var holder = new SessionFactoryHolder();

            holder
            .Configuration
            .AddInputStream(HbmSerializer.Default.Serialize(Assembly.Load("Common.Models")));
            container.Kernel.AddComponentInstance <ISessionFactoryHolder>(holder);
            IoC.Initialize(container);
            IoC.Container.Register(
                Component.For <IInforoomOnlineService>()
                .ImplementedBy <InforoomOnlineService>()
                .Interceptors(InterceptorReference.ForType <ContextLoaderInterceptor>())
                .Anywhere,
                Component.For <ContextLoaderInterceptor>(),
                Component.For <IClientLoader>().ImplementedBy <ClientLoader>());

            service = IoC.Resolve <IInforoomOnlineService>();
        }
 public void ApplyInterceptor(ComponentModel model)
 {
     if (!model.HasInterceptors && CanIntercept(model).Any())
     {
         Validate(model);
         model.Interceptors.AddIfNotInCollection(InterceptorReference.ForType(typeof(TInterceptor)));
     }
 }
        public override IEnumerable <InterceptorReference> GetExpectedInterceptorsInCorrectOrder()
        {
            yield return(InterceptorReference.ForType <TestInterceptor1>());

            yield return(InterceptorReference.ForType <TestInterceptor2>());

            yield return(InterceptorReference.ForType <TestInterceptor3>());
        }
Пример #10
0
 public void RegisterServices()
 {
     _container.Register(Classes.FromAssembly(typeof(IBlogPostService).Assembly)
                         .Where(type => type.Name.EndsWith("Service"))
                         .WithServiceDefaultInterfaces()
                         .Configure(g => g.Interceptors(InterceptorReference.ForType <UnitOfWorkInterceptor>())
                                    .First.LifestyleTransient())
                         .LifestyleTransient());
 }
Пример #11
0
        public void Apply(Component component, ComponentRegistration registration)
        {
            AbstractConfigurationRunner.Kernel.Register(
                Castle.MicroKernel.Registration.Component.For(interceptorType).OnlyNewServices()
                );

            registration.Interceptors(InterceptorReference.ForType(interceptorType)).First
            .OverWrite();
        }
Пример #12
0
        public void ProcessModel(IKernel kernel, ComponentModel model)
        {
            var cachedMethods = model.Implementation.GetMethods().Where(m => AttributesUtil.GetAttribute <LoggingAttribute>(m) != null).ToList();

            if (cachedMethods.Any())
            {
                model.Interceptors.AddIfNotInCollection(InterceptorReference.ForType <LoggingInterceptor>());
            }
        }
Пример #13
0
        public void Register(IKernelInternal kernel)
        {
            kernel.Register(Component.For <LoggingInterceptor>().ImplementedBy <LoggingInterceptor>());

            kernel.Register(
                Component.For <ITask>().ImplementedBy <Task>().Interceptors(
                    InterceptorReference.ForType <LoggingInterceptor>()).Anywhere);
            //Anywhere tells the registration process that this interceptor could be attached anywhere.
        }
Пример #14
0
 public override void Initialize()
 {
     this.Container.RegisterIfNot <DomainServiceInterceptor>(DependencyLifeStyle.Transient);
     this.Container.RegisterAssembly <IDomainService>(Assembly.GetAssembly(this.GetType()), configurer =>
     {
         _ = configurer.Named(configurer.Implementation.Name);
         _ = configurer.Interceptors(InterceptorReference.ForType <DomainServiceInterceptor>()).Anywhere;
     });
 }
Пример #15
0
        private void Kernel_ComponentModelCreated(ComponentModel model)
        {
            var aspectValidator = new AspectValidatorBuilder(_aspectConfiguration).Build();

            if (aspectValidator.Validate(model.Implementation, false) || model.Services.Any(x => aspectValidator.Validate(x, true)))
            {
                model.Interceptors.AddIfNotInCollection(InterceptorReference.ForType <AspectCoreInterceptor>());
            }
        }
        public void should_be_able_to_show_that_interceptor_was_called_when_wcf_service_is_invoked()
        {
            ServiceDebugBehavior returnFaults = new ServiceDebugBehavior();

            returnFaults.IncludeExceptionDetailInFaults = true;
            returnFaults.HttpHelpPageEnabled            = true;

            ServiceMetadataBehavior metadata = new ServiceMetadataBehavior();

            metadata.HttpGetEnabled = true;

            using (
                new WindsorContainer()
                .AddFacility <WcfFacility>(f => f.CloseTimeout = TimeSpan.Zero)
                .Register(
                    Component.For <TestInterceptor>(),    // The interceptor must be registered like this.

                    Component.For <IServiceBehavior>().Instance(returnFaults),
                    Component.For <IServiceBehavior>().Instance(metadata),

                    Component
                    .For <IOperations>()
                    .ImplementedBy <Operations>()
                    .Interceptors(InterceptorReference.ForType <TestInterceptor>()).Anywhere        // Don't care what order this is called in (and there is only one interceptor on this any case).
                    .DependsOn(new { value = Expected })                                            // Notice how this constant is injected in to the service.
                    .AsWcfService(
                        new DefaultServiceModel()
                        //.OpenEagerly() // This is useful to force immediate creation of services and to see any errors that may result.
                        .AddBaseAddresses(BaseAddress)
                        .AddEndpoints(
                            WcfEndpoint
                            .ForContract <IOperations>()
                            .BoundTo(new WSHttpBinding())
                            .At(RelativeAddress)
                            )
                        )))
            {
                // This sleep is useful if/when you'd like to browse to http://localhost:8000/Operations.svc
                // to verify that meta-data is being published for this service.

                //Thread.Sleep(100000);

                // Notice that we're using the standard WCF channel factory here,
                // rather than the castle proxies.
                IOperations client = ChannelFactory <IOperations> .CreateChannel(
                    new WSHttpBinding(),
                    new EndpointAddress(BaseAddress + "/" + RelativeAddress)
                    );

                int result = client.GetValueFromConstructor();

                Assert.AreEqual(Expected, result);

                Assert.That(TestInterceptor.mostRecentMethodCallIntercepoted, Is.EqualTo("GetValueFromConstructor"));
            }
        }
Пример #17
0
 public void Register(IKernelInternal kernel)
 {
     kernel.Register(
         Component.For <MethodLoggerInterceptor>()
         .ImplementedBy <MethodLoggerInterceptor>());
     kernel.Register(
         Component.For <IPdfDocumentBuilder>()
         .ImplementedBy <PdfDocumentBuilder>()
         .Interceptors(InterceptorReference.ForType <MethodLoggerInterceptor>()).Anywhere);
 }
        public void ProcessModel(IKernel kernel, ComponentModel model)
        {
            var cachedMethods = model.Implementation.GetMethods().Where(m => m.GetAttribute <CachedAttribute>() != null).ToList();

            if (cachedMethods.Any())
            {
                cachedMethods.CheckThatMethodsAreVirtual();
                model.Interceptors.AddIfNotInCollection(InterceptorReference.ForType <CacheInterceptor>());
            }
        }
Пример #19
0
 protected override void Init()
 {
     Kernel.Register(Component.For <ProfilingInterceptor>().LifeStyle.PerThread);
     Kernel.ComponentModelCreated += model => {
         if (model.Implementation != typeof(ProfilingInterceptor))
         {
             model.Interceptors.AddFirst(InterceptorReference.ForType <ProfilingInterceptor>());
         }
     };
 }
Пример #20
0
 private void Kernel_ComponentModelCreated(ComponentModel model)
 {
     if (
         !(model.Implementation.GetProperties()
           .Any(prop => prop.PropertyType.GetInterfaces().Contains(typeof(ILogger))) ||
           model.Implementation.GetFields()
           .Any(l => l.FieldType.GetInterfaces().Contains(typeof(ILogger)))))
     {
         model.Interceptors.AddIfNotInCollection(InterceptorReference.ForType <AspectLogger>());
     }
 }
Пример #21
0
        public void Register(IKernelInternal kernel)
        {
            kernel.Register(
                Component.For <LoggingInterceptor>()
                .ImplementedBy <LoggingInterceptor>());

            kernel.Register(
                Component.For <IRocket>()
                .ImplementedBy <Rocket>()
                .Interceptors(InterceptorReference.ForType <LoggingInterceptor>()).Anywhere);
        }
Пример #22
0
        public void Register(IKernelInternal kernel)
        {
            kernel.Register(
                Component.For <IInterceptor>()
                .ImplementedBy <ServiceInterceptor>());

            kernel.Register(
                Component.For <IDemoService>()
                .ImplementedBy <DemoService>()
                .Interceptors(InterceptorReference.ForType <ServiceInterceptor>()).Anywhere);
        }
Пример #23
0
        public void Install(Castle.Windsor.IWindsorContainer container, Castle.MicroKernel.SubSystems.Configuration.IConfigurationStore store)
        {
            //container.Register(Component.For<ErrorHandlingInterceptor>().LifestyleTransient());
            //container.Register(Component.For<DbEntityValidationExceptionInterceptor>().LifestyleTransient());

            container.Register(Classes.FromThisAssembly()
                               .BasedOn <IRepository>()
                               .WithService.FromInterface() // registers all class whose interfaces extended IService
                               .Configure(cc => cc.Interceptors(InterceptorReference.ForType <ErrorHandlingInterceptor>()).AtIndex(0).Configuration()
                                          .Interceptors(InterceptorReference.ForType <DbEntityValidationExceptionInterceptor>()).AtIndex(1).Configuration()));
        }
Пример #24
0
        public void Register(IKernelInternal kernel)
        {
            kernel.Register(
                Component.For <TestInterceptor>()
                .ImplementedBy <TestInterceptor>());

            kernel.Register(
                Component.For <OrderLogic>()
                .ImplementedBy <OrderLogic>()
                .Interceptors(InterceptorReference.ForType <TestInterceptor>()).Anywhere);
        }
        public void Register(IKernelInternal kernel)
        {
            kernel.Register(
                Component.For <StudentInterceptor>()
                .ImplementedBy <StudentInterceptor>());

            kernel.Register(
                Component.For <IStudent>()
                .ImplementedBy <Student>()
                .Interceptors(InterceptorReference.ForType <StudentInterceptor>()).Anywhere);
        }
        public InterceptorReference[] SelectInterceptors(Castle.Core.ComponentModel model, Castle.Core.InterceptorReference[] interceptors)
        {
            var    intercept             = new List <InterceptorReference>();
            String enableInstrumentation = ConfigurationManager.AppSettings["EnableInstrumentation"];

            if (String.IsNullOrEmpty(enableInstrumentation) != true &&
                Convert.ToBoolean(enableInstrumentation, CultureInfo.InvariantCulture))
            {
                intercept.Add(InterceptorReference.ForType <LoggingInterceptor>());
            }
            return(intercept.Concat(interceptors).ToArray());
        }
Пример #27
0
        public void AutomaticallyOmitTarget()
        {
            container.Register(
                Component.For <ICalcService>()
                .Interceptors(InterceptorReference.ForType <ReturnDefaultInterceptor>()).Last,
                Component.For <ReturnDefaultInterceptor>()
                );

            var calcService = container.Resolve <ICalcService>();

            Assert.AreEqual(0, calcService.Sum(1, 2));
        }
Пример #28
0
        public static void Initialize()
        {
            Container=new WindsorContainer();

            Container.Register(Component.For<IInterceptor>().ImplementedBy<OrderProcessorInterceptor>());

            Container.Register(
                Component.For<IOrderProcessor>()
                    .ImplementedBy<OrderProcessor>()
                    .Interceptors(InterceptorReference.ForType<OrderProcessorInterceptor>())
                    .Anywhere);
        }
Пример #29
0
        public InterceptorReference[] SelectInterceptors(ComponentModel model, InterceptorReference[] interceptors)
        {
            ServiceAspectRegistry serviceAspectRegistry = new ServiceAspectRegistry();

            serviceAspectApplier.Apply(model, serviceAspectRegistry);

            InterceptorReference[] interceptorReferences = serviceAspectRegistry.Aspects
                                                           .Select(serviceAspect => InterceptorReference.ForType(serviceAspect))
                                                           .ToArray();

            return(interceptorReferences);
        }
Пример #30
0
 protected void InitializeIOC(string[] args)
 {
     _logger.Debug("Attempting to initialize IOC container.");
     _container = new WindsorContainer(new XmlInterpreter());
     _container.Register(
         Component.For(typeof(Repository)).Forward <IRepository>().ImplementedBy <Repository>().
         Interceptors(InterceptorReference.ForType <LockInterceptor>()
                      //,InterceptorReference.ForType<TransactionInterceptor>()
                      ).Anywhere
         );
     _container.Kernel.AddComponentInstance("nhFactory", typeof(ISessionFactory), build_session_factory());
     infrastructure.containers.Container.initialize_with(new infrastructure.containers.custom.WindsorContainer(_container));
 }