package org.atomnuke.cli.command.actor; import java.util.Iterator; import org.atomnuke.atombus.config.model.MessageActor; 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 DeleteActor extends AbstractNukeCommand { private static final int ACTOR_ID = 0; public DeleteActor(CliConfigurationHandler configurationHandler) { super(configurationHandler); } @Override public String getCommandToken() { return "rm"; } @Override public String getCommandDescription() { return "Removes a message actor's definition. This will unbind any recievers tied to the message actor 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<MessageActor> actorItr = cfgHandler.getMessageActors().iterator(); actorItr.hasNext();) { if (actorItr.next().getId().equals(arguments[ACTOR_ID])) { actorItr.remove(); unbindSource(cfgHandler, arguments[ACTOR_ID]); cfgHandler.write(); return new CommandSuccess(); } } return new CommandFailure("No message actor with an id matching, \"" + arguments[ACTOR_ID] + "\" seems to exist."); } }