public void Returns_Original_With_No_Interceptors_Added()
        {
            var result = InterceptorResolver.GetAllInterceptors(typeof(TypeC3).GetMethod("MethodA"), new IInterceptor[] { new Int2() }, typeof(IInterceptorProvider));

            Assert.AreEqual(1, result.Length);
            Assert.AreEqual(typeof(Int2), result[0].GetType());
        }
        public void Returns_All_Interceptors()
        {
            var m1 = typeof(TypeRI1).GetMethod("Method");

            var interceptorsPerMember = new TypeAccessor(typeof(InterceptorResolver)).Fields["interceptorsPerMemberCache"].GetValue <Dictionary <MemberInfo, IInterceptor[]> >();

            Assert.AreEqual(0, interceptorsPerMember.Count);

            var all1 = InterceptorResolver.GetAllInterceptors(m1, new IInterceptor[0], typeof(IMethodInterceptorProvider));

            Assert.AreEqual(1, all1.Length);
            Assert.AreEqual(typeof(IntForRI1), all1.ElementAt(0).GetType());
            Assert.AreEqual(1, interceptorsPerMember.Count);
            Assert.AreEqual(1, interceptorsPerMember[m1].Length);
            Assert.AreEqual(typeof(IntForRI1), interceptorsPerMember[m1][0].GetType());

            var all2 = InterceptorResolver.GetAllInterceptors(m1, new IInterceptor[] { new IntForRI1_b() }, typeof(IMethodInterceptorProvider));

            Assert.AreEqual(2, all2.Length);
            Assert.AreEqual(typeof(IntForRI1_b), all2.ElementAt(0).GetType());
            Assert.AreEqual(typeof(IntForRI1), all2.ElementAt(1).GetType());
            Assert.AreEqual(1, interceptorsPerMember.Count);
            Assert.AreEqual(1, interceptorsPerMember[m1].Length);
            Assert.AreEqual(typeof(IntForRI1), interceptorsPerMember[m1][0].GetType());
        }
        public void Add_Method_InterceptionAttributes_To_Interceptors()
        {
            var result = InterceptorResolver.GetAllInterceptors(typeof(TypeC1).GetMethod("MethodA"), new IInterceptor[] { new Int2() }, typeof(IMethodInterceptorProvider));

            Assert.AreEqual(2, result.Length);
            Assert.AreEqual(typeof(Int2), result[0].GetType());
            Assert.AreEqual(typeof(Int1), result[1].GetType());
        }
Ejemplo n.º 4
0
        public void Deploy(WeldEnvironment environment)
        {
            environment.AddValue(this, new IAnnotation[0], this);
            environment.AddValue(new ContextualStore(), new IAnnotation[0], this);

            var mixins       = environment.Components.OfType <Mixin>().ToArray();
            var interceptors = environment.Components.OfType <Interceptor>().ToArray();

            _registeredComponents.AddRange(environment.Components.Except(mixins).Except(interceptors));
            _componentResolver.Invalidate();
            AddObservers(environment.Observers);

            _mixinResolver       = new MixinResolver(this, mixins);
            _interceptorResolver = new InterceptorResolver(this, interceptors);
            _services.Add(typeof(IExceptionHandlerDispatcher), new ExceptionHandlerDispatcher(this, environment.ExceptionHandlers));

            _componentResolver.Validate();

            ExecuteConfigurations(environment);
        }
Ejemplo n.º 5
0
        public void ResolveInterceptors()
        {
            var fileName = @"..\..\..\ResolveInterceptors.txt";

            File.WriteAllText(fileName, "");
            var serviceProvider = new ServiceCollection().BuildServiceProvider();
            var collector       = new InterceptorResolver(new InterceptorChainBuilder(serviceProvider), new IInterceptorProviderResolver[] { new AttributeInterceptorProviderResolver() });
            var sw = Stopwatch.StartNew();

            collector.GetInterceptors(typeof(Demo));
            File.AppendAllLines(fileName, new string[] { sw.Elapsed.ToString() });

            sw.Restart();
            collector.GetInterceptors(typeof(Demo));
            File.AppendAllLines(fileName, new string[] { sw.Elapsed.ToString() });

            sw.Restart();
            collector.GetInterceptors(typeof(Demo));
            File.AppendAllLines(fileName, new string[] { sw.Elapsed.ToString() });

            Console.WriteLine(sw.Elapsed);
        }
 public void Startup()
 {
     InterceptorResolver.ClearCache();
 }
Ejemplo n.º 7
0
 protected virtual IInterceptor[] GetAllInterceptors(MemberInfo member, IInterceptor[] interceptors, Type interceptorProviderType)
 {
     return(InterceptorResolver.GetAllInterceptors(member, interceptors, interceptorProviderType));
 }