/*
* SoapUI, Copyright (C) 2004-2016 SmartBear Software
*
* Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent
* versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
*
* http://ec.europa.eu/idabc/eupl
*
* Unless required by applicable law or agreed to in writing, software distributed under the Licence is
* distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the Licence for the specific language governing permissions and limitations
* under the Licence.
*/
package com.eviware.soapui.support.scripting;
import com.eviware.soapui.impl.wsdl.WsdlProject;
import com.eviware.soapui.model.ModelItem;
import com.eviware.soapui.model.support.ModelSupport;
import com.eviware.soapui.support.StringUtils;
import com.eviware.soapui.support.scripting.groovy.GroovyScriptEngineFactory;
import com.eviware.soapui.support.scripting.js.JsScriptEngineFactory;
import com.eviware.soapui.support.types.StringList;
import java.util.HashMap;
import java.util.Map;
/**
* Registry of available script engines
*
* @author ole.matzura
*/
public class SoapUIScriptEngineRegistry {
public static final String DEFAULT_SCRIPT_ENGINE_ID = GroovyScriptEngineFactory.ID;
private static Map<String, SoapUIScriptEngineFactory> factories = new HashMap<String, SoapUIScriptEngineFactory>();
public static void registerScriptEngine(String id, SoapUIScriptEngineFactory factory) {
factories.put(id, factory);
}
public static SoapUIScriptEngineFactory getFactory(String id) {
return factories.get(id);
}
public static SoapUIScriptEngine create(ModelItem modelItem) {
return factories.get(getScriptEngineId(modelItem)).createScriptEngine(modelItem);
}
public static String getScriptEngineId(ModelItem modelItem) {
WsdlProject project = (WsdlProject) ModelSupport.getModelItemProject(modelItem);
String scriptEngineId = null;
if (project != null) {
scriptEngineId = project.getDefaultScriptLanguage();
}
if (StringUtils.isNullOrEmpty(scriptEngineId)) {
scriptEngineId = DEFAULT_SCRIPT_ENGINE_ID;
}
return scriptEngineId;
}
public static SoapUIScriptGenerator createScriptGenerator(ModelItem modelItem) {
WsdlProject project = (WsdlProject) ModelSupport.getModelItemProject(modelItem);
String scriptEngineId = project.getDefaultScriptLanguage();
if (StringUtils.isNullOrEmpty(scriptEngineId)) {
scriptEngineId = DEFAULT_SCRIPT_ENGINE_ID;
}
return factories.get(scriptEngineId).createCodeGenerator(modelItem);
}
static {
registerScriptEngine(GroovyScriptEngineFactory.ID, new GroovyScriptEngineFactory());
registerScriptEngine(JsScriptEngineFactory.ID, new JsScriptEngineFactory());
}
public static String[] getAvailableEngineIds() {
return new StringList(factories.keySet()).toStringArray();
}
}