/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.start.common.internal; import java.util.ArrayList; import java.util.Collection; import de.rcenvironment.core.command.common.CommandException; import de.rcenvironment.core.command.spi.CommandContext; import de.rcenvironment.core.command.spi.CommandDescription; import de.rcenvironment.core.command.spi.CommandPlugin; import de.rcenvironment.core.start.common.Instance; /** * Provides the (synonymous) "stop" and "shutdown" console commands. * * @author Robert Mischke */ public class ShutdownCommandPlugin implements CommandPlugin { private static final String CMD_SHUTDOWN = "shutdown"; private static final String CMD_STOP = "stop"; @Override public Collection<CommandDescription> getCommandDescriptions() { final Collection<CommandDescription> contributions = new ArrayList<CommandDescription>(); contributions.add(new CommandDescription(CMD_SHUTDOWN, "", false, "shut down RCE")); contributions.add(new CommandDescription(CMD_STOP, "", false, "shut down RCE (alias of \"shutdown\")")); return contributions; } @Override public void execute(CommandContext context) throws CommandException { String cmd = context.consumeNextToken(); if (CMD_SHUTDOWN.equals(cmd)) { performStop(context); } else if (CMD_STOP.equals(cmd)) { performStop(context); } else { throw new IllegalStateException(); } } /** * Handler for the "stop" sub-command. * * @return String the console output */ private void performStop(CommandContext context) { context.println("Shutting down; if you are on an interactive OSGi console, type 'exit' to close it"); Instance.shutdown(); } }