/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.command.console.osgi;
import java.util.LinkedList;
import java.util.List;
import org.eclipse.osgi.framework.console.CommandInterpreter;
import org.eclipse.osgi.framework.console.CommandProvider;
import de.rcenvironment.core.command.api.CommandExecutionService;
import de.rcenvironment.core.utils.common.textstream.TextOutputReceiver;
/**
* {@link CommandProvider} for the 'rce' command on the Equinox OSGi console.
*
* @author Robert Mischke
*/
public class RCECommandProvider implements CommandProvider {
private CommandExecutionService commandExecutionService;
/**
* Handler for the RCE top-level command. Delegates to the {@link CommandExecutionService}.
*
* @param interpreter the provided {@link CommandInterpreter}
* @return null
*/
public Object _rce(final CommandInterpreter interpreter) {
final List<String> tokens = getTokens(interpreter);
final TextOutputReceiver outputReceiver = new OsgiConsoleOutputAdapter(interpreter, commandExecutionService);
commandExecutionService.asyncExecMultiCommand(tokens, outputReceiver, "osgi console");
return null;
}
private List<String> getTokens(final CommandInterpreter interpreter) {
final List<String> tokens = new LinkedList<String>();
String argument;
while ((argument = interpreter.nextArgument()) != null) {
tokens.add(argument);
}
return tokens;
}
protected void bindCommandExecutionService(CommandExecutionService newService) {
this.commandExecutionService = newService;
}
@Override
public String getHelp() {
return commandExecutionService.getHelpText(true, false); // with prefix, no developer commands
}
}