001 package org.shiftone.jrat.util;
002
003 import org.shiftone.jrat.core.JRatException;
004
005
006 /**
007 * @author jeff@shiftone.org (Jeff Drost)
008 */
009 public class Command {
010
011 /**
012 * implement this method if you DO NOT want to return something
013 */
014 protected void run() throws Exception {
015 }
016
017
018 /**
019 * implement this method if you want to return something
020 */
021 protected Object call() throws Exception {
022
023 run();
024
025 return null;
026 }
027
028
029 public Object execute() {
030
031 try {
032 return call();
033 }
034 catch (RuntimeException e) {
035 throw e;
036 }
037 catch (Throwable e) {
038 throw new JRatException("command failed", e);
039 }
040 }
041 }