package org.atomnuke.cli.command.source; import java.util.Iterator; import org.atomnuke.atombus.config.model.MessageSource; import org.atomnuke.cli.CliConfigurationHandler; import org.atomnuke.cli.command.AbstractNukeCommand; import org.atomnuke.util.cli.command.result.CommandFailure; import org.atomnuke.util.cli.command.result.CommandResult; import org.atomnuke.util.cli.command.result.CommandSuccess; /** * * @author zinic */ public class DeleteSource extends AbstractNukeCommand { private static final int SOURCE_ID = 0; public DeleteSource(CliConfigurationHandler configurationHandler) { super(configurationHandler); } @Override public String getCommandToken() { return "rm"; } @Override public String getCommandDescription() { return "Removes a message actor's source definition. This will unbind any recievers tied to the source definition being deleted."; } @Override public CommandResult perform(String[] arguments) throws Exception { if (arguments.length != 1) { return new CommandFailure("Deleting a source requires one arguments: <sink-id>"); } final CliConfigurationHandler cfgHandler = getConfigHandler(); for (Iterator<MessageSource> sourceItr = cfgHandler.getMessageSources().iterator(); sourceItr.hasNext();) { if (sourceItr.next().getActorRef().equals(arguments[SOURCE_ID])) { sourceItr.remove(); unbindSource(cfgHandler, arguments[SOURCE_ID]); cfgHandler.write(); return new CommandSuccess(); } } return new CommandFailure("No source with an id matching, \"" + arguments[SOURCE_ID] + "\" seems to exist."); } }