/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.components.script.common.registry;
import java.util.List;
import de.rcenvironment.core.utils.scripting.ScriptLanguage;
/**
* Registry for receiving executors for different scripting languages.
*
* @author Sascha Zur
*/
public interface ScriptExecutorFactoryRegistry {
/**
* Adds the given {@link ScriptExecutorFactory} to the list of all executors registered.
*
* @param factory new factory
*/
void addScriptExecutorFactory(ScriptExecutorFactory factory);
/**
* Removes the given {@link ScriptExecutorFactory} from the list of all factories registered.
*
* @param algFactory to remove
*/
void removeScriptExecutorFactory(ScriptExecutorFactory algFactory);
/**
* Returns an executor for the script language that factory is for.
*
* @param language the executor must provide
* @return executor instance
*/
ScriptExecutor requestScriptExecutor(ScriptLanguage language);
/**
* Returns a list with all current registered executor languages, used to fill the gui.
*
* @return list of string with script language names
*/
List<ScriptLanguage> getCurrentRegisteredExecutorLanguages();
}