public void TestTwoArgumentMethodWithOnlyOneArgumentProvided()
 {
     TestBean testBean = new TestBean();
     MethodInfo method = testBean.GetType().GetMethod("StringAndIntegerArgumentMethod");
     DefaultMethodInvoker invoker = new DefaultMethodInvoker(testBean, method);
     invoker.InvokeMethod("ABC");
 }
 public void TestIntegerArgumentWithVoidReturnAndFailedConversion()
 {
     TestBean testBean = new TestBean();
     MethodInfo method = testBean.GetType().GetMethod("IntegerArgumentWithVoidReturn");
     DefaultMethodInvoker invoker = new DefaultMethodInvoker(testBean, method);
     invoker.InvokeMethod("ABC");
 }
 public void TestStringArgumentWithVoidReturnAndSuccessfulConversion()
 {
     TestBean testBean = new TestBean();
     MethodInfo method = testBean.GetType().GetMethod("StringArgumentWithVoidReturn");
     DefaultMethodInvoker invoker = new DefaultMethodInvoker(testBean, method);
     invoker.InvokeMethod(123);
     Assert.That(testBean.lastStringArgument, Is.EqualTo("123"));
 }
 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);
        }
 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 TestTwoArgumentsAndNoConversionRequired()
 {
     TestBean testBean = new TestBean();
     MethodInfo method = testBean.GetType().GetMethod("StringAndIntegerArgumentMethod");
     DefaultMethodInvoker invoker = new DefaultMethodInvoker(testBean, method);
     object result = invoker.InvokeMethod("ABC", 456);
     Assert.That(result, Is.EqualTo("ABC:456"));
 }