package test.check.command;

/**
 * Chain command - applies a chain of configure commands on a component.
 * 
 * @author Kirill Grouchnikov
 * @param <T>
 *            Component class.
 */
public class ChainCommand<T> implements ConfigurationCommand<T> {
	/**
	 * Command chain.
	 */
	private ConfigurationCommand<T>[] commands;

	/**
	 * Creates the chain command.
	 * 
	 * @param commands
	 *            Command chain.
	 */
	public ChainCommand(ConfigurationCommand<T>... commands) {
		super();
		this.commands = commands;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see test.check.ConfigurationCommand#invoke(java.lang.Object)
	 */
	public void configure(T component) {
		for (ConfigurationCommand<T> cmd : this.commands)
			cmd.configure(component);
	}
}
