001 /*
002 * Copyright 2002-2004 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005 * use this file except in compliance with the License. You may obtain a copy of
006 * the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013 * License for the specific language governing permissions and limitations under
014 * the License.
015 */
016 package org.springframework.richclient.command.support;
017
018 import org.apache.commons.logging.Log;
019 import org.apache.commons.logging.LogFactory;
020 import org.springframework.beans.factory.InitializingBean;
021 import org.springframework.beans.support.ArgumentConvertingMethodInvoker;
022 import org.springframework.richclient.command.ActionCommandExecutor;
023
024 /**
025 * An implementation of <code>ActionCommandExecutor</code> that delegates
026 * job execution to a specified (static or non-static) method for command
027 * execution.
028 *
029 * @author Oliver Hutchison
030 * @see org.springframework.beans.support.MethodInvoker
031 */
032 public class MethodInvokingActionCommandExecutor extends ArgumentConvertingMethodInvoker implements
033 ActionCommandExecutor, InitializingBean {
034
035 protected static final Log logger = LogFactory.getLog(MethodInvokingActionCommandExecutor.class);
036
037 public void afterPropertiesSet() throws Exception {
038 prepare();
039 }
040
041 public void execute() {
042 try {
043 invoke();
044 }
045 catch (RuntimeException e) {
046 throw e;
047 }
048 catch (Exception e) {
049 logger.warn("Could not invoke method '" + getTargetMethod() + "' on target object [" + getTargetObject()
050 + "]", e);
051 }
052 }
053
054 }