/******************************************************************************* * This file is part of OpenNMS(R). * * Copyright (C) 2006-2011 The OpenNMS Group, Inc. * OpenNMS(R) is Copyright (C) 1999-2011 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * * OpenNMS(R) is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation, either version 3 of the License, * or (at your option) any later version. * * OpenNMS(R) is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with OpenNMS(R). If not, see: * http://www.gnu.org/licenses/ * * For more information contact: * OpenNMS(R) Licensing <license@opennms.org> * http://www.opennms.org/ * http://www.opennms.com/ *******************************************************************************/ package org.opennms.netmgt.notifd; import java.util.List; import org.opennms.core.utils.Argument; /** * <p>ExecutorStrategy interface.</p> * * @author <A HREF="mailto:david@opennms.org">David Hustace </A> * @author <A HREF="http://www.opennms.org/">OpenNMS </A> * * Implement this interface to as a means of executing code be it a Java class * or system command. * * This interface was created to provide a Java Notification plugin interface. * The original CommandExecutor class was developed to execute system commands * calling its execute method with the command name and a list of command line * paramenters. Now the ClassExecutor class implements this interface and the * execute method instantiates the Java class specified in the commandLine * parameter to the execute method. * * Now, this interface is implemented by the ClassExecutor class that allows the * notification process (NotificationTask) to simply call the execute method and * not be concerned if the strategy (binary flag) actually executes a command or * instantiates a Java class. * @author <A HREF="mailto:david@opennms.org">David Hustace </A> * @author <A HREF="http://www.opennms.org/">OpenNMS </A> * * Implement this interface to as a means of executing code be it a Java class * or system command. * * This interface was created to provide a Java Notification plugin interface. * The original CommandExecutor class was developed to execute system commands * calling its execute method with the command name and a list of command line * paramenters. Now the ClassExecutor class implements this interface and the * execute method instantiates the Java class specified in the commandLine * parameter to the execute method. * * Now, this interface is implemented by the ClassExecutor class that allows the * notification process (NotificationTask) to simply call the execute method and * not be concerned if the strategy (binary flag) actually executes a command or * instantiates a Java class. * @version $Id: $ */ public interface ExecutorStrategy { /** * Implement this method to support execute style commands such as a system * command or to instantiate a Java class. * * @param commandLine * the command/class to execute/instantiate * @param arguments * a list of Argument objects that need to be passed to the * command line call or the class execute method * @return int, the return code of the command/execute method */ public abstract int execute(String commandLine, List<Argument> arguments); }