package org.jivesoftware.smackx.commands;
/**
* A factory for creating local commands. It's useful in cases where
* instantiation of a command is more complicated than just using the default
* constructor. For example, when arguments must be passed into the constructor
* or when using a dependency injection framework. When a LocalCommandFactory
* isn't used, you can provide the AdHocCommandManager a Class object instead.
* For more details, see
* {@link AdHocCommandManager#registerCommand(String, String, LocalCommandFactory)}
* .
*
* @author Matt Tucker
*/
public interface LocalCommandFactory {
/**
* Returns an instance of a LocalCommand.
*
* @return a LocalCommand instance.
* @throws InstantiationException
* if creating an instance failed.
* @throws IllegalAccessException
* if creating an instance is not allowed.
*/
public LocalCommand getInstance() throws InstantiationException,
IllegalAccessException;
}