Esempio n. 1
0
        private object DoInvokeMethod(MethodInfo method, object[] args, IMessage message)
        {
            object         result  = null;
            IMethodInvoker invoker = null;

            try {
                invoker = invokers.ContainsKey(method) ? invokers[method] : null;
                if (invoker == null)
                {
                    invoker = new DefaultMethodInvoker(_obj, method);
                    invokers.Add(method, invoker);
                }
                result = invoker.InvokeMethod(args);
            }
            catch (ArgumentException e) {
                try {
                    if (message != null)
                    {
                        result = invoker.InvokeMethod(message);
                        methodsExpectingMessage.Add(method);
                    }
                }
                catch (Exception ex) { //TODO NoSuchMethodException e2) {
                    throw new MessageHandlingException(message, "unable to resolve method for args: " + StringUtils.ArrayToCommaDelimitedString(args), ex);
                }
            }
            return(result == null || result.GetType().Equals(typeof(Missing)) ? null : result);
        }
        public void TestIntegerArgumentWithVoidReturnAndFailedConversion()
        {
            TestBean             testBean = new TestBean();
            MethodInfo           method   = testBean.GetType().GetMethod("IntegerArgumentWithVoidReturn");
            DefaultMethodInvoker invoker  = new DefaultMethodInvoker(testBean, method);

            invoker.InvokeMethod("ABC");
        }
        public void TestTwoArgumentMethodWithOnlyThreeArgumentsProvided()
        {
            TestBean             testBean = new TestBean();
            MethodInfo           method   = testBean.GetType().GetMethod("StringAndIntegerArgumentMethod");
            DefaultMethodInvoker invoker  = new DefaultMethodInvoker(testBean, method);

            invoker.InvokeMethod("ABC", 123, 456);
        }
        public void TestTwoArgumentsAndSuccessfulConversion()
        {
            TestBean             testBean = new TestBean();
            MethodInfo           method   = testBean.GetType().GetMethod("StringAndIntegerArgumentMethod");
            DefaultMethodInvoker invoker  = new DefaultMethodInvoker(testBean, method);
            object result = invoker.InvokeMethod("ABC", "789");

            Assert.That(result, Is.EqualTo("ABC:789"));
        }
        public void TestIntegerArgumentWithVoidReturnAndSuccessfulConversion()
        {
            TestBean             testBean = new TestBean();
            MethodInfo           method   = testBean.GetType().GetMethod("IntegerArgumentWithVoidReturn");
            DefaultMethodInvoker invoker  = new DefaultMethodInvoker(testBean, method);

            invoker.InvokeMethod("123");
            Assert.That(testBean.lastIntegerArgument, Is.EqualTo(123));
        }
        public void TestStringArgumentWithVoidReturnAndNoConversionNecessary()
        {
            TestBean             testBean = new TestBean();
            MethodInfo           method   = testBean.GetType().GetMethod("StringArgumentWithVoidReturn");
            DefaultMethodInvoker invoker  = new DefaultMethodInvoker(testBean, method);

            invoker.InvokeMethod("test");
            Assert.That(testBean.lastStringArgument, Is.EqualTo("test"));
        }
 public MessageListMethodAdapter(object obj, MethodInfo method)
 {
     AssertUtils.ArgumentNotNull(obj, "'obj' must not be null");
     AssertUtils.ArgumentNotNull(method, "'method' must not be null");
     AssertUtils.IsTrue(method.GetParameters().Length == 1 && method.GetParameters()[0].ParameterType.Equals(typeof(IList <IMessage>)),
                        "Method must accept exactly one parameter, and it must be a List.");
     _method  = method;
     _invoker = new DefaultMethodInvoker(obj, _method);
 }
        public MessageListMethodAdapter(object obj, string methodName)
        {
            AssertUtils.ArgumentNotNull(obj, "'obj' must not be null");
            AssertUtils.ArgumentNotNull(methodName, "'methodName' must not be null");

            _method = GetMethodWithListParam(obj, methodName);
            AssertUtils.ArgumentNotNull(_method, "Method '" + methodName + "(List<> args)' not found on '" + obj.GetType() + "'.");
            _invoker = new DefaultMethodInvoker(obj, _method);
        }
Esempio n. 9
0
 static MethodInvoker()
 {
     Invoker = new DefaultMethodInvoker();
 }