public void cannot_add_a_null_resource_key()
        {
            var repo = new HandlerRepository();

            Executing(() => repo.AddResourceHandler(null, TypeSystems.Default.FromClr(typeof(Frodo))))
            .ShouldThrow <ArgumentNullException>();
        }
        public void ExecuteReturnType()
        {
            var handler = new HandlerRepository();
            var patient = handler.Execute<MockDataHandler, Patient>(new { ID = 1, firstName = "name", lastName = "lastName" });

            Assert.AreEqual(1, patient.PatientID);
            Assert.AreEqual("name", patient.FirstName);
            Assert.AreEqual("lastName", patient.LastName);
        }
Exemplo n.º 3
0
        public void AddHandler_GetHandlersByMessage()
        {
            var subject = new HandlerRepository();

            subject.AddHandler(typeof(MessageFake), typeof(FakeHandler));

            var handlers = subject.GetHandlersByMessage(typeof(MessageFake));

            Assert.IsTrue(handlers.Count(x => x == typeof(FakeHandler)) == 1);
        }
        public void canoot_add_the_same_handler_type_twice_to_the_same_key()
        {
            var type = TypeSystems.Default.FromClr(typeof(string));
            var repo = new HandlerRepository();

            repo.AddResourceHandler("ring of power", type);

            Executing(() => repo.AddResourceHandler("ring of power", type))
            .ShouldThrow <ArgumentException>();
        }
        public void enumerating_over_the_list_of_handlers_will_only_return_distinct_handlers()
        {
            var gilGalad = TypeSystems.Default.FromClr(typeof(GilGalad));

            var repo = new HandlerRepository();

            repo.AddResourceHandler("Narya", gilGalad);
            repo.AddResourceHandler("Vilya", gilGalad);

            repo.GetHandlerTypes().ShouldContain(gilGalad).Count().ShouldBe(1);
        }
        public void the_same_handler_can_be_registered_for_two_resources()
        {
            var gilGalad = TypeSystems.Default.FromClr(typeof(GilGalad));

            var repo = new HandlerRepository();

            repo.AddResourceHandler("Narya", gilGalad);
            repo.AddResourceHandler("Vilya", gilGalad);

            repo.GetHandlerTypesFor("Narya").FirstOrDefault().ShouldBe(gilGalad);
            repo.GetHandlerTypesFor("Vilya").FirstOrDefault().ShouldBe(gilGalad);
        }
        public void the_first_handler_is_returned_when_two_handlers_are_registered_for_the_same_key()
        {
            var handler1 = TypeSystems.Default.FromClr(typeof(Sauron));
            var handler2 = TypeSystems.Default.FromClr(typeof(Frodo));

            var repo = new HandlerRepository();

            repo.AddResourceHandler("ring of power", handler1);
            repo.AddResourceHandler("ring of power", handler2);

            repo.GetHandlerTypesFor("ring of power").FirstOrDefault().ShouldBe(handler1);
        }
        public void two_handlers_can_be_registered_for_the_same_key()
        {
            var handler1 = TypeSystems.Default.FromClr(typeof(Sauron));
            var handler2 = TypeSystems.Default.FromClr(typeof(Frodo));

            var repo = new HandlerRepository();

            repo.AddResourceHandler("ring of power", handler1);
            repo.AddResourceHandler("ring of power", handler2);

            repo.GetHandlerTypesFor("ring of power").ShouldBe(new[] { handler1, handler2 });
        }
Exemplo n.º 9
0
        /// <summary>
        ///     Messages the received.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The args.</param>
        protected virtual void MessageReceived(object sender, OutputGatewayEventHandlerArgs <TMessage, MessageHeader> args)
        {
            InvokeOnMessageReceived();

            if (args.Header.CallContext != null && args.Header.CallContext.ContainsKey("DEBUG_MESSAGE"))
            {
                Logger.Warn(string.Format("Ha llegado el Mensaje:{0}", args.SerializedMessage));
                Logger.Warn(string.Format("Tipo del Mensaje:{0}", args.Header.BodyType));
            }

            Session currentSession = SessionFactory.Create();

            if (args.Header.Type == MessageBusType.Reply)
            {
                CallerContext requester = args.Header.CallStack.Pop();
                if (requester.Identification.Equals(Identification))
                {
                    currentSession = requester.Session;
                }
                else
                {
                    Logger.Debug("Reply Message not mine");
                    return;
                }
            }

            var listTask = new List <Thread>();

            //Buscar en los handlers para procesar el mensaje
            foreach (Type type in HandlerRepository.GetHandlersByMessage(args.Message.GetType()))
            {
                Type typeClosure = type;
                var  th          = new Thread(() => ExecuteHandler(args, typeClosure, currentSession));
                th.Start();
                listTask.Add(th);
            }

            foreach (var thread in listTask)
            {
                thread.Join(TimeSpan.FromMinutes(3));
            }
        }
 public void ExecuteNoReturnType()
 {
     var handler = new HandlerRepository();
     handler.Execute<MockDataHandler>(new { ID = 1, firstName = "name", lastName = "lastName" });
 }
 public void ExecuteComplexObject()
 {
     var handler = new HandlerRepository();
     handler.Execute<MockComplexDataHandler>(new { patient = new Patient { PatientID = 1, FirstName = "name", LastName = "lastName" } });
 }
Exemplo n.º 12
0
 /// <summary>
 /// Gets the message types.
 /// </summary>
 /// <returns></returns>
 public IEnumerable <Type> GetMessageTypes()
 {
     return(HandlerRepository.GetMessageTypes());
 }